Author: jlmonteiro
Date: Tue Nov  6 14:35:58 2012
New Revision: 1406149

URL: http://svn.apache.org/viewvc?rev=1406149&view=rev
Log:
Finally get the services filtering working and adding aliases support

Added:
    
openejb/trunk/openejb/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ServiceManagerProxy.java
    
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
    
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
    
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
    
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java?rev=1406149&r1=1406148&r2=1406149&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
 Tue Nov  6 14:35:58 2012
@@ -490,10 +490,10 @@ public class ApplicationComposer extends
                 if 
("true".equals(configuration.getProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE,
 "false"))
                         || annotation != null) {
                     try {
-                        serviceManager = new ServiceManagerProxy();
                         if (annotation != null) {
                             initFilteredServiceManager(annotation);
                         }
+                        serviceManager = new ServiceManagerProxy(false);
                         serviceManager.start();
                     } catch (ServiceManagerProxy.AlreadyStartedException e) {
                         throw new OpenEJBRuntimeException(e);

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ServiceManagerProxy.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ServiceManagerProxy.java?rev=1406149&r1=1406148&r2=1406149&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ServiceManagerProxy.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ServiceManagerProxy.java
 Tue Nov  6 14:35:58 2012
@@ -40,6 +40,10 @@ public class ServiceManagerProxy {
     }
 
     public ServiceManagerProxy() throws AlreadyStartedException {
+        this(true);
+    }
+
+    public ServiceManagerProxy(boolean checkAlreadyStarted) throws 
AlreadyStartedException {
         ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
 
         try {
@@ -52,7 +56,7 @@ public class ServiceManagerProxy {
         Method get = getMethod("get");
         Method getManager = getMethod("getManager");
 
-        if (invoke(get, null) != null) throw new 
AlreadyStartedException("Server services already started");
+        if (checkAlreadyStarted && invoke(get, null) != null) throw new 
AlreadyStartedException("Server services already started");
 
         serviceManager = invoke(getManager, null);
 

Modified: 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java?rev=1406149&r1=1406148&r2=1406149&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
 Tue Nov  6 14:35:58 2012
@@ -36,7 +36,7 @@ import java.io.StringWriter;
 
 import static org.junit.Assert.assertEquals;
 
-@EnableServices("cxf-rs")
+@EnableServices("jax-rs")
 @RunWith(ApplicationComposer.class)
 public class SimpleApplicationTest {
     public static final String BASE_URL = "http://localhost:4204/foo/my-app";;

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=1406149&r1=1406148&r2=1406149&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
 Tue Nov  6 14:35:58 2012
@@ -38,6 +38,7 @@ import org.apache.openejb.observer.Obser
 import org.apache.openejb.server.SelfManaging;
 import org.apache.openejb.server.ServerService;
 import org.apache.openejb.server.ServiceException;
+import org.apache.openejb.server.ServiceManager;
 import org.apache.openejb.server.httpd.HttpListener;
 import org.apache.openejb.server.httpd.HttpListenerRegistry;
 import org.apache.openejb.spi.ContainerSystem;
@@ -85,6 +86,7 @@ public abstract class RESTService implem
     private RsRegistry rsRegistry;
     private List<DeployedService> services = new ArrayList<DeployedService>();
     private String virtualHost;
+    private boolean enabled = true;
     private String wildcard = 
SystemInstance.get().getProperty("openejb.rest.wildcard", ".*");
 
     public void afterApplicationCreated(final AppInfo appInfo, final 
WebAppInfo webApp) {
@@ -275,6 +277,8 @@ public abstract class RESTService implem
     }
 
     public void afterApplicationCreated(@Observes final 
AssemblerAfterApplicationCreated event) {
+        if (!enabled) return;
+
         final AppInfo appInfo = event.getApp();
         if (deployedApplications.add(appInfo)) {
             if (appInfo.webApps.size() == 0) {
@@ -591,6 +595,7 @@ public abstract class RESTService implem
 
     @Override public void init(Properties props) throws Exception {
         virtualHost = props.getProperty("virtualHost");
+        enabled = ServiceManager.isEnabled(props);
     }
 
     public String getVirtualHost() {

Modified: 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java?rev=1406149&r1=1406148&r2=1406149&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/FilteredServiceManager.java
 Tue Nov  6 14:35:58 2012
@@ -16,8 +16,7 @@
  */
 package org.apache.openejb.server;
 
-import java.util.Arrays;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * This implementation is mainly used in the application composer to get the 
most from
@@ -28,7 +27,28 @@ public class FilteredServiceManager exte
     private Collection<String> services;
 
     public FilteredServiceManager (String[] services) {
-        this.services = Arrays.asList(services);
+        setServiceManager(this);
+        this.services = convertServices(services);
+
+    }
+
+    private Collection<String> convertServices(String[] services) {
+        Set<String> realServices = new HashSet<String>();
+        Collection<String> rsAliases = Arrays.asList("rest", "jaxrs", 
"jax-rs", "cxf-rs");
+        Collection<String> wsAliases = Arrays.asList("jaxws", "jax-ws", "cxf");
+
+        for (String service : services) {
+            if (rsAliases.contains(service)) {
+                realServices.addAll(Arrays.asList("cxf-rs", "httpejbd"));
+            }
+            if (wsAliases.contains(service)) {
+                realServices.addAll(Arrays.asList("cxf", "httpejbd"));
+            }
+            if ("ejbd".equals(service)) {
+                realServices.add("httpejbd");
+            }
+        }
+        return realServices;
     }
 
     @Override

Modified: 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java?rev=1406149&r1=1406148&r2=1406149&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
 Tue Nov  6 14:35:58 2012
@@ -298,7 +298,7 @@ public abstract class ServiceManager {
         fullProps.putAll(props);
     }
 
-    private boolean isEnabled(Properties props) {
+    public static boolean isEnabled(Properties props) {
         // if it should be started, continue
         String disabled = props.getProperty("disabled", "");
 

Added: 
openejb/trunk/openejb/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java?rev=1406149&view=auto
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
 (added)
+++ 
openejb/trunk/openejb/server/openejb-server/src/test/java/org/apache/openejb/server/FilteredServiceManagerTest.java
 Tue Nov  6 14:35:58 2012
@@ -0,0 +1,54 @@
+/*
+ *     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;
+
+import junit.framework.Assert;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.EnableServices;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.core.Application;
+
+/**
+ * This test aims at testing the filtering feature on services.
+ * Basically, this test does not do a lot of stuff except declaring only one 
service
+ * and looking through the service if there is only one service.
+ */
+@EnableServices("cxf-rs")
+@RunWith(ApplicationComposer.class)
+public class FilteredServiceManagerTest {
+
+    @Module
+    public EjbJar war() {
+        return new EjbJar();
+    }
+
+    @Test
+    public void numberOfServices () {
+        // when using @EnableServices with the application composer
+        // the return value should be a FilteredServiceManager
+        Assert.assertEquals(FilteredServiceManager.class, 
ServiceManager.get().getClass());
+
+        FilteredServiceManager manager = (FilteredServiceManager) 
ServiceManager.get();
+        Assert.assertEquals(1, manager.getDaemons().length);
+        Assert.assertEquals("jax-rs", manager.getDaemons()[0].getName());
+    }
+
+}


Reply via email to