001 /** 002 * Copyright 2005-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.krad.datadictionary; 017 018 import org.springframework.beans.factory.config.BeanDefinition; 019 import org.springframework.beans.factory.config.BeanDefinitionHolder; 020 021 import java.util.List; 022 import java.util.Map; 023 import java.util.Set; 024 import java.util.Stack; 025 026 /** 027 * API for classes that perform post processing of the dictionary bean definitions 028 * 029 * @author Kuali Rice Team (rice.collab@kuali.org) 030 */ 031 public interface DictionaryBeanProcessor { 032 033 /** 034 * Invoked to process a root bean definition (a root bean definition is a top level bean) 035 * 036 * @param beanName name of the bean within the factory 037 * @param beanDefinition bean definition to process 038 */ 039 public void processRootBeanDefinition(String beanName, BeanDefinition beanDefinition); 040 041 /** 042 * Invoked to process a nested bean definition (a bean definition that is a property value of another 043 * bean definition) 044 * 045 * @param beanName name of the bean within the factory 046 * @param beanDefinition bean definition to process 047 * @param propertyName the name of the property which has the bean definition value 048 * @param nestedBeanStack the stack of beans which contain the given bean 049 */ 050 public void processNestedBeanDefinition(String beanName, BeanDefinition beanDefinition, String propertyName, 051 Stack<BeanDefinitionHolder> nestedBeanStack); 052 053 /** 054 * Invoked to process a string property value (straight property value, not a string within a collection) 055 * 056 * @param propertyName name of the property whose string value is being processed 057 * @param propertyValue string value for the property 058 * @return String new property value (possibly modified) 059 */ 060 public String processStringPropertyValue(String propertyName, String propertyValue, 061 Stack<BeanDefinitionHolder> nestedBeanStack); 062 063 /** 064 * Invoked to process a collection value that is a bean definition 065 * 066 * @param beanName name of the bean within the factory 067 * @param beanDefinition bean definition within the collection to process 068 * @param propertyName the name of the property which has the collection value 069 * @param nestedBeanStack the stack of beans which contain the given collection (and collection bean) 070 */ 071 public void processCollectionBeanDefinition(String beanName, BeanDefinition beanDefinition, String propertyName, 072 Stack<BeanDefinitionHolder> nestedBeanStack); 073 074 /** 075 * Invokes the processors to handle an array string value (which may be changed) 076 * 077 * @param propertyName name of the property that is being processed 078 * @param propertyValue the array which contains the string 079 * @param elementValue the string element value 080 * @param elementIndex the index of the string within the array 081 * @param nestedBeanStack the stack of bean containers, including the bean that contains the property 082 * @return String new property value (possibly modified by processors) 083 */ 084 public String processArrayStringPropertyValue(String propertyName, Object[] propertyValue, String elementValue, 085 int elementIndex, Stack<BeanDefinitionHolder> nestedBeanStack); 086 087 /** 088 * Invokes the processors to handle an list string value (which may be changed) 089 * 090 * @param propertyName name of the property that is being processed 091 * @param propertyValue the list which contains the string 092 * @param elementValue the string element value 093 * @param elementIndex the index of the string within the list 094 * @param nestedBeanStack the stack of bean containers, including the bean that contains the property 095 * @return String new property value (possibly modified by processors) 096 */ 097 public String processListStringPropertyValue(String propertyName, List<?> propertyValue, String elementValue, 098 int elementIndex, Stack<BeanDefinitionHolder> nestedBeanStack); 099 100 /** 101 * Invokes the processors to handle an set string value (which may be changed) 102 * 103 * @param propertyName name of the property that is being processed 104 * @param propertyValue the set which contains the string 105 * @param elementValue the string element value 106 * @param nestedBeanStack the stack of bean containers, including the bean that contains the property 107 * @return String new property value (possibly modified by processors) 108 */ 109 public String processSetStringPropertyValue(String propertyName, Set<?> propertyValue, String elementValue, 110 Stack<BeanDefinitionHolder> nestedBeanStack); 111 112 /** 113 * Invokes the processors to handle an map string value (which may be changed) 114 * 115 * @param propertyName name of the property that is being processed 116 * @param propertyValue the map which contains the string 117 * @param elementValue the string element value 118 * @param elementKey the key for the string within the map 119 * @param nestedBeanStack the stack of bean containers, including the bean that contains the property 120 * @return String new property value (possibly modified by processors) 121 */ 122 public String processMapStringPropertyValue(String propertyName, Map<?, ?> propertyValue, String elementValue, 123 Object elementKey, Stack<BeanDefinitionHolder> nestedBeanStack); 124 }