costin 02/05/09 14:00:53
Modified: jk/native2/common jk_config.c
Log:
Remove the old code.
Be less verbose ( unless config.debug property is set ).
Add another 'magic' attribute, "info". It'll allow some comments to be
associated with each object, and persisted automatically.
( now the config will save the workers.properties whenever it receives
a request to do so - curently via shm, but we can easyly add the other
channels - what used to be called 1.4 is pretty close )
Revision Changes Path
1.15 +20 -279 jakarta-tomcat-connectors/jk/native2/common/jk_config.c
Index: jk_config.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_config.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- jk_config.c 8 May 2002 23:50:37 -0000 1.14
+++ jk_config.c 9 May 2002 21:00:53 -0000 1.15
@@ -58,7 +58,7 @@
/***************************************************************************
* Description: General purpose config object *
* Author: Gal Shachor <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.14 $ *
+ * Version: $Revision: 1.15 $ *
***************************************************************************/
#include "jk_global.h"
@@ -71,12 +71,6 @@
static void jk2_trim_prp_comment(char *prp);
static int jk2_trim(char *s);
-static char **jk2_config_getValues(jk_env_t *env, jk_config_t *m,
- struct jk_pool *resultPool,
- char *name,
- char *sep,
- int *countP);
-
/* ==================== ==================== */
@@ -203,8 +197,6 @@
No replacement or saving is done on the val - this is
a private method
*/
-
-
static int jk2_config_processBeanPropertyString( jk_env_t *env,
jk_config_t *cfg,
char *propertyString,
@@ -289,11 +281,21 @@
if( strcmp( name, "name" ) == 0 ) {
return JK_OK;
}
+ if( strcmp( name, "ver " ) == 0 ) {
+ mbean->ver=atol(val);
+ return JK_OK;
+ }
if( strcmp( name, "debug" ) == 0 ) {
mbean->debug=atoi( val );
+ return JK_OK;
}
if( strcmp( name, "disabled" ) == 0 ) {
mbean->disabled=atoi( val );
+ return JK_OK;
+ }
+ if( strcmp( name, "info" ) == 0 ) {
+ /* do nothing, this is a comment */
+ return JK_OK;
}
if( (mbean == cfg->mbean) &&
@@ -301,8 +303,9 @@
cfg->file != NULL ) {
/* 'file' property on ourself, avoid rec.
*/
- env->l->jkLog(env, env->l, JK_LOG_INFO,
- "config.setAttribute() ignore %s %s %s\n", mbean->name, name,
val );
+ if( cfg->mbean->debug > 0 )
+ env->l->jkLog(env, env->l, JK_LOG_INFO,
+ "config.setAttribute() ignore %s %s %s\n", mbean->name,
name, val );
return JK_OK;
}
@@ -313,9 +316,10 @@
env->l->jkLog(env, env->l, JK_LOG_INFO,
"config.setAttribute() Error setting %s %s %s\n",
mbean->name, name, val );
}
- env->l->jkLog(env, env->l, JK_LOG_INFO,
- "config.setAttribute() %d setting %s %s %s\n",
- cfg->mbean->debug, mbean->name, name, val );
+ if( cfg->mbean->debug > 0 )
+ env->l->jkLog(env, env->l, JK_LOG_INFO,
+ "config.setAttribute() %d setting %s %s %s\n",
+ cfg->mbean->debug, mbean->name, name, val );
return rc;
}
return JK_ERR;
@@ -366,166 +370,6 @@
}
-char *jk2_config_getString(jk_env_t *env, jk_config_t *conf,
- const char *name, char *def)
-{
- char *val= conf->map->get( env, conf->map, name );
- if( val==NULL )
- return def;
- return val;
-}
-
-int jk2_config_getBool(jk_env_t *env, jk_config_t *conf,
- const char *prop, const char *def)
-{
- char *val=jk2_config_getString( env, conf, prop, (char *)def );
-
- if( val==NULL )
- return JK_ERR;
-
- if( strcmp( val, "1" ) == 0 ||
- strcasecmp( val, "TRUE" ) == 0 ||
- strcasecmp( val, "ON" ) == 0 ) {
- return JK_OK;
- }
- return JK_ERR;
-}
-
-/** Get a string property, using the worker's style
- for properties.
- Example worker.ajp13.host=localhost.
-*/
-static char *jk2_config_getStrProp(jk_env_t *env, jk_config_t *conf,
- const char *objType, const char *objName,
- const char *pname, char *def)
-{
- char buf[1024];
- char *res;
-
- if( objName==NULL || pname==NULL ) {
- return def;
- }
- if( objType==NULL )
- sprintf(buf, "%s.%s", objName, pname);
- else
- sprintf(buf, "%s.%s.%s", objType, objName, pname);
- res = jk2_config_getString(env, conf, buf, def );
- return res;
-}
-
-
-static int jk2_config_getIntProp(jk_env_t *env, jk_config_t *conf,
- const char *objType, const char *objName,
- const char *pname, int def)
-{
- char *val=jk2_config_getStrProp( env, conf, objType, objName, pname, NULL );
-
- if( val==NULL )
- return def;
-
- return jk2_config_str2int( env, val );
-}
-
-/* ==================== */
-/* Conversions */
-
-/* Convert a string to int, using 'M', 'K' suffixes
- */
-int jk2_config_str2int(jk_env_t *env, char *val )
-{ /* map2int:
- char *v=getString();
- return (c==NULL) ? def : str2int( v );
- */
- int len;
- int int_res;
- char org='\0';
- int multit = 1;
- char *lastchar;
-
- if( val==NULL ) return 0;
-
- /* sprintf(buf, "%d", def); */
- /* rc = map_get_string(m, name, buf); */
-
- len = strlen(val);
- if(len==0)
- return 0;
-
- lastchar = val + len - 1;
- if('m' == *lastchar || 'M' == *lastchar) {
- org=*lastchar;
- *lastchar = '\0';
- multit = 1024 * 1024;
- } else if('k' == *lastchar || 'K' == *lastchar) {
- org=*lastchar;
- *lastchar = '\0';
- multit = 1024;
- }
-
- int_res = atoi(val);
- if( org!='\0' )
- *lastchar=org;
-
- return int_res * multit;
-}
-
-
-char **jk2_config_split(jk_env_t *env, jk_pool_t *pool,
- const char *listStr, const char *sep,
- unsigned *list_len )
-{
- char **ar = NULL;
- unsigned capacity = 0;
- unsigned idex = 0;
- char *v;
- char *l;
-
- if( sep==NULL )
- sep=" \t,*";
-
- if( list_len != NULL )
- *list_len = 0;
-
- if(listStr==NULL)
- return NULL;
-
- v = pool->pstrdup( env, pool, listStr);
-
- if(v==NULL) {
- return NULL;
- }
-
- /*
- * GS, in addition to VG's patch, we now need to
- * strtok also by a "*"
- */
-
- /* Not thread safe */
- for(l = strtok(v, sep) ; l ; l = strtok(NULL, sep)) {
- /* We want at least one space after idex for the null*/
- if(idex+1 >= capacity) {
- ar = pool->realloc(env, pool,
- sizeof(char *) * (capacity + 5),
- ar,
- sizeof(char *) * capacity);
- if(!ar) {
- return NULL;
- }
- capacity += 5;
- }
- ar[idex] = pool->pstrdup(env, pool, l);
- idex ++;
- }
-
- /* Append a NULL, we have space */
- ar[idex]=NULL;
-
- if( list_len != NULL )
- *list_len = idex;
-
- return ar;
-}
-
/* ==================== */
/* Reading / parsing */
@@ -533,7 +377,7 @@
{
int rc = JK_ERR;
char *v;
-
+
jk2_trim_prp_comment(prp);
if( jk2_trim(prp)==0 )
@@ -576,6 +420,7 @@
prp=newN;
}
+
/* Don't replace now - the caller may want to
save the file, and it'll replace them anyway for runtime changes
v = jk2_config_replaceProperties(env, cfg->map, cfg->pool, v); */
@@ -646,111 +491,7 @@
return JK_OK;
}
-/** For multi-value properties, return the concatenation
- * of all values.
- *
- * @param sep Separators used to separate multi-values and
- * when concatenating the values, NULL for none. The first
- * char will be used on the result, the other will be
- * used to split. ( i.e. the map may either have multiple
- * values or values separated by one of the sep's chars )
- *
- */
-static char *jk2_config_getValuesString(jk_env_t *env, jk_config_t *m,
- struct jk_pool *resultPool,
- char *name,
- char *sep )
-{
- char **values;
- int valuesCount;
- int i;
- int len=0;
- int pos=0;
- int sepLen=0;
- char *result;
- char sepStr[2];
-
- if(sep==NULL)
- values=jk2_config_getValues( env, m, resultPool, name," \t,*", &valuesCount
);
- else
- values=jk2_config_getValues( env, m, resultPool, name, sep, &valuesCount );
- if( values==NULL ) return NULL;
- if( valuesCount<=0 ) return NULL;
-
- if( sep!= NULL )
- sepLen=strlen( sep );
-
- for( i=0; i< valuesCount; i++ ) {
- len+=strlen( values[i] );
- if( sep!= NULL )
- len+=1; /* Separator */
- }
-
- result=(char *)resultPool->alloc( env, resultPool, len + 1 );
-
- result[0]='\0';
- if( sep!=NULL ) {
- sepStr[0]=sep[0];
- sepStr[1]='\0';
- }
-
- for( i=0; i< valuesCount; i++ ) {
- strcat( values[i], result );
- if( sep!=NULL )
- strcat( sepStr, result );
- }
- return result;
-}
-
-/** For multi-value properties, return the array containing
- * all values.
- *
- * @param sep Optional separator, it'll be used to split existing values.
- * Curently only single-char separators are supported.
- */
-static char **jk2_config_getValues(jk_env_t *env, jk_config_t *m,
- struct jk_pool *resultPool,
- char *name,
- char *sep,
- int *countP)
-{
- char **result;
- int count=0;
- int capacity=8;
- int mapSz= m->map->size(env, m->map );
- int i;
- char *l;
-
- *countP=0;
- result=(char **)resultPool->alloc( env, resultPool,
- capacity * sizeof( char *));
- for(i=0; i<mapSz; i++ ) {
- char *cName= m->map->nameAt( env, m->map, i );
- char *cVal= m->map->valueAt( env, m->map, i );
-
- if(0 == strcmp(cName, name)) {
- /* Split the value by sep, and add it to the result list
- */
- for(l = strtok(cVal, sep) ; l ; l = strtok(NULL, sep)) {
- if(count == capacity) {
- result = resultPool->realloc(env, resultPool,
- sizeof(char *) * (capacity + 5),
- result,
- sizeof(char *) * capacity);
- if(result==NULL)
- return NULL;
- capacity += 5;
- }
- result[count] = resultPool->pstrdup(env, resultPool, l);
- count++;
- }
- }
- }
- *countP=count;
- return result;
-}
-
/**
* Replace $(property) in value.
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>