
com.jd.blockchain.contract.archiver.ManifestUtils Maven / Gradle / Ivy
package com.jd.blockchain.contract.archiver;
import java.util.Set;
import java.util.jar.Manifest;
import org.apache.maven.artifact.Artifact;
public class ManifestUtils {
public static final String CONTRACT_DECLARATION = "Contr-Decl";
public static final String CONTRACT_IMPLEMENT = "Contr-Impl";
public static final String LIB_PATH_ATTR_NAME = "Lib-Path";
public static final String CREATED_BY_ATTR_NAME = "Created-By";
public static final String BUILD_JDK_SPEC_ATTR_NAME = "Build-Jdk-Spec";
public static final String BUILD_JDK_ATTR_NAME = "Build-Jdk";
public static final String BUILD_OS_ATTR_NAME = "Build-Os";
public static final String ARCHIVE_LAYOUT = "Archive-Layout";
private static final String LIB_PATH_SEPERATOR = " ";
/**
* Create the libpath string by combinates each libpath item separating by the
* white space chaOsracter.
*
* @param libpathPrefix
* @param libraries
* @return
*/
public static String generateLibpaths(String libpathPrefix, Set libraries) {
if (!libpathPrefix.endsWith("/")) {
libpathPrefix += "/";
}
StringBuilder libpaths = new StringBuilder();
for (Artifact lib : libraries) {
if (libpaths.length() > 0) {
libpaths.append(LIB_PATH_SEPERATOR);
}
libpaths.append(libpathPrefix + lib.getFile().getName());
}
return libpaths.toString();
}
public static String[] resolveLibpaths(String libpathValue) {
return libpathValue.split(LIB_PATH_SEPERATOR);
}
public static String[] getLibpaths(Manifest manifest) {
String libpaths = manifest.getMainAttributes().getValue(LIB_PATH_ATTR_NAME);
if (libpaths == null) {
return null;
}
return resolveLibpaths(libpaths);
}
public static ArchiveLayout getArchiveLayout(Manifest manifest) {
String layoutName = manifest.getMainAttributes().getValue(ARCHIVE_LAYOUT);
if (layoutName == null) {
return null;
}
ArchiveLayout layout = ArchiveLayout.getLayout(layoutName);
if (layout == null) {
throw new IllegalArgumentException("Unsupported archive layout[" + layoutName + "]!");
}
return layout;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy