You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/11/28 12:36:44 UTC
[2/3] tomee git commit: merging app properties and resources.xml
services to be able to use them later
merging app properties and resources.xml services to be able to use them later
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0370035e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0370035e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0370035e
Branch: refs/heads/develop
Commit: 0370035ec727aaaad34efe85eb42f28088f7eaed
Parents: d5cdca8
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Nov 28 12:14:26 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Nov 28 12:14:26 2014 +0100
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 36 ++++++++++++++++++++
1 file changed, 36 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/0370035e/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 71d1be2..cd4d0c5 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -126,6 +126,7 @@ import org.apache.openejb.util.PropertyPlaceHolderHelper;
import org.apache.openejb.util.References;
import org.apache.openejb.util.SafeToolkit;
import org.apache.openejb.util.SuperProperties;
+import org.apache.openejb.util.URISupport;
import org.apache.openejb.util.URLs;
import org.apache.openejb.util.classloader.ClassLoaderAwareHandler;
import org.apache.openejb.util.classloader.URLClassLoaderFirst;
@@ -192,6 +193,7 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
+import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
@@ -644,6 +646,12 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
}
private AppContext createApplication(final AppInfo appInfo, ClassLoader classLoader, final boolean start) throws OpenEJBException, IOException, NamingException {
+ try {
+ mergeServices(appInfo);
+ } catch (final URISyntaxException e) {
+ logger.info("Can't merge resources.xml services and appInfo.properties");
+ }
+
// The path is used in the UrlCache, command line deployer, JNDI name templates, tomcat integration and a few other places
if (appInfo.appId == null) {
throw new IllegalArgumentException("AppInfo.appId cannot be null");
@@ -960,6 +968,34 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
}
}
+ public static void mergeServices(final AppInfo appInfo) throws URISyntaxException {
+ // used lazily by JaxWsServiceObjectFactory so merge both to keep same config
+ // note: we could do the same for resources
+ for (final ServiceInfo si : appInfo.services) {
+ if (!appInfo.properties.containsKey(si.id)) {
+ final Map<String, String> query = new HashMap<>();
+ if (si.types != null && !si.types.isEmpty()) {
+ query.put("type", si.types.iterator().next());
+ }
+ if (si.className != null) {
+ query.put("class-name", si.className);
+ }
+ if (si.factoryMethod != null) {
+ query.put("factory-name", si.factoryMethod);
+ }
+ if (si.constructorArgs != null) {
+ query.put("constructor", Join.join(",", si.constructorArgs));
+ }
+ appInfo.properties.put(si.id, "new://Service?" + URISupport.createQueryString(query));
+ if (si.properties != null) {
+ for (final String k : si.properties.stringPropertyNames()) {
+ appInfo.properties.setProperty(si.id + "." + k, si.properties.getProperty(k));
+ }
+ }
+ }
+ }
+ }
+
private static List<CommonInfoObject> listCommonInfoObjectsForAppInfo(final AppInfo appInfo) {
final List<CommonInfoObject> vfs = new ArrayList<CommonInfoObject>(
appInfo.clients.size() + appInfo.connectors.size() +