protected T mergeMetaData(VFSDeploymentUnit unit, T root, Map<Class<?>, List<Object>> metadata, Set<String> missingFiles) throws Exception
{
if (specClass.equals(jbossClass))
{
List<Object> instances = metadata.get(specClass);
if (instances == null || instances.isEmpty())
return mergeMetaData(unit, null, null);
else if (instances.size() == 1)
{
if (missingFiles.contains(jbossName))
return mergeMetaData(unit, specClass.cast(instances.iterator().next()), null);
else if (missingFiles.contains(specName))
return mergeMetaData(unit, null, jbossClass.cast(instances.iterator().next()));
else
throw new IllegalArgumentException("Should be either missing spec or jboss: " + missingFiles);
}
else
return mergeMetaData(unit, specClass.cast(instances.get(0)), jbossClass.cast(instances.get(1)));
}
else
return super.mergeMetaData(unit, root, metadata, missingFiles);
}