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