| /* |
| * 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.stratos.manager.services.impl; |
| |
| import org.apache.stratos.manager.components.ApplicationSignUpHandler; |
| import org.apache.stratos.manager.components.ArtifactDistributionCoordinator; |
| import org.apache.stratos.manager.components.DomainMappingHandler; |
| import org.apache.stratos.manager.context.StratosManagerContext; |
| import org.apache.stratos.manager.exception.ApplicationSignUpException; |
| import org.apache.stratos.manager.exception.ArtifactDistributionCoordinatorException; |
| import org.apache.stratos.manager.exception.DomainMappingException; |
| import org.apache.stratos.manager.services.StratosManagerService; |
| import org.apache.stratos.messaging.domain.application.signup.ApplicationSignUp; |
| import org.apache.stratos.messaging.domain.application.signup.DomainMapping; |
| |
| import java.util.concurrent.locks.Lock; |
| |
| /** |
| * Stratos manager service implementation. |
| */ |
| public class StratosManagerServiceImpl implements StratosManagerService { |
| |
| private ApplicationSignUpHandler signUpHandler; |
| private ArtifactDistributionCoordinator artifactDistributionCoordinator; |
| private DomainMappingHandler domainMappingHandler; |
| |
| public StratosManagerServiceImpl() { |
| signUpHandler = new ApplicationSignUpHandler(); |
| artifactDistributionCoordinator = new ArtifactDistributionCoordinator(); |
| domainMappingHandler = new DomainMappingHandler(); |
| } |
| |
| @Override |
| public boolean addApplicationSignUp(ApplicationSignUp applicationSignUp) throws ApplicationSignUpException { |
| signUpHandler.addApplicationSignUp(applicationSignUp); |
| return true; |
| } |
| |
| @Override |
| public boolean removeApplicationSignUp(String applicationId, int tenantId) throws ApplicationSignUpException { |
| signUpHandler.removeApplicationSignUp(applicationId, tenantId); |
| return true; |
| } |
| |
| @Override |
| public ApplicationSignUp getApplicationSignUp(String applicationId, int tenantId) throws ApplicationSignUpException { |
| return signUpHandler.getApplicationSignUp(applicationId, tenantId); |
| } |
| |
| @Override |
| public boolean applicationSignUpExist(String applicationId, int tenantId) throws ApplicationSignUpException { |
| return signUpHandler.applicationSignUpExist(applicationId, tenantId); |
| } |
| |
| @Override |
| public boolean applicationSignUpsExist(String applicationId) throws ApplicationSignUpException { |
| return signUpHandler.applicationSignUpsExist(applicationId); |
| } |
| |
| @Override |
| public ApplicationSignUp[] getApplicationSignUps(String applicationId) throws ApplicationSignUpException { |
| return signUpHandler.getApplicationSignUps(applicationId); |
| } |
| |
| @Override |
| public void notifyArtifactUpdatedEventForSignUp(String applicationId, int tenantId) throws ArtifactDistributionCoordinatorException { |
| artifactDistributionCoordinator.notifyArtifactUpdatedEventForSignUp(applicationId, tenantId); |
| } |
| |
| @Override |
| public boolean notifyArtifactUpdatedEventForRepository(String repoUrl) throws |
| ArtifactDistributionCoordinatorException { |
| artifactDistributionCoordinator.notifyArtifactUpdatedEventForRepository(repoUrl); |
| return true; |
| } |
| |
| @Override |
| public void addDomainMapping(DomainMapping domainMapping) throws DomainMappingException { |
| domainMappingHandler.addDomainMapping(domainMapping); |
| } |
| |
| @Override |
| public DomainMapping[] getDomainMappings(String applicationId, int tenantId) throws DomainMappingException { |
| return domainMappingHandler.getDomainMappings(applicationId, tenantId); |
| } |
| |
| @Override |
| public void removeDomainMapping(String applicationId, int tenantId, String domainName) throws DomainMappingException { |
| domainMappingHandler.removeDomainMapping(applicationId, tenantId, domainName); |
| } |
| |
| @Override |
| public void addUsedCartridgesInCartridgeGroups(String cartridgeGroupName, String[] cartridgeNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgesCartridgeGroupsWriteLock(); |
| StratosManagerContext.getInstance().addUsedCartridgesInCartridgeGroups(cartridgeGroupName, cartridgeNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void removeUsedCartridgesInCartridgeGroups(String cartridgeGroupName, String[] cartridgeNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgesCartridgeGroupsWriteLock(); |
| StratosManagerContext.getInstance().removeUsedCartridgesInCartridgeGroups(cartridgeGroupName, cartridgeNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void addUsedCartridgesInApplications(String applicationName, String[] cartridgeNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgesApplicationsWriteLock(); |
| StratosManagerContext.getInstance().addUsedCartridgesInApplications(applicationName, cartridgeNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void removeUsedCartridgesInApplications(String applicationName, String[] cartridgeNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgesApplicationsWriteLock(); |
| StratosManagerContext.getInstance().removeUsedCartridgesInApplications(applicationName, cartridgeNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public boolean canCartridgeBeRemoved(String cartridgeName) { |
| if (StratosManagerContext.getInstance().isCartridgeIncludedInCartridgeGroups(cartridgeName) || |
| StratosManagerContext.getInstance().isCartridgeIncludedInApplications(cartridgeName)) { |
| return false; |
| } |
| return true; |
| } |
| |
| @Override |
| public void addUsedCartridgeGroupsInCartridgeSubGroups(String cartridgeSubGroupName, String[] cartridgeGroupNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgeGroupsCartridgeSubGroupsWriteLock(); |
| StratosManagerContext.getInstance().addUsedCartridgeGroupsInCartridgeSubGroups(cartridgeSubGroupName, cartridgeGroupNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void removeUsedCartridgeGroupsInCartridgeSubGroups(String cartridgeSubGroupName, String[] cartridgeGroupNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgeGroupsCartridgeSubGroupsWriteLock(); |
| StratosManagerContext.getInstance().removeUsedCartridgeGroupsInCartridgeSubGroups(cartridgeSubGroupName, cartridgeGroupNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void addUsedCartridgeGroupsInApplications(String applicationName, String[] cartridgeGroupNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgeGroupsApplicationsWriteLock(); |
| StratosManagerContext.getInstance().addUsedCartridgeGroupsInApplications(applicationName, cartridgeGroupNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public void removeUsedCartridgeGroupsInApplications(String applicationName, String[] cartridgeGroupNames) { |
| Lock lock = null; |
| try { |
| lock = StratosManagerContext.getInstance().acquireCartridgeGroupsApplicationsWriteLock(); |
| StratosManagerContext.getInstance().removeUsedCartridgeGroupsInApplications(applicationName, cartridgeGroupNames); |
| StratosManagerContext.getInstance().persist(); |
| } finally { |
| if (lock != null) { |
| StratosManagerContext.getInstance().releaseWriteLock(lock); |
| } |
| } |
| } |
| |
| @Override |
| public boolean canCartirdgeGroupBeRemoved(String cartridgeGroupName) { |
| if (StratosManagerContext.getInstance().isCartridgeGroupIncludedInCartridgeSubGroups(cartridgeGroupName) || |
| StratosManagerContext.getInstance().isCartridgeGroupIncludedInApplications(cartridgeGroupName)) { |
| return false; |
| } |
| return true; |
| } |
| } |