EMMA Coverage Report (generated Thu Jan 24 13:37:04 CST 2013)
[all classes][org.springframework.batch.core.configuration.xml]

COVERAGE SUMMARY FOR SOURCE FILE [StepListenerParser.java]

nameclass, %method, %block, %line, %
StepListenerParser.java100% (1/1)100% (5/5)100% (103/103)100% (24/24)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class StepListenerParser100% (1/1)100% (5/5)100% (103/103)100% (24/24)
StepListenerParser (): void 100% (1/1)100% (4/4)100% (2/2)
StepListenerParser (ListenerMetaData []): void 100% (1/1)100% (6/6)100% (3/3)
getBeanClass (): Class 100% (1/1)100% (2/2)100% (1/1)
getMetaDataValues (): ListenerMetaData [] 100% (1/1)100% (3/3)100% (1/1)
handleListenersElement (Element, BeanDefinition, ParserContext): void 100% (1/1)100% (88/88)100% (17/17)

1/*
2 * Copyright 2006-2009 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
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 */
16package org.springframework.batch.core.configuration.xml;
17 
18import java.util.List;
19 
20import org.springframework.batch.core.listener.AbstractListenerFactoryBean;
21import org.springframework.batch.core.listener.ListenerMetaData;
22import org.springframework.batch.core.listener.StepListenerFactoryBean;
23import org.springframework.batch.core.listener.StepListenerMetaData;
24import org.springframework.beans.MutablePropertyValues;
25import org.springframework.beans.factory.config.BeanDefinition;
26import org.springframework.beans.factory.parsing.CompositeComponentDefinition;
27import org.springframework.beans.factory.support.ManagedList;
28import org.springframework.beans.factory.xml.ParserContext;
29import org.springframework.util.xml.DomUtils;
30import org.w3c.dom.Element;
31 
32/**
33 * Parser for a step listener element. Builds a {@link StepListenerFactoryBean}
34 * using attributes from the configuration.
35 * 
36 * @author Dan Garrette
37 * @since 2.0
38 * @see AbstractListenerParser
39 */
40public class StepListenerParser extends AbstractListenerParser {
41        
42        private static final String LISTENERS_ELE = "listeners";
43 
44        private static final String MERGE_ATTR = "merge";
45 
46        private final ListenerMetaData[] listenerMetaData;
47 
48        public StepListenerParser() {
49                this(StepListenerMetaData.values());
50        }
51 
52        public StepListenerParser(ListenerMetaData[] listenerMetaData) {
53                this.listenerMetaData = listenerMetaData;
54        }
55 
56        protected Class<? extends AbstractListenerFactoryBean> getBeanClass() {
57                return StepListenerFactoryBean.class;
58        }
59 
60        protected ListenerMetaData[] getMetaDataValues() {
61                return listenerMetaData;
62        }
63 
64        @SuppressWarnings("unchecked")
65        public void handleListenersElement(Element stepElement, BeanDefinition beanDefinition,
66                        ParserContext parserContext) {
67                MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();
68                List<Element> listenersElements = DomUtils.getChildElementsByTagName(stepElement, LISTENERS_ELE);
69                if (listenersElements.size() == 1) {
70                        Element listenersElement = listenersElements.get(0);
71                        CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(listenersElement.getTagName(),
72                                        parserContext.extractSource(stepElement));
73                        parserContext.pushContainingComponent(compositeDef);
74                        ManagedList listenerBeans = new ManagedList();
75                        if (propertyValues.contains("listeners")) {
76                                listenerBeans = (ManagedList) propertyValues.getPropertyValue("listeners").getValue();
77                        }
78                        listenerBeans.setMergeEnabled(listenersElement.hasAttribute(MERGE_ATTR)
79                                        && Boolean.valueOf(listenersElement.getAttribute(MERGE_ATTR)));
80                        List<Element> listenerElements = DomUtils.getChildElementsByTagName(listenersElement, "listener");
81                        if (listenerElements != null) {
82                                for (Element listenerElement : listenerElements) {
83                                        listenerBeans.add(parse(listenerElement, parserContext));
84                                }
85                        }
86                        propertyValues.addPropertyValue("listeners", listenerBeans);
87                        parserContext.popAndRegisterContainingComponent();
88                }
89        }
90 
91}

[all classes][org.springframework.batch.core.configuration.xml]
EMMA 2.0.5312 (C) Vladimir Roubtsov