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 2012/12/03 23:10:59 UTC
svn commit: r1416698 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/config/
server/openejb-rest/src/main/java/org/apache/openejb/server/rest/
tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/
Author: rmannibucau
Date: Mon Dec 3 22:10:57 2012
New Revision: 1416698
URL: http://svn.apache.org/viewvc?rev=1416698&view=rev
Log:
TOMEE-624 finally appprefix (false context) is useless
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java?rev=1416698&r1=1416697&r2=1416698&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java Mon Dec 3 22:10:57 2012
@@ -17,7 +17,6 @@
package org.apache.openejb.config;
import org.apache.openejb.config.sys.Deployments;
-import org.apache.openejb.config.sys.JaxbOpenejb;
import org.apache.openejb.loader.FileUtils;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.Options;
@@ -32,12 +31,10 @@ import org.apache.xbean.finder.filter.In
import java.io.File;
import java.io.IOException;
-import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1416698&r1=1416697&r2=1416698&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Mon Dec 3 22:10:57 2012
@@ -193,10 +193,10 @@ public abstract class RESTService implem
if (hasEjbAndIsNotAManagedBean(restEjbs, o.getClass().getName())) {
// no more a singleton if the ejb is not a singleton...but it is a weird case
- deployEJB(appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services);
+ deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(o.getClass().getName()).context, additionalProviders, appInfo.services);
} else {
pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
- deploySingleton(appPrefix, o, appInstance, classLoader, additionalProviders,
+ deploySingleton(webApp.contextRoot, appPrefix, o, appInstance, classLoader, additionalProviders,
new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, o.getClass().getName()), appInfo.services));
}
}
@@ -207,10 +207,10 @@ public abstract class RESTService implem
}
if (hasEjbAndIsNotAManagedBean(restEjbs, clazz.getName())) {
- deployEJB(appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services);
+ deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz.getName()).context, additionalProviders, appInfo.services);
} else {
pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
- deployPojo(appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders,
+ deployPojo(webApp.contextRoot, appPrefix, clazz, appInstance, classLoader, injections, context, owbCtx, additionalProviders,
new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, clazz.getName()), appInfo.services));
}
}
@@ -220,6 +220,8 @@ public abstract class RESTService implem
}
if (!useApp) {
+ appPrefix = webApp.contextRoot;
+
final Set<String> restClasses = new HashSet<String>(webApp.restClass);
restClasses.addAll(webApp.ejbRestServices);
@@ -227,16 +229,16 @@ public abstract class RESTService implem
if (restEjbs.containsKey(clazz)) {
final BeanContext ctx = restEjbs.get(clazz).context;
if (hasEjbAndIsNotAManagedBean(restEjbs, clazz)) {
- deployEJB(appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services);
+ deployEJB(webApp.contextRoot, appPrefix, restEjbs.get(clazz).context, additionalProviders, appInfo.services);
} else {
- deployPojo(appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context,
+ deployPojo(webApp.contextRoot, appPrefix, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(), context,
owbCtx, additionalProviders, new ServiceConfiguration(ctx.getProperties(), appInfo.services));
}
} else {
try {
Class<?> loadedClazz = classLoader.loadClass(clazz);
pojoConfigurations = PojoUtil.findPojoConfig(pojoConfigurations, appInfo, webApp);
- deployPojo(appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx,
+ deployPojo(webApp.contextRoot, appPrefix, loadedClazz, null, classLoader, injections, context, owbCtx,
additionalProviders,
new ServiceConfiguration(PojoUtil.findConfiguration(pojoConfigurations, loadedClazz.getName()), appInfo.services));
} catch (ClassNotFoundException e) {
@@ -293,12 +295,12 @@ public abstract class RESTService implem
for (Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
final BeanContext ctx = ejb.getValue().context;
if (BeanType.MANAGED.equals(ctx.getComponentType())) {
- deployPojo(ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(),
+ deployPojo("", ejb.getValue().path, ctx.getBeanClass(), null, ctx.getClassLoader(), ctx.getInjections(),
ctx.getJndiContext(),
containerSystem.getAppContext(appInfo.appId).getWebBeansContext(),
providers, new ServiceConfiguration(ctx.getProperties(), appInfo.services));
} else {
- deployEJB(ejb.getValue().path, ctx, providers, appInfo.services);
+ deployEJB("", ejb.getValue().path, ctx, providers, appInfo.services);
}
}
restEjbs.clear();
@@ -351,19 +353,19 @@ public abstract class RESTService implem
return restEjbs;
}
- private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader,
+ private void deploySingleton(String web, String contextRoot, Object o, Application appInstance, ClassLoader classLoader,
Collection<Object> additionalProviders, ServiceConfiguration configuration) {
final String nopath = getAddress(contextRoot, o.getClass());
final RsHttpListener listener = createHttpListener();
- final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
- services.add(new DeployedService(address.complete, contextRoot, o.getClass().getName()));
+ services.add(new DeployedService(address.complete, web, o.getClass().getName()));
listener.deploySingleton(getFullContext(address.base, contextRoot), o, appInstance, additionalProviders, configuration);
LOGGER.info("deployed REST singleton: " + o);
}
- private void deployPojo(String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections,
+ private void deployPojo(String web, String contextRoot, Class<?> loadedClazz, Application app, ClassLoader classLoader, Collection<Injection> injections,
Context context, WebBeansContext owbCtx, Collection<Object> additionalProviders, ServiceConfiguration config) {
if (loadedClazz.isInterface()) {
return;
@@ -371,7 +373,7 @@ public abstract class RESTService implem
final String nopath = getAddress(contextRoot, loadedClazz);
final RsHttpListener listener = createHttpListener();
- final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(contextRoot, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, classLoader, nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
services.add(new DeployedService(address.complete, contextRoot, loadedClazz.getName()));
listener.deployPojo(getFullContext(address.base, contextRoot), loadedClazz, app, injections, context, owbCtx,
@@ -380,10 +382,10 @@ public abstract class RESTService implem
LOGGER.info("REST Service: " + address.complete + " -> Pojo " + loadedClazz.getName());
}
- private void deployEJB(String context, BeanContext beanContext, Collection<Object> additionalProviders, Collection<ServiceInfo> serviceInfos) {
+ private void deployEJB(String web, String context, BeanContext beanContext, Collection<Object> additionalProviders, Collection<ServiceInfo> serviceInfos) {
final String nopath = getAddress(context, beanContext.getBeanClass());
final RsHttpListener listener = createHttpListener();
- final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(context, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
+ final RsRegistry.AddressInfo address = rsRegistry.createRsHttpListener(web, listener, beanContext.getClassLoader(), nopath.substring(NOPATH_PREFIX.length() - 1), virtualHost);
services.add(new DeployedService(address.complete, context, beanContext.getBeanClass().getName()));
listener.deployEJB(getFullContext(address.base, context), beanContext,
Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java?rev=1416698&r1=1416697&r2=1416698&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java (original)
+++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistry.java Mon Dec 3 22:10:57 2012
@@ -22,7 +22,7 @@ import org.apache.openejb.server.httpd.H
import java.util.List;
public interface RsRegistry {
- AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
+ AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String path, String virtualHost);
HttpListener removeListener(String context);
public static class AddressInfo {
Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java?rev=1416698&r1=1416697&r2=1416698&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java (original)
+++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RsRegistryImpl.java Mon Dec 3 22:10:57 2012
@@ -27,16 +27,14 @@ import java.util.Map;
public class RsRegistryImpl extends OpenEJBHttpRegistry implements RsRegistry {
private Map<String, String> addresses = new HashMap<String, String>();
- @Override
- public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
+ @Override public AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String path, String virtualHost) {
String address = HttpUtil.selectSingleAddress(getResolvedAddresses(path));
addWrappedHttpListener(listener, classLoader, path);
addresses.put(address, path);
return new AddressInfo(address, address);
}
- @Override
- public HttpListener removeListener(String context) {
+ @Override public HttpListener removeListener(String context) {
String regex = addresses.get(context);
if (regex != null) {
HttpListener listener = registry.removeHttpListener(regex);
Modified: openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java?rev=1416698&r1=1416697&r2=1416698&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java (original)
+++ openejb/trunk/openejb/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/TomcatRsRegistry.java Mon Dec 3 22:10:57 2012
@@ -57,8 +57,8 @@ public class TomcatRsRegistry implements
}
@Override
- public AddressInfo createRsHttpListener(String root, HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
- String path = completePath;
+ public AddressInfo createRsHttpListener(String webContext, HttpListener listener, ClassLoader classLoader, String completePath, String virtualHost) {
+ String path = webContext;
if (path == null) {
throw new NullPointerException("contextRoot is null");
}
@@ -66,27 +66,6 @@ public class TomcatRsRegistry implements
throw new NullPointerException("listener is null");
}
- // parsing could be optimized a bit...
- String realRoot = root;
- if (!root.startsWith("/")) {
- realRoot = "/" + root;
- }
- if (realRoot.length() > 1) {
- int idx = realRoot.substring(1).indexOf('/');
- if (idx > 0) {
- realRoot = realRoot.substring(0, idx + 1);
- }
- }
- if (!path.startsWith("/")) {
- path = "/" + path;
- }
- if (!"/".equals(realRoot)) {
- path = path.substring(realRoot.length(), path.length());
- }
- if (!path.startsWith("/")) {
- path = "/" + path;
- }
-
// find the existing host (we do not auto-create hosts)
if (virtualHost == null) virtualHost = engine.getDefaultHost();
Container host = engine.findChild(virtualHost);
@@ -95,14 +74,14 @@ public class TomcatRsRegistry implements
}
// get the webapp context
- Context context = (Context) host.findChild(realRoot);
+ Context context = (Context) host.findChild(webContext);
- if (context == null && "/".equals(realRoot)) { // ROOT
+ if (context == null && "/".equals(webContext)) { // ROOT
context = (Context) host.findChild("");
}
if (context == null) {
- throw new IllegalStateException("Invalid context '" + realRoot + "'. Cannot find context in host " + host.getName());
+ throw new IllegalStateException("Invalid context '" + webContext + "'. Cannot find context in host " + host.getName());
}
Wrapper wrapper = context.createWrapper();
@@ -110,16 +89,15 @@ public class TomcatRsRegistry implements
wrapper.setName(name);
wrapper.setServletClass(RsServlet.class.getName());
- final String mapping = path.replace("/.*", "/*");
context.addChild(wrapper);
- wrapper.addMapping(mapping);
- context.addServletMapping(mapping, name);
+ wrapper.addMapping(completePath);
+ context.addServletMapping(completePath, name);
final String listenerId = wrapper.getName() + RsServlet.class.getName() + listener.hashCode();
wrapper.addInitParameter(HttpListener.class.getName(), listenerId);
context.getServletContext().setAttribute(listenerId, listener);
- path = address(connectors, host.getName(), realRoot);
+ path = address(connectors, host.getName(), webContext);
final String key = address(connectors, host.getName(), completePath);
listeners.put(key, listener);