You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2007/06/28 14:05:12 UTC

svn commit: r551536 - in /cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms: acting/ binding/ datatype/ datatype/convertor/ expression/ formmodel/algorithms/ util/

Author: reinhard
Date: Thu Jun 28 05:05:10 2007
New Revision: 551536

URL: http://svn.apache.org/viewvc?view=rev&rev=551536
Log:
usage of Class.forName circumvents the usage of the shielding or reloading classloader -> change to thread context classloader to fix this

Modified:
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/acting/HandleFormSubmitAction.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/CustomJXPathBindingBuilder.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/EnhancedRepeaterJXPathBinding.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/InsertBeanJXPathBinding.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/JavaSelectionListBuilder.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/algorithms/JavaAlgorithmBuilder.java
    cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/acting/HandleFormSubmitAction.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/acting/HandleFormSubmitAction.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/acting/HandleFormSubmitAction.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/acting/HandleFormSubmitAction.java Thu Jun 28 05:05:10 2007
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -43,7 +43,7 @@
  *  <li><strong>form-definition</strong>: filename (URL) pointing to the form definition file
  *  <li><strong>attribute-name</strong>: name of the request attribute in which the form instance should be stored
  * </ul>
- * 
+ *
  * @version $Id$
  */
 public class HandleFormSubmitAction extends AbstractFormsAction {
@@ -65,7 +65,7 @@
 
             if (formHandlerClassName != null) {
                 // TODO cache these classes
-                Class clazz = Class.forName(formHandlerClassName);
+                Class clazz = Thread.currentThread().getContextClassLoader().loadClass(formHandlerClassName);
                 formHandler = (FormHandler)clazz.newInstance();
                 LifecycleHelper.setupComponent(formHandler, null, null, manager, null);
                 form.setFormHandler(formHandler);

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/CustomJXPathBindingBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/CustomJXPathBindingBuilder.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/CustomJXPathBindingBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/CustomJXPathBindingBuilder.java Thu Jun 28 05:05:10 2007
@@ -83,7 +83,7 @@
 
             String className = DomHelper.getAttribute(bindingElm, "class", null);
             if(className != null) {
-                Class clazz = Class.forName(className);
+                Class clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
                 bindingInstance = clazz.newInstance();
 
             } else {

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/EnhancedRepeaterJXPathBinding.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/EnhancedRepeaterJXPathBinding.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/EnhancedRepeaterJXPathBinding.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/EnhancedRepeaterJXPathBinding.java Thu Jun 28 05:05:10 2007
@@ -58,7 +58,7 @@
         RepeaterAdapter adapter;
 		if (this.adapterClass != null) {
 			try {
-				adapter = (RepeaterAdapter) Class.forName(this.adapterClass).newInstance();
+				adapter = (RepeaterAdapter) Thread.currentThread().getContextClassLoader().loadClass(this.adapterClass).newInstance();
 			} catch (Exception e) {
 				throw new CascadingRuntimeException("Cannot instantiate adapter class for advanced repeater binding", e);
 			}

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/InsertBeanJXPathBinding.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/InsertBeanJXPathBinding.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/InsertBeanJXPathBinding.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/binding/InsertBeanJXPathBinding.java Thu Jun 28 05:05:10 2007
@@ -77,13 +77,15 @@
 
             // instantiate the new object
             if(this.className != null) {
-	            argTypes[0] = Class.forName(this.className);
+	            argTypes[0] = Thread.currentThread().getContextClassLoader().loadClass(this.className);
 	            args[0] = argTypes[0].newInstance();
             } else {
             	argTypes = null;
             	args = null;
             }
 
+            System.out.println("className=" + this.className);
+
             // lookup the named method on the parent
             Method addMethod =
                 parent.getClass().getMethod(this.addMethodName, argTypes);
@@ -106,7 +108,7 @@
         //             Class[] argTypes = new Class[1];
         //
         //             // instantiate the new object
-        //             argTypes[0] = Class.forName(InsertBeanJXPathBinding.this.className);
+        //             argTypes[0] = Thread.currentThread().getContextClassLoader().loadClass(InsertBeanJXPathBinding.this.className);
         //             args[0] = argTypes[0].newInstance();
         //             // lookup the named method on the parent
         //

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java Thu Jun 28 05:05:10 2007
@@ -74,14 +74,14 @@
     public EnumSelectionList(String className, Datatype datatype, boolean nullable) throws ClassNotFoundException {
         this.datatype = datatype;
         this.nullable = nullable;
-        this.clazz = Class.forName(className);
+        this.clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
     }
 
     public EnumSelectionList(String className, Datatype datatype, boolean nullable, String nullText) throws ClassNotFoundException {
         this(className, datatype, nullable);
         this.nullText = nullText;
     }
-    
+
     /* (non-Javadoc)
      * @see org.apache.cocoon.forms.datatype.SelectionList#getDatatype()
      */

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/JavaSelectionListBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/JavaSelectionListBuilder.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/JavaSelectionListBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/JavaSelectionListBuilder.java Thu Jun 28 05:05:10 2007
@@ -65,7 +65,7 @@
 		boolean nullable = DomHelper.getAttributeAsBoolean(selectionListElement, "nullable", true);
 
 		try {
-			Class clasz = Class.forName(className);
+			Class clasz = Thread.currentThread().getContextClassLoader().loadClass(className);
 			if (JavaSelectionList.class.isAssignableFrom(clasz)) {
 				JavaSelectionList list = (JavaSelectionList) clasz.newInstance();
 				LifecycleHelper.setupComponent(list, getLogger(), this.context, this.manager, null, true);

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java Thu Jun 28 05:05:10 2007
@@ -28,11 +28,11 @@
 
 /**
  * Converts String representation of beans to bean instances and vice versa.
- * 
+ *
  * <p>
  * Sometimes the toString() method doesn't give a good representation of a
- * Java Bean suited for selection list IDs. For this an optional  
- * &lt;fd:id-path&gt;jx-path&lt;/fd:id-path&gt; attribute can be specified to 
+ * Java Bean suited for selection list IDs. For this an optional
+ * &lt;fd:id-path&gt;jx-path&lt;/fd:id-path&gt; attribute can be specified to
  * have this convertor to use a different string representation.
  * </p>
  *
@@ -60,23 +60,18 @@
      *
      * @throws CascadingRuntimeException If the class cannot be found
      */
-    public BeanConvertor( final String className,
-                          final String idPath )
-    {
-        try
-        {
-            m_class = Class.forName( className );
-        }
-        catch( ClassNotFoundException e )
-        {
-            throw new CascadingRuntimeException( "Class " + className +
-                                                 " not found", e );
+    public BeanConvertor(final String className, final String idPath) {
+        try {
+            m_class = Thread.currentThread().getContextClassLoader().loadClass(className);
+        } catch (ClassNotFoundException e) {
+            throw new CascadingRuntimeException("Class " + className + " not found", e);
         }
 
         m_idPath = idPath;
     }
 
-    //~ Methods ----------------------------------------------------------------
+    // ~ Methods
+    // ----------------------------------------------------------------
 
     /**
      * @see org.apache.cocoon.forms.datatype.convertor.Convertor#getTypeClass()

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/datatype/convertor/EnumConvertor.java Thu Jun 28 05:05:10 2007
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -30,14 +30,14 @@
  * implementation for types implementing Joshua Bloch's
  * <a href="http://developer.java.sun.com/developer/Books/shiftintojava/page1.html#replaceenums">
  * typesafe enum</a> pattern.
- * 
+ *
  * @see org.apache.cocoon.forms.datatype.typeimpl.EnumType
  * @version $Id$
  */
 public class EnumConvertor implements Convertor {
 
     private Class clazz;
-    
+
     /**
      * Construct a new EnumConvertor for a class
      * @param className The package-qualified name of the class implementing
@@ -45,13 +45,13 @@
      */
     public EnumConvertor(String className) {
         try {
-            clazz = Class.forName(className);
+            clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
         }
         catch (ClassNotFoundException e) {
             throw new CascadingRuntimeException("Class " + className + " not found", e);
         }
     }
-    
+
     /* (non-Javadoc)
      * @see org.apache.cocoon.forms.datatype.convertor.Convertor#convertFromString(java.lang.String, java.util.Locale, org.apache.cocoon.forms.datatype.convertor.Convertor.FormatCache)
      */

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/expression/DefaultExpressionManager.java Thu Jun 28 05:05:10 2007
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -37,7 +37,7 @@
  * <pre>
  *   &lt;function name="MyFunction" class="net.foo.MyFunction"/&gt;
  * </pre>
- * 
+ *
  * @version $Id$
  */
 public class DefaultExpressionManager
@@ -45,22 +45,22 @@
 // FIXME: Component is there to allow this block to also run in the 2.1 branch
 
     private DefaultFunctionFactory factory;
-    
+
     public void configure(Configuration config) throws ConfigurationException {
         factory = new DefaultFunctionFactory();
-        
+
         Configuration[] functions = config.getChildren("function");
         for (int i = 0; i < functions.length; i++) {
             String name = functions[i].getAttribute("name");
             String clazz = functions[i].getAttribute("class");
             try {
-                factory.registerFunction(name, Class.forName(clazz));
+                factory.registerFunction(name, Thread.currentThread().getContextClassLoader().loadClass(clazz));
             } catch (ClassNotFoundException e) {
                 throw new ConfigurationException("Can not find class " + clazz + " for function " + name + ": " + e);
             }
         }
     }
-    
+
     public Expression parse(String expressionString) throws ParseException, ExpressionException {
         FormulaParser parser = new FormulaParser(new java.io.StringReader(expressionString), factory);
         parser.parse();
@@ -70,11 +70,11 @@
 
         return expression;
     }
-    
+
     public List parseVariables(String expressionString) throws ParseException, ExpressionException {
         FormulaParser parser = new FormulaParser(new java.io.StringReader(expressionString), factory);
         parser.parse();
         return parser.getVariables();
     }
-    
+
 }

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/algorithms/JavaAlgorithmBuilder.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/algorithms/JavaAlgorithmBuilder.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/algorithms/JavaAlgorithmBuilder.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/formmodel/algorithms/JavaAlgorithmBuilder.java Thu Jun 28 05:05:10 2007
@@ -33,7 +33,7 @@
 
     public CalculatedFieldAlgorithm build(Element algorithmElement) throws Exception {
         String clazzname = DomHelper.getAttribute(algorithmElement, "class");
-        Class clazz = Class.forName(clazzname);
+        Class clazz = Thread.currentThread().getContextClassLoader().loadClass(clazzname);
         if (AbstractBaseAlgorithm.class.isAssignableFrom(clazz)) {
             AbstractBaseAlgorithm algorithm = (AbstractBaseAlgorithm) clazz.newInstance();
             super.setup(algorithmElement, algorithm);

Modified: cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java?view=diff&rev=551536&r1=551535&r2=551536
==============================================================================
--- cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java (original)
+++ cocoon/trunk/blocks/cocoon-forms/cocoon-forms-impl/src/main/java/org/apache/cocoon/forms/util/SimpleServiceSelector.java Thu Jun 28 05:05:10 2007
@@ -75,7 +75,7 @@
 
             Class clazz;
             try {
-                clazz = Class.forName(src);
+                clazz = Thread.currentThread().getContextClassLoader().loadClass(src);
             } catch (ClassNotFoundException e) {
                 throw new ConfigurationException("Class not found: " + src + ", declared at " + componentConfs[i].getLocation(), e);
             }