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 java.util.Map;
 
 import  com.google.common.collect.ImmutableMultimap;
 import  com.google.common.collect.Multimap;

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.
 
   @Override
   public String toString() {
     StringBuilder buf = new StringBuilder();
     buf.append( ? "<Require" : "<Optional")
        .append(" feature=\"")
        .append()
        .append("\">");
     for (Map.Entry<StringCollection<String>> entry : .asMap().entrySet()) {
       buf.append("\n<Param name=\"")
          .append(entry.getKey())
          .append("\">")
          .append(entry.getValue())
          .append("</Param>");
     }
     buf.append( ? "</Require>" : "</Optional>");
     return buf.toString();
   }

  
Creates a new Feature from an xml node.

Parameters:
feature The feature to create
Throws:
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");
        }
        params.put(paramNameparam.getTextContent());
      }
      this. = params.build();
    } else {
      this. = ImmutableMultimap.of();
    }
  }
New to GrepCode? Check out our FAQ X