com.francetelecom.clara.cloud.deployment.rules.CheckMavenReferenceRule.java Source code

Java tutorial

Introduction

Here is the source code for com.francetelecom.clara.cloud.deployment.rules.CheckMavenReferenceRule.java

Source

/**
 * Copyright (C) 2015 Orange
 * 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 com.francetelecom.clara.cloud.deployment.rules;

import static com.francetelecom.clara.cloud.deployment.result.CriticityEnum.WARNING;

import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import com.francetelecom.clara.cloud.commons.MavenReference;
import com.francetelecom.clara.cloud.commons.TechnicalException;
import com.francetelecom.clara.cloud.deployment.result.RuleValidationMessage;
import com.francetelecom.clara.cloud.logicalmodel.ProcessingNode;
import com.francetelecom.clara.cloud.services.dto.DeployableMavenArtifactDto;

@Component
public class CheckMavenReferenceRule implements CheckRule {

    private static Logger logger = LoggerFactory.getLogger(CheckMavenReferenceRule.class);

    @Override
    public Set<RuleValidationMessage> validate(DeployableMavenArtifactDto providedArtifact, ProcessingNode node)
            throws TechnicalException {
        Set<RuleValidationMessage> messages = new HashSet<RuleValidationMessage>();
        MavenReference expectedMavenReference = node.getSoftwareReference();

        logger.debug("Checking GAV");

        if (!StringUtils.equals(expectedMavenReference.getGroupId(), providedArtifact.getGroupId())) {
            messages.add(new RuleValidationMessage("Deployment of [" + providedArtifact.getArtifactId()
                    + "] not allowed : provided groupId [" + providedArtifact.getGroupId()
                    + "] does not match expected groupId [" + expectedMavenReference.getGroupId() + "]", WARNING));
        }
        if (!StringUtils.equals(expectedMavenReference.getArtifactId(), providedArtifact.getArtifactId())) {
            messages.add(new RuleValidationMessage("Deployment of " + providedArtifact.getArtifactId()
                    + " not allowed : provided artifactId [" + providedArtifact.getArtifactId()
                    + "] does not match expected artifactId [" + expectedMavenReference.getArtifactId() + "]",
                    WARNING));
        }
        // Classifier null or empty ("") should be considered equals
        if ((StringUtils.isNotEmpty(expectedMavenReference.getClassifier())
                || StringUtils.isNotEmpty(providedArtifact.getClassifier()))
                && !StringUtils.equals(expectedMavenReference.getClassifier(), providedArtifact.getClassifier())) {
            messages.add(new RuleValidationMessage("Deployment of [" + providedArtifact.getArtifactId()
                    + "] not allowed : provided classifier [" + providedArtifact.getClassifier()
                    + "] does not match expected classifier [" + expectedMavenReference.getClassifier() + "]",
                    WARNING));
        }
        if (!StringUtils.equals(expectedMavenReference.getType(), providedArtifact.getType())) {
            messages.add(new RuleValidationMessage("Deployment of [" + providedArtifact.getArtifactId()
                    + "] not allowed : provided type [" + providedArtifact.getType()
                    + "] does not match expected type [" + expectedMavenReference.getType() + "]", WARNING));
        }
        if (!StringUtils.startsWith(providedArtifact.getVersion(), expectedMavenReference.getVersion())) {
            messages.add(new RuleValidationMessage("Deployment of [" + providedArtifact.getArtifactId()
                    + "] not allowed : provided version [" + providedArtifact.getVersion()
                    + "] does not match expected version [" + expectedMavenReference.getVersion() + "]", WARNING));
        }

        return messages;
    }

}