Author: apetrelli
Date: Sun Jul 27 07:40:05 2008
New Revision: 680114
URL: http://svn.apache.org/viewvc?rev=680114&view=rev
Log:
TILES-286
Now method calling via reflection forces the method to be accessible.
Moved ClassUtil in tiles-api.
TILES-84
Now URLs with underscores in file names are correctly excluded.
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/
(with props)
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotAccessMethodException.java
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotInstantiateObjectException.java
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
(with props)
Removed:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/CannotInstantiateObjectException.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/AbstractTilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/preparer/BasicPreparerFactory.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
tiles/framework/trunk/tiles-test/pom.xml
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
(original)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/access/TilesAccess.java
Sun Jul 27 07:40:05 2008
@@ -24,6 +24,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
+import org.apache.tiles.reflect.ClassUtil;
import java.lang.reflect.Method;
@@ -164,14 +165,10 @@
* @return The object, that is the value of the specified attribute.
*/
private static Object getAttribute(Object context, String attributeName) {
- try {
- Class<?> contextClass = context.getClass();
- Method attrMethod = contextClass.getMethod("getAttribute",
String.class);
- return attrMethod.invoke(context, attributeName);
- } catch (Exception e) {
- LOG.warn("Unable to retrieve container from specified context: '"
+ context + "'", e);
- return null;
- }
+ Class<?> contextClass = context.getClass();
+ Method attrMethod = ClassUtil.getForcedAccessibleMethod(
+ contextClass, "getAttribute", String.class);
+ return ClassUtil.invokeMethod(context, attrMethod, attributeName);
}
/**
@@ -184,17 +181,10 @@
* attribute.
*/
private static void setAttribute(Object context, String name, Object
value) {
- try {
- Class<?> contextClass = context.getClass();
- Method attrMethod = contextClass.getMethod("setAttribute",
String.class, Object.class);
- attrMethod.invoke(context, name, value);
- } catch (RuntimeException e) {
- throw e;
- } catch (Exception e) {
- throw new TilesAccessException(
- "Unable to set attribute for specified context: '"
- + context + "'", e);
- }
+ Class<?> contextClass = context.getClass();
+ Method attrMethod = ClassUtil.getForcedAccessibleMethod(
+ contextClass, "setAttribute", String.class, Object.class);
+ ClassUtil.invokeMethod(context, attrMethod, name, value);
}
/**
@@ -205,16 +195,9 @@
* @throws TilesAccessException If something goes wrong during removal.
*/
private static void removeAttribute(Object context, String name) {
- try {
- Class<?> contextClass = context.getClass();
- Method attrMethod = contextClass.getMethod("removeAttribute",
String.class);
- attrMethod.invoke(context, name);
- } catch (RuntimeException e) {
- throw e;
- } catch (Exception e) {
- throw new TilesAccessException(
- "Unable to remove attribute for specified context: '"
- + context + "'", e);
- }
+ Class<?> contextClass = context.getClass();
+ Method attrMethod = ClassUtil.getForcedAccessibleMethod(
+ contextClass, "removeAttribute", String.class);
+ ClassUtil.invokeMethod(context, attrMethod, name);
}
}
Propchange:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/
------------------------------------------------------------------------------
svn:mergeinfo =
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotAccessMethodException.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotAccessMethodException.java?rev=680114&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotAccessMethodException.java
(added)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotAccessMethodException.java
Sun Jul 27 07:40:05 2008
@@ -0,0 +1,72 @@
+/*
+ * $Id: CannotInstantiateObjectException.java 637434 2008-03-15 15:48:38Z
apetrelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.reflect;
+
+import org.apache.tiles.TilesException;
+
+/**
+ * Indicates that a method cannot be accessed.
+ *
+ * @version $Rev: 637434 $ $Date: 2008-03-15 16:48:38 +0100 (sab, 15 mar 2008)
$
+ * @since 2.1.0
+ */
+public class CannotAccessMethodException extends TilesException {
+
+ /**
+ * Constructor.
+ *
+ * @since 2.1.0
+ */
+ public CannotAccessMethodException() {
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The detail message.
+ * @since 2.1.0
+ */
+ public CannotAccessMethodException(String message) {
+ super(message);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public CannotAccessMethodException(Exception e) {
+ super(e);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The detail message.
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public CannotAccessMethodException(String message, Exception e) {
+ super(message, e);
+ }
+
+}
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotInstantiateObjectException.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotInstantiateObjectException.java?rev=680114&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotInstantiateObjectException.java
(added)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/CannotInstantiateObjectException.java
Sun Jul 27 07:40:05 2008
@@ -0,0 +1,72 @@
+/*
+ * $Id: CannotInstantiateObjectException.java 637434 2008-03-15 15:48:38Z
apetrelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.reflect;
+
+import org.apache.tiles.TilesException;
+
+/**
+ * Indicates that an object cannot be instantiated.
+ *
+ * @version $Rev: 637434 $ $Date: 2008-03-15 16:48:38 +0100 (sab, 15 mar 2008)
$
+ * @since 2.1.0
+ */
+public class CannotInstantiateObjectException extends TilesException {
+
+ /**
+ * Constructor.
+ *
+ * @since 2.1.0
+ */
+ public CannotInstantiateObjectException() {
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The detail message.
+ * @since 2.1.0
+ */
+ public CannotInstantiateObjectException(String message) {
+ super(message);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public CannotInstantiateObjectException(Exception e) {
+ super(e);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message The detail message.
+ * @param e The exception to be wrapped.
+ * @since 2.1.0
+ */
+ public CannotInstantiateObjectException(String message, Exception e) {
+ super(message, e);
+ }
+
+}
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java?rev=680114&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
(added)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
Sun Jul 27 07:40:05 2008
@@ -0,0 +1,145 @@
+/*
+ * $Id: ClassUtil.java 637434 2008-03-15 15:48:38Z apetrelli $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tiles.reflect;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+
+/**
+ * Utilities to work with dynamic class loading and instantiation.
+ *
+ * @version $Rev: 637434 $ $Date: 2008-03-15 16:48:38 +0100 (sab, 15 mar 2008)
$
+ */
+public final class ClassUtil {
+
+ /**
+ * Constructor, private to avoid instantiation.
+ */
+ private ClassUtil() {
+ }
+
+ /**
+ * Returns an instance of the given class name, by calling the default
+ * constructor.
+ *
+ * @param className The class name to load and to instantiate.
+ * @return The new instance of the class name.
+ * @throws CannotInstantiateObjectException If something goes wrong during
+ * instantiation.
+ */
+ public static Object instantiate(String className) {
+ return instantiate(className, false);
+ }
+
+ /**
+ * Returns an instance of the given class name, by calling the default
+ * constructor.
+ *
+ * @param className The class name to load and to instantiate.
+ * @param returnNull If <code>true</code>, if the class is not found it
+ * returns <code>true</code>, otherwise it throws a
+ * <code>TilesException</code>.
+ * @return The new instance of the class name.
+ * @throws CannotInstantiateObjectException If something goes wrong during
instantiation.
+ */
+ public static Object instantiate(String className, boolean returnNull) {
+ ClassLoader original = Thread.currentThread().getContextClassLoader();
+ if (original == null) {
+
Thread.currentThread().setContextClassLoader(ClassUtil.class.getClassLoader());
+ }
+ try {
+ Class<?> namedClass = Class.forName(className);
+ return namedClass.newInstance();
+ } catch (ClassNotFoundException e) {
+ if (returnNull) {
+ return null;
+ }
+ throw new CannotInstantiateObjectException(
+ "Unable to resolve factory class: '" + className + "'", e);
+ } catch (IllegalAccessException e) {
+ throw new CannotInstantiateObjectException(
+ "Unable to access factory class: '" + className + "'", e);
+ } catch (InstantiationException e) {
+ throw new CannotInstantiateObjectException(
+ "Unable to instantiate factory class: '"
+ + className
+ + "'. Make sure that this class has a default
constructor",
+ e);
+ } finally {
+ Thread.currentThread().setContextClassLoader(original);
+ }
+ }
+
+ /**
+ * Gets a method and forces it to be accessible, even if it is not.
+ *
+ * @param clazz The class from which the method will be got.
+ * @param methodName The name of the method.
+ * @param parameterTypes The parameter types that the method must match.
+ * @return The method, if it is found.
+ */
+ public static Method getForcedAccessibleMethod(Class<?> clazz,
+ String methodName, Class<?>... parameterTypes) {
+ Method method;
+ try {
+ method = clazz.getMethod(methodName, parameterTypes);
+ } catch (SecurityException e) {
+ throw new CannotAccessMethodException("Cannot access method '"
+ + methodName + "' in class '" + clazz.getName()
+ + "' for security reasons", e);
+ } catch (NoSuchMethodException e) {
+ throw new CannotAccessMethodException("The method '"
+ + methodName + "' in class '" + clazz.getName()
+ + "' does not exist", e);
+ }
+ if (!method.isAccessible()) {
+ method.setAccessible(true);
+ }
+ return method;
+ }
+
+ /**
+ * Invokes a method, masking with a runtime exception all the exceptions.
+ *
+ * @param obj The object from which a method will be called.
+ * @param method The method to call.
+ * @param args The arguments of the method.
+ * @return The object returned, if the method is not "void".
+ */
+ public static Object invokeMethod(Object obj, Method method, Object...
args) {
+ try {
+ return method.invoke(obj, args);
+ } catch (IllegalArgumentException e) {
+ throw new CannotAccessMethodException("The arguments for '"
+ + method.getName() + "' in class '"
+ + obj.getClass().getName() + "' are not valid", e);
+ } catch (IllegalAccessException e) {
+ throw new CannotAccessMethodException("Cannot access '"
+ + method.getName() + "' in class '"
+ + obj.getClass().getName() + "'", e);
+ } catch (InvocationTargetException e) {
+ throw new CannotAccessMethodException(
+ "An exception has been thrown inside '" + method.getName()
+ + "' in class '" + obj.getClass().getName() + "'", e);
+ }
+ }
+}
Added:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html?rev=680114&view=auto
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
(added)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
Sun Jul 27 07:40:05 2008
@@ -0,0 +1,30 @@
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+-->
+<html>
+<head>
+ <title>Tiles reflection utilities</title>
+</head>
+<body>
+Classes to manage reflection in a centralized way for Tiles.
+</body>
+</html>
\ No newline at end of file
Propchange:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/package.html
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/LocaleDefinitionsFactory.java
Sun Jul 27 07:40:05 2008
@@ -33,7 +33,7 @@
import org.apache.tiles.definition.dao.DefinitionDAO;
import org.apache.tiles.locale.LocaleResolver;
import org.apache.tiles.locale.impl.DefaultLocaleResolver;
-import org.apache.tiles.util.ClassUtil;
+import org.apache.tiles.reflect.ClassUtil;
/**
* [EMAIL PROTECTED] DefinitionsFactory DefinitionsFactory} implementation
that manages
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/dao/BaseLocaleUrlDefinitionDAO.java
Sun Jul 27 07:40:05 2008
@@ -44,7 +44,7 @@
import org.apache.tiles.definition.RefreshMonitor;
import org.apache.tiles.definition.digester.DigesterDefinitionsReader;
import org.apache.tiles.impl.BasicTilesContainer;
-import org.apache.tiles.util.ClassUtil;
+import org.apache.tiles.reflect.ClassUtil;
/**
* Base abstract class for a DAO that is based on URLs and locale as a
@@ -193,7 +193,9 @@
LOG.debug("Adding resource '" + resourceUrl
+ "' to definitions factory.");
}
- if (!resourceUrl.toExternalForm().contains("_")) {
+ String externalForm = resourceUrl.toExternalForm();
+ if (externalForm.indexOf('_', externalForm
+ .lastIndexOf("/")) < 0) {
sourceURLs.add(resourceUrl);
} else if (LOG.isDebugEnabled()) {
LOG.debug("Not adding resource '" + resourceUrl
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/evaluator/el/ELAttributeEvaluator.java
Sun Jul 27 07:40:05 2008
@@ -36,7 +36,7 @@
import org.apache.tiles.awareness.TilesApplicationContextAware;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.evaluator.AttributeEvaluator;
-import org.apache.tiles.util.ClassUtil;
+import org.apache.tiles.reflect.ClassUtil;
/**
* Evaluates string expression with typical EL syntax.<br>
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/AbstractTilesContainerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/AbstractTilesContainerFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/AbstractTilesContainerFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/AbstractTilesContainerFactory.java
Sun Jul 27 07:40:05 2008
@@ -26,7 +26,7 @@
import java.util.Map;
import org.apache.tiles.TilesContainer;
-import org.apache.tiles.util.ClassUtil;
+import org.apache.tiles.reflect.ClassUtil;
/**
* Abstract Factory that creates instances of [EMAIL PROTECTED]
TilesContainerFactory}.
@@ -104,22 +104,19 @@
protected static Map<String, String> getInitParameterMap(Object context) {
Map<String, String> initParameters = new HashMap<String, String>();
Class<?> contextClass = context.getClass();
- try {
- Method method = contextClass.getMethod("getInitParameterNames");
- Enumeration<String> e = (Enumeration<String>) method
- .invoke(context);
-
- method = contextClass.getMethod("getInitParameter", String.class);
- while (e.hasMoreElements()) {
- String key = e.nextElement();
- initParameters.put(key, (String) method.invoke(context, key));
- }
- } catch (Exception e) {
- throw new TilesContainerFactoryException(
- "Unable to retrieve init parameters."
- + " Is this context a ServletContext, PortletContext,"
- + " or similar object?", e);
+ Method method = ClassUtil.getForcedAccessibleMethod(contextClass,
+ "getInitParameterNames");
+ Enumeration<String> e = (Enumeration<String>) ClassUtil
+ .invokeMethod(context, method);
+
+ method = ClassUtil.getForcedAccessibleMethod(contextClass,
+ "getInitParameter", String.class);
+ while (e.hasMoreElements()) {
+ String key = e.nextElement();
+ initParameters.put(key, (String) ClassUtil.invokeMethod(
+ context, method, key));
}
+
return initParameters;
}
@@ -136,16 +133,13 @@
protected static String getInitParameter(Object context,
String parameterName) {
Object value;
- try {
- Class<?> contextClass = context.getClass();
- Method getInitParameterMethod =
- contextClass.getMethod("getInitParameter", String.class);
- value = getInitParameterMethod.invoke(context, parameterName);
- } catch (Exception e) {
- throw new TilesContainerFactoryException(
- "Unrecognized context. Is this context"
- + " a ServletContext, PortletContext, or similar?", e);
- }
+ Class<?> contextClass = context.getClass();
+ Method getInitParameterMethod = ClassUtil
+ .getForcedAccessibleMethod(contextClass,
+ "getInitParameter", String.class);
+ value = ClassUtil.invokeMethod(context, getInitParameterMethod,
+ parameterName);
+
return value == null ? null : value.toString();
}
}
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/KeyedDefinitionsFactoryTilesContainerFactory.java
Sun Jul 27 07:40:05 2008
@@ -34,8 +34,8 @@
import
org.apache.tiles.impl.KeyedDefinitionsFactoryTilesContainer.KeyExtractor;
import org.apache.tiles.impl.mgmt.CachingKeyedDefinitionsFactoryTilesContainer;
import org.apache.tiles.mgmt.MutableTilesContainer;
+import org.apache.tiles.reflect.ClassUtil;
import org.apache.tiles.renderer.RendererFactory;
-import org.apache.tiles.util.ClassUtil;
/**
* Factory that creates instances of container that will extend the
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/TilesContainerFactory.java
Sun Jul 27 07:40:05 2008
@@ -39,9 +39,9 @@
import org.apache.tiles.mgmt.MutableTilesContainer;
import org.apache.tiles.preparer.BasicPreparerFactory;
import org.apache.tiles.preparer.PreparerFactory;
+import org.apache.tiles.reflect.ClassUtil;
import org.apache.tiles.renderer.RendererFactory;
import org.apache.tiles.renderer.impl.BasicRendererFactory;
-import org.apache.tiles.util.ClassUtil;
import java.util.HashMap;
import java.util.Map;
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/preparer/BasicPreparerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/preparer/BasicPreparerFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/preparer/BasicPreparerFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/preparer/BasicPreparerFactory.java
Sun Jul 27 07:40:05 2008
@@ -23,7 +23,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tiles.context.TilesRequestContext;
-import org.apache.tiles.util.ClassUtil;
+import org.apache.tiles.reflect.ClassUtil;
import java.util.HashMap;
import java.util.Map;
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/renderer/impl/BasicRendererFactory.java
Sun Jul 27 07:40:05 2008
@@ -31,10 +31,10 @@
import org.apache.tiles.context.TilesContextFactory;
import org.apache.tiles.evaluator.AttributeEvaluator;
import org.apache.tiles.evaluator.AttributeEvaluatorAware;
+import org.apache.tiles.reflect.ClassUtil;
import org.apache.tiles.renderer.AttributeRenderer;
import org.apache.tiles.renderer.RendererException;
import org.apache.tiles.renderer.RendererFactory;
-import org.apache.tiles.util.ClassUtil;
/**
* Basic renderer factory implementation.
Modified: tiles/framework/trunk/tiles-test/pom.xml
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-test/pom.xml?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
--- tiles/framework/trunk/tiles-test/pom.xml (original)
+++ tiles/framework/trunk/tiles-test/pom.xml Sun Jul 27 07:40:05 2008
@@ -312,18 +312,6 @@
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jsp-api</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
<scope>runtime</scope>
Modified:
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java?rev=680114&r1=680113&r2=680114&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
(original)
+++
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
Sun Jul 27 07:40:05 2008
@@ -139,7 +139,8 @@
Set<URL> urlSet = applicationContext
.getResources("/WEB-INF/tiles-defs*.xml");
for (URL url : urlSet) {
- if (!url.toExternalForm().contains("_")) {
+ String externalForm = url.toExternalForm();
+ if (externalForm.indexOf('_', externalForm.lastIndexOf("/")) <
0) {
urls.add(url);
}
}