Skip to content

Commit

Permalink
Refactor services publication.
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieuancelin authored and alesj committed Oct 12, 2012
1 parent 09b0857 commit e31a989
Show file tree
Hide file tree
Showing 3 changed files with 152 additions and 97 deletions.
Expand Up @@ -19,7 +19,6 @@
import org.jboss.weld.environment.osgi.impl.extension.beans.DynamicServiceHandler;
import org.jboss.weld.environment.osgi.api.annotation.Filter;
import org.jboss.weld.environment.osgi.api.annotation.OSGiService;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -164,8 +163,7 @@ public Object create(CreationalContext creationalContext) {
//memorize if the handler has been allready stored
if (handlers.containsKey(proxy)) {
handler.setStored(true);
}
else {
} else {
//map.put() need a correct hashCode() method to use
//see DynamicServiceHandler
handlers.put(proxy, handler);
Expand Down
Expand Up @@ -69,6 +69,7 @@
import javax.enterprise.inject.spi.AfterDeploymentValidation;
import javax.naming.Context;
import javax.naming.InitialContext;
import org.jboss.weld.environment.osgi.api.annotation.Publish;
import org.jboss.weld.environment.osgi.api.events.AbstractBundleEvent;
import org.jboss.weld.environment.osgi.api.events.AbstractServiceEvent;
import org.jboss.weld.environment.osgi.api.events.BundleEvents;
Expand Down Expand Up @@ -113,6 +114,7 @@ public class WeldOSGiExtension implements Extension {
private Map<Class, Set<Filter>> requiredOsgiServiceDependencies =
new HashMap<Class, Set<Filter>>();
private List<Exception> exceptions = new ArrayList<Exception>();
private List<Class<?>> publishableClasses = new ArrayList<Class<?>>();
private BeanManager beanManager;
private HybridListener listener;
private BundleContextDelegate delegate;
Expand Down Expand Up @@ -178,6 +180,10 @@ void afterProcessProducer(@Observes ProcessProducer<?, ?> event) {
void afterProcessBean(@Observes ProcessBean<?> event) {
//ProcessInjectionTarget and ProcessProducer take care of all relevant injection points.
//TODO verify that :)
Class<?> clazz = event.getBean().getBeanClass();
if (clazz.isAnnotationPresent(Publish.class)) {
publishableClasses.add(clazz);
}
}

void registerObservers(@Observes ProcessObserverMethod<?, ?> event) {
Expand Down Expand Up @@ -411,6 +417,10 @@ public Map<Class, Set<Filter>> getRequiredOsgiServiceDependencies() {
return requiredOsgiServiceDependencies;
}

public List<Class<?>> getPublishableClasses() {
return publishableClasses;
}

public static void setAutoRunInHybridMode(boolean autoRunInHybridMode) {
WeldOSGiExtension.autoRunInHybridMode = autoRunInHybridMode;
}
Expand Down

0 comments on commit e31a989

Please sign in to comment.