Author: rmannibucau
Date: Thu Aug 23 18:02:04 2012
New Revision: 1376616

URL: http://svn.apache.org/viewvc?rev=1376616&view=rev
Log:
 TOMEE-403 jaxrs subresources for ejbs

Added:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/PojoUtil.java
      - copied, changed from r1376560, 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PojoUtil.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/NoopResourceProvider.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SubResourceTest.java
Removed:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PojoUtil.java
    
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/ProxyEJB.java
Modified:
    
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/SimpleEJB.java
    
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
    
openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java

Copied: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/PojoUtil.java
 (from r1376560, 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PojoUtil.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/PojoUtil.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/PojoUtil.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PojoUtil.java&r1=1376560&r2=1376616&rev=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/PojoUtil.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/util/PojoUtil.java
 Thu Aug 23 18:02:04 2012
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.openejb.util;
+package org.apache.openejb.assembler.classic.util;
 
 import org.apache.openejb.assembler.classic.IdPropertiesInfo;
 

Added: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java?rev=1376616&view=auto
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
 (added)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/ProxyEJB.java
 Thu Aug 23 18:02:04 2012
@@ -0,0 +1,67 @@
+/**
+ * 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.util.proxy;
+
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.RpcContainer;
+import org.apache.openejb.core.ivm.IntraVmProxy;
+
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+public class ProxyEJB {
+    private ProxyEJB() {
+        // no-op
+    }
+
+    public static Object proxy(final BeanContext beanContext) {
+        if (beanContext.getBusinessLocalInterface() != null) {
+            return proxy(beanContext, new Class<?>[] { 
beanContext.getBusinessLocalInterface() });
+        }
+        if (beanContext.isLocalbean()) {
+            return proxy(beanContext, new 
Class<?>[]{beanContext.getBusinessLocalBeanInterface()});
+        }
+        if (beanContext.getBusinessRemoteInterface() != null) {
+            return proxy(beanContext, new Class<?>[] { 
beanContext.getBusinessRemoteInterface() });
+        }
+        throw new IllegalArgumentException("can't proxy " + 
beanContext.getEjbName());
+    }
+
+    public static Object proxy(final BeanContext beanContext, final Class<?>[] 
itfs) {
+        if (beanContext.isLocalbean()) {
+            return 
LocalBeanProxyFactory.newProxyInstance(itfs[0].getClassLoader(), new 
Handler(beanContext), itfs[0], IntraVmProxy.class, Serializable.class);
+        }
+        return Proxy.newProxyInstance(itfs[0].getClassLoader(), itfs, new 
Handler(beanContext));
+    }
+
+    private static class Handler implements 
java.lang.reflect.InvocationHandler {
+        private BeanContext beanContext;
+
+        public Handler(BeanContext bc) {
+            beanContext = bc;
+        }
+
+        @Override
+        public Object invoke(Object proxy, Method method, Object[] args) 
throws Throwable {
+            final RpcContainer container = 
RpcContainer.class.cast(beanContext.getContainer());
+            return container.invoke(beanContext.getDeploymentID(),
+                    beanContext.getInterfaceType(method.getDeclaringClass()),
+                    method.getDeclaringClass(), method, args, null);
+        }
+    }
+}

Modified: 
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
 (original)
+++ 
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
 Thu Aug 23 18:02:04 2012
@@ -28,6 +28,7 @@ import org.apache.openejb.config.Configu
 import org.apache.openejb.config.DeploymentLoader;
 import org.apache.openejb.config.UnknownModuleTypeException;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.proxy.ProxyEJB;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;

Modified: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
 Thu Aug 23 18:02:04 2012
@@ -37,6 +37,7 @@ import org.apache.openejb.server.httpd.H
 import org.apache.openejb.server.rest.RsHttpListener;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.proxy.ProxyEJB;
 import org.apache.webbeans.config.WebBeansContext;
 
 import javax.naming.Context;
@@ -96,7 +97,9 @@ public class CxfRsHttpListener implement
 
     @Override
     public void deployEJB(String fullContext, BeanContext beanContext, 
Collection<Class<?>> additionalProviders, ServiceConfiguration configuration) {
-        deploy(beanContext.getBeanClass(), fullContext, null, null, null, new 
OpenEJBEJBInvoker(beanContext), additionalProviders, configuration);
+        final Object proxy = ProxyEJB.proxy(beanContext);
+        deploy(beanContext.getBeanClass(), fullContext, new 
NoopResourceProvider(beanContext.getBeanClass(), proxy),
+                proxy, null, new OpenEJBEJBInvoker(), additionalProviders, 
configuration);
     }
 
     private void deploy(Class<?> clazz, String address, ResourceProvider rp, 
Object serviceBean, Application app, Invoker invoker,

Added: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/NoopResourceProvider.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/NoopResourceProvider.java?rev=1376616&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/NoopResourceProvider.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/NoopResourceProvider.java
 Thu Aug 23 18:02:04 2012
@@ -0,0 +1,50 @@
+/*
+ * 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.jaxrs.lifecycle.ResourceProvider;
+import org.apache.cxf.message.Message;
+
+public class NoopResourceProvider implements ResourceProvider {
+    private final Object instance;
+    private final Class<?> clazz;
+
+    public NoopResourceProvider(final Class<?> clazz, final Object instance) {
+        this.instance = instance;
+        this.clazz = clazz;
+    }
+
+    @Override
+    public Object getInstance(Message m) {
+        return instance;
+    }
+
+    @Override
+    public void releaseInstance(final Message m, final Object o) {
+        // no-op
+    }
+
+    @Override
+    public Class<?> getResourceClass() {
+        return clazz;
+    }
+
+    @Override
+    public boolean isSingleton() {
+        return true;
+    }
+}

Modified: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBEJBInvoker.java
 Thu Aug 23 18:02:04 2012
@@ -16,56 +16,29 @@
  */
 package org.apache.openejb.server.cxf.rs;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.rmi.RemoteException;
-import java.util.List;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Request;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.ContextResolver;
-import javax.ws.rs.ext.Providers;
-
-import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.jaxrs.JAXRSInvoker;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Exchange;
-import org.apache.cxf.message.MessageContentsList;
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.RpcContainer;
+import org.apache.openejb.InvalidateReferenceException;
 import org.apache.openejb.rest.ThreadLocalContextManager;
 
-public class OpenEJBEJBInvoker extends JAXRSInvoker {
-    private BeanContext context;
-
-    public OpenEJBEJBInvoker(BeanContext beanContext) {
-        context = beanContext;
-    }
-
-    @Override public Object invoke(Exchange exchange, Object request, Object 
resourceObject) {
-        final OperationResourceInfo ori = 
exchange.get(OperationResourceInfo.class);
-        final ClassResourceInfo cri = ori.getClassResourceInfo();
-        final Method method = cri.getMethodDispatcher().getMethod(ori);
-        final RpcContainer container = 
RpcContainer.class.cast(context.getContainer());
-
-        Object[] parameters;
-        if (request instanceof List) {
-            List<Object> params = CastUtils.cast((List<?>) request);
-            parameters = params.toArray(new Object[params.size()]);
-        } else if (request != null) {
-            List<Object> params = new MessageContentsList(request);
-            parameters = params.toArray(new Object[params.size()]);
-        } else {
-            parameters = new Object[0];
-        }
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Providers;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
 
-        // injecting context parameters
-        super.insertExchange(method, parameters, exchange);
+public class OpenEJBEJBInvoker extends JAXRSInvoker {
+    @Override
+    public Object invoke(final Exchange exchange, final Object request, final 
Object resourceObject) {
+        final ClassResourceInfo cri = 
exchange.get(OperationResourceInfo.class).getClassResourceInfo();
 
         // binding context fields
         for (Field field : cri.getContextFields()) {
@@ -91,30 +64,31 @@ public class OpenEJBEJBInvoker extends J
             }
         }
 
-        // invoking the EJB
         try {
-            Object result = container.invoke(context.getDeploymentID(),
-                context.getInterfaceType(method.getDeclaringClass()),
-                method.getDeclaringClass(), method, parameters, null);
-
-            return new MessageContentsList(result);
-        } catch (OpenEJBException e) {
-            Throwable cause = e.getCause();
-            if (cause == null) {
-                cause = e;
-            }
-            if (cause instanceof RemoteException && cause.getCause() != null) {
-                cause = cause.getCause();
-            }
-
-            final Response excResponse = 
JAXRSUtils.convertFaultToResponse(cause, exchange.getInMessage());
-            return new MessageContentsList(excResponse);
+            return super.invoke(exchange, request, resourceObject);
         } finally {
             ThreadLocalContextManager.reset();
         }
     }
 
-    @Override public Object getServiceObject(Exchange exchange) {
-        return null;
+    @Override
+    protected Object performInvocation(final Exchange exchange, final Object 
serviceObject,
+                                       final Method m, final Object[] 
paramArray) throws Exception {
+        try {
+            return m.invoke(serviceObject, insertExchange(m, paramArray, 
exchange));
+        } catch (InvocationTargetException ite) {
+            Throwable cause = ite.getTargetException();
+            // unwrap to get ExceptionMapper working
+            if (cause instanceof InvalidateReferenceException) {
+                cause = cause.getCause();
+                if (cause instanceof RemoteException) {
+                    cause = cause.getCause();
+                }
+            }
+            if (cause instanceof Exception) {
+                throw (Exception) cause;
+            }
+            throw ite;
+        }
     }
 }

Added: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SubResourceTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SubResourceTest.java?rev=1376616&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SubResourceTest.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SubResourceTest.java
 Thu Aug 23 18:02:04 2012
@@ -0,0 +1,75 @@
+/*
+ * 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.openejb.OpenEjbContainer;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Configuration;
+import org.apache.openejb.junit.Module;
+import org.apache.openejb.loader.IO;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+
+@RunWith(ApplicationComposer.class)
+public class SubResourceTest {
+    @Module
+    public SingletonBean bean() {
+        return (SingletonBean) new SingletonBean(Endpoint1.class).localBean();
+    }
+
+    @Configuration
+    public static Properties configuration() throws Exception {
+        final Properties properties = new Properties();
+        properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, 
"true");
+        return properties;
+    }
+
+    @Test
+    public void rest() throws IOException {
+        final String response = IO.slurp(new 
URL("http://127.0.0.1:4204/SubResourceTest/sub1/sub2/value";));
+        assertEquals("2", response);
+    }
+
+    @Path("/sub1")
+    public static class Endpoint1 {
+        @Path("sub{i}")
+        public Endpoint2 uno(@PathParam("i") final int discr) {
+            if (2 == discr) {
+                return new Endpoint2();
+            }
+            return null;
+        }
+    }
+
+    public static class Endpoint2 {
+        @GET
+        @Path("/value")
+        public int due() {
+            return 2;
+        }
+    }
+}

Modified: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/HookedRest.java
 Thu Aug 23 18:02:04 2012
@@ -27,10 +27,11 @@ public class HookedRest {
     @Inject
     private SimpleEJB ejb;
     private boolean post = false;
+    private int construct = 0;
 
     @PostConstruct
     public void post() {
-        post = true && ejb != null;
+        post = ejb != null && construct == 0;
     }
 
     @Path("/post")

Modified: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/SimpleEJB.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/SimpleEJB.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/SimpleEJB.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/beans/SimpleEJB.java
 Thu Aug 23 18:02:04 2012
@@ -16,10 +16,21 @@
  */
 package org.apache.openejb.server.cxf.rs.beans;
 
-import javax.ejb.Stateless;
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
 
-@Stateless
+@Singleton
 public class SimpleEJB {
+    private int init = 0;
+
+    @PostConstruct
+    public void count() {
+        init++;
+        if (init > 1) {
+            throw new RuntimeException();
+        }
+    }
+
     public String ok() {
         return "ok";
     }

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=1376616&r1=1376615&r2=1376616&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
 Thu Aug 23 18:02:04 2012
@@ -28,6 +28,7 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import 
org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
 import 
org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
+import org.apache.openejb.assembler.classic.util.PojoUtil;
 import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.WebContext;
@@ -41,7 +42,6 @@ import org.apache.openejb.server.httpd.H
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.PojoUtil;
 import org.apache.webbeans.config.WebBeansContext;
 
 import javax.naming.Context;

Modified: 
openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1376616&r1=1376615&r2=1376616&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
 Thu Aug 23 18:02:04 2012
@@ -31,6 +31,7 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.WsBuilder;
 import 
org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
 import 
org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed;
+import org.apache.openejb.assembler.classic.util.PojoUtil;
 import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.WebContext;
@@ -48,7 +49,6 @@ import org.apache.openejb.server.httpd.u
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
-import org.apache.openejb.util.PojoUtil;
 import org.apache.openejb.util.StringTemplate;
 
 import javax.naming.Context;


Reply via email to