View Javadoc

1   /*
2    * Licensed to the University Corporation for Advanced Internet Development, 
3    * Inc. (UCAID) under one or more contributor license agreements.  See the 
4    * NOTICE file distributed with this work for additional information regarding
5    * copyright ownership. The UCAID licenses this file to You under the Apache 
6    * License, Version 2.0 (the "License"); you may not use this file except in 
7    * compliance with the License.  You may obtain a copy of the License at
8    *
9    *    http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package edu.internet2.middleware.shibboleth.common.config.profile;
19  
20  import java.util.ArrayList;
21  import java.util.List;
22  
23  import org.opensaml.xml.util.DatatypeHelper;
24  import org.opensaml.xml.util.XMLHelper;
25  import org.slf4j.Logger;
26  import org.slf4j.LoggerFactory;
27  import org.springframework.beans.factory.support.BeanDefinitionBuilder;
28  import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
29  import org.w3c.dom.Element;
30  
31  /**
32   * Base class for request URI mapped profile handler configuration parsers.
33   */
34  public abstract class AbstractRequestURIMappedProfileHandlerBeanDefinitionParser extends
35          AbstractSingleBeanDefinitionParser {
36  
37      /** Class loggger. */
38      private static Logger log = LoggerFactory
39              .getLogger(AbstractRequestURIMappedProfileHandlerBeanDefinitionParser.class);
40  
41      /** {@inheritDoc} */
42      protected void doParse(Element config, BeanDefinitionBuilder builder) {
43          log.info("Parsing configuration for profile handler: {}", XMLHelper.getXSIType(config).getLocalPart());
44  
45          builder.addPropertyValue("requestPaths", getRequestPaths(config));
46      }
47  
48      /**
49       * Gets the list of request paths the profile handler handles.
50       * 
51       * @param config profile handler configuration element
52       * 
53       * @return list of request paths the profile handler handles
54       */
55      protected List<String> getRequestPaths(Element config) {
56          ArrayList<String> requestPaths = new ArrayList<String>();
57          List<Element> requestPathElems = XMLHelper.getChildElementsByTagName(config, "RequestPath");
58          if (requestPathElems != null) {
59              for (Element requestPathElem : requestPathElems) {
60                  requestPaths.add(DatatypeHelper.safeTrimOrNullString(requestPathElem.getTextContent()));
61              }
62          }
63  
64          return requestPaths;
65      }
66  
67      /** {@inheritDoc} */
68      protected boolean shouldGenerateId() {
69          return true;
70      }
71  }