oalexeev 01/07/23 05:35:07
Modified: contrib/service-manager/src/org/apache/struts/action
ServicesServlet.java
contrib/service-manager/src/org/apache/struts/service
InitServiceRule.java Service.java
ServiceManager.java
contrib/service-manager/src/org/apache/struts/service/factory
FactoryService.java
Added: contrib/service-manager/src/org/apache/struts/service
ServiceManagerResources.properties
Log:
Refactor ServiceManager init process.
Revision Changes Path
1.3 +8 -8
jakarta-struts/contrib/service-manager/src/org/apache/struts/action/ServicesServlet.java
Index: ServicesServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/action/ServicesServlet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServicesServlet.java 2001/07/18 04:22:19 1.2
+++ ServicesServlet.java 2001/07/23 12:35:07 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/action/ServicesServlet.java,v
1.2 2001/07/18 04:22:19 oalexeev Exp $
- * $Revision: 1.2 $
- * $Date: 2001/07/18 04:22:19 $
+ * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/action/ServicesServlet.java,v
1.3 2001/07/23 12:35:07 oalexeev Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/07/23 12:35:07 $
*
* ====================================================================
*
@@ -87,7 +87,7 @@
/**
* @author Oleg V Alexeev
- * @version $Revision: 1.2 $ $Date: 2001/07/18 04:22:19 $
+ * @version $Revision: 1.3 $ $Date: 2001/07/23 12:35:07 $
*/
public class ServicesServlet
extends ActionServlet {
@@ -106,9 +106,9 @@
protected void initServiceManager()
throws ServletException {
try {
- services.init();
- } catch ( Exception e ) {
- throw new ServletException( "Exception at init of
ServletServiceManager", e );
+ services.initStructures();
+ } catch( Exception e ) {
+ log( "Exception at initStructures of ServiceManager.", e );
}
}
@@ -155,7 +155,7 @@
Digester digester = super.initDigester( detail );
- services.initDigester( digester, "struts-config", detail );
+ services.initDigester( digester, "struts-config" );
return digester;
1.4 +6 -10
jakarta-struts/contrib/service-manager/src/org/apache/struts/service/InitServiceRule.java
Index: InitServiceRule.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/InitServiceRule.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InitServiceRule.java 2001/07/18 12:33:57 1.3
+++ InitServiceRule.java 2001/07/23 12:35:07 1.4
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/InitServiceRule.java,v
1.3 2001/07/18 12:33:57 oalexeev Exp $
- * $Revision: 1.3 $
- * $Date: 2001/07/18 12:33:57 $
+ * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/InitServiceRule.java,v
1.4 2001/07/23 12:35:07 oalexeev Exp $
+ * $Revision: 1.4 $
+ * $Date: 2001/07/23 12:35:07 $
*
* ====================================================================
*
@@ -67,7 +67,7 @@
/**
* @author Oleg V Alexeev
- * @version $Revision: 1.3 $ $Date: 2001/07/18 12:33:57 $
+ * @version $Revision: 1.4 $ $Date: 2001/07/23 12:35:07 $
*/
public class InitServiceRule extends Rule {
@@ -75,15 +75,11 @@
protected Service service = null;
- protected int detail = 0;
-
protected String path = null;
- public InitServiceRule( Digester digester, String path,
- int detail, ServiceManager manager ) {
+ public InitServiceRule( Digester digester, String path, ServiceManager
manager ) {
super( digester );
this.path = path;
- this.detail = detail;
this.manager = manager;
}
@@ -99,7 +95,7 @@
String servicePath = path + "/" + registration.getName() +
"-service";
if( registration.getUseDigester() ) {
digester.addRule( servicePath, new InitServiceConfigRule(
digester, service ) );
- service.initDigester( digester, servicePath, detail );
+ service.initDigester( digester, servicePath );
}
}
1.3 +5 -5
jakarta-struts/contrib/service-manager/src/org/apache/struts/service/Service.java
Index: Service.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/Service.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Service.java 2001/07/18 04:22:19 1.2
+++ Service.java 2001/07/23 12:35:07 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/Service.java,v
1.2 2001/07/18 04:22:19 oalexeev Exp $
- * $Revision: 1.2 $
- * $Date: 2001/07/18 04:22:19 $
+ * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/Service.java,v
1.3 2001/07/23 12:35:07 oalexeev Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/07/23 12:35:07 $
*
* ====================================================================
*
@@ -66,7 +66,7 @@
/**
* @author Oleg V Alexeev
- * @version $Revision: 1.2 $ $Date: 2001/07/18 04:22:19 $
+ * @version $Revision: 1.3 $ $Date: 2001/07/23 12:35:07 $
*/
public class Service implements Serializable {
@@ -112,7 +112,7 @@
;
}
- public void initDigester( Digester digester, String path, int detail ) {
+ public void initDigester( Digester digester, String path ) {
;
}
1.3 +150 -21
jakarta-struts/contrib/service-manager/src/org/apache/struts/service/ServiceManager.java
Index: ServiceManager.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/ServiceManager.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServiceManager.java 2001/07/18 04:22:19 1.2
+++ ServiceManager.java 2001/07/23 12:35:07 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/ServiceManager.java,v
1.2 2001/07/18 04:22:19 oalexeev Exp $
- * $Revision: 1.2 $
- * $Date: 2001/07/18 04:22:19 $
+ * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/ServiceManager.java,v
1.3 2001/07/23 12:35:07 oalexeev Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/07/23 12:35:07 $
*
* ====================================================================
*
@@ -62,16 +62,24 @@
package org.apache.struts.service;
import java.io.Serializable;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.FileInputStream;
import java.util.Iterator;
import java.util.HashMap;
import java.util.ArrayList;
import java.lang.NoSuchMethodException;
+import java.util.MissingResourceException;
+import javax.servlet.UnavailableException;
+import java.util.MissingResourceException;
import java.lang.reflect.Method;
+import org.xml.sax.SAXException;
import org.apache.commons.digester.Digester;
+import org.apache.struts.util.MessageResources;
/**
* @author Oleg V Alexeev
- * @version $Revision: 1.2 $ $Date: 2001/07/18 04:22:19 $
+ * @version $Revision: 1.3 $ $Date: 2001/07/23 12:35:07 $
*/
public class ServiceManager implements Serializable {
@@ -81,6 +89,12 @@
protected static final String processSubscriptionClass =
"org.apache.struts.service.ProcessSubscription";
+ protected String configLocation = "service-manager.xml";
+
+ protected String configLocationPropertyName =
"org.apache.struts.service.ConfigLocation";
+
+ protected String configDetailPropertyName =
"org.apache.struts.service.ConfigDetail";
+
protected Object parent = null;
protected ArrayList emptyList = new ArrayList();
@@ -95,6 +109,16 @@
protected int debug = 0;
+ /**
+ * The resources object for our internal resources.
+ */
+ protected MessageResources internal = null;
+
+ /**
+ * The Java base name of our internal resources.
+ */
+ protected String internalName =
"org.apache.struts.service.ServiceManagerResources";
+
protected Iterator getEmptyIterator() {
return emptyList.iterator();
}
@@ -149,18 +173,18 @@
}
public void registerProcess( ProcessRegistration registration ) {
-// if( debug>0 )
+
+ if( debug>0 )
logHelper.log( "Register process '" +
registration.getName() + "'" );
registration.setServiceManager( this );
processRegistrations.put( registration.getName(), registration );
- logHelper.log( "Test: process '" + registration.getName() +
"' - '" +
- processRegistrations.get( registration.getName() ) + "'" );
}
public void registerService( ServiceRegistration registration )
throws Exception {
-// if( debug>0 )
+
+ if( debug>0 )
logHelper.log( "Register service '" +
registration.getName() +
"' class - '" + registration.getType() + "'" );
@@ -170,17 +194,129 @@
services.add( service );
service.setLogHelper( getLogHelper() );
}
+
+ //------------------------------------------------------- Init methods
- public Digester initDigester( Digester digester, String path, int detail ) {
+ /** Single init method. Use this method to init ServiceManager
+ * with its own service-manager.xml config file.
+ */
+ public void init()
+ throws Exception {
if( debug>0 )
+ logHelper.log( "Init ServiceManager class - '" +
this.getClass().getName() + "'" );
+
+ initStructures();
+ initConfig();
+ }
+
+ /** Init internal structures to fill it later in init process
+ */
+ public void initStructures()
+ throws Exception {
+ initInternal();
+ processRegistrations.clear();
+ serviceRegistrations.clear();
+ services.clear();
+ }
+
+ /**
+ * Initialize our internal MessageResources bundle.
+ *
+ * @exception UnavailableException if we cannot initialize these resources
+ */
+ protected void initInternal() throws Exception {
+
+ try {
+ internal =
MessageResources.getMessageResources(internalName);
+ } catch (MissingResourceException e) {
+ logHelper.log( "Cannot load internal resources from '" +
+ internalName + "'", e);
+ throw e;
+ }
+ }
+
+ /** Read self-contained config with help of digester.
+ */
+ public void initConfig()
+ throws Exception {
+
+ initVariables();
+
+ int detail;
+ try {
+ String value = System.getProperty( configDetailPropertyName
);
+ detail = Integer.parseInt(value);
+ } catch (Throwable t) {
+ detail = 0;
+ }
+
+ // Acquire an input stream to our configuration resource
+ InputStream input = getConfigResource();
+
+ // Build a digester to process our configuration resource
+ Digester digester = initDigester(detail);
+
+ // Parse the input stream to configure our mappings
+ try {
+ digester.parse(input);
+ } catch (SAXException e) {
+ throw e;
+ } finally {
+ input.close();
+ }
+
+ }
+
+ /** Init internal variables to be used at init process;
+ */
+ public void initVariables()
+ throws Exception {
+ String value = null;
+
+ try {
+ value = System.getProperty( configLocationPropertyName );
+ } catch ( SecurityException e ) {
+ throw e;
+ } catch ( Exception e ) {
+ logHelper.log( internal.getMessage(
+ "configLocationProperty.emptyProperty",
+ configLocationPropertyName,
+ configLocation ) );
+ }
+ if( value != null )
+ configLocation = value;
+ }
+
+ /** Connect to the config.
+ */
+ protected InputStream getConfigResource()
+ throws Exception {
+ return new FileInputStream( configLocation );
+ }
+
+ /** Init digester to be used with independent
+ * service manager config.
+ */
+ public Digester initDigester( int detail ) {
+ Digester digester = new Digester();
+ digester.setDebug(detail);
+ digester.setNamespaceAware(true);
+ digester.setValidating(false);
+ return initDigester( digester, null );
+ }
+
+ /** Init digester to parse config
+ */
+ public Digester initDigester( Digester digester, String path ) {
+
+ if( debug>0 )
logHelper.log( "Init digester in ServiceManager class - '"
+ this.getClass().getName() + "'" );
- if( path!=null ) {
+ if( path!=null )
path += "/";
- } else {
+ else
path = "";
- }
String serviceManagerPath =
path + "service-manager";
@@ -206,7 +342,7 @@
digester.addSetNext( serviceRegistrationPath, "registerService",
serviceRegistrationClass );
digester.addRule( serviceRegistrationPath,
- new InitServiceRule( digester, new String(
serviceRegistrationPath ), detail, this ) );
+ new InitServiceRule( digester, new String(
serviceRegistrationPath ), this ) );
// parse process subscriptions
digester.addObjectCreate( processSubscriptionPath,
processSubscriptionClass );
@@ -217,14 +353,7 @@
return digester;
}
- public void init()
- throws Exception {
- if( debug>0 )
- logHelper.log( "Init ServiceManager class - '" +
this.getClass().getName() + "'" );
- processRegistrations.clear();
- serviceRegistrations.clear();
- services.clear();
- }
+ //------------------------------------------------------- Destroy methods
public void destroy() {
if( debug>0 )
1.1
jakarta-struts/contrib/service-manager/src/org/apache/struts/service/ServiceManagerResources.properties
Index: ServiceManagerResources.properties
===================================================================
configMissing=Config file {0} is missing!
configLocationProperty.emptyProperty=Config location property {0} is empty. Use
default - {1}.
1.3 +4 -4
jakarta-struts/contrib/service-manager/src/org/apache/struts/service/factory/FactoryService.java
Index: FactoryService.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/factory/FactoryService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FactoryService.java 2001/07/18 04:22:20 1.2
+++ FactoryService.java 2001/07/23 12:35:07 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/factory/FactoryService.java,v
1.2 2001/07/18 04:22:20 oalexeev Exp $
- * $Revision: 1.2 $
- * $Date: 2001/07/18 04:22:20 $
+ * $Header:
/home/cvs/jakarta-struts/contrib/service-manager/src/org/apache/struts/service/factory/FactoryService.java,v
1.3 2001/07/23 12:35:07 oalexeev Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/07/23 12:35:07 $
*
* ====================================================================
*
@@ -586,7 +586,7 @@
}
- public void initDigester( Digester digester, String path, int detail ) {
+ public void initDigester( Digester digester, String path ) {
String factoryPath = path + "/factories/factory";
String templatePath = path + "/templates/template";