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 2015/05/26 15:35:31 UTC
tomee git commit: TOMEE-1592 basic support of java:/ jboss like
resource name + basic support of comparable for managed tasks (not yet fully
wired)
Repository: tomee
Updated Branches:
refs/heads/master cdb04c3b9 -> 5a2545310
TOMEE-1592 basic support of java:/ jboss like resource name + basic support of comparable for managed tasks (not yet fully wired)
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5a254531
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5a254531
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5a254531
Branch: refs/heads/master
Commit: 5a254531053b662e3dcdf40c95006a803d6cb3ca
Parents: cdb04c3
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue May 26 15:33:54 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue May 26 15:33:54 2015 +0200
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 5 +-
.../apache/openejb/cdi/OpenEJBLifecycle.java | 2 +-
.../openejb/config/AnnotationDeployer.java | 2 +-
.../org/apache/openejb/config/AutoConfig.java | 13 +++-
.../openejb/config/ConfigurationFactory.java | 5 ++
.../config/ConvertDataSourceDefinitions.java | 1 +
.../openejb/config/JndiEncInfoBuilder.java | 3 +
.../apache/openejb/config/SunConversion.java | 2 +-
.../apache/openejb/threads/future/CUFuture.java | 7 +-
.../threads/future/CUScheduleFuture.java | 2 +-
.../impl/ManagedExecutorServiceImpl.java | 6 +-
.../org/apache/openejb/threads/task/CUTask.java | 7 +-
.../jdbc/JBossLikeDataSourceInjectionTest.java | 80 ++++++++++++++++++++
13 files changed, 123 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index b6cdaf9..e0cde14 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -1028,7 +1028,10 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
for (final Bean<?> bean : appContext.getWebBeansContext().getBeanManagerImpl().getBeans()) {
if (ResourceBean.class.isInstance(bean)) {
final ResourceReference reference = ResourceBean.class.cast(bean).getReference();
- final String jndi = reference.getJndiName().replace("java:", "");
+ String jndi = reference.getJndiName().replace("java:", "");
+ if (reference.getJndiName().startsWith("java:/")) {
+ jndi = jndi.substring(1);
+ }
Object lookup = bindings.get(jndi);
if (lookup == null && reference.getAnnotation(EJB.class) != null) {
final CdiPlugin plugin = CdiPlugin.class.cast(appContext.getWebBeansContext().getPluginLoader().getEjbPlugin());
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
index 3bfa8ad..dd25ddf 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
@@ -440,7 +440,7 @@ public class OpenEJBLifecycle implements ContainerLifecycle {
}
else
{
- logger.warning("Default JSPFactroy instance has not found. Skipping OWB JSP handling");
+ logger.debug("Default JSPFactroy instance has not found. Skipping OWB JSP handling");
}
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index 00adadc..711c35a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -4178,7 +4178,7 @@ public class AnnotationDeployer implements DynamicDeployer {
private String normalize(final String refName) {
if (refName.startsWith("java:")) {
- return refName;
+ return refName.startsWith("/") ? refName.substring(1) : refName;
}
return "java:comp/env/" + refName;
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
index 90883db..b634ce5 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
@@ -1056,7 +1056,7 @@ public class AutoConfig implements DynamicDeployer, JndiConstants {
private String dataSourceLookupName(final Resource datasource) {
final String jndi = datasource.getJndi();
if (jndi.startsWith("java:")) {
- return jndi;
+ return jndi.startsWith("/") ? jndi.substring(1) : jndi;
}
if (jndi.startsWith("comp/env/")) {
return "java:" + jndi;
@@ -1190,6 +1190,9 @@ public class AutoConfig implements DynamicDeployer, JndiConstants {
if (id.startsWith("java:")) {
id = id.substring("java:".length());
}
+ if (id.startsWith("/")) {
+ id = id.substring(1);
+ }
try {
final AppModule appModule = ejbModule.getAppModule();
if (appModule != null) {
@@ -1942,7 +1945,10 @@ public class AutoConfig implements DynamicDeployer, JndiConstants {
}
if (resourceId.startsWith("java:")) { // can be an absolute path
- final String jndi = resourceId.substring("java:".length());
+ String jndi = resourceId.substring("java:".length());
+ if (jndi.startsWith("/")) {
+ jndi = jndi.substring(1);
+ }
if (ServiceUtils.hasServiceProvider(jndi)) {
return jndi;
}
@@ -2125,6 +2131,9 @@ public class AutoConfig implements DynamicDeployer, JndiConstants {
if (resourceId.startsWith("java:")) {
resourceId = resourceId.substring("java:".length());
+ if (resourceId.startsWith("/")) {
+ resourceId = resourceId.substring(1);
+ }
}
// strip off "java:comp/env"
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
index 6f6c787..5254f72 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
@@ -1227,6 +1227,11 @@ public class ConfigurationFactory implements OpenEjbConfigurationFactory {
throw new OpenEJBException(messages.format("configureService.cannotInstantiateClass", infoType.getName()), e);
}
+ // some jndi adjustment
+ if (service.getId().startsWith("java:/")) {
+ service.setId(service.getId().substring("java:/".length()));
+ }
+
info.service = provider.getService();
info.types.addAll(provider.getTypes());
info.description = provider.getDescription();
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/ConvertDataSourceDefinitions.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConvertDataSourceDefinitions.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConvertDataSourceDefinitions.java
index a1d7634..5353379 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConvertDataSourceDefinitions.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConvertDataSourceDefinitions.java
@@ -63,6 +63,7 @@ public class ConvertDataSourceDefinitions implements DynamicDeployer {
private Resource toResource(final DataSource datasource) {
String name = datasource.getName();
name = name.replaceFirst("java:comp/env/", "");
+ name = name.replaceFirst("java:/", "");
name = name.replaceFirst("java:", "");
final Resource def = new Resource(name, javax.sql.DataSource.class.getName());
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
index 223a2d3..20bdaf0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
@@ -588,6 +588,9 @@ public class JndiEncInfoBuilder {
} else if (name.startsWith("java:comp/")) {
i.referenceName = name.substring(5);
comp.add(i);
+ } else if (name.startsWith("java:/")) {
+ i.referenceName = name.substring(6);
+ comp.add(i);
} else {
logger.warning("config.invalid.referenceName.suffix", name);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java b/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
index bbf9bad..5f40caa 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
@@ -465,7 +465,7 @@ public class SunConversion implements DynamicDeployer {
if (!refName.startsWith("java:")) {
refName = "java:comp/env/" + refName;
}
- return refName;
+ return refName.startsWith("java:/") ? "java:" + refName.substring("java:/".length()) : refName;
}
public void convertModule(final WebModule webModule) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUFuture.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUFuture.java b/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUFuture.java
index ecbdb95..d41ccfb 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUFuture.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUFuture.java
@@ -24,7 +24,7 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-public class CUFuture<V> implements Future<V> {
+public class CUFuture<V, C> implements Future<V>, Comparable<C> {
protected final Future<V> delegate;
protected final ManagedTaskListenerTask listener;
@@ -59,4 +59,9 @@ public class CUFuture<V> implements Future<V> {
public V get(final long timeout, final TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
return delegate.get(timeout, unit);
}
+
+ @Override
+ public int compareTo(final C o) {
+ return Comparable.class.isInstance(delegate) ? Comparable.class.cast(delegate).compareTo(o) : -1;
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUScheduleFuture.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUScheduleFuture.java b/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUScheduleFuture.java
index 7e3a2c5..027f560 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUScheduleFuture.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/threads/future/CUScheduleFuture.java
@@ -22,7 +22,7 @@ import java.util.concurrent.Delayed;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-public class CUScheduleFuture<V> extends CUFuture<V> implements ScheduledFuture<V> {
+public class CUScheduleFuture<V> extends CUFuture<V, Delayed> implements ScheduledFuture<V> {
public CUScheduleFuture(final ScheduledFuture<V> delegate, final ManagedTaskListenerTask listener) {
super(delegate, listener);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/threads/impl/ManagedExecutorServiceImpl.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/threads/impl/ManagedExecutorServiceImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/threads/impl/ManagedExecutorServiceImpl.java
index 4ed4b64..e710aa8 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/threads/impl/ManagedExecutorServiceImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/threads/impl/ManagedExecutorServiceImpl.java
@@ -70,7 +70,7 @@ public class ManagedExecutorServiceImpl extends AbstractExecutorService implemen
final CUCallable<T> wrapper = new CUCallable<T>(task);
final Future<T> future = delegate.submit(wrapper);
wrapper.taskSubmitted(future, this, task);
- return new CUFuture<T>(future, wrapper);
+ return new CUFuture<>(future, wrapper);
}
@Override
@@ -78,7 +78,7 @@ public class ManagedExecutorServiceImpl extends AbstractExecutorService implemen
final CURunnable wrapper = new CURunnable(task);
final Future<T> future = delegate.submit(wrapper, result);
wrapper.taskSubmitted(future, this, task);
- return new CUFuture<T>(future, wrapper);
+ return new CUFuture<>(future, wrapper);
}
@Override
@@ -86,7 +86,7 @@ public class ManagedExecutorServiceImpl extends AbstractExecutorService implemen
final CURunnable wrapper = new CURunnable(task);
final Future<?> future = delegate.submit(wrapper);
wrapper.taskSubmitted(future, this, task);
- return new CUFuture<Void>(Future.class.cast(future), wrapper);
+ return new CUFuture<>(Future.class.cast(future), wrapper);
}
@Override
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/main/java/org/apache/openejb/threads/task/CUTask.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/threads/task/CUTask.java b/container/openejb-core/src/main/java/org/apache/openejb/threads/task/CUTask.java
index c920044..146b52e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/threads/task/CUTask.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/threads/task/CUTask.java
@@ -26,7 +26,7 @@ import org.apache.openejb.spi.SecurityService;
import javax.security.auth.login.LoginException;
import java.util.concurrent.Callable;
-public abstract class CUTask<T> extends ManagedTaskListenerTask {
+public abstract class CUTask<T> extends ManagedTaskListenerTask implements Comparable<Object> {
private static final SecurityService SECURITY_SERVICE = SystemInstance.get().getComponent(SecurityService.class);
private final Context initialContext;
@@ -179,4 +179,9 @@ public abstract class CUTask<T> extends ManagedTaskListenerTask {
currentContext = null;
}
}
+
+ @Override
+ public int compareTo(final Object o) {
+ return Comparable.class.isInstance(delegate) ? Comparable.class.cast(delegate).compareTo(o) : -1;
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/5a254531/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/JBossLikeDataSourceInjectionTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/JBossLikeDataSourceInjectionTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/JBossLikeDataSourceInjectionTest.java
new file mode 100644
index 0000000..9707e8e
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/JBossLikeDataSourceInjectionTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.resource.jdbc;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.SimpleLog;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+import javax.annotation.Resource;
+import javax.ejb.LocalBean;
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+@SimpleLog
+@Classes(cdi = true, value = JBossLikeDataSourceInjectionTest.IWantInjection.class)
+@RunWith(ApplicationComposer.class)
+public class JBossLikeDataSourceInjectionTest {
+ private static final String URL = "jdbc:hsqldb:mem:jbosslike";
+
+ @Inject
+ private IWantInjection persistManager;
+
+ @Configuration
+ public Properties config() {
+ final Properties p = new Properties();
+ p.put("openejb.log.async", "false");
+ p.put("noise", "new://Resource?type=DataSource"); // to potential fail auto adjusting
+ p.put("java:/jdbc/DefaultDS", "new://Resource?type=DataSource");
+ p.put("java:/jdbc/DefaultDS.JdbcDriver", "org.hsqldb.jdbcDriver");
+ p.put("java:/jdbc/DefaultDS.JdbcUrl", URL);
+ p.put("java:/jdbc/DefaultDS.UserName", "sa");
+ return p;
+ }
+
+ @LocalBean
+ @Singleton
+ public static class IWantInjection {
+ @Resource(name = "java:/jdbc/DefaultDS")
+ private DataSource ds;
+
+
+ public void check() throws SQLException {
+ assertNotNull(ds);
+ final Connection c = ds.getConnection();
+ assertEquals(URL, c.getMetaData().getURL());
+ c.close();
+ assertTrue(c.isClosed());
+ }
+ }
+
+ @Test
+ public void isClosed() throws SQLException {
+ persistManager.check();
+ }
+}