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
   *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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.
  */
 package org.apache.shindig.gadgets.spec;
 
 
 import  com.google.common.collect.ImmutableMap;
 
 
 import java.util.List;
 import java.util.Map;

Represents an opensocial application manifest.
 
 public class ApplicationManifest {
   public static final String NAMESPACE = "http://ns.opensocial.org/2008/application";
 
   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);
       gadgets.put(versionspec);
       for (String label : getLabels(gadget)) {
         versions.put(labelversion);
       }
     }
 
     this. = uri;
     this. = versions.build();
     this. = gadgets.build();
   }
 
   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) {
      list.add(labels.item(i).getTextContent());
    }
    return list;
  }

  

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

  

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

  

Returns:
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