Package org.wso2.carbon.bam.data.publisher.mediationstats.internal

Source Code of org.wso2.carbon.bam.data.publisher.mediationstats.internal.MediationStatisticsComponent

/*
* Copyright 2005-2010 WSO2, Inc. (http://wso2.com)
*
* Licensed 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.wso2.carbon.bam.data.publisher.mediationstats.internal;

import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.bam.data.publisher.mediationstats.MDPublisherConstants;
import org.wso2.carbon.bam.data.publisher.mediationstats.PublisherUtils;
import org.wso2.carbon.bam.data.publisher.mediationstats.config.RegistryPersistenceManager;
import org.wso2.carbon.bam.data.publisher.mediationstats.observer.BAMMediationStatisticsObserver;
import org.wso2.carbon.bam.data.publisher.mediationstats.services.BAMMediationStatsPublisherAdmin;
import org.wso2.carbon.base.ServerConfiguration;
import org.wso2.carbon.core.multitenancy.SuperTenantCarbonContext;
import org.wso2.carbon.event.core.EventBroker;
import org.wso2.carbon.event.core.subscription.Subscription;
import org.wso2.carbon.mediation.initializer.services.SynapseEnvironmentService;
import org.wso2.carbon.mediation.statistics.MediationStatisticsStore;
import org.wso2.carbon.mediation.statistics.services.MediationStatisticsService;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.statistics.services.SystemStatisticsUtil;
import org.wso2.carbon.utils.ConfigurationContextService;


/**
* @scr.component name="org.wso2.carbon.bam.data.publisher.mediationstats" immediate="true"
* @scr.reference name="eventbrokerbuilder.component" interface="org.wso2.carbon.event.core.EventBroker"
* cardinality="1..1" policy="dynamic"
* bind="setEventBroker" unbind="unsetEventBroker"
* @scr.reference name="config.context.service" interface="org.wso2.carbon.utils.ConfigurationContextService"
* cardinality="1..1" policy="dynamic" bind="setConfigurationContextService"
* unbind="unsetConfigurationContextService"
* @scr.reference name="server.configuration" interface="org.wso2.carbon.base.ServerConfiguration"
* cardinality="1..1" policy="dynamic" bind="setServerConfiguration"
* unbind="unsetServerConfiguration"
* @scr.reference name="org.wso2.carbon.registry.service"
* interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1"
* policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
* @scr.reference name="synapse.env.service"
* interface="org.wso2.carbon.mediation.initializer.services.SynapseEnvironmentService"
* cardinality="1..1" policy="dynamic" bind="setSynapseEnvironmentService"
* unbind="unsetSynapseEnvironmentService"
* @scr.reference name="mediation.statistics"
* interface="org.wso2.carbon.mediation.statistics.services.MediationStatisticsService"
* cardinality="1..n" policy="dynamic" bind="setMediationStatisticsService"
* unbind="unsetMediationStatisticsService"
*/
public class MediationStatisticsComponent {

    private static final Log log = LogFactory.getLog(MediationStatisticsComponent.class);

    private ConfigurationContext configContext;
    private ServerConfiguration serverConfiguration;
    private ServiceRegistration statAdminServiceRegistration;
    private MediationStatisticsService mediationStatisticsService;
    private static String BAM_SERVER_URL = "BamServerURL";

    private boolean activated = false;

    protected void activate(ComponentContext ctxt) {
        try {

            BAMMediationStatsPublisherAdmin bamMediationStatsPublisherAdmin = new BAMMediationStatsPublisherAdmin();

            PublisherUtils.setMediationStatPublisherAdmin(bamMediationStatsPublisherAdmin);


            // at the stratos automatically subscribe

            AxisConfiguration axisConfiguration = configContext.getAxisConfiguration();
            SuperTenantCarbonContext superTenantCarbonContext = SuperTenantCarbonContext.getCurrentContext(axisConfiguration);
            String tenantDomainName = superTenantCarbonContext.getTenantDomain();

            if (tenantDomainName == null) {
                ServerConfiguration serverConfiguration = this.serverConfiguration;
                String mediationServerURL = serverConfiguration.getFirstProperty(BAM_SERVER_URL);

                if (mediationServerURL != null) {
                    EventBroker eventBroker = PublisherUtils.getEventBroker();

                    Subscription subscription = new Subscription();
/*
                    EventFilter eventFilter = new EventFilter(null, null); //
                    subscription.setEventFilter(eventFilter);*/

                    subscription.setEventSinkURL(mediationServerURL + MDPublisherConstants.BMA_MEDIATION_STAT_RECEIVER_SERVICE);
                    subscription.setTopicName("carbon/bam/data/publishers/mediation_stats");

/*                    EventFilterDesc eventFilterDesc = new EventFilterDesc();
                    eventFilterDesc.setFilterValue("carbon/bam/data/publishers/mediation_stats");
                    subscription.setFilterDesc(eventFilterDesc);*/
                    try {
                        eventBroker.subscribe(subscription);
                    } catch (Exception e) {
                        throw new AxisFault("Can not subscribe to the event broker ", e);
                    }
                }
            }


            MediationStatisticsStore mediationStatisticsStore = mediationStatisticsService.getStatisticsStore();
            //in any occurence if 'mediationStatisticsStore' is null, observre wont be registered
            BAMMediationStatisticsObserver observer = new BAMMediationStatisticsObserver();
            mediationStatisticsStore.registerObserver(observer);
            observer.setTenantId(mediationStatisticsService.getTenantId()); // 'MediationStat
            // service' will
            // be deployed
            // per tenant (cardinality="1..n")
            observer.setTenantAxisConfiguration(mediationStatisticsService.getConfigurationContext().
                    getAxisConfiguration());
            log.info("Registering  Observer for tenant: " + mediationStatisticsService.getTenantId());


            activated = true;
            log.info("BAM MediationStatisticsComponent activate");
            if (log.isDebugEnabled()) {
                log.debug("BAM Mediation statistics data publisher bundle is activated");
            }
        } catch (Throwable e) {
            log.error("Failed to activate BAM Mediation statistics data publisher bundle", e);
        }
    }

    protected void deactivate(ComponentContext ctxt) {
        // unregistered BAMMediationStatsPublisherAdmin service from the OSGi Service Register.
        statAdminServiceRegistration.unregister();
        if (log.isDebugEnabled()) {
            log.debug("BAM service statistics data publisher bundle is deactivated");
        }
    }

    protected void setConfigurationContextService(ConfigurationContextService contextService) {
        this.configContext = contextService.getServerConfigContext();
        PublisherUtils.setConfigurationContextService(contextService);

    }

    protected void unsetConfigurationContextService(ConfigurationContextService contextService) {
        PublisherUtils.setConfigurationContextService(null);
        this.configContext = null;
    }

    protected void setServerConfiguration(ServerConfiguration serverConfiguration) {
        this.serverConfiguration = serverConfiguration;
    }

    protected void unsetServerConfiguration(ServerConfiguration serConfiguration) {
        this.serverConfiguration = null;
    }

    protected void setRegistryService(RegistryService registryService) {
        try {
            RegistryPersistenceManager.setRegistry(registryService.getConfigSystemRegistry());
        } catch (Exception e) {
            log.error("Cannot retrieve System Registry", e);
        }
    }

    protected void unsetRegistryService(RegistryService registryService) {
        RegistryPersistenceManager.setRegistry(null);
    }

    protected void setSystemStatisticsUtil(SystemStatisticsUtil systemStatisticsUtil) {
        PublisherUtils.setSystemStatististicsUtil(systemStatisticsUtil);
    }

    protected void unsetSystemStatisticsUtil(SystemStatisticsUtil systemStatisticsUtil) {
        PublisherUtils.setSystemStatististicsUtil(null);
    }

    protected void setSynapseEnvironmentService(
            SynapseEnvironmentService synapseEnvironmentService) {
        PublisherUtils.setSynapseEnvironmentService(synapseEnvironmentService);
    }

    protected void unsetSynapseEnvironmentService(
            SynapseEnvironmentService synapseEnvironmentService) {
        PublisherUtils.setSynapseEnvironmentService(null);
    }

    protected void setMediationStatisticsService(
            MediationStatisticsService mediationStatisticsService) {
        if (log.isDebugEnabled()) {
            log.debug("Mediation statistics service bound to the BAM mediation statistics component");
        }
        if (activated && mediationStatisticsService != null) {
            MediationStatisticsStore mediationStatisticsStore =
                    mediationStatisticsService.getStatisticsStore();
            BAMMediationStatisticsObserver observer = new BAMMediationStatisticsObserver();
            mediationStatisticsStore.registerObserver(observer);
            observer.setTenantId(mediationStatisticsService.getTenantId());
            observer.setTenantAxisConfiguration(
                    mediationStatisticsService.getConfigurationContext().getAxisConfiguration());
            log.info("Registering BamMediationStatistics Observer for tenant: " +
                     mediationStatisticsService.getTenantId());

        } else {
            this.mediationStatisticsService = mediationStatisticsService;
        }
    }

    protected void unsetMediationStatisticsService(MediationStatisticsService statService) {
        if (log.isDebugEnabled()) {
            log.debug("Mediation statistics service unbound from the BAM mediation statistics component");
        }
        // mediationStatisticsService = null;
    }

    protected void setEventBroker(EventBroker broker) {
        PublisherUtils.setEventBroker(broker);
    }

    protected void unsetEventBroker(EventBroker broker) {
        PublisherUtils.setEventBroker(null);
    }

}

TOP

Related Classes of org.wso2.carbon.bam.data.publisher.mediationstats.internal.MediationStatisticsComponent

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.