You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by la...@apache.org on 2001/12/05 12:20:52 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/config ContextXmlReader.java
larryi 01/12/05 03:20:52
Modified: src/share/org/apache/tomcat/modules/config
ContextXmlReader.java
Log:
For consistency with server.xml handling, added support for
<Property ... /> and ant-style variable substitution in Context definitions
Revision Changes Path
1.12 +69 -2 jakarta-tomcat/src/share/org/apache/tomcat/modules/config/ContextXmlReader.java
Index: ContextXmlReader.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/config/ContextXmlReader.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ContextXmlReader.java 2001/10/20 02:52:12 1.11
+++ ContextXmlReader.java 2001/12/05 11:20:52 1.12
@@ -68,6 +68,7 @@
import org.apache.tomcat.util.xml.*;
import org.apache.tomcat.core.*;
import org.apache.tomcat.modules.server.*;
+import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.log.Log;
import org.xml.sax.*;
@@ -110,6 +111,7 @@
// use the same tags for context-local modules
addTagRules(cm, xh);
setContextRules( xh );
+ setPropertiesRules( cm, xh );
setBackward( xh );
// load the config file(s)
@@ -144,7 +146,58 @@
// -------------------- Xml reading details --------------------
- // rules for reading teh context config
+ static class ContextPropertySource
+ implements IntrospectionUtils.PropertySource
+ {
+ ContextManager cm;
+ Context ctx=null;
+
+ ContextPropertySource( ContextManager cm ) {
+ this.cm=cm;
+ }
+
+ public void setContext(Context ctx) {
+ this.ctx=ctx;
+ }
+
+ public String getProperty( String key ) {
+ // XXX add other "predefined" properties
+ String s=null;
+ if( ctx != null )
+ s=ctx.getProperty( key );
+ if( s == null )
+ s=cm.getProperty( key );
+ if( s == null )
+ s=System.getProperty( key );
+ return s;
+ }
+ }
+
+ public static void setPropertiesRules( ContextManager cm, XmlMapper xh )
+ throws TomcatException
+ {
+ ContextPropertySource propS=new ContextPropertySource( cm );
+ xh.setPropertySource( propS );
+
+ xh.addRule( "Context/Property", new XmlAction() {
+ public void start(SaxContext ctx ) throws Exception {
+ AttributeList attributes = ctx.getCurrentAttributes();
+ String name=attributes.getValue("name");
+ String value=attributes.getValue("value");
+ if( name==null || value==null ) return;
+ XmlMapper xm=ctx.getMapper();
+
+ Context context=(Context)ctx.currentObject();
+ // replace ${foo} in value
+ value=xm.replaceProperties( value );
+ if( context.getDebug() > 0 )
+ context.log("Setting " + name + "=" + value);
+ context.setProperty( name, value );
+ }
+ });
+ }
+
+ // rules for reading the context config
public static void setContextRules( XmlMapper xh ) {
// Default host
xh.addRule( "Context",
@@ -172,9 +225,23 @@
}
});
+ xh.addRule( "Context", new XmlAction() {
+ public void start( SaxContext xctx) throws Exception {
+ Context tcCtx=(Context)xctx.currentObject();
+ XmlMapper xm=xctx.getMapper();
+ ContextPropertySource propS = (ContextPropertySource)xm.getPropertySource();
+ if( propS != null )
+ propS.setContext(tcCtx);
+ }
+ });
+
xh.addRule( "Context", new XmlAction() {
public void end( SaxContext xctx) throws Exception {
Context tcCtx=(Context)xctx.currentObject();
+ XmlMapper xm=xctx.getMapper();
+ ContextPropertySource propS = (ContextPropertySource)xm.getPropertySource();
+ if( propS != null )
+ propS.setContext(null);
String host=(String)xctx.getVariable("current_host");
String address=(String)xctx.getVariable("current_address");
Vector aliases=(Vector)xctx.getVariable( "host_aliases" );
@@ -199,7 +266,7 @@
xh.addChild("addContext",
"org.apache.tomcat.core.Context") );
}
-
+
// -------------------- Backward compatibility --------------------
// Read old configuration formats
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>