Author: rmannibucau
Date: Fri Aug  3 12:32:49 2012
New Revision: 1368918

URL: http://svn.apache.org/viewvc?rev=1368918&view=rev
Log:
explicit error with @PostConstruct in servlet objects + better handling on 
TomEEDataSource (mainly details)

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
    
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1368918&r1=1368917&r2=1368918&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Fri Aug  3 12:32:49 2012
@@ -71,6 +71,7 @@ import org.apache.openejb.core.transacti
 import org.apache.openejb.core.transaction.TransactionType;
 import org.apache.openejb.javaagent.Agent;
 import org.apache.openejb.jpa.integration.MakeTxLookup;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.JarLocation;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.ProvisioningUtil;
@@ -136,8 +137,10 @@ import javax.transaction.TransactionMana
 import javax.transaction.TransactionSynchronizationRegistry;
 import javax.validation.ValidationException;
 import javax.validation.ValidatorFactory;
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.lang.instrument.ClassFileTransformer;
 import java.lang.instrument.Instrumentation;
 import java.lang.reflect.Method;
@@ -1603,9 +1606,19 @@ public class Assembler extends Assembler
         serviceRecipe.setProperty("transactionManager", transactionManager);
         serviceRecipe.setProperty("ServiceId", serviceInfo.id);
         serviceRecipe.setProperty("properties", new UnsetPropertiesRecipe());
-        if (!serviceRecipe.getProperties().containsKey("Definition") || 
((String) serviceRecipe.getProperty("Definition")).isEmpty()) {
-            serviceRecipe.setProperty("Definition", 
PropertiesHelper.propertiesToString(PropertyPlaceHolderHelper.holds(serviceInfo.properties)));
+
+        final Properties props = 
PropertyPlaceHolderHelper.holds(serviceInfo.properties);
+        if (serviceInfo.properties.containsKey("Definition")) {
+            try { // we catch classcast etc..., if it fails it is not important
+                final InputStream is = new 
ByteArrayInputStream(serviceInfo.properties.getProperty("Definition").getBytes());
+                final Properties p = new Properties();
+                IO.readProperties(is, p);
+                props.putAll(p);
+            } catch (Exception e) {
+                // ignored
+            }
         }
+        serviceRecipe.setProperty("Definition", 
PropertiesHelper.propertiesToString(props));
 
         replaceResourceAdapterProperty(serviceRecipe);
 

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java?rev=1368918&r1=1368917&r2=1368918&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
 Fri Aug  3 12:32:49 2012
@@ -113,7 +113,12 @@ public class JavaeeInstanceManager imple
                         || (Modifier.isStatic(method.getModifiers()))
                         || (method.getExceptionTypes().length > 0)
                         || (!method.getReturnType().getName().equals("void"))) 
{
-                    throw new IllegalArgumentException("Invalid PostConstruct 
annotation");
+                    throw new IllegalArgumentException("Invalid PostConstruct 
annotation. @PostConstruct methods "
+                            + "should respect the following constraints:\n"
+                            + "- no parameter (" + 
(method.getParameterTypes().length == 0) + ")\n"
+                            + "- no exception should be declared (" + 
(method.getExceptionTypes().length == 0) + ")\n"
+                            + "- should return void (" + 
method.getReturnType().getName().equals("void") + ")\n"
+                            + "- should not be static (" + 
!Modifier.isStatic(method.getModifiers()) + ")\n");
                 }
                 postConstruct = method;
             }

Modified: 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java?rev=1368918&r1=1368917&r2=1368918&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
 Fri Aug  3 12:32:49 2012
@@ -8,6 +8,7 @@ import org.apache.tomcat.jdbc.pool.Conne
 import org.apache.tomcat.jdbc.pool.PoolConfiguration;
 import org.apache.tomcat.jdbc.pool.PoolProperties;
 
+import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.sql.DataSource;
 import java.lang.reflect.InvocationHandler;
@@ -51,7 +52,7 @@ public class TomEEDataSourceCreator exte
         if (driver != null) {
             converted.setProperty("driverClassName", driver);
         }
-        if (properties.containsKey("JdbcDriver") && 
properties.getProperty("JdbcDriver") != null) {
+        if (properties.getProperty("JdbcDriver") != null) {
             converted.setProperty("driverClassName", (String) 
properties.remove("JdbcDriver"));
         }
         if (properties.containsKey("JdbcUrl")) {
@@ -63,7 +64,7 @@ public class TomEEDataSourceCreator exte
         for (Map.Entry<Object, Object> entry : properties.entrySet()) {
             final String key = entry.getKey().toString();
             final String value = entry.getValue().toString().trim();
-            if (!value.isEmpty()) {
+            if (!value.isEmpty() && !converted.containsKey(key)) {
                 if ("PasswordCipher".equals(key) && "PlainText".equals(value)) 
{ // no need to warn about it
                     continue;
                 }
@@ -95,7 +96,7 @@ public class TomEEDataSourceCreator exte
             super(properties);
             this.pool = pool;
             try {
-                preRegister(LocalMBeanServer.get(), new ObjectName("openejb", 
"name", name));
+                super.preRegister(LocalMBeanServer.get(), new 
ObjectName("openejb", "name", name));
             } catch (Exception ignored) {
                 // ignored
             }
@@ -105,7 +106,7 @@ public class TomEEDataSourceCreator exte
             super(poolConfiguration);
             try { // just to force the pool to be created and be able to 
register the mbean
                 createPool();
-                preRegister(LocalMBeanServer.get(), new ObjectName("openejb", 
"name", name));
+                super.preRegister(LocalMBeanServer.get(), new 
ObjectName("openejb", "name", name));
             } catch (Throwable ignored) {
                 // no-op
             }


Reply via email to