[jboss-modules] 04/08: Imported Upstream version 1.4.4

Markus Koschany apo-guest at moszumanska.debian.org
Wed Sep 16 08:05:54 UTC 2015


This is an automated email from the git hooks/post-receive script.

apo-guest pushed a commit to branch master
in repository jboss-modules.

commit 98eaf85fff8708617c19ef44633d73e7884b30e5
Author: Markus Koschany <apo at gambaru.de>
Date:   Wed Sep 16 09:43:27 2015 +0200

    Imported Upstream version 1.4.4
---
 pom.xml                                            | 28 +++----
 .../java/__redirected/__TransformerFactory.java    |  2 +-
 src/main/java/org/jboss/modules/Main.java          | 14 ++--
 .../java/org/jboss/modules/MavenArtifactUtil.java  | 31 ++++----
 .../java/org/jboss/modules/ModuleClassLoader.java  | 57 +-------------
 .../java/org/jboss/modules/ModuleIdentifier.java   |  4 +-
 .../java/org/jboss/modules/ModuleXmlParser.java    | 87 ++++++++++++----------
 .../test/repo/test/maven/non-main/module.xml       |  1 +
 8 files changed, 90 insertions(+), 134 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2d89857..b0084ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,24 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
+  ~ Copyright 2015 Red Hat, Inc., and individual contributors
+  ~ as indicated by the @author tags.
   ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
+  ~ Licensed 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
   ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
+  ~     http://www.apache.org/licenses/LICENSE-2.0
   ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  ~ 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.
   -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"
@@ -27,7 +23,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.jboss.modules</groupId>
     <artifactId>jboss-modules</artifactId>
-    <version>1.4.1.Final</version>
+    <version>1.4.4.Final</version>
     <name>JBoss Modules</name>
 
     <parent>
diff --git a/src/main/java/__redirected/__TransformerFactory.java b/src/main/java/__redirected/__TransformerFactory.java
index fb65093..ddfeccd 100644
--- a/src/main/java/__redirected/__TransformerFactory.java
+++ b/src/main/java/__redirected/__TransformerFactory.java
@@ -180,7 +180,7 @@ public final class __TransformerFactory extends SAXTransformerFactory {
     public TransformerHandler newTransformerHandler(Source src) throws TransformerConfigurationException {
         if (saxtual == null)
             throw new TransformerConfigurationException("Provider is not a SAXTransformerFactory");
-        return saxtual.newTransformerHandler();
+        return saxtual.newTransformerHandler(src);
     }
 
     public TransformerHandler newTransformerHandler(Templates templates) throws TransformerConfigurationException {
diff --git a/src/main/java/org/jboss/modules/Main.java b/src/main/java/org/jboss/modules/Main.java
index 86b4c63..53e316a 100644
--- a/src/main/java/org/jboss/modules/Main.java
+++ b/src/main/java/org/jboss/modules/Main.java
@@ -29,7 +29,6 @@ import java.io.PrintWriter;
 import java.lang.management.ManagementFactory;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
-import java.security.AccessController;
 import java.security.Policy;
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -401,6 +400,15 @@ public final class Main {
         ModularURLStreamHandlerFactory.addHandlerModule(module);
         ModularContentHandlerFactory.addHandlerModule(module);
 
+        // at this point, having a security manager already installed will prevent correct operation.
+
+        final SecurityManager existingSecMgr = System.getSecurityManager();
+        if (existingSecMgr != null) {
+            System.err.println("An existing security manager was detected.  You must use the -secmgr switch to start with a security manager.");
+            System.exit(1);
+            return; // not reached
+        }
+
         try {
             final Iterator<Policy> iterator = module.loadService(Policy.class).iterator();
             if (iterator.hasNext()) {
@@ -412,10 +420,6 @@ public final class Main {
         final ModulesPolicy policy = new ModulesPolicy(Policy.getPolicy());
         Policy.setPolicy(policy);
 
-        // these two lines really needed for post EAP 6.x
-        ModuleClassLoader.POLICY_READY.set(true);
-        policy.refresh();
-
         if (secMgrModule != null) {
             final Module loadedModule;
             try {
diff --git a/src/main/java/org/jboss/modules/MavenArtifactUtil.java b/src/main/java/org/jboss/modules/MavenArtifactUtil.java
index a72186e..49fa091 100755
--- a/src/main/java/org/jboss/modules/MavenArtifactUtil.java
+++ b/src/main/java/org/jboss/modules/MavenArtifactUtil.java
@@ -29,8 +29,9 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.HttpURLConnection;
+import java.net.URLConnection;
 import java.net.URL;
+import java.net.URLConnection;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
@@ -123,7 +124,9 @@ class MavenArtifactUtil {
                     switch (reader.getName()) {
                         case "localRepository": {
                             String localRepository = reader.nextText();
-                            mavenSettings.setLocalRepository(java.nio.file.Paths.get(localRepository));
+                            if (!"".equals(localRepository)) {
+                                mavenSettings.setLocalRepository(java.nio.file.Paths.get(localRepository));
+                            }
                             break;
                         }
                         case "profiles": {
@@ -277,6 +280,7 @@ class MavenArtifactUtil {
         if (split.length >= 4) { classifier = "-" + split[3]; }
 
         String artifactRelativePath = relativeArtifactPath(groupId, artifactId, version);
+        String artifactRelativeHttpPath = relativeArtifactHttpPath(groupId, artifactId, version);
         final MavenSettings settings = getSettings();
         final Path localRepository = settings.getLocalRepository();
 
@@ -297,8 +301,8 @@ class MavenArtifactUtil {
             final File pomFile = new File(localRepository.toFile(), artifactRelativePath + ".pom");
             for (String remoteRepository : remoteRepos) {
                 try {
-                    String remotePomPath = remoteRepository + artifactRelativePath + ".pom";
-                    String remoteJarPath = remoteRepository + artifactRelativePath + classifier + ".jar";
+                    String remotePomPath = remoteRepository + artifactRelativeHttpPath + ".pom";
+                    String remoteJarPath = remoteRepository + artifactRelativeHttpPath + classifier + ".jar";
                     downloadFile(qualifier + ":pom", remotePomPath, pomFile);
                     downloadFile(qualifier + ":jar", remoteJarPath, jarFile);
                     if (jarFile.exists()) { //download successful
@@ -330,22 +334,17 @@ class MavenArtifactUtil {
     }
 
     public static void downloadFile(String artifact, String src, File dest) throws IOException {
+        if (dest.exists()){
+            return;
+        }
         final URL url = new URL(src);
-        final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        final URLConnection connection = url.openConnection();
         boolean message = Boolean.getBoolean("maven.download.message");
 
-        InputStream bis = connection.getInputStream();
-        try {
+        try (InputStream bis = connection.getInputStream()){
             dest.getParentFile().mkdirs();
-            FileOutputStream fos = new FileOutputStream(dest);
-            try {
-                if (message) { System.out.println("Downloading " + artifact); }
-                Files.copy(bis,dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
-            } finally {
-                StreamUtil.safeClose(fos);
-            }
-        } finally {
-            StreamUtil.safeClose(bis);
+            if (message) { System.out.println("Downloading " + artifact); }
+            Files.copy(bis, dest.toPath(), StandardCopyOption.REPLACE_EXISTING);
         }
     }
 }
diff --git a/src/main/java/org/jboss/modules/ModuleClassLoader.java b/src/main/java/org/jboss/modules/ModuleClassLoader.java
index 0a81e3a..cc78db4 100644
--- a/src/main/java/org/jboss/modules/ModuleClassLoader.java
+++ b/src/main/java/org/jboss/modules/ModuleClassLoader.java
@@ -18,12 +18,7 @@
 
 package org.jboss.modules;
 
-import java.security.AccessController;
-import java.security.Permission;
 import java.security.PermissionCollection;
-import java.security.Permissions;
-import java.security.Policy;
-import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
 import java.util.IdentityHashMap;
 import java.util.Iterator;
@@ -44,7 +39,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 
 /**
@@ -59,10 +53,6 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
  */
 public class ModuleClassLoader extends ConcurrentClassLoader {
 
-    private static final boolean POLICY_PERMISSIONS;
-
-    static final AtomicBoolean POLICY_READY = new AtomicBoolean();
-
     static {
         boolean parallelOk = true;
         try {
@@ -72,7 +62,6 @@ public class ModuleClassLoader extends ConcurrentClassLoader {
         if (! parallelOk) {
             throw new Error("Failed to register " + ModuleClassLoader.class.getName() + " as parallel-capable");
         }
-        POLICY_PERMISSIONS = Boolean.parseBoolean(System.getProperty("jboss.modules.policy-permissions", "false"));
     }
 
     static final ResourceLoaderSpec[] NO_RESOURCE_LOADERS = new ResourceLoaderSpec[0];
@@ -376,55 +365,13 @@ public class ModuleClassLoader extends ConcurrentClassLoader {
 
     private final IdentityHashMap<CodeSource, ProtectionDomain> protectionDomains = new IdentityHashMap<CodeSource, ProtectionDomain>();
 
-    private static final PrivilegedAction<Policy> GET_POLICY_ACTION = new PrivilegedAction<Policy>() {
-        public Policy run() {
-            return Policy.getPolicy();
-        }
-    };
-
     private ProtectionDomain getProtectionDomain(CodeSource codeSource) {
         final IdentityHashMap<CodeSource, ProtectionDomain> map = protectionDomains;
         synchronized (map) {
             ProtectionDomain protectionDomain = map.get(codeSource);
             if (protectionDomain == null) {
                 final PermissionCollection permissions = module.getPermissionCollection();
-                if (POLICY_PERMISSIONS && POLICY_READY.get()) {
-                    final Policy policy = AccessController.doPrivileged(GET_POLICY_ACTION);
-                    if (policy != null) {
-                        final PermissionCollection policyPermissions = policy.getPermissions(codeSource);
-                        if (policyPermissions != null && policyPermissions != Policy.UNSUPPORTED_EMPTY_COLLECTION) {
-                            if (permissions == null) {
-                                protectionDomain = new ProtectionDomain(codeSource, policyPermissions);
-                            } else {
-                                final Enumeration<Permission> e2 = policyPermissions.elements();
-                                final Enumeration<Permission> e1 = permissions.elements();
-                                if (e2.hasMoreElements()) {
-                                    if (e1.hasMoreElements()) {
-                                        final Permissions combined = new Permissions();
-                                        do {
-                                            combined.add(e1.nextElement());
-                                        } while (e1.hasMoreElements());
-                                        while (e2.hasMoreElements()) {
-                                            combined.add(e2.nextElement());
-                                        }
-                                        combined.setReadOnly();
-                                        protectionDomain = new ProtectionDomain(codeSource, combined);
-                                    } else {
-                                        protectionDomain = new ProtectionDomain(codeSource, policyPermissions);
-                                    }
-                                } else {
-                                    protectionDomain = new ProtectionDomain(codeSource, permissions);
-                                }
-                            }
-                        } else {
-                            protectionDomain = new ProtectionDomain(codeSource, permissions);
-                        }
-                    } else {
-                        protectionDomain = new ProtectionDomain(codeSource, permissions);
-                    }
-                } else {
-                    protectionDomain = new ProtectionDomain(codeSource, permissions);
-                }
+                protectionDomain = new ProtectionDomain(codeSource, permissions);
                 map.put(codeSource, protectionDomain);
             }
             return protectionDomain;
@@ -791,7 +738,7 @@ public class ModuleClassLoader extends ConcurrentClassLoader {
      *
      * @apiviz.exclude
      */
-    protected static final class Configuration {
+    public static final class Configuration {
         private final Module module;
         private final AssertionSetting assertionSetting;
         private final ResourceLoaderSpec[] resourceLoaders;
diff --git a/src/main/java/org/jboss/modules/ModuleIdentifier.java b/src/main/java/org/jboss/modules/ModuleIdentifier.java
index c42176e..6811270 100644
--- a/src/main/java/org/jboss/modules/ModuleIdentifier.java
+++ b/src/main/java/org/jboss/modules/ModuleIdentifier.java
@@ -160,7 +160,7 @@ public final class ModuleIdentifier implements Serializable {
                     b.append('\\');
                     // fall thru
                 default:
-                    b.append(c);
+                    b.appendCodePoint(c);
             }
         }
         return escaped ? b.toString() : name;
@@ -178,7 +178,7 @@ public final class ModuleIdentifier implements Serializable {
                     b.append('\\');
                     // fall thru
                 default:
-                    b.append(c);
+                    b.appendCodePoint(c);
             }
         }
         return escaped ? b.toString() : slot;
diff --git a/src/main/java/org/jboss/modules/ModuleXmlParser.java b/src/main/java/org/jboss/modules/ModuleXmlParser.java
index 81fc9f7..16fab5b 100755
--- a/src/main/java/org/jboss/modules/ModuleXmlParser.java
+++ b/src/main/java/org/jboss/modules/ModuleXmlParser.java
@@ -247,7 +247,8 @@ final class ModuleXmlParser {
 
     private static ModuleSpec parseDocument(final ResourceRootFactory factory, final String rootPath, XmlPullParser reader, final ModuleLoader moduleLoader, final ModuleIdentifier moduleIdentifier) throws XmlPullParserException, IOException {
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case START_DOCUMENT: {
                     return parseRootElement(factory, rootPath, reader, moduleLoader, moduleIdentifier);
@@ -280,7 +281,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static ModuleSpec parseRootElement(final ResourceRootFactory factory, final String rootPath, final XmlPullParser reader, final ModuleLoader moduleLoader, final ModuleIdentifier moduleIdentifier) throws XmlPullParserException, IOException {
@@ -346,7 +346,8 @@ final class ModuleXmlParser {
             throw invalidModuleName(reader, moduleIdentifier);
         }
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return ModuleSpec.buildAlias(moduleIdentifier, ModuleIdentifier.create(targetName, targetSlot)).create();
@@ -356,14 +357,13 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static void parseModuleAbsentContents(final XmlPullParser reader, final ModuleIdentifier moduleIdentifier) throws XmlPullParserException, IOException {
         final int count = reader.getAttributeCount();
         String name = null;
         String slot = null;
-        final Set<String> required = new HashSet<>(Arrays.asList(A_NAME, A_TARGET_NAME));
+        final Set<String> required = new HashSet<>(Arrays.asList(A_NAME, A_SLOT));
         for (int i = 0; i < count; i ++) {
             validateAttributeNamespace(reader, i);
             final String attribute = reader.getAttributeName(i);
@@ -381,7 +381,8 @@ final class ModuleXmlParser {
             throw invalidModuleName(reader, moduleIdentifier);
         }
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return;
@@ -391,7 +392,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static void parseModuleContents(final XmlPullParser reader, final ResourceRootFactory factory, final ModuleLoader moduleLoader, final ModuleIdentifier moduleIdentifier, final ModuleSpec.Builder specBuilder, final String rootPath) throws XmlPullParserException, IOException {
@@ -417,13 +417,18 @@ final class ModuleXmlParser {
         }
         // xsd:all
         MultiplePathFilterBuilder exportsBuilder = PathFilters.multiplePathFilterBuilder(true);
+        ArrayList<DependencySpec> dependencies = new ArrayList<>();
         Set<String> visited = new HashSet<>();
         int eventType;
         boolean gotPerms = false;
-        specBuilder.addDependency(DependencySpec.createLocalDependencySpec(PathFilters.acceptAll(), exportsBuilder.create()));
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
+                    specBuilder.addDependency(DependencySpec.createLocalDependencySpec(PathFilters.acceptAll(), exportsBuilder.create()));
+                    for (DependencySpec dependency : dependencies) {
+                        specBuilder.addDependency(dependency);
+                    }
                     if (! gotPerms) specBuilder.setPermissionCollection(ModulesPolicy.DEFAULT_PERMISSION_COLLECTION);
                     return;
                 }
@@ -436,7 +441,7 @@ final class ModuleXmlParser {
                     visited.add(element);
                     switch (element) {
                         case E_EXPORTS:      parseFilterList(reader, exportsBuilder); break;
-                        case E_DEPENDENCIES: parseDependencies(reader, specBuilder); break;
+                        case E_DEPENDENCIES: parseDependencies(reader, dependencies); break;
                         case E_MAIN_CLASS:   parseMainClass(reader, specBuilder); break;
                         case E_RESOURCES:    parseResources(factory, rootPath, reader, specBuilder); break;
                         case E_PROPERTIES:   parseProperties(reader, specBuilder); break;
@@ -450,14 +455,14 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
-    private static void parseDependencies(final XmlPullParser reader, final ModuleSpec.Builder specBuilder) throws XmlPullParserException, IOException {
+    private static void parseDependencies(final XmlPullParser reader, final ArrayList<DependencySpec> dependencies) throws XmlPullParserException, IOException {
         assertNoAttributes(reader);
         // xsd:choice
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return;
@@ -465,8 +470,8 @@ final class ModuleXmlParser {
                 case START_TAG: {
                     validateNamespace(reader);
                     switch (reader.getName()) {
-                        case E_MODULE: parseModuleDependency(reader, specBuilder); break;
-                        case E_SYSTEM: parseSystemDependency(reader, specBuilder); break;
+                        case E_MODULE: parseModuleDependency(reader, dependencies); break;
+                        case E_SYSTEM: parseSystemDependency(reader, dependencies); break;
                         default: throw unexpectedContent(reader);
                     }
                     break;
@@ -476,10 +481,9 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
-    private static void parseModuleDependency(final XmlPullParser reader, final ModuleSpec.Builder specBuilder) throws XmlPullParserException, IOException {
+    private static void parseModuleDependency(final XmlPullParser reader, final ArrayList<DependencySpec> dependencies) throws XmlPullParserException, IOException {
         String name = null;
         String slot = null;
         boolean export = false;
@@ -516,7 +520,8 @@ final class ModuleXmlParser {
         final MultiplePathFilterBuilder importBuilder = PathFilters.multiplePathFilterBuilder(true);
         final MultiplePathFilterBuilder exportBuilder = PathFilters.multiplePathFilterBuilder(export);
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     assert services.equals(D_NONE) || services.equals(D_EXPORT) || services.equals(D_IMPORT);
@@ -541,7 +546,7 @@ final class ModuleXmlParser {
                         importBuilder.addFilter(PathFilters.getMetaInfFilter(), false);
                         importFilter = importBuilder.create();
                     }
-                    specBuilder.addDependency(DependencySpec.createModuleDependencySpec(importFilter, exportFilter, null, ModuleIdentifier.create(name, slot), optional));
+                    dependencies.add(DependencySpec.createModuleDependencySpec(importFilter, exportFilter, null, ModuleIdentifier.create(name, slot), optional));
                     return;
                 }
                 case START_TAG: {
@@ -560,7 +565,7 @@ final class ModuleXmlParser {
         }
     }
 
-    private static void parseSystemDependency(final XmlPullParser reader, final ModuleSpec.Builder specBuilder) throws XmlPullParserException, IOException {
+    private static void parseSystemDependency(final XmlPullParser reader, final ArrayList<DependencySpec> dependencies) throws XmlPullParserException, IOException {
         boolean export = false;
         final int count = reader.getAttributeCount();
         for (int i = 0; i < count; i ++) {
@@ -574,11 +579,12 @@ final class ModuleXmlParser {
         Set<String> paths = Collections.emptySet();
         final MultiplePathFilterBuilder exportBuilder = PathFilters.multiplePathFilterBuilder(export);
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     final PathFilter exportFilter = exportBuilder.create();
-                    specBuilder.addDependency(DependencySpec.createSystemDependencySpec(PathFilters.acceptAll(), exportFilter, paths));
+                    dependencies.add(DependencySpec.createSystemDependencySpec(PathFilters.acceptAll(), exportFilter, paths));
                     return;
                 }
                 case START_TAG: {
@@ -626,7 +632,8 @@ final class ModuleXmlParser {
         assertNoAttributes(reader);
         // xsd:choice
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     specBuilder.addResourceRoot(new ResourceLoaderSpec(new NativeLibraryResourceLoader(new File(rootPath, "lib")), PathFilters.rejectAll()));
@@ -656,7 +663,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     static ResourceLoader createMavenArtifactLoader(final String name) throws IOException
@@ -698,7 +704,8 @@ final class ModuleXmlParser {
         }
 
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     try {
@@ -737,7 +744,8 @@ final class ModuleXmlParser {
 
         ResourceLoader resourceLoader;
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     try {
@@ -784,7 +792,8 @@ final class ModuleXmlParser {
 
         final Set<String> encountered = new HashSet<>();
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     try {
@@ -816,7 +825,8 @@ final class ModuleXmlParser {
         assertNoAttributes(reader);
         // xsd:choice
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return;
@@ -837,7 +847,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static void parsePath(final XmlPullParser reader, final boolean include, final MultiplePathFilterBuilder builder) throws XmlPullParserException, IOException {
@@ -877,7 +886,8 @@ final class ModuleXmlParser {
         final Set<String> set = new FastCopyHashSet<>();
         // xsd:choice
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return set;
@@ -891,7 +901,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        return set;
     }
 
     private static void parseSet(final XmlPullParser reader, final boolean include, final MultiplePathFilterBuilder builder) throws XmlPullParserException, IOException {
@@ -924,7 +933,8 @@ final class ModuleXmlParser {
         assertNoAttributes(reader);
         // xsd:choice
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return;
@@ -945,7 +955,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static void parseProperty(final XmlPullParser reader, final ModuleSpec.Builder specBuilder) throws XmlPullParserException, IOException {
@@ -980,7 +989,8 @@ final class ModuleXmlParser {
         // xsd:choice
         ArrayList<PermissionFactory> list = new ArrayList<>();
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     specBuilder.setPermissionCollection(new FactoryPermissionCollection(list.toArray(new PermissionFactory[list.size()])));
@@ -1002,7 +1012,6 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     private static void parseGrant(final XmlPullParser reader, final ModuleLoader moduleLoader, final ModuleIdentifier moduleIdentifier, final ArrayList<PermissionFactory> list) throws XmlPullParserException, IOException {
@@ -1033,7 +1042,8 @@ final class ModuleXmlParser {
 
     private static void parseNoContent(final XmlPullParser reader) throws XmlPullParserException, IOException {
         int eventType;
-        while ((eventType = reader.nextTag()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextTag();
             switch (eventType) {
                 case END_TAG: {
                     return;
@@ -1043,12 +1053,12 @@ final class ModuleXmlParser {
                 }
             }
         }
-        throw endOfDocument(reader);
     }
 
     static void parseEndDocument(final XmlPullParser reader) throws XmlPullParserException, IOException {
         int eventType;
-        while ((eventType = reader.nextToken()) != END_DOCUMENT) {
+        for (;;) {
+            eventType = reader.nextToken();
             switch (eventType) {
                 case END_DOCUMENT: {
                     return;
@@ -1071,6 +1081,5 @@ final class ModuleXmlParser {
                 }
             }
         }
-        return;
     }
 }
diff --git a/src/test/resources/test/repo/test/maven/non-main/module.xml b/src/test/resources/test/repo/test/maven/non-main/module.xml
index 14b7312..b7c63fe 100644
--- a/src/test/resources/test/repo/test/maven/non-main/module.xml
+++ b/src/test/resources/test/repo/test/maven/non-main/module.xml
@@ -22,6 +22,7 @@
     <resources>
         <artifact name="org.jboss.resteasy:resteasy-jackson-provider:3.0.5.Final"/>
         <artifact name="org.jboss.ws.cxf:jbossws-cxf-resources:4.3.0.Final:wildfly800"/>
+        <artifact name="xerces:xercesImpl:2.9.1-jbossas-2"/>
     </resources>
 
     <dependencies/>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jboss-modules.git



More information about the pkg-java-commits mailing list