You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/01/15 02:45:12 UTC
svn commit: r1231613 - in /openejb/branches/openejb-4.0.0-beta-2: ./
container/openejb-core/src/test/java/org/apache/openejb/config/
container/openejb-jee/src/test/resources/jsf/
examples/alternate-descriptors/src/main/resources/META-INF/ examples/appl...
Author: dblevins
Date: Sun Jan 15 01:45:11 2012
New Revision: 1231613
URL: http://svn.apache.org/viewvc?rev=1231613&view=rev
Log:
svn merge -r 1231204:1231205 https://svn.apache.org/repos/asf/openejb/trunk/openejb
http://svn.apache.org/viewvc?view=revision&revision=1231205
------------------------------------------------------------------------
r1231205 | rmannibucau | 2012-01-13 09:41:43 -0800 (Fri, 13 Jan 2012) | 1 line
TOMEE-61 better management of JAX-RS resource addresses
------------------------------------------------------------------------
Modified:
openejb/branches/openejb-4.0.0-beta-2/ (props changed)
openejb/branches/openejb-4.0.0-beta-2/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java (props changed)
openejb/branches/openejb-4.0.0-beta-2/container/openejb-jee/src/test/resources/jsf/ (props changed)
openejb/branches/openejb-4.0.0-beta-2/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml (props changed)
openejb/branches/openejb-4.0.0-beta-2/examples/application-composer/ (props changed)
openejb/branches/openejb-4.0.0-beta-2/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
openejb/branches/openejb-4.0.0-beta-2/src/ (props changed)
openejb/branches/openejb-4.0.0-beta-2/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
Propchange: openejb/branches/openejb-4.0.0-beta-2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -1,4 +1,4 @@
/openejb/branches/openejb-3.1.1:779593
/openejb/branches/openejb-3.1.x:945409,945448,1004381,1005322,1021880,1021903,1021955,1021961,1021965,1021975,1021979,1021990,1022375,1022393,1023096,1023116,1023125,1026527,1027696,1027724,1027739,1027754,1032856,1032866,1034030,1040222,1040250
/openejb/branches/openejb-jcdi:984659-985270
-/openejb/trunk/openejb:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb:1230327,1230343,1230437,1230485,1231205
Propchange: openejb/branches/openejb-4.0.0-beta-2/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -1,4 +1,4 @@
/openejb/branches/openejb-3.1.1/container/openejb-core/src/test/java/org/apache/openejb/config/UberInterfaceTest.java:779593
/openejb/branches/openejb-3.1.x/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java:945409,945448,1005322,1021880,1021903,1021955,1021961,1021965,1021975,1021979,1021990,1022375,1022393,1023096,1023116,1023125,1026527,1027696,1027724,1027739,1027754,1032856,1032866,1034030,1040222,1040250
/openejb/branches/openejb-jcdi/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java:984659-985270
-/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/BusinessInterfacesTest.java:1230327,1230343,1230437,1230485,1231205
Propchange: openejb/branches/openejb-4.0.0-beta-2/container/openejb-jee/src/test/resources/jsf/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -2,4 +2,4 @@
/geronimo/server/branches/3.0-M1/plugins/myfaces/geronimo-myfaces-builder/src/test/resources:948864,951792
/geronimo/server/trunk/plugins/j2ee/myfaces/geronimo-myfaces-builder/src/test/resources:887507
/openejb/branches/openejb-jcdi/container/openejb-jee/src/test/resources/jsf:984659-985270
-/openejb/trunk/openejb/container/openejb-jee/src/test/resources/jsf:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb/container/openejb-jee/src/test/resources/jsf:1230327,1230343,1230437,1230485,1231205
Propchange: openejb/branches/openejb-4.0.0-beta-2/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -1,4 +1,4 @@
/openejb/branches/openejb-3.1.1/examples/alternate-descriptors/src/main/resources/META-INF/ejb-jar.xml:779593
/openejb/branches/openejb-3.1.x/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml:945409,945448,1005322,1021880,1021903,1021955,1021961,1021965,1021975,1021979,1021990,1022375,1022393,1023096,1023116,1023125,1026527,1027696,1027724,1027739,1027754,1032856,1032866,1034030,1040222,1040250
/openejb/branches/openejb-jcdi/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml:984659-985270
-/openejb/trunk/openejb/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb/examples/alternate-descriptors/src/main/resources/META-INF/test.ejb-jar.xml:1230327,1230343,1230437,1230485,1231205
Propchange: openejb/branches/openejb-4.0.0-beta-2/examples/application-composer/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -1,3 +1,3 @@
/openejb/branches/openejb-3.1.1/examples/application-composer:779593
-/openejb/trunk/openejb/examples/application-composer:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb/examples/application-composer:1230327,1230343,1230437,1230485,1231205
/openejb/trunk/openejb3/examples/application-composer:943472,943862,943965,944757,945989,946399,946485,946489,946705,946792,946805,946814,946861,946863-946864,947010,947017,947042,948022,948241,948243,948548,949014,949233,950391,950801,951611,953191,953196,953556,955104,955496,957463,962382,962750,987030,1004172,1029528
Modified: openejb/branches/openejb-4.0.0-beta-2/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0-beta-2/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1231613&r1=1231612&r2=1231613&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0-beta-2/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java (original)
+++ openejb/branches/openejb-4.0.0-beta-2/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java Sun Jan 15 01:45:11 2012
@@ -82,7 +82,7 @@ public class CxfRsHttpListener implement
try {
return new URI(httpRequest.getRequestURI()).getRawPath();
} catch (URISyntaxException e) {
- return "/";
+ return httpRequest.getRequestURI();
}
}
}, httpResponse);
Modified: openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1231613&r1=1231612&r2=1231613&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Sun Jan 15 01:45:11 2012
@@ -219,14 +219,22 @@ public abstract class RESTService implem
private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader) {
final String nopath = getAddress(contextRoot, o.getClass()) + "/.*";
final RsHttpListener listener = createHttpListener();
- final String address = rsRegistry.createRsHttpListener(listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
- services.add(address);
- listener.deploySingleton(getFullContext(address, contextRoot), o, appInstance);
+ services.add(address.complete);
+ listener.deploySingleton(getFullContext(address.base, contextRoot), o, appInstance);
LOGGER.info("deployed REST singleton: " + o);
}
+ private static String baseAddress(final String address, final String contextRoot) {
+ if (contextRoot == null || contextRoot.isEmpty()) {
+ return address;
+ }
+ int idx = address.indexOf(contextRoot);
+ return address.substring(0, idx) + contextRoot;
+ }
+
private void deployPojo(String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections, Context context) {
if (loadedClazz.isInterface()) {
return;
@@ -234,10 +242,10 @@ public abstract class RESTService implem
final String nopath = getAddress(contextRoot, loadedClazz) + "/.*";
final RsHttpListener listener = createHttpListener();
- final String address = rsRegistry.createRsHttpListener(listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
- services.add(address);
- listener.deployPojo(getFullContext(address, contextRoot), loadedClazz, app, injections, context);
+ services.add(address.complete);
+ listener.deployPojo(getFullContext(address.base, contextRoot), loadedClazz, app, injections, context);
LOGGER.info("deployed POJO class: " + loadedClazz.getName());
}
@@ -245,10 +253,10 @@ public abstract class RESTService implem
private void deployEJB(String context, BeanContext beanContext) {
final String nopath = getAddress(context, beanContext.getBeanClass()) + "/.*";
final RsHttpListener listener = createHttpListener();
- final String address = rsRegistry.createRsHttpListener(listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(context, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
- services.add(address);
- listener.deployEJB(getFullContext(address, context), beanContext);
+ services.add(address.complete);
+ listener.deployEJB(getFullContext(address.base, context), beanContext);
LOGGER.info("REST EJB deployed: " + beanContext.getBeanClass().getName());
}
@@ -264,6 +272,9 @@ public abstract class RESTService implem
if (context == null) {
return address;
}
+ if (context.isEmpty() && address.contains("/")) {
+ return address.substring(0, address.lastIndexOf("/"));
+ }
int idx = address.indexOf(context);
String base = address.substring(0, idx);
Modified: openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java?rev=1231613&r1=1231612&r2=1231613&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java (original)
+++ openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java Sun Jan 15 01:45:11 2012
@@ -22,6 +22,16 @@ import org.apache.openejb.server.httpd.H
import java.util.List;
public interface RsRegistry {
- String createRsHttpListener(HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
+ AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
HttpListener removeListener(String context);
+
+ public static class AddressInfo {
+ public String base;
+ public String complete;
+
+ public AddressInfo(String base, String complete) {
+ this.base = base;
+ this.complete = complete;
+ }
+ }
}
Modified: openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java?rev=1231613&r1=1231612&r2=1231613&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java (original)
+++ openejb/branches/openejb-4.0.0-beta-2/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java Sun Jan 15 01:45:11 2012
@@ -27,11 +27,11 @@ import java.util.Map;
public class RsRegistryImpl extends OpenEJBHttpRegistry implements RsRegistry {
private Map<String, String> addresses = new HashMap<String, String>();
- @Override public String createRsHttpListener(HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
+ @Override public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
String address = HttpUtil.selectSingleAddress(getResolvedAddresses(path));
addWrappedHttpListener(listener, classLoader, path);
addresses.put(address, path);
- return address;
+ return new AddressInfo(address, address);
}
@Override public HttpListener removeListener(String context) {
Propchange: openejb/branches/openejb-4.0.0-beta-2/src/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 15 01:45:11 2012
@@ -1,3 +1,3 @@
/openejb/branches/openejb-3.1.1/src:779593
-/openejb/trunk/openejb/src:1230327,1230343,1230437,1230485
+/openejb/trunk/openejb/src:1230327,1230343,1230437,1230485,1231205
/openejb/trunk/openejb3/src:943472,943862,943965,944757,945989,946399,946485,946489,946705,946792,946805,946814,946861,946863-946864,947010,947017,947042,948022,948241,948243,948548,949014,949233,950391,950801,951611,953191,953196,953556,955104,955496,957463,962382,962750,987030,1004172,1029528
Modified: openejb/branches/openejb-4.0.0-beta-2/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0-beta-2/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java?rev=1231613&r1=1231612&r2=1231613&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0-beta-2/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java (original)
+++ openejb/branches/openejb-4.0.0-beta-2/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java Sun Jan 15 01:45:11 2012
@@ -31,13 +31,14 @@ import org.apache.openejb.server.httpd.H
import org.apache.openejb.server.httpd.util.HttpUtil;
import org.apache.openejb.server.rest.RsRegistry;
import org.apache.openejb.server.rest.RsServlet;
-import org.apache.tomee.loader.TomcatHelper;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.tomee.loader.TomcatHelper;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -64,7 +65,7 @@ public class TomcatRsRegistry implements
}
@Override
- public String createRsHttpListener(HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
+ public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
String path = completePath;
if (path == null) {
throw new NullPointerException("contextRoot is null");
@@ -73,12 +74,16 @@ public class TomcatRsRegistry implements
throw new NullPointerException("listener is null");
}
- // assure context root with a leading slash
+ String realRoot = root;
+ if (!root.startsWith("/")) {
+ realRoot = "/" + root;
+ }
if (!path.startsWith("/")) {
path = "/" + path;
}
- String webContext = path.substring(0, path.substring(1).indexOf("/") + 1);
- path = path.substring(webContext.length(), path.length());
+ if (!"/".equals(realRoot)) {
+ path = path.substring(realRoot.length(), path.length());
+ }
// find the existing host (we do not auto-create hosts)
if (virtualHost == null) virtualHost = engine.getDefaultHost();
@@ -88,7 +93,10 @@ public class TomcatRsRegistry implements
}
// get the webapp context
- Context context = (Context) host.findChild(webContext);
+ Context context = (Context) host.findChild(realRoot);
+ if (context == null && "/".equals(realRoot)) { // ROOT
+ context = (Context) host.findChild("");
+ }
context.addLifecycleListener(new LifecycleListener() {
public void lifecycleEvent(LifecycleEvent event) {
Context context = (Context) event.getLifecycle();
@@ -116,24 +124,27 @@ public class TomcatRsRegistry implements
wrapper.addInitParameter(HttpListener.class.getName(), listenerId);
context.getServletContext().setAttribute(listenerId, listener);
- // register wsdl locations for service-ref resolution
+ path = address(connectors, host.getName(), realRoot);
+ final String key = address(connectors, host.getName(), completePath);
+ contexts.put(key, context);
+ listeners.put(key, listener);
+
+ return new AddressInfo(path, key);
+ }
+
+ private static String address(final Collection<Connector> connectors, final String host, final String path) {
List<String> addresses = new ArrayList<String>();
for (Connector connector : connectors) {
URI address;
try {
- address = new URI(connector.getScheme(), null, host.getName(), connector.getPort(), completePath, null, null);
+ address = new URI(connector.getScheme(), null, host, connector.getPort(), path, null, null);
} catch (Exception e) { // just an URI problem normally...shouldn't occur
LOGGER.error("can't add container for path " + path, e);
continue;
}
addresses.add(address.toString());
}
-
- path = HttpUtil.selectSingleAddress(addresses);
- contexts.put(path, context);
- listeners.put(path, listener);
-
- return path;
+ return HttpUtil.selectSingleAddress(addresses);
}
@Override