1 /* 2 * $Id: BasicPatternDefinitionResolver.java 836180 2009-11-14 14:00:02Z apetrelli $ 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 package org.apache.tiles.definition.pattern; 23 24 import java.util.LinkedHashSet; 25 import java.util.List; 26 import java.util.Map; 27 import java.util.Set; 28 29 import org.apache.tiles.Definition; 30 31 /** 32 * A pattern definition resolver that stores {@link DefinitionPatternMatcher} 33 * separated by customization key. <br> 34 * It delegates creation of definition pattern matchers to a 35 * {@link DefinitionPatternMatcherFactory} and recgnizes patterns through the 36 * use of a {@link PatternRecognizer}. 37 * 38 * @param <T> The type of the customization key. 39 * @version $Rev: 836180 $ $Date: 2009-11-15 01:00:02 +1100 (Sun, 15 Nov 2009) $ 40 * @since 2.2.0 41 */ 42 public class BasicPatternDefinitionResolver<T> extends 43 AbstractPatternDefinitionResolver<T> { 44 45 /** 46 * The factory of pattern matchers. 47 */ 48 private DefinitionPatternMatcherFactory definitionPatternMatcherFactory; 49 50 /** 51 * The pattern recognizer. 52 */ 53 private PatternRecognizer patternRecognizer; 54 55 /** 56 * Constructor. 57 * 58 * @param definitionPatternMatcherFactory The definition pattern matcher factory. 59 * @param patternRecognizer The pattern recognizer. 60 */ 61 public BasicPatternDefinitionResolver(DefinitionPatternMatcherFactory definitionPatternMatcherFactory, 62 PatternRecognizer patternRecognizer) { 63 this.definitionPatternMatcherFactory = definitionPatternMatcherFactory; 64 this.patternRecognizer = patternRecognizer; 65 } 66 67 /** {@inheritDoc} */ 68 @Override 69 protected Map<String, Definition> addDefinitionsAsPatternMatchers(List<DefinitionPatternMatcher> matchers, 70 Map<String, Definition> defsMap) { 71 Set<String> excludedKeys = new LinkedHashSet<String>(); 72 for (Map.Entry<String, Definition> de : defsMap.entrySet()) { 73 String key = de.getKey(); 74 if (patternRecognizer.isPatternRecognized(key)) { 75 matchers.add(definitionPatternMatcherFactory 76 .createDefinitionPatternMatcher(key, de.getValue())); 77 } else { 78 excludedKeys.add(key); 79 } 80 } 81 return PatternUtil.createExtractedMap(defsMap, excludedKeys); 82 } 83 }