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/10/10 11:59:50 UTC
svn commit: r1630748 - in /tomee/tomee/trunk/container/openejb-core/src:
main/java/org/apache/openejb/ main/java/org/apache/openejb/assembler/classic/
main/java/org/apache/openejb/config/ test/java/org/apache/openejb/
test/resources/META-INF/
Author: rmannibucau
Date: Fri Oct 10 09:59:50 2014
New Revision: 1630748
URL: http://svn.apache.org/r1630748
Log:
TOMEE-1392 support multiple line in META-INF/org.apache.openejb.extension
Added:
tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/ExtensionsTest.java
tomee/tomee/trunk/container/openejb-core/src/test/resources/META-INF/multiple
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java
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/config/ConfigurationFactory.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java?rev=1630748&r1=1630747&r2=1630748&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Extensions.java Fri Oct 10 09:59:50 2014
@@ -23,10 +23,14 @@ import org.apache.openejb.util.Logger;
import org.apache.xbean.finder.ResourceFinder;
import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import static java.util.Arrays.asList;
+
/**
* The Extensions API mimics the equivalent CDI Extension/@Observes API
* <p/>
@@ -58,7 +62,7 @@ public final class Extensions {
// no-op
}
- public static Collection<Class<?>> findExtensions(final ResourceFinder finder) {
+ public static Collection<Class<?>> findExtensions(final Finder finder) {
try {
return finder.findAvailableClasses("org.apache.openejb.extension");
} catch (final IOException e) {
@@ -67,7 +71,7 @@ public final class Extensions {
}
}
- public static void installExtensions(final ResourceFinder finder) {
+ public static void installExtensions(final Finder finder) {
try {
final List<Class<?>> classes = finder.findAvailableClasses("org.apache.openejb.extension");
addExtensions(classes);
@@ -97,4 +101,24 @@ public final class Extensions {
}
}
}
+
+ public static class Finder extends ResourceFinder {
+ public Finder(final String path, final URL... urls) {
+ super(path, urls);
+ }
+
+ // ensure we support multiple class by file
+ public List<String> findAvailableStrings(final String uri) throws IOException {
+ List<String> strings = super.findAvailableStrings(uri);
+ if (!strings.isEmpty()) {
+ final List<String> copy = new ArrayList<>(strings);
+ strings.clear();
+ for (final String s : copy) {
+ strings.addAll(asList(s.replace("\r", "").split("\n")));
+ }
+ }
+
+ return strings;
+ }
+ }
}
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=1630748&r1=1630747&r2=1630748&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 Fri Oct 10 09:59:50 2014
@@ -326,14 +326,14 @@ public class Assembler extends Assembler
private void installExtensions() {
try {
final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(Assembler.class.getClassLoader()).excludeJvm()).getUrls();
- Extensions.installExtensions(new ResourceFinder("META-INF", urls.toArray(new URL[urls.size()])));
+ Extensions.installExtensions(new Extensions.Finder("META-INF", urls.toArray(new URL[urls.size()])));
return;
} catch (final IOException e) {
// no-op
}
// if an error occurred do it brutely
- Extensions.installExtensions(new ResourceFinder("META-INF"));
+ Extensions.installExtensions(new Extensions.Finder("META-INF"));
}
private void setConfiguration(final OpenEjbConfiguration config) {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1630748&r1=1630747&r2=1630748&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Fri Oct 10 09:59:50 2014
@@ -944,7 +944,7 @@ public class ConfigurationFactory implem
final List<URL> libs = appModule.getAdditionalLibraries();
if (libs != null && libs.size() > 0) {
- final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
+ final Extensions.Finder finder = new Extensions.Finder("META-INF", libs.toArray(new URL[libs.size()]));
extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
@@ -954,7 +954,7 @@ public class ConfigurationFactory implem
if (uri.isAbsolute()) {
final URL url = uri.toURL();
if (libs != null && !libs.contains(url)) {
- final ResourceFinder finder = new ResourceFinder("META-INF", url);
+ final Extensions.Finder finder = new Extensions.Finder("META-INF", url);
extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
@@ -968,7 +968,7 @@ public class ConfigurationFactory implem
for (final WebModule web : appModule.getWebModules()) {
final List<URL> webLibs = web.getScannableUrls();
if (webLibs != null && webLibs.size() > 0) {
- final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
+ final Extensions.Finder finder = new Extensions.Finder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
extensions.addAll(Extensions.findExtensions(finder));
notLoaded.addAll(finder.getResourcesNotLoaded());
}
Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/ExtensionsTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/ExtensionsTest.java?rev=1630748&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/ExtensionsTest.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/ExtensionsTest.java Fri Oct 10 09:59:50 2014
@@ -0,0 +1,36 @@
+/*
+ * 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;
+
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
+
+public class ExtensionsTest {
+ @Test
+ public void supportsMultipleLines() throws IOException {
+ final List<Class<?>> classes = new Extensions.Finder("META-INF").findAvailableClasses("multiple");
+ assertEquals(asList(C1.class, C2.class), classes);
+ }
+
+ public static class C1 {}
+ public static class C2 {}
+}
Added: tomee/tomee/trunk/container/openejb-core/src/test/resources/META-INF/multiple
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/resources/META-INF/multiple?rev=1630748&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/resources/META-INF/multiple (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/resources/META-INF/multiple Fri Oct 10 09:59:50 2014
@@ -0,0 +1,2 @@
+org.apache.openejb.ExtensionsTest$C1
+org.apache.openejb.ExtensionsTest$C2