component = new SpecificationDeclaration(componentName);
break;
case IMPLEMENTATION:
if (isDefined(CST.APAM_COMPOSITE) && flag(CST.APAM_COMPOSITE)) {
SpecificationReference specification = reference(CST.PROVIDE_SPECIFICATION, ComponentKind.SPECIFICATION);
String range = property(CST.REQUIRE_VERSION);
VersionedReference<SpecificationDeclaration> specificationVersion = specification != null ? VersionedReference.range(specification,range) : null;
ComponentReference<?> main = reference(CST.APAM_MAIN_COMPONENT,ComponentKind.COMPONENT);
component = new CompositeDeclaration(componentName,specificationVersion,main);
}
else {
SpecificationReference specification = reference(CST.PROVIDE_SPECIFICATION, ComponentKind.SPECIFICATION);
String range = property(CST.REQUIRE_VERSION);
VersionedReference<SpecificationDeclaration> specificationVersion = specification != null ? VersionedReference.range(specification,range) : null;
InstrumentedClass instrumentedClass = new UnloadedClassMetadata(property(CST.PROVIDE_CLASSNAME));
component = new AtomicImplementationDeclaration(componentName, specificationVersion, instrumentedClass);