Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
 package org.apache.shindig.gadgets.spec;
 import java.util.List;
 import java.util.Map;

Represents an opensocial application manifest.
 public class ApplicationManifest {
   public static final String NAMESPACE = "";
   private final Map<StringStringversions;
   private final Map<StringUrigadgets;
   private final Uri uri;
   public ApplicationManifest(Uri uriElement xmlthrows SpecParserException {
     ImmutableMap.Builder<StringStringversions = ImmutableMap.builder();
     ImmutableMap.Builder<StringUrigadgets = ImmutableMap.builder();
     NodeList nodes = xml.getElementsByTagName("gadget");
     for (int i = 0, j = nodes.getLength(); i < j; ++i) {
       Element gadget = (Elementnodes.item(i);
       String version = getVersionString(gadget);
       Uri spec = getSpecUri(urigadget);
       for (String label : getLabels(gadget)) {
     this. = uri;
     this. =;
     this. =;
   private static Uri getSpecUri(Uri baseUriElement gadgetthrows SpecParserException {
     NodeList specs = gadget.getElementsByTagName("spec");
     if (specs.getLength() > 1) {
       throw new SpecParserException("Only one spec per gadget block may be specified.");
     } else if (specs.getLength() == 0) {
       throw new SpecParserException("No spec specified.");
     try {
       String relative = specs.item(0).getTextContent();
       Uri specUri = baseUri.resolve(Uri.parse(relative));
       if (specUri.equals(baseUri)) {
         throw new SpecParserException("Manifest is self-referencing.");
       return specUri;
     } catch (IllegalArgumentException e) {
       throw new SpecParserException("Invalid spec URI.");
   private static String getVersionString(Element gadgetthrows SpecParserException {
     NodeList versions = gadget.getElementsByTagName("version");
     if (versions.getLength() > 1) {
       throw new SpecParserException("Only one version per gadget block may be specified.");
     } else if (versions.getLength() == 0) {
       throw new SpecParserException("No version specified.");
     return versions.item(0).getTextContent();
   private static List<StringgetLabels(Element gadget) {
     NodeList labels = gadget.getElementsByTagName("label");
     List<Stringlist = new ArrayList<String>(labels.getLength());
     for (int i = 0, j = labels.getLength(); i < j; ++i) {
    return list;


The URI of this manifest.
  public Uri getUri() {
    return ;


The gadget specified for the version string, or null if the version doesn't exist.
  public Uri getGadget(String version) {
    return .get(version);


The version of the gadget for the given label, or null if the label is unsupported.
  public String getVersion(String label) {
    return .get(label);
New to GrepCode? Check out our FAQ X