henning 2003/03/11 09:52:48
Modified: src/java/org/apache/turbine TurbineConstants.java
src/java/org/apache/turbine/services/assemblerbroker/util/java
JavaActionFactory.java JavaBaseFactory.java
JavaLayoutFactory.java JavaNavigationFactory.java
JavaPageFactory.java JavaScheduledJobFactory.java
JavaScreenFactory.java
Log:
- Loader now use Constants from TurbineConstants
- Reworked class base loader logic, removed a bug with
interclass uppercase letters
Revision Changes Path
1.23 +4 -1
jakarta-turbine-2/src/java/org/apache/turbine/TurbineConstants.java
Index: TurbineConstants.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/TurbineConstants.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- TurbineConstants.java 11 Mar 2003 17:07:55 -0000 1.22
+++ TurbineConstants.java 11 Mar 2003 17:52:47 -0000 1.23
@@ -322,4 +322,7 @@
/** Prefix for page related classes and templates */
String PAGE_PREFIX = "pages";
+
+ /** Prefix for scheduler job related classes */
+ String SCHEDULEDJOB_PREFIX = "scheduledjobs";
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaActionFactory.java
Index: JavaActionFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaActionFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaActionFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaActionFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaActionFactory extends JavaBaseFactory
+public class JavaActionFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("actions", name);
+ return getAssembler(TurbineConstants.ACTION_PREFIX, name);
}
}
1.4 +89 -40
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaBaseFactory.java
Index: JavaBaseFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaBaseFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaBaseFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaBaseFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,7 +54,15 @@
* <http://www.apache.org/>.
*/
+import java.util.Iterator;
import java.util.Vector;
+
+import org.apache.commons.lang.StringUtils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
import org.apache.turbine.modules.GenericLoader;
import org.apache.turbine.services.assemblerbroker.util.AssemblerFactory;
@@ -66,17 +74,24 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public abstract class JavaBaseFactory implements AssemblerFactory
+public abstract class JavaBaseFactory
+ implements AssemblerFactory
{
- /** A vector of packages */
+ /** A vector of packages. */
private static Vector packages =
- TurbineResources.getVector("module.packages");
+ TurbineResources.getVector(TurbineConstants.MODULE_PACKAGES);
+
+ /** Logging */
+ private static Log log = LogFactory.getLog(JavaBaseFactory.class);
+
static
{
ObjectUtils.addOnce(packages, GenericLoader.getBasePackage());
+ log.debug("Added the following packages: " + packages);
}
/**
@@ -89,49 +104,83 @@
public Assembler getAssembler(String packageName, String name)
{
Assembler assembler = null;
+
+ log.debug("Class Fragment is " + name);
- for (int i = 0; i < packages.size(); i++)
+ if (StringUtils.isNotEmpty(name))
{
- String className = ((String) packages.elementAt(i) + "."
- + packageName + "." + name);
- try
- {
- Class servClass = Class.forName(className);
- assembler = (Assembler) servClass.newInstance();
- return assembler;
- }
- catch (ClassNotFoundException cnfe)
- {
- // Do this so we loop through all the packages.
- }
- catch (NoClassDefFoundError ncdfe)
- {
- // Do this so we loop through all the packages.
- }
- catch (ClassCastException cce)
- {
- // This means trouble!
- // Alternatively we can throw this exception so
- // that it will appear on the client browser
- return null;
- }
- catch (InstantiationException ine)
+ int dotIndex = name.lastIndexOf('.');
+
+ if (dotIndex > 0)
{
- // This means trouble!
- // Alternatively we can throw this exception so
- // that it will appear on the client browser
- return null;
+ //
+ // Convert Foo.Bar.Baz ---> foo.bar.Baz
+ StringBuffer nameBuffer = new StringBuffer();
+ nameBuffer.append(name.substring(0, dotIndex).toLowerCase());
+ nameBuffer.append('.');
+ nameBuffer.append(name.substring(dotIndex + 1));
+ name = nameBuffer.toString();
}
- catch (IllegalAccessException ilae)
+
+ log.debug("Class Fragment now " + name);
+
+ for (Iterator it = packages.iterator(); it.hasNext();)
{
- // This means trouble!
- // Alternatively we can throw this exception so
- // that it will appear on the client browser
- return null;
+ StringBuffer className = new StringBuffer();
+
+ className.append(it.next());
+ className.append('.');
+ className.append(packageName);
+ className.append('.');
+ className.append(name);
+
+ log.debug("Trying " + className);
+
+ try
+ {
+ Class servClass = Class.forName(className.toString());
+ assembler = (Assembler) servClass.newInstance();
+ break; // for()
+ }
+ catch (ClassNotFoundException cnfe)
+ {
+ // Do this so we loop through all the packages.
+ log.debug(className + ": Not found");
+ }
+ catch (NoClassDefFoundError ncdfe)
+ {
+ // Do this so we loop through all the packages.
+ log.debug(className + ": No Class Definition found");
+ }
+ catch (ClassCastException cce)
+ {
+ // This means trouble!
+ // Alternatively we can throw this exception so
+ // that it will appear on the client browser
+ log.error(cce);
+ break; // for()
+ }
+ catch (InstantiationException ine)
+ {
+ // This means trouble!
+ // Alternatively we can throw this exception so
+ // that it will appear on the client browser
+ log.error(ine);
+ break; // for()
+ }
+ catch (IllegalAccessException ilae)
+ {
+ // This means trouble!
+ // Alternatively we can throw this exception so
+ // that it will appear on the client browser
+ log.error(ilae);
+ break; // for()
+ }
+ // With ClassCastException, InstantiationException we hit big
problems
}
- // With ClassCastException, InstantiationException
- // we hit big problems
}
+ log.debug("Returning: " + assembler);
+
return assembler;
}
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaLayoutFactory.java
Index: JavaLayoutFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaLayoutFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaLayoutFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaLayoutFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaLayoutFactory extends JavaBaseFactory
+public class JavaLayoutFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("layouts", name);
+ return getAssembler(TurbineConstants.LAYOUT_PREFIX, name);
}
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaNavigationFactory.java
Index: JavaNavigationFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaNavigationFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaNavigationFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaNavigationFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaNavigationFactory extends JavaBaseFactory
+public class JavaNavigationFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("navigations", name);
+ return getAssembler(TurbineConstants.NAVIGATION_PREFIX, name);
}
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaPageFactory.java
Index: JavaPageFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaPageFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaPageFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaPageFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaPageFactory extends JavaBaseFactory
+public class JavaPageFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("pages", name);
+ return getAssembler(TurbineConstants.PAGE_PREFIX, name);
}
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaScheduledJobFactory.java
Index: JavaScheduledJobFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaScheduledJobFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaScheduledJobFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaScheduledJobFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaScheduledJobFactory extends JavaBaseFactory
+public class JavaScheduledJobFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("scheduledjobs", name);
+ return getAssembler(TurbineConstants.SCHEDULEDJOB_PREFIX, name);
}
}
1.4 +6 -3
jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaScreenFactory.java
Index: JavaScreenFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/assemblerbroker/util/java/JavaScreenFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JavaScreenFactory.java 9 Mar 2003 03:06:24 -0000 1.3
+++ JavaScreenFactory.java 11 Mar 2003 17:52:47 -0000 1.4
@@ -54,6 +54,7 @@
* <http://www.apache.org/>.
*/
+import org.apache.turbine.TurbineConstants;
import org.apache.turbine.modules.Assembler;
/**
@@ -61,9 +62,11 @@
* the module packages defined in the TurbineResource.properties.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Leon Messerschmidt</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
* @version $Id$
*/
-public class JavaScreenFactory extends JavaBaseFactory
+public class JavaScreenFactory
+ extends JavaBaseFactory
{
/**
* Get an Assembler.
@@ -73,6 +76,6 @@
*/
public Assembler getAssembler(String name)
{
- return getAssembler("screens", name);
+ return getAssembler(TurbineConstants.SCREEN_PREFIX, name);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]