use of org.wso2.carbon.apimgt.persistence.dto.Organization in project carbon-apimgt by wso2.
the class ApiMgtDAO method isKeyManagerConfigurationExistByName.
public boolean isKeyManagerConfigurationExistByName(String name, String organization) throws APIManagementException {
try (Connection connection = APIMgtDBUtil.getConnection()) {
final String query = "SELECT 1 FROM AM_KEY_MANAGER WHERE NAME = ? AND ORGANIZATION = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
preparedStatement.setString(1, name);
preparedStatement.setString(2, organization);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
if (resultSet.next()) {
return true;
}
}
}
} catch (SQLException e) {
throw new APIManagementException("Error while retrieving key manager existence", e);
}
return false;
}
use of org.wso2.carbon.apimgt.persistence.dto.Organization in project carbon-apimgt by wso2.
the class CertificateMgtDAO method updateClientCertificate.
/**
* To update an already existing client certificate.
*
* @param certificate : Specific certificate.
* @param alias : Alias of the certificate.
* @param tier : Name of tier related with the certificate.
* @param tenantId : ID of the tenant.
* @param organization : Organization
* @return true if the update succeeds, unless false.
* @throws CertificateManagementException Certificate Management Exception.
*/
public boolean updateClientCertificate(String certificate, String alias, String tier, int tenantId, String organization) throws CertificateManagementException {
List<ClientCertificateDTO> clientCertificateDTOList = getClientCertificates(tenantId, alias, null, organization);
ClientCertificateDTO clientCertificateDTO;
if (clientCertificateDTOList.size() == 0) {
if (log.isDebugEnabled()) {
log.debug("Client certificate update request is received for a non-existing alias " + alias + " of " + "tenant " + tenantId);
}
return false;
}
clientCertificateDTO = clientCertificateDTOList.get(0);
if (StringUtils.isNotEmpty(certificate)) {
clientCertificateDTO.setCertificate(certificate);
}
if (StringUtils.isNotEmpty(tier)) {
clientCertificateDTO.setTierName(tier);
}
try (Connection connection = APIMgtDBUtil.getConnection()) {
try {
connection.setAutoCommit(false);
deleteClientCertificate(connection, null, alias, tenantId);
addClientCertificate(connection, clientCertificateDTO.getCertificate(), clientCertificateDTO.getApiIdentifier(), alias, clientCertificateDTO.getTierName(), tenantId, organization);
connection.commit();
} catch (SQLException e) {
handleConnectionRollBack(connection);
handleException("Error while updating client certificate for the API for the alias " + alias, e);
}
} catch (SQLException e) {
handleException("Error while updating client certificate for the API for the alias " + alias, e);
}
return true;
}
use of org.wso2.carbon.apimgt.persistence.dto.Organization in project carbon-apimgt by wso2.
the class ApiMgtDAO method updateSubscription.
/**
* This method is used to update the subscription
*
* @param identifier APIIdentifier
* @param subStatus Subscription Status[BLOCKED/UNBLOCKED]
* @param applicationId Application id
* @param organization Organization
* @throws org.wso2.carbon.apimgt.api.APIManagementException if failed to update subscriber
*/
public void updateSubscription(APIIdentifier identifier, String subStatus, int applicationId, String organization) throws APIManagementException {
Connection conn = null;
ResultSet resultSet = null;
PreparedStatement ps = null;
PreparedStatement updatePs = null;
int apiId = -1;
try {
conn = APIMgtDBUtil.getConnection();
conn.setAutoCommit(false);
String getApiQuery = SQLConstants.GET_API_ID_SQL;
ps = conn.prepareStatement(getApiQuery);
ps.setString(1, APIUtil.replaceEmailDomainBack(identifier.getProviderName()));
ps.setString(2, identifier.getApiName());
ps.setString(3, identifier.getVersion());
resultSet = ps.executeQuery();
if (resultSet.next()) {
apiId = resultSet.getInt("API_ID");
}
if (apiId == -1) {
String msg = "Unable to get the API ID for: " + identifier;
log.error(msg);
throw new APIManagementException(msg);
}
String subsCreateStatus = getSubscriptionCreaeteStatus(identifier, applicationId, organization, conn);
if (APIConstants.SubscriptionCreatedStatus.UN_SUBSCRIBE.equals(subsCreateStatus)) {
deleteSubscriptionByApiIDAndAppID(apiId, applicationId, conn);
}
// This query to update the AM_SUBSCRIPTION table
String sqlQuery = SQLConstants.UPDATE_SUBSCRIPTION_OF_APPLICATION_SQL;
// Updating data to the AM_SUBSCRIPTION table
updatePs = conn.prepareStatement(sqlQuery);
updatePs.setString(1, subStatus);
updatePs.setString(2, identifier.getProviderName());
updatePs.setTimestamp(3, new Timestamp(System.currentTimeMillis()));
updatePs.setInt(4, apiId);
updatePs.setInt(5, applicationId);
updatePs.execute();
// finally commit transaction
conn.commit();
} catch (SQLException e) {
if (conn != null) {
try {
conn.rollback();
} catch (SQLException e1) {
log.error("Failed to rollback the add subscription ", e1);
}
}
handleException("Failed to update subscription data ", e);
} finally {
APIMgtDBUtil.closeAllConnections(ps, conn, resultSet);
APIMgtDBUtil.closeAllConnections(updatePs, null, null);
}
}
use of org.wso2.carbon.apimgt.persistence.dto.Organization in project carbon-apimgt by wso2.
the class ApiMgtDAO method restoreOperationPolicyRevision.
/**
* This method is used to restore an API specific operation policy revision.
*
* @param connection DB connection
* @param apiUUID UUID of the API
* @param policyId Original policy's ID that needs to be cloned
* @param revisionId The revision number
* @param organization Organization name
* @throws SQLException
* @throws APIManagementException
*/
private String restoreOperationPolicyRevision(Connection connection, String apiUUID, String policyId, int revisionId, String organization) throws SQLException, APIManagementException {
OperationPolicyData revisionedPolicy = getAPISpecificOperationPolicyByPolicyID(connection, policyId, apiUUID, organization, true);
String restoredPolicyId = null;
if (revisionedPolicy != null) {
// First check whether there exists a API specific policy for same policy name with revision uuid null
// This is the state where we record the policies applied in the working copy.
OperationPolicyData apiSpecificPolicy = getAPISpecificOperationPolicyByPolicyName(connection, revisionedPolicy.getSpecification().getName(), revisionedPolicy.getApiUUID(), null, organization, false);
if (apiSpecificPolicy != null) {
if (apiSpecificPolicy.getMd5Hash().equals(revisionedPolicy.getMd5Hash())) {
if (log.isDebugEnabled()) {
log.debug("Matching API specific operation policy found for the revisioned policy and " + "MD5 hashes match");
}
} else {
updateAPISpecificOperationPolicyWithClonedPolicyId(connection, apiSpecificPolicy.getPolicyId(), revisionedPolicy);
if (log.isDebugEnabled()) {
log.debug("Even though a matching API specific operation policy found for name," + " MD5 hashes does not match. Policy " + apiSpecificPolicy.getPolicyId() + " has been updated from the revision.");
}
}
restoredPolicyId = apiSpecificPolicy.getPolicyId();
} else {
if (revisionedPolicy.isClonedPolicy()) {
// Check for a common operation policy only if it is a cloned policy.
OperationPolicyData commonPolicy = getCommonOperationPolicyByPolicyID(connection, revisionedPolicy.getClonedCommonPolicyId(), organization, false);
if (commonPolicy != null) {
if (commonPolicy.getMd5Hash().equals(revisionedPolicy.getMd5Hash())) {
if (log.isDebugEnabled()) {
log.debug("Matching common operation policy found. MD5 hash match");
}
// This means the common policy is same with our revision. A clone is created and original
// common policy ID is referenced as the ClonedCommonPolicyId
restoredPolicyId = addAPISpecificOperationPolicy(connection, apiUUID, null, revisionedPolicy, revisionedPolicy.getClonedCommonPolicyId());
} else {
// This means the common policy is updated since we created the revision.
// we have to create a clone and since policy is different, we can't refer the original common
// policy as ClonedCommonPolicyId. This should be a new API specific policy
revisionedPolicy.getSpecification().setName(revisionedPolicy.getSpecification().getName() + "_restored-" + revisionId);
revisionedPolicy.getSpecification().setDisplayName(revisionedPolicy.getSpecification().getDisplayName() + " Restored from revision " + revisionId);
revisionedPolicy.setMd5Hash(APIUtil.getMd5OfOperationPolicy(revisionedPolicy));
revisionedPolicy.setRevisionUUID(null);
restoredPolicyId = addAPISpecificOperationPolicy(connection, apiUUID, null, revisionedPolicy, null);
if (log.isDebugEnabled()) {
log.debug("An updated matching common operation policy found. A new API specific operation " + "policy created by the display name " + revisionedPolicy.getSpecification().getName());
}
}
} else {
// This means this is a clone of a deleted common policy. A new API specific policy will be created.
revisionedPolicy.getSpecification().setName(revisionedPolicy.getSpecification().getName() + "_restored-" + revisionId);
revisionedPolicy.getSpecification().setDisplayName(revisionedPolicy.getSpecification().getDisplayName() + " Restored from revision " + revisionId);
revisionedPolicy.setMd5Hash(APIUtil.getMd5OfOperationPolicy(revisionedPolicy));
revisionedPolicy.setRevisionUUID(null);
restoredPolicyId = addAPISpecificOperationPolicy(connection, apiUUID, null, revisionedPolicy, null);
if (log.isDebugEnabled()) {
log.debug("No matching operation policy found. A new API specific operation " + "policy created by the name " + revisionedPolicy.getSpecification().getName());
}
}
} else {
// This means this is a completely new policy and we don't have any reference of a previous state in
// working copy. A new API specific policy will be created.
revisionedPolicy.setRevisionUUID(null);
restoredPolicyId = addAPISpecificOperationPolicy(connection, apiUUID, null, revisionedPolicy, null);
if (log.isDebugEnabled()) {
log.debug("No matching operation policy found. A new API specific operation " + "policy created by the name " + revisionedPolicy.getSpecification().getName());
}
}
}
} else {
throw new APIManagementException("A revisioned operation policy not found for " + policyId);
}
return restoredPolicyId;
}
use of org.wso2.carbon.apimgt.persistence.dto.Organization in project carbon-apimgt by wso2.
the class AbstractAPIManagerTestCase method testIsAPIAvailable.
@Test
public void testIsAPIAvailable() throws APIManagementException {
APIIdentifier apiIdentifier = getAPIIdentifier(SAMPLE_API_NAME, API_PROVIDER, SAMPLE_API_VERSION);
String organization = "org1";
String path = APIConstants.API_ROOT_LOCATION + RegistryConstants.PATH_SEPARATOR + apiIdentifier.getProviderName() + RegistryConstants.PATH_SEPARATOR + apiIdentifier.getApiName() + RegistryConstants.PATH_SEPARATOR + apiIdentifier.getVersion();
AbstractAPIManager abstractAPIManager = new AbstractAPIManagerWrapper(apiMgtDAO);
Mockito.when(apiMgtDAO.getUUIDFromIdentifier(apiIdentifier, organization)).thenReturn("xxxxx");
Assert.assertTrue(abstractAPIManager.isAPIAvailable(apiIdentifier, organization));
}
Aggregations