/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tuscany.sca.binding.notification;
import java.net.InetAddress;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
import org.apache.tuscany.sca.binding.notification.encoding.BrokerConsumerReferenceEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.BrokerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.BrokerIDEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.BrokerProducerReferenceEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.BrokersEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.ConnectionOverrideEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.ConnectionOverrideResponseEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.ConsumerReferenceEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.DefaultEncodingRegistry;
import org.apache.tuscany.sca.binding.notification.encoding.EncodingRegistry;
import org.apache.tuscany.sca.binding.notification.encoding.EndConsumersEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.EndProducersEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.EndpointAddressEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.EndpointReferenceEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NeighborBrokerConsumersEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NeighborsEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewBrokerAckEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewBrokerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewBrokerResponseEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewConsumerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewConsumerResponseEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewProducerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.NewProducerResponseEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.ReferencePropertiesEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.RemoveBrokerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.RemovedBrokerEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.ReplaceBrokerConnectionEnDeCoder;
import org.apache.tuscany.sca.binding.notification.encoding.SubscribeEnDeCoder;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.ModuleActivator;
import org.apache.tuscany.sca.host.http.ExtensibleServletHost;
import org.apache.tuscany.sca.host.http.ServletHost;
import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
import org.apache.tuscany.sca.policy.PolicyFactory;
import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
/**
* @version $Rev$ $Date$
*/
public class NotificationBindingModuleActivator implements ModuleActivator {
private NotificationBindingProcessor bindingProcessor;
private NotificationTypeManagerImpl ntm;
private SubscribeEnDeCoder subscribeEnDeCoder;
private ConsumerReferenceEnDeCoder consumerReferenceEnDeCoder;
private EndpointAddressEnDeCoder endpointAddressEnDeCoder;
private NewConsumerEnDeCoder newConsumerEnDeCoder;
private NewProducerEnDeCoder newProducerEnDeCoder;
private NewConsumerResponseEnDeCoder newConsumerResponseEnDeCoder;
private NewProducerResponseEnDeCoder newProducerResponseEnDeCoder;
private NewBrokerEnDeCoder newBrokerEnDeCoder;
private BrokerConsumerReferenceEnDeCoder brokerConsumerReferenceEnDeCoder;
private BrokerProducerReferenceEnDeCoder brokerProducerReferenceEnDeCoder;
private NewBrokerResponseEnDeCoder newBrokerResponseEnDeCoder;
private BrokersEnDeCoder brokersEnDeCoder;
private BrokerEnDeCoder brokerEnDeCoder;
private EndConsumersEnDeCoder endConsumersEnDeCoder;
private EndProducersEnDeCoder endProducersEnDeCoder;
private EndpointReferenceEnDeCoder endpointReferenceEnDeCoder;;
private ReferencePropertiesEnDeCoder referencePropertiesEnDeCoder;
private BrokerIDEnDeCoder brokerIDEnDeCoder;
private ConnectionOverrideEnDeCoder connectionOverrideEnDeCoder;
private ConnectionOverrideResponseEnDeCoder connectionOverrideResponseEnDeCoder;
private NewBrokerAckEnDeCoder newBrokerAckEnDeCoder;
private NeighborBrokerConsumersEnDeCoder neighborBrokerConsumersEnDeCoder;
private RemoveBrokerEnDeCoder removeBrokerEnDeCoder;
private RemovedBrokerEnDeCoder removedBrokerEnDeCoder;
private NeighborsEnDeCoder neighborsEnDeCoder;
private ReplaceBrokerConnectionEnDeCoder replaceBrokerConnectionEnDeCoder;
private static final String DEFAULT_PORT = "8086";
public void start(ExtensionPointRegistry registry) {
EncodingRegistry encodingRegistry = new DefaultEncodingRegistry();
subscribeEnDeCoder = new SubscribeEnDeCoder(encodingRegistry);
subscribeEnDeCoder.start();
consumerReferenceEnDeCoder = new ConsumerReferenceEnDeCoder(encodingRegistry);
consumerReferenceEnDeCoder.start();
endpointAddressEnDeCoder = new EndpointAddressEnDeCoder(encodingRegistry);
endpointAddressEnDeCoder.start();
newConsumerEnDeCoder = new NewConsumerEnDeCoder(encodingRegistry);
newConsumerEnDeCoder.start();
newProducerEnDeCoder = new NewProducerEnDeCoder(encodingRegistry);
newProducerEnDeCoder.start();
newConsumerResponseEnDeCoder = new NewConsumerResponseEnDeCoder(encodingRegistry);
newConsumerResponseEnDeCoder.start();
newProducerResponseEnDeCoder = new NewProducerResponseEnDeCoder(encodingRegistry);
newProducerResponseEnDeCoder.start();
newBrokerEnDeCoder = new NewBrokerEnDeCoder(encodingRegistry);
newBrokerEnDeCoder.start();
brokerConsumerReferenceEnDeCoder = new BrokerConsumerReferenceEnDeCoder(encodingRegistry);
brokerConsumerReferenceEnDeCoder.start();
brokerProducerReferenceEnDeCoder = new BrokerProducerReferenceEnDeCoder(encodingRegistry);
brokerProducerReferenceEnDeCoder.start();
newBrokerResponseEnDeCoder = new NewBrokerResponseEnDeCoder(encodingRegistry);
newBrokerResponseEnDeCoder.start();
brokersEnDeCoder = new BrokersEnDeCoder(encodingRegistry);
brokersEnDeCoder.start();
brokerEnDeCoder = new BrokerEnDeCoder(encodingRegistry);
brokerEnDeCoder.start();
endConsumersEnDeCoder = new EndConsumersEnDeCoder(encodingRegistry);
endConsumersEnDeCoder.start();
endProducersEnDeCoder = new EndProducersEnDeCoder(encodingRegistry);
endProducersEnDeCoder.start();
endpointReferenceEnDeCoder = new EndpointReferenceEnDeCoder(encodingRegistry);
endpointReferenceEnDeCoder.start();
referencePropertiesEnDeCoder = new ReferencePropertiesEnDeCoder(encodingRegistry);
referencePropertiesEnDeCoder.start();
brokerIDEnDeCoder = new BrokerIDEnDeCoder(encodingRegistry);
brokerIDEnDeCoder.start();
connectionOverrideEnDeCoder = new ConnectionOverrideEnDeCoder(encodingRegistry);
connectionOverrideEnDeCoder.start();
connectionOverrideResponseEnDeCoder = new ConnectionOverrideResponseEnDeCoder(encodingRegistry);
connectionOverrideResponseEnDeCoder.start();
newBrokerAckEnDeCoder = new NewBrokerAckEnDeCoder(encodingRegistry);
newBrokerAckEnDeCoder.start();
neighborBrokerConsumersEnDeCoder = new NeighborBrokerConsumersEnDeCoder(encodingRegistry);
neighborBrokerConsumersEnDeCoder.start();
removeBrokerEnDeCoder = new RemoveBrokerEnDeCoder(encodingRegistry);
removeBrokerEnDeCoder.start();
removedBrokerEnDeCoder = new RemovedBrokerEnDeCoder(encodingRegistry);
removedBrokerEnDeCoder.start();
neighborsEnDeCoder = new NeighborsEnDeCoder(encodingRegistry);
neighborsEnDeCoder.start();
replaceBrokerConnectionEnDeCoder = new ReplaceBrokerConnectionEnDeCoder(encodingRegistry);
replaceBrokerConnectionEnDeCoder.start();
String httpPort = System.getProperty("notification.httpPort");
if (httpPort == null) {
httpPort = DEFAULT_PORT;
}
ServletHost servletHost = new ExtensibleServletHost(registry.getExtensionPoint(ServletHostExtensionPoint.class));
ntm = new NotificationTypeManagerImpl();
ntm.setServletHost(servletHost);
ntm.setEncodingRegistry(encodingRegistry);
ntm.init();
String localHost = null;
try {
localHost = InetAddress.getLocalHost().getCanonicalHostName();
} catch(Exception e) {
e.printStackTrace();
localHost = "localhost";
}
String localBaseUrl = "http://" + localHost + ((httpPort != null) ? (":" + httpPort) : "");
AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
PolicyFactory policyFactory = new DefaultPolicyFactory();
DefaultNotificationBindingFactory bindingFactory = new DefaultNotificationBindingFactory();
bindingProcessor = new NotificationBindingProcessor(assemblyFactory, policyFactory, bindingFactory);
StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
processors.addArtifactProcessor(bindingProcessor);
NotificationBindingProviderFactory nbpf = new NotificationBindingProviderFactory(servletHost,
ntm,
encodingRegistry,
localBaseUrl);
ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class);
providerFactories.addProviderFactory(nbpf);
}
public void stop(ExtensionPointRegistry registry) {
subscribeEnDeCoder.stop();
consumerReferenceEnDeCoder.stop();
endpointAddressEnDeCoder.stop();
newConsumerEnDeCoder.stop();
newProducerEnDeCoder.stop();
newConsumerResponseEnDeCoder.stop();
newProducerResponseEnDeCoder.stop();
newBrokerEnDeCoder.stop();
brokerConsumerReferenceEnDeCoder.stop();
brokerProducerReferenceEnDeCoder.stop();
newBrokerResponseEnDeCoder.stop();
brokersEnDeCoder.stop();
brokerEnDeCoder.stop();
endConsumersEnDeCoder.stop();
endProducersEnDeCoder.stop();
endpointReferenceEnDeCoder.stop();
referencePropertiesEnDeCoder.stop();
brokerIDEnDeCoder.stop();
connectionOverrideEnDeCoder.stop();
connectionOverrideResponseEnDeCoder.stop();
newBrokerAckEnDeCoder.stop();
neighborBrokerConsumersEnDeCoder.stop();
removeBrokerEnDeCoder.stop();
removedBrokerEnDeCoder.stop();
neighborsEnDeCoder.stop();
replaceBrokerConnectionEnDeCoder.stop();
StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
processors.removeArtifactProcessor(bindingProcessor);
}
}