Author: cziegeler Date: Wed Nov 16 07:20:47 2011 New Revision: 1202561 URL: http://svn.apache.org/viewvc?rev=1202561&view=rev Log: SLING-2288 : Bundle jar is silently ignored by the installer if MANIFEST.MF is not the first file in the archive
Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Util.java Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java?rev=1202561&r1=1202560&r2=1202561&view=diff ============================================================================== --- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java (original) +++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/DefaultTransformer.java Wed Nov 16 07:20:47 2011 @@ -78,7 +78,7 @@ public class DefaultTransformer * @return */ private TransformationResult[] checkBundle(final RegisteredResource resource) { - final Util.BundleHeaders headers = Util.readBundleHeaders(resource); + final Util.BundleHeaders headers = Util.readBundleHeaders(resource, logger); if ( headers != null ) { // check the version for validity boolean validVersion = true; Modified: sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Util.java URL: http://svn.apache.org/viewvc/sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Util.java?rev=1202561&r1=1202560&r2=1202561&view=diff ============================================================================== --- sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Util.java (original) +++ sling/trunk/installer/core/src/main/java/org/apache/sling/installer/core/impl/Util.java Wed Nov 16 07:20:47 2011 @@ -26,6 +26,7 @@ import java.util.jar.Manifest; import org.apache.sling.installer.api.tasks.RegisteredResource; import org.osgi.framework.Constants; +import org.slf4j.Logger; public class Util { @@ -55,7 +56,7 @@ public class Util { /** * Read the manifest from supplied input stream, which is closed before return. */ - private static Manifest getManifest(final RegisteredResource rsrc) + private static Manifest getManifest(final RegisteredResource rsrc, final Logger logger) throws IOException { final InputStream ins = rsrc.getInputStream(); @@ -67,6 +68,12 @@ public class Util { jis = new JarInputStream(ins); result= jis.getManifest(); + // SLING-2288 : if this is a jar file, but the manifest is not the first entry + // log a warning + if ( rsrc.getURL().endsWith(".jar") && result == null ) { + logger.warn("Resource {} does not have the manifest as its first entry in the archive. If this is " + + "a bundle, make sure to put the manifest first in the jar file.", rsrc.getURL()); + } } finally { // close the jar stream or the inputstream, if the jar @@ -97,9 +104,9 @@ public class Util { /** * Read the bundle info from the manifest (if available) */ - public static BundleHeaders readBundleHeaders(final RegisteredResource resource) { + public static BundleHeaders readBundleHeaders(final RegisteredResource resource, final Logger logger) { try { - final Manifest m = Util.getManifest(resource); + final Manifest m = Util.getManifest(resource, logger); if (m != null) { final String sn = m.getMainAttributes().getValue(Constants.BUNDLE_SYMBOLICNAME); if (sn != null) {