in rsa/src/main/java/org/apache/aries/rsa/core/RemoteServiceAdminCore.java [415:454]
public ImportRegistration importService(EndpointDescription endpoint) {
LOG.debug("importService() Endpoint: {}", endpoint.getProperties());
synchronized (importedServices) {
Collection<ImportRegistration> imRegs = importedServices.get(endpoint);
if (imRegs != null && !imRegs.isEmpty()) {
LOG.debug("creating copy of existing import registrations");
ImportRegistration irParent = imRegs.iterator().next();
ImportRegistration ir = new ImportRegistrationImpl(irParent);
imRegs.add(ir);
eventProducer.publishNotification(ir);
return ir;
}
if (determineConfigTypesForImport(endpoint).size() == 0) {
LOG.info("No matching handler can be found for remote endpoint {}.", endpoint.getId());
return null;
}
// TODO: somehow select the interfaces that should be imported ---> job of the TopologyManager?
List<String> matchingInterfaces = endpoint.getInterfaces();
if (matchingInterfaces.size() == 0) {
LOG.info("No matching interfaces found for remote endpoint {}.", endpoint.getId());
return null;
}
LOG.info("Importing service {} with interfaces {} using handler {}.",
endpoint.getId(), endpoint.getInterfaces(), provider.getClass());
ImportRegistrationImpl imReg = exposeServiceFactory(matchingInterfaces.toArray(new String[matchingInterfaces.size()]), endpoint, provider);
if (imRegs == null) {
imRegs = new ArrayList<>();
importedServices.put(endpoint, imRegs);
}
imRegs.add(imReg);
eventProducer.publishNotification(imReg);
return imReg;
}
}