/* * 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.registry.profiles.internal; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.osgi.service.component.ComponentContext; import org.wso2.carbon.registry.app.RemoteRegistryService; import org.wso2.carbon.registry.core.Registry; import org.wso2.carbon.registry.core.RegistryConstants; import org.wso2.carbon.registry.core.jdbc.handlers.filters.URLMatcher; import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.utils.RegistryUtils; import org.wso2.carbon.registry.profiles.handlers.ProfilesAddHandler; import org.wso2.carbon.registry.profiles.utils.CommonUtil; /** * @scr.component name="org.wso2.carbon.registry.profiles" immediate="true" * @scr.reference name="registry.service" * interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1" * policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService" */ public class RegistryMgtUIProfilesServiceComponent { private static Log log = LogFactory.getLog(RegistryMgtUIProfilesServiceComponent.class); private Registry registry = null; protected void activate(ComponentContext context) { log.debug("******* Registry Profiles Management bundle is activated ******* "); } protected void deactivate(ComponentContext context) { log.debug("Registry Profiles Management bundle is deactivated "); } protected void setRegistryService(RegistryService registryService) { CommonUtil.setRegistryService(registryService); if (registryService instanceof RemoteRegistryService) { log.warn("Profiles are not available on Remote Registry"); return; } try { // We can't get Registry from Utils, as the MessageContext is not available at // activation time. Registry configSystemRegistry = registryService.getConfigSystemRegistry(); if (registry != null && registry == configSystemRegistry) { // Handler has already been set. return; } registry = configSystemRegistry; if (registry == null || registry.getRegistryContext() == null || registry.getRegistryContext().getHandlerManager() == null) { String msg = "Error Initializing Registry Profile Handler"; log.error(msg); } else { URLMatcher filter = new URLMatcher(); // filter.setGetPattern(RegistryUtils.getAbsolutePath(registry.getRegistryContext(), // RegistryConstants.CONFIG_REGISTRY_BASE_PATH + RegistryConstants.PROFILES_PATH) + // ".*/profiles"); // filter.setPutPattern(RegistryUtils.getAbsolutePath(registry.getRegistryContext(), // RegistryConstants.CONFIG_REGISTRY_BASE_PATH + RegistryConstants.PROFILES_PATH) + // ".*/profiles"); filter.setGetPattern(RegistryUtils.getAbsolutePath(registry.getRegistryContext(), "/") + ".*" + RegistryConstants.PROFILES_PATH + ".*/profiles"); filter.setPutPattern(RegistryUtils.getAbsolutePath(registry.getRegistryContext(), "/") + ".*" + RegistryConstants.PROFILES_PATH + ".*/profiles"); ProfilesAddHandler handler = new ProfilesAddHandler(); registry.getRegistryContext().getHandlerManager().addHandler(null, filter, handler); } } catch (Exception e) { String msg = "Error Initializing Registry Profiles Handler"; log.error(msg, e); throw new RuntimeException(msg, e); } } protected void unsetRegistryService(RegistryService registryService) { CommonUtil.setRegistryService(null); } }