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;