Package org.servicemix.components.servicemix

Source Code of org.servicemix.components.servicemix.ServiceMixComponent

package org.servicemix.components.servicemix;

import org.servicemix.jbi.container.JBIContainer;
import org.servicemix.jbi.container.SpringServiceUnitContainer;
import org.servicemix.jbi.framework.ComponentContextImpl;
import org.servicemix.jbi.management.BaseLifeCycle;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;

import javax.jbi.JBIException;
import javax.jbi.component.Component;
import javax.jbi.component.ComponentContext;
import javax.jbi.component.ComponentLifeCycle;
import javax.jbi.component.ServiceUnitManager;
import javax.jbi.management.DeploymentException;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.management.ObjectName;

import java.util.Map;

/**
* @version $Revision$
*/
public class ServiceMixComponent extends BaseLifeCycle implements ComponentLifeCycle, Component, ServiceUnitManager {

    private ComponentContext context;

    public String getDescription() {
        return "ServiceMix Component";
    }

    // /////////////////////////////////////////////////////////////////
    // ComponentLifeCycle implementation
    // /////////////////////////////////////////////////////////////////
    public void init(ComponentContext context) throws JBIException {
        System.out.println("ServiceMixComponent: init");
        this.context = context;
    }

    public ObjectName getExtensionMBeanName() {
        System.out.println("ServiceMixComponent: getExtensionMBeanName");
        return null;
    }

    // /////////////////////////////////////////////////////////////////
    // Component implementation
    // /////////////////////////////////////////////////////////////////
    public ComponentLifeCycle getLifeCycle() {
        return this;
    }

    public ServiceUnitManager getServiceUnitManager() {
        return this;
    }

    public Document getServiceDescription(ServiceEndpoint endpoint) {
        System.out.println("ServiceMixComponent: getServiceDescription");
        // TODO Auto-generated method stub
        return null;
    }

    public boolean isExchangeWithConsumerOkay(ServiceEndpoint endpoint, MessageExchange exchange) {
        System.out.println("ServiceMixComponent: isExchangeWithConsumerOkay");
        return false;
    }

    public boolean isExchangeWithProviderOkay(ServiceEndpoint endpoint, MessageExchange exchange) {
        System.out.println("ServiceMixComponent: isExchangeWithProviderOkay");
        return false;

    }

    public ServiceEndpoint resolveEndpointReference(DocumentFragment epr) {
        System.out.println("ServiceMixComponent: resolveEndpointReference");
        return null;
    }

    // /////////////////////////////////////////////////////////////////
    // ServiceUnitManager implementation
    // /////////////////////////////////////////////////////////////////
    Map serviceUnitRegistry = new edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap();

    public String deploy(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException {
        System.out.println("ServiceMixComponent: deploy");
        return null;
    }

    public void init(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException {
        System.out.println("ServiceMixComponent: init: " + serviceUnitName + " path: " + serviceUnitRootPath);

        FileSystemXmlApplicationContext springContext = new FileSystemXmlApplicationContext("file:"+ serviceUnitRootPath +"/servicemix.xml" );
        SpringServiceUnitContainer ssuc = (SpringServiceUnitContainer) springContext.getBean("jbi");

        ServiceMixServiceUnit suc = new ServiceMixServiceUnit(this, serviceUnitName, serviceUnitRootPath, springContext, ssuc);
        serviceUnitRegistry.put(serviceUnitName, suc);
    }

    public void start(String serviceUnitName) throws DeploymentException {
        System.out.println("ServiceMixComponent: start: " + serviceUnitName);
        ServiceMixServiceUnit unit = (ServiceMixServiceUnit) serviceUnitRegistry.get(serviceUnitName);
        if( unit == null )
            throw new DeploymentException("Service Unit not registered: "+serviceUnitName);
        try {
            unit.start();
        } catch (Exception e) {
            throw new DeploymentException(e.getMessage(), e);
        }
    }

    public void stop(String serviceUnitName) throws DeploymentException {
        System.out.println("ServiceMixComponent: stop: " + serviceUnitName);
        ServiceMixServiceUnit unit = (ServiceMixServiceUnit) serviceUnitRegistry.get(serviceUnitName);
        if( unit == null )
            throw new DeploymentException("Service Unit not registered: "+serviceUnitName);
        try {
            unit.stop();
        } catch (JBIException e) {
            throw new DeploymentException(e.getMessage(), e);
        }
    }

    public void shutDown(String serviceUnitName) throws DeploymentException {
        System.out.println("ServiceMixComponent: shutDown: " + serviceUnitName);
        ServiceMixServiceUnit unit = (ServiceMixServiceUnit) serviceUnitRegistry.remove(serviceUnitName);
        if( unit == null )
            throw new DeploymentException("Service Unit not registered: "+serviceUnitName);
        unit.shutdown();
    }

    public String undeploy(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException {
        System.out.println("ServiceMixComponent: undeploy: " + serviceUnitName);
        ServiceMixServiceUnit unit = (ServiceMixServiceUnit) serviceUnitRegistry.remove(serviceUnitName);
        if( unit == null )
            throw new DeploymentException("Service Unit not registered: "+serviceUnitName);
        unit.undeploy();
        return null;
    }

    public ComponentContext getContext() {
        return context;
    }

    public void setContext(ComponentContext context) {
        this.context = context;
    }

    public JBIContainer getContainer() {
        if( context instanceof ComponentContextImpl ) {
            return ((ComponentContextImpl)context).getContainer();
        }
        return null;
    }

}
TOP

Related Classes of org.servicemix.components.servicemix.ServiceMixComponent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.