List<SpringSCAServiceElement> services,
List<SpringSCAReferenceElement> references,
List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException {
SpringBeanElement innerbean = null;
SpringPropertyElement property = null;
SpringConstructorArgElement constructorArg = null;
int autoConstructorIndex = -1;
try {
boolean completed = false;
while (!completed) {
switch (reader.next()) {
case START_ELEMENT:
QName qname = reader.getName();
if (SpringImplementationConstants.BEAN_ELEMENT.equals(qname)) {
innerbean = new SpringBeanElement(reader.getAttributeValue(null, "id"), reader
.getAttributeValue(null, "class"));
innerbean.setInnerBean(true);
beans.add(innerbean);
readBeanDefinition(resolver, reader, contextPath, innerbean, beans, services, references, scaproperties);
} else if (SpringImplementationConstants.PROPERTY_ELEMENT.equals(qname)) {
property = new SpringPropertyElement(reader.getAttributeValue(null, "name"), reader
.getAttributeValue(null, "ref"));
bean.addProperty(property);
} else if (SpringImplementationConstants.CONSTRUCTORARG_ELEMENT.equals(qname)) {
constructorArg = new SpringConstructorArgElement(reader.getAttributeValue(null, "ref"),
reader.getAttributeValue(null, "type"));
autoConstructorIndex++;
constructorArg.setAutoIndex(autoConstructorIndex);
if (reader.getAttributeValue(null, "index") != null)
constructorArg.setIndex((new Integer(reader.getAttributeValue(null, "index"))).intValue());
if (reader.getAttributeValue(null, "value") != null) {
String value = reader.getAttributeValue(null, "value");
constructorArg.addValue(value);
if ((value.indexOf(".xml") != -1)) {
if ((bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) ||
(bean.getClassName().indexOf(".FileSystemXmlApplicationContext") != -1)) {
XMLStreamReader creader = getApplicationContextReader(resolver, value);
// Read the context definition for the constructor-arg resources
readContextDefinition(resolver, creader, contextPath, beans, services, references, scaproperties);
}
}
}
bean.addCustructorArgs(constructorArg);
} else if (SpringImplementationConstants.REF_ELEMENT.equals(qname)) {
String ref = reader.getAttributeValue(null, "bean");
// Check if the parent element is a property
if (property != null) property.setRef(ref);
// Check if the parent element is a constructor-arg
if (constructorArg != null) constructorArg.setRef(ref);
} else if (SpringImplementationConstants.VALUE_ELEMENT.equals(qname)) {
String value = reader.getElementText();
// Check if the parent element is a constructor-arg