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
- * <fd:id-path>jx-path</fd:id-path> attribute can be specified to
+ * Java Bean suited for selection list IDs. For this an optional
+ * <fd:id-path>jx-path</fd:id-path> 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>
* <function name="MyFunction" class="net.foo.MyFunction"/>
* </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);
}