Author: dblevins
Date: Fri Feb 26 20:12:50 2010
New Revision: 916805

URL: http://svn.apache.org/viewvc?rev=916805&view=rev
Log:
OPENEJB-1238: Custom JNDI name format properties at bean, app, or server level

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/OpenejbJarType.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java?rev=916805&r1=916804&r2=916805&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiBuilder.java
 Fri Feb 26 20:12:50 2010
@@ -43,6 +43,7 @@
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Comparator;
+import java.util.Properties;
 import java.lang.reflect.Constructor;
 
 
@@ -167,6 +168,8 @@
         private Map<String, StringTemplate> templates;
         
         private String format;
+        private Map<String, String> appContext;
+        private HashMap<String,String> beanContext;
 
         public TemplatedStrategy(EjbJarInfo ejbJarInfo, Map<String, 
DeploymentInfo> deployments) {
             Options options = new Options(ejbJarInfo.properties, 
SystemInstance.get().getOptions());
@@ -187,6 +190,19 @@
             for (EnterpriseBeanInfo beanInfo : ejbJarInfo.enterpriseBeans) {
                 beanInfos.put(beanInfo.ejbDeploymentId, beanInfo);
             }
+
+            appContext = new HashMap<String, String>();
+            putAll(appContext, SystemInstance.get().getProperties());
+            putAll(appContext, ejbJarInfo.properties);
+        }
+
+        private void putAll(Map<String, String> map, Properties properties) {
+            for (Map.Entry<Object, Object> e : properties.entrySet()) {
+                if (!(e.getValue() instanceof String)) continue;
+                if (!(e.getKey() instanceof String)) continue;
+
+                map.put((String) e.getKey(), (String) e.getValue());
+            }
         }
 
         public void begin(DeploymentInfo deploymentInfo) {
@@ -203,6 +219,16 @@
             }
             beanInfo.jndiNames.clear();
             beanInfo.jndiNamess.clear();
+
+            beanContext = new HashMap<String, String>(appContext);
+            putAll(beanContext, deploymentInfo.getProperties());
+            beanContext.put("moduleId", deploymentInfo.getModuleID());
+            beanContext.put("ejbType", 
deploymentInfo.getComponentType().name());
+            beanContext.put("ejbClass", 
deploymentInfo.getBeanClass().getName());
+            beanContext.put("ejbClass.simpleName", 
deploymentInfo.getBeanClass().getSimpleName());
+            beanContext.put("ejbClass.packageName", 
packageName(deploymentInfo.getBeanClass()));
+            beanContext.put("ejbName", deploymentInfo.getEjbName());
+            beanContext.put("deploymentId", 
deploymentInfo.getDeploymentID().toString());
         }
 
         public void end() {
@@ -213,14 +239,7 @@
             if (template == null) template = 
templates.get(type.getAnnotationName());
             if (template == null) template = templates.get("");
 
-            Map<String,String> contextData = new HashMap<String,String>();
-            contextData.put("moduleId", deploymentInfo.getModuleID());
-            contextData.put("ejbType", 
deploymentInfo.getComponentType().name());
-            contextData.put("ejbClass", 
deploymentInfo.getBeanClass().getName());
-            contextData.put("ejbClass.simpleName", 
deploymentInfo.getBeanClass().getSimpleName());
-            contextData.put("ejbClass.packageName", 
packageName(deploymentInfo.getBeanClass()));
-            contextData.put("ejbName", deploymentInfo.getEjbName());
-            contextData.put("deploymentId", 
deploymentInfo.getDeploymentID().toString());
+            Map<String,String> contextData = new 
HashMap<String,String>(beanContext);
             contextData.put("interfaceType", type.getAnnotationName());
             contextData.put("interfaceType.annotationName", 
type.getAnnotationName());
             
contextData.put("interfaceType.annotationNameLC",type.getAnnotationName().toLowerCase());

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java?rev=916805&r1=916804&r2=916805&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
 Fri Feb 26 20:12:50 2010
@@ -104,6 +104,9 @@
     }
 
     public void convertEjbRefs(EjbJar ejbJar, OpenejbJar openejbJar, 
OpenejbJarType openejbJarType) {
+
+        openejbJar.getProperties().putAll(openejbJarType.getProperties());
+
         Map<String, EnterpriseBean> ejbs = 
ejbJar.getEnterpriseBeansByEjbName();
         Map<String, EjbDeployment> deployments =  
openejbJar.getDeploymentsByEjbName();
 

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/OpenejbJarType.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/OpenejbJarType.java?rev=916805&r1=916804&r2=916805&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/OpenejbJarType.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/OpenejbJarType.java
 Fri Feb 26 20:12:50 2010
@@ -19,6 +19,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -27,8 +28,10 @@
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.openejb.jee.jpa.unit.Persistence;
+import org.apache.openejb.jee.oejb3.PropertiesAdapter;
 
 
 /**
@@ -74,6 +77,7 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "openejb-jarType", namespace = 
"http://openejb.apache.org/xml/ns/openejb-jar-2.2";, propOrder = {
     "environment",
+    "properties",
     "cmpConnectionFactory",
     "ejbQlCompilerFactory",
     "dbSyntaxFactory",
@@ -87,6 +91,10 @@
 })
 public class OpenejbJarType {
 
+    @XmlElement(name = "properties")
+    @XmlJavaTypeAdapter(PropertiesAdapter.class)
+    protected Properties properties;
+    
     @XmlElement(name = "environment", namespace = 
"http://geronimo.apache.org/xml/ns/deployment-1.2";)
     protected EnvironmentType environment;
 
@@ -264,4 +272,11 @@
         }
         return persistence;
     }
+
+    public Properties getProperties() {
+        if (properties == null) {
+            properties = new Properties();
+        }
+        return properties;
+    }
 }


Reply via email to