java.util.jar.Attributes#entrySet ( )源码实例Demo

下面列出了java.util.jar.Attributes#entrySet ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: netbeans   文件: MakeOSGiTest.java

private void assertTranslation(String expectedOsgi, String netbeans, Set<String> importedPackages, Set<String> exportedPackages) throws Exception {
    assertTrue(netbeans.endsWith("\n")); // JRE bug
    Manifest nbmani = new Manifest(new ByteArrayInputStream(netbeans.getBytes()));
    Attributes nbattr = nbmani.getMainAttributes();
    Manifest osgimani = new Manifest();
    Attributes osgi = osgimani.getMainAttributes();
    Info info = new Info();
    info.importedPackages.addAll(importedPackages);
    info.exportedPackages.addAll(exportedPackages);
    new MakeOSGi().translate(nbattr, osgi, Collections.singletonMap(nbattr.getValue("OpenIDE-Module"), info));
    // boilerplate:
    assertEquals("1.0", osgi.remove(new Attributes.Name("Manifest-Version")));
    assertEquals("2", osgi.remove(new Attributes.Name("Bundle-ManifestVersion")));
    SortedMap<String,String> osgiMap = new TreeMap<>();
    for (Map.Entry<Object,Object> entry : osgi.entrySet()) {
        osgiMap.put(((Attributes.Name) entry.getKey()).toString(), (String) entry.getValue());
    }
    assertEquals(expectedOsgi, osgiMap.toString().replace('"', '\''));
}
 
源代码2 项目: micro-server   文件: ManifestResource.java

public Map<String, String> getManifest(final InputStream input) {
	
	final Map<String, String> retMap = new HashMap<String, String>();
	try {
		Manifest manifest = new Manifest();
		manifest.read(input);
		final Attributes attributes = manifest.getMainAttributes();
		for (final Map.Entry attribute : attributes.entrySet()) {
			retMap.put(attribute.getKey().toString(), attribute.getValue().toString());
		}
	} catch (final Exception ex) {
		logger.error( "Failed to load manifest ", ex);
	}

	return retMap;
}
 
源代码3 项目: micro-server   文件: ManifestLoader.java

public Map<String, String> getManifest(final InputStream input) {

        final Map<String, String> retMap = new HashMap<String, String>();
        try {
            Manifest manifest = new Manifest();
            manifest.read(input);
            final Attributes attributes = manifest.getMainAttributes();
            for (final Map.Entry attribute : attributes.entrySet()) {
                retMap.put(attribute.getKey().toString(), attribute.getValue().toString());
            }
        } catch (final Exception ex) {
            logger.error("Failed to load manifest ", ex);
        }

        return retMap;
    }
 
源代码4 项目: openpojo   文件: JarFileReader.java

public Map<String, String> getManifestEntries() {
  Map<String, String> manifestEntries = new HashMap<String, String>();
  Manifest manifest;
  try {
    manifest = jarFile.getManifest();
  } catch (IOException e) {
    throw ReflectionException.getInstance("Failed to load Manifest-File for: " + jarFile.getName(), e);
  }

  Attributes mainAttributes = manifest.getMainAttributes();

  for (Attributes.Entry entry : mainAttributes.entrySet()) {
    String key = entry.getKey() == null ? "null" : entry.getKey().toString();
    String value = entry.getValue() == null ? "null" : entry.getValue().toString();
    manifestEntries.put(key, value);
  }
  return manifestEntries;
}
 

/**
 * Gets all signed files from the manifest.
 * <p>
 * It scans all manifest entries and their attributes. If there is an attribute
 * name which ends with "-DIGEST" we are assuming that manifest entry name is a
 * signed file name.
 *
 * @param manifest JAR file manifest.
 * @return Either empty set if none found or set of signed file names.
 */
private static Set<String> getSignedFiles(Manifest manifest) {
    Set<String> fileNames = new HashSet<>();

    Map<String, Attributes> entries = manifest.getEntries();

    if (entries != null && entries.size() > 0) {
        for (Map.Entry<String, Attributes> entry : entries.entrySet()) {
            Attributes attrs = entry.getValue();

            for (Map.Entry<Object, Object> attrEntry : attrs.entrySet()) {
                if (attrEntry.getKey().toString().toUpperCase().endsWith("-DIGEST")) {
                    fileNames.add(entry.getKey());

                    break;
                }
            }
        }
    }

    return fileNames;
}
 
源代码6 项目: Xpatch   文件: ManifestWriter.java

static SortedMap<String, String> getAttributesSortedByName(Attributes attributes) {
    Set<Map.Entry<Object, Object>> attributesEntries = attributes.entrySet();
    SortedMap<String, String> namedAttributes = new TreeMap<String, String>();
    for (Map.Entry<Object, Object> attribute : attributesEntries) {
        String attrName = attribute.getKey().toString();
        String attrValue = attribute.getValue().toString();
        namedAttributes.put(attrName, attrValue);
    }
    return namedAttributes;
}
 
源代码7 项目: netbeans   文件: DummyModuleInfo.java

/** Create a new fake module based on manifest.
     * Only main attributes need be presented, so
     * only pass these.
     */
    public DummyModuleInfo(Attributes attr) throws IllegalArgumentException {
        this.attr = attr;
        if (attr == null) {
            throw new IllegalArgumentException ("The parameter attr cannot be null.");
        }
        if (getCodeName() == null) {
            throw new IllegalArgumentException ("No code name in module descriptor " + attr.entrySet ());
        }
        String cnb = getCodeNameBase();
        try {
            getSpecificationVersion();
        } catch (NumberFormatException nfe) {
            throw new IllegalArgumentException(nfe.toString() + " from " + cnb); // NOI18N
        }
        deps = parseDeps (attr, cnb);
//        getAutoDepsHandler().refineDependencies(cnb, deps); // #29577
        String providesS = attr.getValue("OpenIDE-Module-Provides"); // NOI18N
        if (cnb.equals ("org.openide.modules")) { // NOI18N
            providesS = providesS == null ? TOKEN_MODULE_FORMAT1 : providesS + ", " + TOKEN_MODULE_FORMAT1; // NOI18N
            providesS = providesS == null ? TOKEN_MODULE_FORMAT2 : providesS + ", " + TOKEN_MODULE_FORMAT2; // NOI18N
        }
        if (providesS == null) {
            provides = new String[0];
        } else {
            StringTokenizer tok = new StringTokenizer(providesS, ", "); // NOI18N
            provides = new String[tok.countTokens()];
            for (int i = 0; i < provides.length; i++) {
                provides[i] = tok.nextToken();
            }
        }
        // XXX could do more error checking but this is probably plenty
    }
 
源代码8 项目: walle   文件: ManifestWriter.java

static SortedMap<String, String> getAttributesSortedByName(Attributes attributes) {
    Set<Map.Entry<Object, Object>> attributesEntries = attributes.entrySet();
    SortedMap<String, String> namedAttributes = new TreeMap<String, String>();
    for (Map.Entry<Object, Object> attribute : attributesEntries) {
        String attrName = attribute.getKey().toString();
        String attrValue = attribute.getValue().toString();
        namedAttributes.put(attrName, attrValue);
    }
    return namedAttributes;
}
 

protected static Map<String, String> extractMainAttributes(Manifest mf) {
    Map<String, String> map = new HashMap<>();
    Attributes attributes = mf.getMainAttributes();
    for (Map.Entry<Object, Object> entry : attributes.entrySet()) {
        map.put(entry.getKey().toString(), entry.getValue().toString());
    }
    return map;
}
 
源代码10 项目: vespa   文件: ComponentValidator.java

public void validateOSGIHeaders(DeployLogger deployLogger) throws IOException {
    Manifest mf = jarFile.getManifest();
    if (mf == null) {
        throw new IllegalArgumentException("Non-existing or invalid manifest in " + jarFile.getName());
    }

    // Check for required OSGI headers
    Attributes attributes = mf.getMainAttributes();
    HashSet<String> mfAttributes = new HashSet<>();
    for (Object attributeSet : attributes.entrySet()) {
        Map.Entry<Object, Object> e = (Map.Entry<Object, Object>) attributeSet;
        mfAttributes.add(e.getKey().toString());
    }
    List<String> requiredOSGIHeaders = Arrays.asList(
            "Bundle-ManifestVersion", "Bundle-Name", "Bundle-SymbolicName", "Bundle-Version");
    for (String header : requiredOSGIHeaders) {
        if (!mfAttributes.contains(header)) {
            throw new IllegalArgumentException("Required OSGI header '" + header +
                    "' was not found in manifest in '" + jarFile.getName() + "'");
        }
    }

    if (attributes.getValue("Bundle-Version").endsWith(".SNAPSHOT")) {
        deployLogger.log(Level.WARNING, "Deploying snapshot bundle " + jarFile.getName() +
                ".\nTo use this bundle, you must include the qualifier 'SNAPSHOT' in  the version specification in services.xml.");
    }
}
 
源代码11 项目: knopflerfish.org   文件: HeaderDictionary.java

/**
 * Create a dictionary from manifest attributes.
 */
public HeaderDictionary(Attributes in) {
  headers = new Hashtable<Attributes.Name, String>();
  for (final Entry<Object, Object> e : in.entrySet()) {
    headers.put((Attributes.Name)e.getKey(), (String)e.getValue());
  }
}
 
源代码12 项目: hawkular-agent   文件: Version.java

public static Properties getVersionProperties() {
    if (propertiesCache == null) {
        Properties newProps = new Properties();
        try {
            String jarUrl = Version.class.getProtectionDomain().getCodeSource().getLocation().getFile();
            try (JarFile jar = new JarFile(new File(jarUrl))) {
                Manifest manifest = jar.getManifest();
                Attributes attributes = manifest.getMainAttributes();
                for (Entry<Object, Object> entry : attributes.entrySet()) {
                    newProps.setProperty(entry.getKey().toString(), entry.getValue().toString());
                }
            }
        } catch (Exception e) {
            newProps.put(PROP_BUILD_SHA, "unknown");
            newProps.put(PROP_BUILD_DATE, "unknown");
            Package pkg = Version.class.getPackage();
            if (pkg != null) {
                newProps.put(PROP_IMPL_TITLE, pkg.getImplementationTitle());
                newProps.put(PROP_IMPL_VERSION, pkg.getImplementationVersion());
            } else {
                newProps.put(PROP_IMPL_TITLE, "unknown");
                newProps.put(PROP_IMPL_VERSION, "unknown");
            }
        }
        propertiesCache = newProps;
    }

    Properties retProps = new Properties();
    retProps.putAll(propertiesCache);
    return retProps;
}
 
源代码13 项目: brooklyn-server   文件: BrooklynVersion.java

private static Optional<BrooklynFeature> newFeature(Attributes attrs) {
    // unfortunately Attributes is a Map<Object,Object>
    Dictionary<String,String> headers = new Hashtable<>();
    for (Map.Entry<Object, Object> entry : attrs.entrySet()) {
        headers.put(entry.getKey().toString(), entry.getValue().toString());
    }
    return newFeature(headers);
}
 
源代码14 项目: commons-vfs   文件: JarFileObject.java

/**
 * Adds the source attributes to the destination map.
 */
private void addAll(final Attributes src, final Map<String, Object> dest) {
    for (final Entry<Object, Object> entry : src.entrySet()) {
        // final String name = entry.getKey().toString().toLowerCase();
        final String name = entry.getKey().toString();
        dest.put(name, entry.getValue());
    }
}
 
源代码15 项目: spliceengine   文件: ManifestReader.java

private static Map<String, String> toMap(Manifest manifest) {
    Map<String, String> rawMap = new HashMap<>();
    if(manifest == null) return rawMap;
    Attributes mainAttributes = manifest.getMainAttributes();
    if(mainAttributes==null) return rawMap;
    for (Map.Entry<Object, Object> entry : mainAttributes.entrySet()) {
        rawMap.put(entry.getKey().toString(), (String) entry.getValue());
    }
    return rawMap;
}
 
源代码16 项目: jdk8u-jdk   文件: SignatureFileVerifier.java

/**
 * See if the whole manifest was signed.
 */
private boolean verifyManifestHash(Manifest sf,
                                   ManifestDigester md,
                                   List<Object> manifestDigests)
     throws IOException, SignatureException
{
    Attributes mattr = sf.getMainAttributes();
    boolean manifestSigned = false;

    // go through all the attributes and process *-Digest-Manifest entries
    for (Map.Entry<Object,Object> se : mattr.entrySet()) {

        String key = se.getKey().toString();

        if (key.toUpperCase(Locale.ENGLISH).endsWith("-DIGEST-MANIFEST")) {
            // 16 is length of "-Digest-Manifest"
            String algorithm = key.substring(0, key.length()-16);

            manifestDigests.add(key);
            manifestDigests.add(se.getValue());
            MessageDigest digest = getDigest(algorithm);
            if (digest != null) {
                byte[] computedHash = md.manifestDigest(digest);
                byte[] expectedHash =
                    Base64.getMimeDecoder().decode((String)se.getValue());

                if (debug != null) {
                 debug.println("Signature File: Manifest digest " +
                                      digest.getAlgorithm());
                 debug.println( "  sigfile  " + toHex(expectedHash));
                 debug.println( "  computed " + toHex(computedHash));
                 debug.println();
                }

                if (MessageDigest.isEqual(computedHash,
                                          expectedHash)) {
                    manifestSigned = true;
                } else {
                    //XXX: we will continue and verify each section
                }
            }
        }
    }
    return manifestSigned;
}
 
源代码17 项目: jdk8u-jdk   文件: SignatureFileVerifier.java

private boolean verifyManifestMainAttrs(Manifest sf,
                                    ManifestDigester md)
     throws IOException, SignatureException
{
    Attributes mattr = sf.getMainAttributes();
    boolean attrsVerified = true;

    // go through all the attributes and process
    // digest entries for the manifest main attributes
    for (Map.Entry<Object,Object> se : mattr.entrySet()) {
        String key = se.getKey().toString();

        if (key.toUpperCase(Locale.ENGLISH).endsWith(ATTR_DIGEST)) {
            String algorithm =
                    key.substring(0, key.length() - ATTR_DIGEST.length());

            MessageDigest digest = getDigest(algorithm);
            if (digest != null) {
                ManifestDigester.Entry mde =
                    md.get(ManifestDigester.MF_MAIN_ATTRS, false);
                byte[] computedHash = mde.digest(digest);
                byte[] expectedHash =
                    Base64.getMimeDecoder().decode((String)se.getValue());

                if (debug != null) {
                 debug.println("Signature File: " +
                                    "Manifest Main Attributes digest " +
                                    digest.getAlgorithm());
                 debug.println( "  sigfile  " + toHex(expectedHash));
                 debug.println( "  computed " + toHex(computedHash));
                 debug.println();
                }

                if (MessageDigest.isEqual(computedHash,
                                          expectedHash)) {
                    // good
                } else {
                    // we will *not* continue and verify each section
                    attrsVerified = false;
                    if (debug != null) {
                        debug.println("Verification of " +
                                    "Manifest main attributes failed");
                        debug.println();
                    }
                    break;
                }
            }
        }
    }

    // this method returns 'true' if either:
    //      . manifest main attributes were not signed, or
    //      . manifest main attributes were signed and verified
    return attrsVerified;
}
 
源代码18 项目: jdk8u-jdk   文件: SignatureFileVerifier.java

/**
 * given the .SF digest header, and the data from the
 * section in the manifest, see if the hashes match.
 * if not, throw a SecurityException.
 *
 * @return true if all the -Digest headers verified
 * @exception SecurityException if the hash was not equal
 */

private boolean verifySection(Attributes sfAttr,
                              String name,
                              ManifestDigester md)
     throws IOException, SignatureException
{
    boolean oneDigestVerified = false;
    ManifestDigester.Entry mde = md.get(name,block.isOldStyle());

    if (mde == null) {
        throw new SecurityException(
              "no manifest section for signature file entry "+name);
    }

    if (sfAttr != null) {

        //sun.misc.HexDumpEncoder hex = new sun.misc.HexDumpEncoder();
        //hex.encodeBuffer(data, System.out);

        // go through all the attributes and process *-Digest entries
        for (Map.Entry<Object,Object> se : sfAttr.entrySet()) {
            String key = se.getKey().toString();

            if (key.toUpperCase(Locale.ENGLISH).endsWith("-DIGEST")) {
                // 7 is length of "-Digest"
                String algorithm = key.substring(0, key.length()-7);

                MessageDigest digest = getDigest(algorithm);

                if (digest != null) {
                    boolean ok = false;

                    byte[] expected =
                        Base64.getMimeDecoder().decode((String)se.getValue());
                    byte[] computed;
                    if (workaround) {
                        computed = mde.digestWorkaround(digest);
                    } else {
                        computed = mde.digest(digest);
                    }

                    if (debug != null) {
                      debug.println("Signature Block File: " +
                               name + " digest=" + digest.getAlgorithm());
                      debug.println("  expected " + toHex(expected));
                      debug.println("  computed " + toHex(computed));
                      debug.println();
                    }

                    if (MessageDigest.isEqual(computed, expected)) {
                        oneDigestVerified = true;
                        ok = true;
                    } else {
                        // attempt to fallback to the workaround
                        if (!workaround) {
                           computed = mde.digestWorkaround(digest);
                           if (MessageDigest.isEqual(computed, expected)) {
                               if (debug != null) {
                                   debug.println("  re-computed " + toHex(computed));
                                   debug.println();
                               }
                               workaround = true;
                               oneDigestVerified = true;
                               ok = true;
                           }
                        }
                    }
                    if (!ok){
                        throw new SecurityException("invalid " +
                                   digest.getAlgorithm() +
                                   " signature file digest for " + name);
                    }
                }
            }
        }
    }
    return oneDigestVerified;
}
 
源代码19 项目: jeka   文件: JkManifest.java

private static void merge(Attributes attributes, Attributes others) {
    for (final Map.Entry<?, ?> entry : others.entrySet()) {
        attributes.putValue(entry.getKey().toString(), entry.getValue().toString());
    }
}