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
}