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 2014/07/26 10:53:13 UTC
svn commit: r1613585 - in /tomee/tomee/trunk: ./ container/openejb-core/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb/batchee/
container/openejb-core/src/main/java/or...
Author: rmannibucau
Date: Sat Jul 26 08:53:12 2014
New Revision: 1613585
URL: http://svn.apache.org/r1613585
Log:
TOMEE-1279 adding batchee integration
Added:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java
Modified:
tomee/tomee/trunk/container/openejb-core/pom.xml
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/AppFinder.java
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
tomee/tomee/trunk/pom.xml
tomee/tomee/trunk/tomee/tomee-plus-webapp/pom.xml
Modified: tomee/tomee/trunk/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/pom.xml?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/pom.xml (original)
+++ tomee/tomee/trunk/container/openejb-core/pom.xml Sat Jul 26 08:53:12 2014
@@ -675,6 +675,13 @@
<version>1.8</version>
<scope>provided</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.batchee</groupId>
+ <artifactId>batchee-jbatch</artifactId>
+ <version>${batchee.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<profiles>
<profile>
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sat Jul 26 08:53:12 2014
@@ -49,6 +49,7 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.assembler.classic.event.ContainerSystemPreDestroy;
import org.apache.openejb.assembler.monitoring.JMXContainer;
import org.apache.openejb.async.AsynchronousPool;
+import org.apache.openejb.batchee.BatchEEServiceManager;
import org.apache.openejb.cdi.CdiAppContextsService;
import org.apache.openejb.cdi.CdiBuilder;
import org.apache.openejb.cdi.CdiResourceInjectionService;
@@ -474,8 +475,12 @@ public class Assembler extends Assembler
*/
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
public void buildContainerSystem(final OpenEjbConfiguration configInfo) throws Exception {
- if (SystemInstance.get().getOptions().get(OPENEJB_JPA_DEPLOY_TIME_ENHANCEMENT_PROP, false)) {
- SystemInstance.get().addObserver(new DeployTimeEnhancer());
+ final SystemInstance systemInstance = SystemInstance.get();
+ if (systemInstance.getOptions().get(OPENEJB_JPA_DEPLOY_TIME_ENHANCEMENT_PROP, false)) {
+ systemInstance.addObserver(new DeployTimeEnhancer());
+ }
+ if (hasBatchEE()) {
+ systemInstance.addObserver(new BatchEEServiceManager());
}
for (final ServiceInfo serviceInfo : configInfo.facilities.services) {
@@ -516,14 +521,23 @@ public class Assembler extends Assembler
} catch (final Throwable e) {
logger.error("appNotDeployed", e, appInfo.path);
- final DeploymentExceptionManager exceptionManager = SystemInstance.get().getComponent(DeploymentExceptionManager.class);
+ final DeploymentExceptionManager exceptionManager = systemInstance.getComponent(DeploymentExceptionManager.class);
if (exceptionManager != null && e instanceof Exception) {
exceptionManager.saveDeploymentException(appInfo, (Exception) e);
}
}
}
- SystemInstance.get().fireEvent(new ContainerSystemPostCreate());
+ systemInstance.fireEvent(new ContainerSystemPostCreate());
+ }
+
+ private static boolean hasBatchEE() {
+ try {
+ Class.forName("org.apache.batchee.container.services.ServicesManager", true, Assembler.class.getClassLoader());
+ return true;
+ } catch (final Throwable e) {
+ return false;
+ }
}
private void createJavaGlobal() {
Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java?rev=1613585&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java Sat Jul 26 08:53:12 2014
@@ -0,0 +1,63 @@
+/*
+ * 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.batchee;
+
+import org.apache.batchee.container.services.ServicesManager;
+import org.apache.batchee.container.services.ServicesManagerLocator;
+import org.apache.openejb.AppContext;
+import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.observer.event.ObserverAdded;
+import org.apache.openejb.util.AppFinder;
+
+import java.util.Properties;
+
+public class BatchEEServiceManager implements ServicesManagerLocator {
+ public void initEnvironment(final @Observes ObserverAdded event) {
+ if (event.getObserver() == this) {
+ ServicesManager.setServicesManagerLocator(this);
+ }
+ }
+
+ public void storeClassLoader(final @Observes AssemblerAfterApplicationCreated init) {
+ final Properties properties = new Properties(SystemInstance.get().getProperties());
+ properties.putAll(init.getApp().properties);
+
+ final Thread thread = Thread.currentThread();
+ final ClassLoader current = thread.getContextClassLoader();
+ thread.setContextClassLoader(init.getContext().getClassLoader());
+ final ServicesManager servicesManager = new ServicesManager();
+ try {
+ servicesManager.init(properties); // will look for batchee.properties so need the right classloader
+ } finally {
+ thread.setContextClassLoader(current);
+ }
+
+ init.getContext().set(ServicesManager.class, servicesManager);
+ }
+
+ @Override
+ public ServicesManager find() {
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ final AppContext context = AppFinder.findAppContextOrWeb(contextClassLoader, AppFinder.AppContextTransformer.INSTANCE);
+ if (context != null) {
+ return context.get(ServicesManager.class);
+ }
+ throw new IllegalStateException("Can't find ServiceManager for " + contextClassLoader);
+ }
+}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Sat Jul 26 08:53:12 2014
@@ -201,8 +201,12 @@ public class CdiScanner implements Scann
}
addContainerCdiClasses(classLoader, appInfo);
+ try { // not done in batchee extension so for now doing it here, ensure to use container loader!
+ classes.add(CdiScanner.class.getClassLoader().loadClass("org.apache.batchee.container.cdi.BatchProducerBean"));
+ } catch (final Throwable e) {
+ // no-op
+ }
}
-
}
private void addContainerCdiClasses(final ClassLoader loader, final AppInfo app) {
@@ -211,12 +215,6 @@ public class CdiScanner implements Scann
}
addContainerClasses(app.properties, loader, "BVal");
-
- /* useless since MyFaces uses Extension to register beans
- if (ejbJar.webapp && "true".equalsIgnoreCase(app.properties.getProperty("Jsf.MyFaces", "true"))) {
- addContainerClasses(app.properties, loader, "MyFaces");
- }
- */
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/AppFinder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/AppFinder.java?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/AppFinder.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/AppFinder.java Sat Jul 26 08:53:12 2014
@@ -65,6 +65,20 @@ public final class AppFinder {
}
}
+ public static class AppContextTransformer implements Transformer<AppContext> {
+ public static final Transformer<AppContext> INSTANCE = new AppContextTransformer();
+
+ @Override
+ public AppContext from(final AppContext appCtx) {
+ return appCtx;
+ }
+
+ @Override
+ public AppContext from(final WebContext webCtx) {
+ return webCtx.getAppContext();
+ }
+ }
+
private AppFinder() {
// no-op
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions Sat Jul 26 08:53:12 2014
@@ -23,6 +23,7 @@ arquillian-tomee-
avalon-framework-
axis-
axis2-
+batchee-jbatch
bcprov-
bootstrap.jar
bval-core
Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Sat Jul 26 08:53:12 2014
@@ -122,6 +122,7 @@
<openejb.osgi.dynamic.import>${openejb.osgi.dynamic.import.pkg}</openejb.osgi.dynamic.import>
<openejb.osgi.symbolic.name>${project.groupId}.${project.artifactId}</openejb.osgi.symbolic.name>
+ <batchee.version>0.1-incubating</batchee.version>
<!-- to change easily the javaee api version -->
<javaee-api.version>7.0-SNAPSHOT</javaee-api.version>
Modified: tomee/tomee/trunk/tomee/tomee-plus-webapp/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-plus-webapp/pom.xml?rev=1613585&r1=1613584&r2=1613585&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-plus-webapp/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-plus-webapp/pom.xml Sat Jul 26 08:53:12 2014
@@ -132,6 +132,12 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.apache.batchee</groupId>
+ <artifactId>batchee-jbatch</artifactId>
+ <version>${batchee.version}</version>
+ <scope>runtime</scope>
+ </dependency>
<!-- if i'm not mistaken we decided to remove it from our default deliveries
<dependency>