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 2012/11/05 07:15:48 UTC
svn commit: r1405701 - in /openejb/trunk/openejb:
container/openejb-core/src/main/java/org/apache/openejb/config/
container/openejb-core/src/main/java/org/apache/openejb/junit/ server/
server/openejb-lightweight-web/ server/openejb-lightweight-web/src/...
Author: rmannibucau
Date: Mon Nov 5 06:15:47 2012
New Revision: 1405701
URL: http://svn.apache.org/viewvc?rev=1405701&view=rev
Log:
OPENEJB-1929 initial version of openejb-lightweight-web
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Component.java
- copied, changed from r1405634, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Module.java
openejb/trunk/openejb/server/openejb-lightweight-web/
openejb/trunk/openejb/server/openejb-lightweight-web/pom.xml
openejb/trunk/openejb/server/openejb-lightweight-web/src/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/
openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/LightweightWebAppBuilder.java
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/
openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/LightweightWebAppBuilderTest.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
openejb/trunk/openejb/server/pom.xml
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java?rev=1405701&r1=1405700&r2=1405701&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java Mon Nov 5 06:15:47 2012
@@ -20,6 +20,7 @@ import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -194,6 +195,9 @@ public class WebModule extends Module im
}
public List<URL> getScannableUrls() {
+ if (scannableUrls == null) {
+ return Collections.emptyList();
+ }
return scannableUrls;
}
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=1405701&r1=1405700&r2=1405701&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 Mon Nov 5 06:15:47 2012
@@ -133,6 +133,12 @@ public class ApplicationComposer extends
}
}
+ for (FrameworkMethod method : testClass.getAnnotatedMethods(Component.class)) {
+ if (method.getMethod().getParameterTypes().length > 0) {
+ errors.add(new Exception("@Component methods shouldn't take any parameters"));
+ }
+ }
+
int appModules = 0;
int modules = 0;
@@ -257,6 +263,17 @@ public class ApplicationComposer extends
}
}
+ for (FrameworkMethod method : testClass.getAnnotatedMethods(Component.class)) {
+ final Object value = method.invokeExplosively(testInstance);
+ Class<?> key = method.getMethod().getReturnType();
+
+ if (!key.isInstance(value)) { // we can't do it in validate to avoid to instantiate the value twice
+ throw new OpenEJBRuntimeException(value + " is not an instance of " + key.getName());
+ }
+
+ SystemInstance.get().setComponent((Class<Object>) key, value);
+ }
+
Application application = null;
// Invoke the @Module producer methods to build out the AppModule
Copied: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Component.java (from r1405634, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Module.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Component.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Component.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Module.java&r1=1405634&r2=1405701&rev=1405701&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Module.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Component.java Mon Nov 5 06:15:47 2012
@@ -23,5 +23,5 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
-public @interface Module {
+public @interface Component {
}
Added: openejb/trunk/openejb/server/openejb-lightweight-web/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-lightweight-web/pom.xml?rev=1405701&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-lightweight-web/pom.xml (added)
+++ openejb/trunk/openejb/server/openejb-lightweight-web/pom.xml Mon Nov 5 06:15:47 2012
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>server</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>4.5.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>openejb-lightweight-web</artifactId>
+ <name>OpenEJB :: Server :: LightWeight Web</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>openejb-http</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Added: openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/LightweightWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/LightweightWebAppBuilder.java?rev=1405701&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/LightweightWebAppBuilder.java (added)
+++ openejb/trunk/openejb/server/openejb-lightweight-web/src/main/java/org/apache/openejb/server/web/LightweightWebAppBuilder.java Mon Nov 5 06:15:47 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.web;
+
+import org.apache.openejb.AppContext;
+import org.apache.openejb.Injection;
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.JndiEncBuilder;
+import org.apache.openejb.assembler.classic.WebAppBuilder;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.core.CoreContainerSystem;
+import org.apache.openejb.core.WebContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+import javax.naming.InitialContext;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class LightweightWebAppBuilder implements WebAppBuilder {
+ @Override
+ public void deployWebApps(final AppInfo appInfo, final ClassLoader classLoader) throws Exception {
+ final CoreContainerSystem cs = (CoreContainerSystem) SystemInstance.get().getComponent(ContainerSystem.class);
+ final AppContext appContext = cs.getAppContext(appInfo.appId);
+ if (appContext == null) {
+ throw new OpenEJBRuntimeException("Can't find app context for " + appInfo.appId);
+ }
+
+ for (WebAppInfo webAppInfo : appInfo.webApps) {
+ final Collection<Injection> injections = appContext.getInjections();
+
+ final Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.putAll(appContext.getBindings());
+ bindings.putAll(new JndiEncBuilder(webAppInfo.jndiEnc, injections, webAppInfo.moduleId, "Bean", null, webAppInfo.uniqueId, classLoader).buildBindings(JndiEncBuilder.JndiScope.comp));
+
+ final WebContext webContext = new WebContext(appContext);
+ webContext.setJndiEnc(new InitialContext());
+ webContext.setClassLoader(classLoader);
+ webContext.setId(webAppInfo.moduleId);
+ webContext.setContextRoot(webAppInfo.contextRoot);
+ webContext.setBindings(bindings);
+ webContext.getInjections().addAll(injections);
+ appContext.getWebContexts().add(webContext);
+ cs.addWebContext(webContext);
+ }
+ }
+
+ @Override
+ public void undeployWebApps(final AppInfo appInfo) throws Exception {
+ // no-op
+ }
+
+ @Override
+ public Map<ClassLoader, Map<String, Set<String>>> getJsfClasses() {
+ return Collections.emptyMap(); // while we don't manage servlet in embedded mode we don't need it
+ }
+}
Added: openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/LightweightWebAppBuilderTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/LightweightWebAppBuilderTest.java?rev=1405701&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/LightweightWebAppBuilderTest.java (added)
+++ openejb/trunk/openejb/server/openejb-lightweight-web/src/test/java/org/apache/openejb/server/web/LightweightWebAppBuilderTest.java Mon Nov 5 06:15:47 2012
@@ -0,0 +1,52 @@
+/*
+ * 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.web;
+
+import org.apache.openejb.assembler.classic.WebAppBuilder;
+import org.apache.openejb.config.WebModule;
+import org.apache.openejb.core.WebContext;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Component;
+import org.apache.openejb.junit.Module;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(ApplicationComposer.class)
+public class LightweightWebAppBuilderTest {
+ @Component
+ public WebAppBuilder webAppBuilder() {
+ return new LightweightWebAppBuilder();
+ }
+
+ @Module
+ public WebModule war() {
+ return new WebModule(new WebApp(), "/foo", Thread.currentThread().getContextClassLoader(), "", "web");
+ }
+
+ @Test
+ public void checkWebContextExists() {
+ final WebContext wc = SystemInstance.get().getComponent(ContainerSystem.class).getWebContext("web");
+ assertNotNull(wc);
+ assertEquals("web", wc.getId());
+ }
+}
Modified: openejb/trunk/openejb/server/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/pom.xml?rev=1405701&r1=1405700&r2=1405701&view=diff
==============================================================================
--- openejb/trunk/openejb/server/pom.xml (original)
+++ openejb/trunk/openejb/server/pom.xml Mon Nov 5 06:15:47 2012
@@ -45,6 +45,7 @@
<module>openejb-ssh</module>
<module>openejb-common-cli</module>
<module>openejb-bonecp</module>
+ <module>openejb-lightweight-web</module>
</modules>
</project>