Repository: tomee Updated Branches: refs/heads/master 55089e1ad -> 838e93f78
forcing our ClassHelper for cxf to avoid to consider proxy fields + few useless imports Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/838e93f7 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/838e93f7 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/838e93f7 Branch: refs/heads/master Commit: 838e93f78821044f19c3a82bbabae84b02bc1bf0 Parents: 55089e1 Author: Romain Manni-Bucau <[email protected]> Authored: Mon Mar 23 11:46:55 2015 +0100 Committer: Romain Manni-Bucau <[email protected]> Committed: Mon Mar 23 11:46:55 2015 +0100 ---------------------------------------------------------------------- .../apache/openejb/server/cxf/rs/CxfHacks.java | 55 ++++++++++++++++++++ .../openejb/server/cxf/rs/CxfRSService.java | 6 ++- .../server/cxf/rs/OpenEJBEJBInvoker.java | 9 +++- .../tomee/webservices/TomcatWsRegistry.java | 1 - 4 files changed, 67 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/838e93f7/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfHacks.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfHacks.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfHacks.java new file mode 100644 index 0000000..f83997b --- /dev/null +++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfHacks.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.openejb.server.cxf.rs; + +import org.apache.cxf.common.util.ClassHelper; +import org.apache.openejb.loader.SystemInstance; +import org.apache.openejb.util.reflection.Reflections; + +public final class CxfHacks { + public static void initCxfClassHelper() { + if (!Boolean.parseBoolean(SystemInstance.get().getProperty("openejb.cxf.ClassHelper.patch", "true"))) { + return; + } + Reflections.set(ClassHelper.class, null, "HELPER", new OpenEJBClassHelper()); + } + + private CxfHacks() { + // no-op + } + + public static class OpenEJBClassHelper extends ClassHelper { + @Override + protected Class<?> getRealClassInternal(final Object o) { + return getRealClassFromClassInternal(o.getClass()); + } + + @Override + protected Class<?> getRealClassFromClassInternal(final Class<?> cls) { + Class<?> c = cls; + while (c.getName().contains("$$")) { + c = c.getSuperclass(); + } + return c == Object.class ? cls : c; + } + + @Override + protected Object getRealObjectInternal(final Object o) { // can we do anything here? sure we can unwrap ejb but wouldn't mean anything + return o; + } + } +} http://git-wip-us.apache.org/repos/asf/tomee/blob/838e93f7/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java index fff5734..f1f07b1 100644 --- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java +++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java @@ -47,7 +47,6 @@ import javax.servlet.ServletContext; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import javax.ws.rs.container.ResourceContext; import javax.ws.rs.container.ResourceInfo; import javax.ws.rs.core.Context; @@ -176,6 +175,7 @@ public class CxfRSService extends RESTService { // no-op } } + hacksOn(); } finally { if (oldLoader != null) { CxfUtil.clearBusLoader(oldLoader); @@ -183,6 +183,10 @@ public class CxfRSService extends RESTService { } } + private void hacksOn() { + CxfHacks.initCxfClassHelper(); + } + @Override public void stop() throws ServiceException { super.stop(); http://git-wip-us.apache.org/repos/asf/tomee/blob/838e93f7/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java index a44856f..2d53b52 100644 --- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java +++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java @@ -31,14 +31,19 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.rmi.RemoteException; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; public class OpenEJBEJBInvoker extends JAXRSInvoker { private final Map<Class<?>, Collection<Class<?>>> contextTypes = new HashMap<Class<?>, Collection<Class<?>>>(); public OpenEJBEJBInvoker(final Collection<BeanContext> restEjbs) { for (final BeanContext context : restEjbs) { - final Collection<Class<?>> classes = new HashSet<Class<?>>(); + final Collection<Class<?>> classes = new HashSet<>(); Contexts.findContextFields(context.getBeanClass(), classes); for (final Collection<InterceptorData> list : Arrays.asList( http://git-wip-us.apache.org/repos/asf/tomee/blob/838e93f7/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java ---------------------------------------------------------------------- diff --git a/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java b/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java index 3d904d8..eedbaf4 100644 --- a/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java +++ b/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java @@ -37,7 +37,6 @@ import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.server.httpd.HttpListener; import org.apache.openejb.server.webservices.WsRegistry; import org.apache.openejb.server.webservices.WsServlet; -import org.apache.openejb.util.reflection.Reflections; import org.apache.tomcat.util.descriptor.web.LoginConfig; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
