blob: 2bccfa85d9241aca9d8b6d75607ae381081b76a5 [file] [log] [blame]
/*
* 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;
}
}