protected void parseChildren(Element element, ParserContext context, MutableBeanMetadata mcm, BlueprintParser globalParser) { element.setUserData(BlueprintNamespaceParser.KEY_PARENT_CLASS_NAME, mcm.getRuntimeClass().getName(), null); NodeList nl = element.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element) { handleChildElement((Element) node, context, mcm, globalParser); } } }
protected void handleChildElement(Element ele, ParserContext context, MutableBeanMetadata mcm, BlueprintParser globalParser) { Metadata m = globalParser.parse(globalParser, ele, context); Class<?> clazz = null; if (m instanceof MutableBeanMetadata) { clazz = ((MutableBeanMetadata) m).getRuntimeClass(); } else { throw new RuntimeException("Don't know how to get bean class from " + m.getClass() + ": " + ele.getNodeName()); } handleChildObject(ele, context, mcm, clazz, m); }
private ConstructionInfo selectConstructionMethod(MutableBeanMetadata beanMetadata, MappingMetaData metadata) { Class beanClass = beanMetadata.getRuntimeClass(); // get a set containing the names of the defined properties Set<String> definedProperties = new HashSet<String>(); List<BeanProperty> values = beanMetadata.getProperties(); for (BeanProperty beanProperty : values) { definedProperties.add(beanProperty.getName()); } // first check for a factory method if (beanMetadata.getFactoryMethod() != null) { return selectFactory(beanClass, beanMetadata, metadata, definedProperties); } else { return selectConstructor(beanClass, metadata, definedProperties); } }
private void processMutableBeanMetadata(final MutableBeanMetadata bean) { if (restartDependentsOnUpdates && bean.getRuntimeClass() != null && AbstractPropertyPlaceholder.class.isAssignableFrom(bean.getRuntimeClass())) { LOG.debug("{}: Found PropertyPlaceholder bean: {}, runtime {}", logName(), bean.getId(), bean.getRuntimeClass()); for (BeanProperty prop : bean.getProperties()) { if (CM_PERSISTENT_ID_PROPERTY.equals(prop.getName())) { if (prop.getValue() instanceof ValueMetadata) { ValueMetadata persistentId = (ValueMetadata)prop.getValue(); LOG.debug("{}: Found {} property, value : {}", logName(), CM_PERSISTENT_ID_PROPERTY, persistentId.getStringValue()); registerManagedService(persistentId.getStringValue()); } else { LOG.debug("{}: {} property metadata {} is not instanceof ValueMetadata", logName(), CM_PERSISTENT_ID_PROPERTY, prop.getValue()); } break; } } } }
private ConstructionInfo selectConstructionMethod(MutableBeanMetadata beanMetadata, MappingMetaData metadata) { Class beanClass = beanMetadata.getRuntimeClass(); // get a set containing the names of the defined properties Set<String> definedProperties = new HashSet<String>(); List<BeanProperty> values = beanMetadata.getProperties(); for (BeanProperty beanProperty : values) { definedProperties.add(beanProperty.getName()); } // first check for a factory method if (beanMetadata.getFactoryMethod() != null) { return selectFactory(beanClass, beanMetadata, metadata, definedProperties); } else { return selectConstructor(beanClass, metadata, definedProperties); } }
private void processMutableBeanMetadata(MutableBeanMetadata bean) { if(restartDependentsOnUpdates && bean.getRuntimeClass() != null && AbstractPropertyPlaceholder.class.isAssignableFrom(bean.getRuntimeClass())) { LOG.debug("{}: Found PropertyPlaceholder bean: {}, runtime {}", logName(), bean.getId(), bean.getRuntimeClass()); for(BeanProperty prop: bean.getProperties()) { if(CM_PERSISTENT_ID_PROPERTY.equals(prop.getName())) { if(prop.getValue() instanceof ValueMetadata) { ValueMetadata persistentId = (ValueMetadata)prop.getValue(); LOG.debug("{}: Found {} property, value : {}", logName(), CM_PERSISTENT_ID_PROPERTY, persistentId.getStringValue()); registerManagedService(persistentId.getStringValue()); } else { LOG.debug("{}: {} property metadata {} is not instanceof ValueMetadata", logName(), CM_PERSISTENT_ID_PROPERTY, prop.getValue()); } break; } } } }
@Override public Metadata parse(Element element, ParserContext parserContext) { if (parserContext.getComponentDefinitionRegistry().getComponentDefinition("." + MyConverter.class.getName()) == null) { MutableBeanMetadata converter = parserContext.createMetadata(MutableBeanMetadata.class); converter.setId("." + MyConverter.class.getName()); converter.setRuntimeClass(MyConverter.class); parserContext.getComponentDefinitionRegistry().registerTypeConverter(converter); } Metadata metadata = super.parse(element, parserContext); if (metadata instanceof MutableBeanMetadata) { MutableBeanMetadata bean = (MutableBeanMetadata) metadata; if (bean.getRuntimeClass() == ApacheDS.class) { bean.setInitMethod("startup"); bean.setDestroyMethod("shutdown"); } } return metadata; }
private Metadata parseInternal(Element element, ParserContext parserContext, String beanTypeName, String className) { MutableBeanMetadata beanMetaData = parserContext.createMetadata(MutableBeanMetadata.class); beanMetaData.setClassName(className); beanMetaData.setScope(BeanMetadata.SCOPE_SINGLETON); beanMetaData.setActivation(BeanMetadata.ACTIVATION_EAGER); beanMetaData.setRuntimeClass(managedClassesByName.get(className)); if (beanMetaData.getRuntimeClass() == null) { throw new ComponentDefinitionException("Unknown bean class: " + className); } if (element.hasAttributeNS(BLUEPRINT_NAMESPACE, "id")) { String id = element.getAttributeNS(BLUEPRINT_NAMESPACE, "id"); beanMetaData.setId(id); } else { beanMetaData.setId(parserContext.generateId()); } lifecycleMethods(beanTypeName, beanMetaData); attributeProperties(element, parserContext, beanTypeName, beanMetaData); contentProperty(beanMetaData, element, parserContext); nestedProperties(beanMetaData, element, beanTypeName, className, parserContext); //QName resolution coerceNamespaceAwarePropertyValues(beanMetaData, element, parserContext); namedConstructorArgs.processParameters(beanMetaData, mappingMetaData, parserContext); return beanMetaData; }
private Metadata parseInternal(Element element, ParserContext parserContext, String beanTypeName, String className) { MutableBeanMetadata beanMetaData = parserContext.createMetadata(MutableBeanMetadata.class); beanMetaData.setClassName(className); beanMetaData.setScope(BeanMetadata.SCOPE_SINGLETON); beanMetaData.setActivation(BeanMetadata.ACTIVATION_EAGER); beanMetaData.setRuntimeClass(managedClassesByName.get(className)); if (beanMetaData.getRuntimeClass() == null) { throw new ComponentDefinitionException("Unknown bean class: " + className); } if (element.hasAttributeNS(BLUEPRINT_NAMESPACE, "id")) { String id = element.getAttributeNS(BLUEPRINT_NAMESPACE, "id"); beanMetaData.setId(id); } else { beanMetaData.setId(parserContext.generateId()); } lifecycleMethods(beanTypeName, beanMetaData); attributeProperties(element, parserContext, beanTypeName, beanMetaData); contentProperty(beanMetaData, element, parserContext); nestedProperties(beanMetaData, element, beanTypeName, className, parserContext); //QName resolution coerceNamespaceAwarePropertyValues(beanMetaData, element, parserContext); namedConstructorArgs.processParameters(beanMetaData, mappingMetaData, parserContext); return beanMetaData; }