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.Map;

Represents a Require or Optional tag. No substitutions on any fields.
 public class Feature {
Require@feature Optional@feature
   private final String name;
   public String getName() {
     return ;

Require.Param Optional.Param Flattened into a map where Param@name is the key and Param content is the value.
   private final Multimap<StringStringparams;
   public Multimap<StringStringgetParams() {
     return ;
Returns the first value for any feature parameter, or null if the parameter does not exist.
   public String getParam(String key) {
     Collection<Stringvalues = .get(key);
     if (values == null || values.isEmpty()) {
       return null;
     return values.iterator().next();

Whether this is a Require or an Optional feature.
   private final boolean required;
   public boolean getRequired() {
     return ;

Produces an xml representation of the feature.
   public String toString() {
     StringBuilder buf = new StringBuilder();
     buf.append( ? "<Require" : "<Optional")
        .append(" feature=\"")
     for (Map.Entry<StringCollection<String>> entry : .asMap().entrySet()) {
       buf.append("\n<Param name=\"")
     buf.append( ? "</Require>" : "</Optional>");
     return buf.toString();

Creates a new Feature from an xml node.

feature The feature to create
SpecParserException When the Require or Optional tag is not valid
  public Feature(Element featurethrows SpecParserException {
    this. = feature.getNodeName().equals("Require");
    String name = XmlUtil.getAttribute(feature"feature");
    if (name == null) {
      throw new SpecParserException(
          ( ? "Require" : "Optional") +"@feature is required.");
    this. = name;
    NodeList children = feature.getElementsByTagName("Param");
    if (children.getLength() > 0) {
      ImmutableMultimap.Builder<StringStringparams = ImmutableMultimap.builder();
      for (int i = 0, j = children.getLength(); i < j; ++i) {
        Element param = (Element)children.item(i);
        String paramName = XmlUtil.getAttribute(param"name");
        if (paramName == null) {
          throw new SpecParserException("Param@name is required");
      this. =;
    } else {
      this. = ImmutableMultimap.of();
New to GrepCode? Check out our FAQ X