You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2009/04/20 00:00:52 UTC

svn commit: r766526 - in /tomcat/trunk: java/org/apache/tomcat/util/digester/Digester.java webapps/docs/config/systemprops.xml

Author: fhanik
Date: Sun Apr 19 22:00:51 2009
New Revision: 766526

URL: http://svn.apache.org/viewvc?rev=766526&view=rev
Log:
Allow pluggable property replacement object


Modified:
    tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java
    tomcat/trunk/webapps/docs/config/systemprops.xml

Modified: tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java?rev=766526&r1=766525&r2=766526&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java Sun Apr 19 22:00:51 2009
@@ -76,10 +76,8 @@
 
 public class Digester extends DefaultHandler {
 
-
-    // ---------------------------------------------------------- Static Fields
-
-
+    
+    // ---------------------------------------------------------- Static Fields    
     private static class SystemPropertySource 
         implements IntrospectionUtils.PropertySource {
         public String getProperty( String key ) {
@@ -89,6 +87,28 @@
 
     protected static IntrospectionUtils.PropertySource source[] = 
         new IntrospectionUtils.PropertySource[] { new SystemPropertySource() };
+    
+    static {
+        String className = System.getProperty("org.apache.tomcat.util.digester.PROPERTY_SOURCE");
+        if (className!=null) {
+            IntrospectionUtils.PropertySource[] sources = new IntrospectionUtils.PropertySource[2];
+            sources[1] = source[0];
+            ClassLoader[] cls = new ClassLoader[] {Digester.class.getClassLoader(),Thread.currentThread().getContextClassLoader()};
+            boolean initialized = false;
+            for (int i=0; i<cls.length && (!initialized); i++) {
+                try {
+                    Class<?> clazz = Class.forName(className,true,cls[i]);
+                    IntrospectionUtils.PropertySource src = (IntrospectionUtils.PropertySource)clazz.newInstance();
+                    sources[0] = src;
+                    initialized = true;
+                } catch (Throwable t) {
+                    LogFactory.getLog("org.apache.commons.digester.Digester").
+                        error("Unable to load property source["+className+"].",t);
+                }
+            }
+            if (initialized) source = sources;
+        }
+    }
 
 
     // --------------------------------------------------------- Constructors

Modified: tomcat/trunk/webapps/docs/config/systemprops.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/systemprops.xml?rev=766526&r1=766525&r2=766526&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/systemprops.xml (original)
+++ tomcat/trunk/webapps/docs/config/systemprops.xml Sun Apr 19 22:00:51 2009
@@ -33,7 +33,18 @@
   the default Tomcat behaviour.</p>
 </section>
 
-
+<section name="Property replacements">
+  <properties>
+    <property name="org.apache.tomcat.util.digester. PROPERTY_SOURCE">
+      <p>Set this to a fully qualified name of a class that implements 
+         <code>org.apache.tomcat.util.IntrospectionUtils.PropertySource</code>.
+         Required to have a public constructor with no arguments.</p>
+      <p>Use this to add a property source, that will be invoked when <code>s{parameter}</code>
+         denoted parameters are found in the XML files that tomcat parses.</p>
+    </property>
+  </properties>
+  
+</section>  
 
 <section name="Clustering">
   <properties>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r766526 - in /tomcat/trunk: java/org/apache/tomcat/util/digester/Digester.java webapps/docs/config/systemprops.xml

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
Mark Thomas wrote:
> fhanik@apache.org wrote:
>   
>> +      <p>Use this to add a property source, that will be invoked when <code>s{parameter}</code>
>> +         denoted parameters are found in the XML files that tomcat parses.</p>
>>     
>
> Do you mean ${parameter} here?
>   
yes, will fix the typo

Filip
> Mark
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r766526 - in /tomcat/trunk: java/org/apache/tomcat/util/digester/Digester.java webapps/docs/config/systemprops.xml

Posted by Mark Thomas <ma...@apache.org>.
fhanik@apache.org wrote:
> +      <p>Use this to add a property source, that will be invoked when <code>s{parameter}</code>
> +         denoted parameters are found in the XML files that tomcat parses.</p>

Do you mean ${parameter} here?

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org