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