// Ignore config-property which has ignore=true
if (configProperty.ignore())
return md;
ConfigPropertyMetaData cfgMeta = new ConfigPropertyMetaData();
cfgMeta.setName(getConfigPropertyName(annotation));
if (configProperty.defaultValue() != null && !configProperty.defaultValue().equals(""))
cfgMeta.setValue(configProperty.defaultValue());
if (!Object.class.equals(configProperty.type()))
{
cfgMeta.setType(configProperty.type().getName());
}
else
{
cfgMeta.setType(getConfigPropertyType(annotation));
}
cfgMeta.setIgnore(configProperty.ignore());
String[] description = configProperty.description();
if (description != null)
{
if (cfgMeta.getDescriptions() == null)
{
DescriptionsImpl descsImpl = new DescriptionsImpl();
cfgMeta.setDescriptions(descsImpl);
}
for (String desc : description)
{
DescriptionImpl descImpl = new DescriptionImpl();
descImpl.setDescription(desc);
((DescriptionsImpl)cfgMeta.getDescriptions()).add(descImpl);
}
}
String attachedClassName = annotation.getClassName();
ClassLoader cl = SecurityActions.getThreadContextClassLoader();
Class attachedClass = Class.forName(attachedClassName, true, cl);
if (hasInterface(attachedClass, "javax.resource.spi.ResourceAdapter"))
{
if (md.getRa() == null)
{
md.setRa(new ResourceAdapterMetaData());
}
if (md.getRa().getConfigProperty() == null)
{
md.getRa().setConfigProperty(new ArrayList<ConfigPropertyMetaData>());
}
for (ConfigPropertyMetaData cpMeta : md.getRa().getConfigProperty())
{
if (cpMeta.getName().equals(cfgMeta.getName()))
{
return md;
}
}
md.getRa().getConfigProperty().add(cfgMeta);
}
else if (hasInterface(attachedClass, "javax.resource.spi.ManagedConnectionFactory"))
{
createConDefs(md);
for (ConnectionDefinitionMetaData cdMeta : md.getRa().getOutboundRa().getConDefs())
{
if (attachedClassName.equals(cdMeta.getManagedConnectionFactoryClass()))
{
if (cdMeta.getConfigProps() == null)
{
cdMeta.setConfigProps(new ArrayList<ConfigPropertyMetaData>());
}
for (ConfigPropertyMetaData cpMeta : cdMeta.getConfigProps())
{
if (cpMeta.getName().equals(cfgMeta.getName()))
{
return md;
}
}
cdMeta.getConfigProps().add(cfgMeta);
}
}
}
else if (hasInterface(attachedClass, "javax.resource.spi.ActivationSpec"))
{
createMessageListeners(md);
for (MessageListenerMetaData mlMeta : md.getRa().getInboundRa().getMessageAdapter().getMessageListeners())
{
if (attachedClassName.equals(mlMeta.getActivationSpecType().getAsClass()))
{
if (mlMeta.getActivationSpecType().getConfigProps() == null)
{
mlMeta.getActivationSpecType().setConfigProps(new ArrayList<ConfigPropertyMetaData>());
}
for (ConfigPropertyMetaData cpMeta : mlMeta.getActivationSpecType().getConfigProps())
{
if (cpMeta.getName().equals(cfgMeta.getName()))
{
return md;
}
}
mlMeta.getActivationSpecType().getConfigProps().add(cfgMeta);