In blueprint.xml I declare an optional dependency as follows:
<reference id="RepositoryListener" interface="ru.focusmedia.odp.server.datastore.api.RepositoryListener" availability="optional" /> <bean id="Repository" class="ru.focusmedia.odp.server.datastore.jpa.repository.RepositoryImpl"> <jpa:context property="entityManager" unitname="ODP_Server" /> <tx:transaction method="*" value="Required" /> <property name="repositoryListener" ref="RepositoryListener" /> </bean>
and in RepositoryImpl , I
public void setRepositoryListener(RepositoryListener repositoryListener) { logger.info("Repository listener set"); this.repositoryListener = repositoryListener; }
This method is called by Blueprint, even if there is no RepositoryListener service as expected. The problem is, how can I check later if there is a service?
if (repositoryListener != null) { repositoryListener.notifyDelete(node); } else { logger.warn("No repository listener set!"); }
does not work because the RepositoryListener not null , but a Blueprint proxy.
osgi blueprint-osgi
Alexey romanov
source share