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());
+ }
+
+}