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 <[email protected]> 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 _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

