/*
* Copyright (c) 2006, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.governance.lcm.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.governance.lcm.listener.LifecycleLoader;
import org.wso2.carbon.governance.lcm.services.LifeCycleService;
import org.wso2.carbon.governance.lcm.util.CommonUtil;
import org.wso2.carbon.registry.common.AttributeSearchService;
import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.utils.Axis2ConfigurationContextObserver;
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
/**
* @scr.component name="org.wso2.carbon.governance.lcm"
* immediate="true"
* @scr.reference name="registry.service"
* interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1"
* policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"
* @scr.reference name="registry.attribute.indexing"
* interface="org.wso2.carbon.registry.common.AttributeSearchService" cardinality="1..1"
* policy="dynamic" bind="setAttributeSearchService" unbind="unsetAttributeSearchService"
*/
public class LCMServiceComponent {
private static Log log = LogFactory.getLog(LCMServiceComponent.class);
protected void activate(ComponentContext context) {
BundleContext bundleContext = context.getBundleContext();
LifecycleLoader lifecycleLoader = new LifecycleLoader();
ServiceRegistration tenantMgtListenerSR = bundleContext.registerService(
Axis2ConfigurationContextObserver.class.getName(), lifecycleLoader, null);
bundleContext.registerService(
LifeCycleService.class.getName(), new LifeCycleServiceImpl(), null);
if (tenantMgtListenerSR != null) {
if(log.isDebugEnabled()) {
log.debug("Governance Life Cycle Management - LifecycleLoader registered");
}
} else {
log.error("Governance Life Cycle Management - LifecycleLoader could not be registered");
}
if (log.isDebugEnabled()) {
log.debug("Governance Life Cycle Management Service bundle is activated");
}
}
protected void deactivate(ComponentContext context) {
if(log.isDebugEnabled()) {
log.debug("Governance Life Cycle Management Service bundle is deactivated");
}
}
protected void setRegistryService(RegistryService registryService) {
PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
LifeCycleServiceHolder.getInstance().setRegistryService(registryService);
// Generate LCM search query if it doesn't exist.
try {
CommonUtil.addDefaultLifecyclesIfNotAvailable(registryService.getConfigSystemRegistry(),
registryService.getRegistry(CarbonConstants.REGISTRY_SYSTEM_USERNAME));
} catch (Exception e) {
log.error("An error occurred while setting up Governance Life Cycle Management", e);
}
}
protected void unsetRegistryService(RegistryService registryService) {
LifeCycleServiceHolder.getInstance().setRegistryService(null);
}
/**
* Method used to set attribute search service.
*
* @param attributeSearchService attribute search service.
*/
protected void setAttributeSearchService(AttributeSearchService attributeSearchService) {
LifeCycleServiceHolder.getInstance().setAttributeSearchService(attributeSearchService);
}
/**
* Method used to unset attribute search service.
*
* @param attributeSearchService attribute search service.
*/
protected void unsetAttributeSearchService(AttributeSearchService attributeSearchService) {
LifeCycleServiceHolder.getInstance().setAttributeSearchService(null);
}
}