BundleReference resolvedBundle = resolver.resolveModel(BundleReference.class, bundleReference);
Bundle bundle = (Bundle)resolvedBundle.getBundle();
if (bundle != null)
impl.setOSGiBundle(bundle);
else
throw new ContributionResolveException("Could not locate OSGi bundle " +
impl.getBundleSymbolicName());
String bundleName = resolvedBundle.getBundleRelativePath();
String ctURI = bundleName.endsWith(".jar") || bundleName.endsWith(".JAR")?
bundleName.substring(0, bundleName.lastIndexOf(".")) : bundleName;
ctURI = ctURI.replaceAll("\\.", "/");
ctURI = ctURI + ".componentType";
ComponentType componentType = assemblyFactory.createComponentType();
componentType.setURI(ctURI);
componentType.setUnresolved(true);
componentType = resolver.resolveModel(ComponentType.class, componentType);
if (componentType.isUnresolved()) {
throw new ContributionResolveException("missing .componentType side file " + ctURI);
}
List<Service> services = componentType.getServices();
for (Service service : services) {
Interface interfaze = service.getInterfaceContract().getInterface();
if (interfaze instanceof JavaInterface) {
JavaInterface javaInterface = (JavaInterface)interfaze;
if (javaInterface.getJavaClass() == null) {
javaInterface.setJavaClass(getJavaClass(resolver, javaInterface.getName()));
}
Class<?> callback = null;
if (service.getInterfaceContract().getCallbackInterface() instanceof JavaInterface) {
JavaInterface callbackInterface = (JavaInterface)service.getInterfaceContract().getCallbackInterface();
if (callbackInterface.getJavaClass() == null) {
callbackInterface.setJavaClass(getJavaClass(resolver, callbackInterface.getName()));
}
callback = callbackInterface.getJavaClass();
}
Service serv = createService(service, javaInterface.getJavaClass(), callback);
impl.getServices().add(serv);
}
}
List<Reference> references = componentType.getReferences();
for (Reference reference : references) {
Interface interfaze = reference.getInterfaceContract().getInterface();
if (interfaze instanceof JavaInterface) {
JavaInterface javaInterface = (JavaInterface)interfaze;
if (javaInterface.getJavaClass() == null) {
javaInterface.setJavaClass(getJavaClass(resolver, javaInterface.getName()));
}
Reference ref = createReference(reference, javaInterface.getJavaClass());
impl.getReferences().add(ref);
}
else
impl.getReferences().add(reference);
}
List<Property> properties = componentType.getProperties();
for (Property property : properties) {
impl.getProperties().add(property);
}
impl.setConstrainingType(componentType.getConstrainingType());
} catch (Exception e) {
throw new ContributionResolveException(e);
}
}