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";
  
  
  

Reply via email to