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 2015/03/23 11:47:08 UTC

tomee git commit: forcing our ClassHelper for cxf to avoid to consider proxy fields + few useless imports

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 <rm...@apache.org>
Authored: Mon Mar 23 11:46:55 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
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;