01: /*
02: * Copyright 2002-2006 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.springframework.beans.factory.xml;
18:
19: import org.w3c.dom.Element;
20:
21: import org.springframework.beans.factory.config.BeanDefinition;
22:
23: /**
24: * Interface used by the
25: * {@link org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader} to
26: * handle custom, top-level (directly under <code><beans></code>) tags.
27: *
28: * <p>Implementations are free to turn the metadata in the custom tag into as many
29: * {@link BeanDefinition BeanDefinitions} as required.
30: *
31: * <p>The parser locates a {@link BeanDefinitionParser} from the associated
32: * {@link NamespaceHandler} for the namespace in which the custom tag resides.
33: *
34: * @author Rob Harrop
35: * @since 2.0
36: * @see NamespaceHandler
37: * @see org.springframework.beans.factory.xml.BeanDefinitionDecorator
38: * @see AbstractBeanDefinitionParser
39: */
40: public interface BeanDefinitionParser {
41:
42: /**
43: * Parse the specified {@link Element} and register the resulting
44: * {@link BeanDefinition BeanDefinition(s)} with the
45: * {@link org.springframework.beans.factory.xml.ParserContext#getRegistry()} BeanDefinitionRegistry}
46: * embedded in the supplied {@link ParserContext}.
47: * <p>Implementations must return the primary {@link BeanDefinition} that results
48: * from the parse if they will ever be used in a nested fashion (for example as
49: * an inner tag in a <code><property/></code> tag). Implementations may return
50: * <code>null</code> if they will <strong>not</strong> be used in a nested fashion.
51: * @param element the element that is to be parsed into one or more {@link BeanDefinition BeanDefinitions}
52: * @param parserContext the object encapsulating the current state of the parsing process;
53: * provides access to a {@link org.springframework.beans.factory.support.BeanDefinitionRegistry}
54: * @return the primary {@link BeanDefinition}
55: */
56: BeanDefinition parse(Element element, ParserContext parserContext);
57:
58: }
|