{
model = new SedaModel();
model.setName(MuleProperties.OBJECT_SYSTEM_MODEL);
muleContext.getRegistry().registerModel(model);
}
Service service = muleContext.getRegistry().lookupService(EVENT_MULTICASTER_DESCRIPTOR_NAME);
if (service != null)
{
muleContext.getRegistry().unregisterService(service.getName());
}
service = new SedaService(muleContext);
service.setName(EVENT_MULTICASTER_DESCRIPTOR_NAME);
service.setModel(model);
if (subscriptions == null)
{
logger.info("No receive endpoints have been set, using default '*'");
((CompositeMessageSource) service.getMessageSource()).addSource(
muleContext.getEndpointFactory().getInboundEndpoint("vm://*"));
}
else
{
// Set multiple inbound subscriptions on the descriptor
ServiceCompositeMessageSource messageRouter = (ServiceCompositeMessageSource) service.getMessageSource();
for (int i = 0; i < subscriptions.length; i++)
{
String subscription = subscriptions[i];
EndpointFactory endpointFactory = muleContext.getEndpointFactory();
EndpointBuilder endpointBuilder = endpointFactory.getEndpointBuilder(subscription);
endpointBuilder.setExchangePattern(MessageExchangePattern.fromSyncFlag(!asynchronous));
InboundEndpoint endpoint = endpointFactory.getInboundEndpoint(endpointBuilder);
messageRouter.addSource(endpoint);
}
}
DefaultJavaComponent component = new DefaultJavaComponent(new SingletonObjectFactory(this));
component.setMuleContext(muleContext);
service.setComponent(component);
return service;
}