openejb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jlaskow...@apache.org
Subject svn commit: r454210 - in /incubator/openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/util/ server/openejb-server/src/main/java/org/apache/openejb/server/ server/openejb-server/src/main/resources/META-INF/
Date Sun, 08 Oct 2006 21:08:14 GMT
Author: jlaskowski
Date: Sun Oct  8 14:08:14 2006
New Revision: 454210

URL: http://svn.apache.org/viewvc?view=rev&rev=454210
Log:
More XBean-isation - add PropertiesService that will keep track of (un)setting properties

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
  (with props)
Modified:
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
  (contents, props changed)

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java?view=auto&rev=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
(added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
Sun Oct  8 14:08:14 2006
@@ -0,0 +1,119 @@
+/**
+ * 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.openejb.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Manages properties so any property modifications are handled here.
+ * 
+ * It lets us track the properties used and possibly remove some. They are all
+ * scattered in many places and it's so hard to keep track of them.
+ * 
+ * The class holds all OpenEJB properties and optionally can amend the
+ * environment.
+ * 
+ * The aim of this class is to establish one place to keep the properties and
+ * eventually remove the need to set System properties to communicate between
+ * parts and possibly yet lay out a foundation for setting them up in JNDI or
+ * some other means
+ * 
+ * TODO: Should this class be concerned with concurrency issues?
+ * 
+ * @org.apache.xbean.XBean element="propertiesService"
+ * 
+ * @version $Rev$ $Date$
+ */
+public class PropertiesService {
+    private Properties props = new Properties();
+
+    /**
+     * Should properties be passed on to the environment?
+     */
+    private boolean passOn = true;
+
+    /**
+     * Should the service query environment properties upon initialization?
+     */
+    private boolean queryEnvOnInit = true;
+
+    public PropertiesService() {
+        if (queryEnvOnInit) {
+            props.putAll(System.getProperties());
+        }
+    }
+
+    /**
+     * Set value to a property. Optionally set System property via
+     * {@link System#setProperty(String, String)}
+     * 
+     * @param name
+     *            property name
+     * @param value
+     *            property value
+     * @return previous property value or null if the value hasn't been assigned
+     *         yet
+     */
+    public String setProperty(String name, String value) {
+        if (passOn) {
+            System.setProperty(name, value);
+        }
+        return (String) props.setProperty(name, value);
+    }
+
+    public String getProperty(String name) {
+        return (String) props.get(name);
+    }
+
+    /**
+     * ISSUE: It might be of help to differentiate between unavailable property
+     * and boolean property set to false
+     * 
+     * @param name
+     *            property name
+     * @return true if property keyed by name is set; false otherwise
+     */
+    public boolean isSet(String name) {
+        return props.containsKey(name);
+    }
+
+    public void putAll(Properties props) {
+        props.putAll(props);
+    }
+    
+    public Properties getProperties() {
+        return props;
+    }
+
+    public boolean isPassOn() {
+        return passOn;
+    }
+
+    public void setPassOn(boolean passOn) {
+        this.passOn = passOn;
+    }
+
+    public boolean isQueryEnvOnInit() {
+        return queryEnvOnInit;
+    }
+
+    public void setQueryEnvOnInit(boolean queryEnvOnInit) {
+        this.queryEnvOnInit = queryEnvOnInit;
+    }
+}

Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/PropertiesService.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author Id Revision HeadURL

Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
(original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Main.java
Sun Oct  8 14:08:14 2006
@@ -23,28 +23,41 @@
 
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.JarUtils;
+import org.apache.openejb.util.PropertiesService;
 import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
 import org.apache.xbean.spring.context.SpringApplicationContext;
-import org.apache.xbean.spring.context.v2.XBeanXmlBeanFactory;
-import org.springframework.context.support.AbstractXmlApplicationContext;
-import org.springframework.core.io.ClassPathResource;
 
 /**
- * Assemble OpenEJB instance and boot it up 
+ * Assemble OpenEJB instance and boot it up
  */
 public class Main {
 
     private static final String helpBase = "META-INF/org.apache.openejb.cli/";
 
+    // TODO: Remove the static initializer once Main is fully XBean-ized
+    private static final SpringApplicationContext factory;
+    static {
+        factory = new ClassPathXmlApplicationContext("META-INF/openejb-server.xml");
+    }
+
     public static void main(String args[]) {
 
         try {
+            PropertiesService propertiesService = (PropertiesService) factory.getBean("propertiesService");
             Properties props = parseArguments(args);
-            SystemInstance.init(props);
+            // FIXME: Remove parseArguments and let propertiesService take care of properties
mgmt
+            propertiesService.putAll(props);
+            
+            // FIXME: Enable XBean-ized SystemInstance 
+            //SystemInstance system = (SystemInstance) factory.getBean("system");
+            
+            SystemInstance.init(propertiesService.getProperties());
             SystemInstance system = SystemInstance.get();
             File libs = system.getHome().getDirectory("lib");
             system.getClassPath().addJarsToPath(libs);
-            initServer(props);
+
+            Server server = (Server) factory.getBean("server");
+            server.start();
         } catch (DontStartServerException e) {
 
         } catch (Exception e) {
@@ -53,11 +66,15 @@
     }
 
     /**
-     * Parse arguments and override any {@link System} properties returned via {@link System#getProperties()}.
-     *  
-     * @param args command line arguments
+     * Parse arguments and override any {@link System} properties returned via
+     * {@link System#getProperties()}.
+     * 
+     * @param args
+     *            command line arguments
      * @return properties as defined in System and on the command line
-     * @throws DontStartServerException thrown as an indication to not boot up OpenEJB instance,
e.g. after printing out properties, help, etc. 
+     * @throws DontStartServerException
+     *             thrown as an indication to not boot up OpenEJB instance, e.g.
+     *             after printing out properties, help, etc.
      */
     private static Properties parseArguments(String args[]) throws DontStartServerException
{
         Properties props = new Properties();
@@ -99,10 +116,8 @@
                     props.setProperty("openejb.server.admin-ip", args[++i]);
                 }
             } else if (args[i].startsWith("--local-copy")) {
-                if (args[i].endsWith("false") ||
-                        args[i].endsWith("FALSE") ||
-                        args[i].endsWith("no") ||
-                        args[i].endsWith("NO")) {
+                if (args[i].endsWith("false") || args[i].endsWith("FALSE") || args[i].endsWith("no")
+                        || args[i].endsWith("NO")) {
                     props.setProperty("openejb.localcopy", "false");
                 } else {
                     props.setProperty("openejb.localcopy", "true");
@@ -133,9 +148,9 @@
         try {
             JarUtils.setHandlerSystemProperty();
             versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
-        } catch (java.io.IOException e) {
-        }
-        System.out.println("OpenEJB Remote Server " + versionInfo.get("version") + "    build:
" + versionInfo.get("date") + "-" + versionInfo.get("time"));
+        } catch (java.io.IOException e) {}
+        System.out.println("OpenEJB Remote Server " + versionInfo.get("version") + "    build:
"
+                + versionInfo.get("date") + "-" + versionInfo.get("time"));
         System.out.println("" + versionInfo.get("url"));
     }
 
@@ -146,8 +161,7 @@
             Properties versionInfo = new Properties();
             versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
             header += versionInfo.get("version");
-        } catch (java.io.IOException e) {
-        }
+        } catch (java.io.IOException e) {}
 
         System.out.println(header);
 
@@ -159,8 +173,7 @@
                 System.out.write(b);
                 b = in.read();
             }
-        } catch (java.io.IOException e) {
-        }
+        } catch (java.io.IOException e) {}
     }
 
     private static void printExamples() {
@@ -170,8 +183,7 @@
             Properties versionInfo = new Properties();
             versionInfo.load(new URL("resource:/openejb-version.properties").openConnection().getInputStream());
             header += versionInfo.get("version");
-        } catch (java.io.IOException e) {
-        }
+        } catch (java.io.IOException e) {}
 
         System.out.println(header);
 
@@ -183,22 +195,8 @@
                 System.out.write(b);
                 b = in.read();
             }
-        } catch (java.io.IOException e) {
-        }
-    }
-
-    private static void initServer(Properties props) throws Exception {
-        //Server server = new Server();
-// FIXME: XBeanXmlBeanFactory vs AbstractXmlApplicationContext
-//        XBeanXmlBeanFactory factory = new XBeanXmlBeanFactory(new ClassPathResource("META-INF/openejb-server.xml"));
-//        Server server = (Server) factory.getBean("server");
-        SpringApplicationContext factory = new ClassPathXmlApplicationContext("META-INF/openejb-server.xml");
-        Server server = (Server) factory.getBean("server");
-        server.init(props);
-        server.start();
+        } catch (java.io.IOException e) {}
     }
 }
 
-class DontStartServerException extends Exception {
-}
-
+class DontStartServerException extends Exception {}

Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
(original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
Sun Oct  8 14:08:14 2006
@@ -23,6 +23,7 @@
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
+import org.apache.openejb.util.PropertiesService;
 import org.apache.openejb.util.SafeToolkit;
 
 /**
@@ -37,7 +38,10 @@
     private Messages _messages = new Messages("org.apache.openejb.server");
     private Logger logger = Logger.getInstance("OpenEJB.server.remote", "org.apache.openejb.server");
 
+    // FIXME: Remove it completely once we ensure PropertiesService (below) works well
     Properties props;
+    
+    private PropertiesService propertiesService;
 
     static Server server;
     private ServiceManager manager;
@@ -50,19 +54,32 @@
         return server;
     }
 
+    // TODO: Remove it once init() suits our (initialisation) needs 
     public void init(java.util.Properties props) throws Exception {
         this.props = props;
 
-        OpenEJB.init(props, new ServerFederation());
+        OpenEJB.init(propertiesService.getProperties(), new ServerFederation());
 
         if (System.getProperty("openejb.nobanner") == null) {
             System.out.println("[init] OpenEJB Remote Server");
         }
 
-        // it's injected by XBean
-        // @see openejb-server.xml
-        // FIXME: Remove it once we're certain it works well (which should be in a couple
of commits)
-        //manager = ServiceManager.getManager();
+        manager.init();
+    }
+
+    /**
+     * Copy of {@link #init(Properties)} to XBean-ize it
+     * 
+     * @throws Exception
+     */
+    public void init() throws Exception {
+
+        OpenEJB.init(propertiesService.getProperties(), new ServerFederation());
+
+        if (!propertiesService.isSet("openejb.nobanner")) {
+            System.out.println("[init] OpenEJB Remote Server");
+        }
+
         manager.init();
     }
 
@@ -88,6 +105,10 @@
 
     public void setServiceManager(ServiceManager serviceManager) {
         this.manager = serviceManager;
+    }
+    
+    public void setPropertiesService(PropertiesService propertiesService) {
+        this.propertiesService = propertiesService;
     }
 }
 

Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml?view=diff&rev=454210&r1=454209&r2=454210
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
(original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
Sun Oct  8 14:08:14 2006
@@ -1,5 +1,5 @@
 <!--
-
+    
     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.
@@ -7,7 +7,7 @@
     (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
+        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,
@@ -19,9 +19,17 @@
 
 <!-- $Rev$ $Date$ -->
 
-<beans xmlns:o="http://openejb.apache.org/schemas/server">
-    <o:server id="server">
+<beans xmlns:s="http://openejb.apache.org/schemas/server" xmlns:c="http://openejb.apache.org/schemas/core"
+    xmlns:l="http://openejb.apache.org/schemas/loader">
+    <s:server id="server" init-method="init">
         <property name="serviceManager" ref="serviceManager" />
-    </o:server>
+        <property name="propertiesService" ref="propertiesService" />
+    </s:server>
+    <c:propertiesService id="propertiesService" />
     <bean id="serviceManager" class="org.apache.openejb.server.ServiceManager" factory-method="getManager"
/>
+    <!--
+       - FIXME: The only singleton class with lots of static code - really hard to get it
XBean-ized properly
+       - 
+    <l:system factory-method="get" init-method="init" />
+    -->
 </beans>

Propchange: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/resources/META-INF/openejb-server.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author Id Revision HeadURL



Mime
View raw message