Skip to content

Commit

Permalink
#605 Decouple ComparisonExecutor from ScenarioDocuBuildsManager
Browse files Browse the repository at this point in the history
  • Loading branch information
adiherzog committed May 8, 2018
1 parent f71b7a0 commit 1da248d
Show file tree
Hide file tree
Showing 10 changed files with 136 additions and 118 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.scenarioo.business.builds;

import org.scenarioo.rest.base.BuildIdentifier;

public interface AliasResolver {

BuildIdentifier resolveBranchAndBuildAliases(String branchName, String buildName);

String resolveBranchAlias(String aliasOrRealBranchName);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.scenarioo.business.builds;

import org.scenarioo.model.configuration.BranchAlias;
import org.scenarioo.model.configuration.Configuration;
import org.scenarioo.repository.ConfigurationRepository;
import org.scenarioo.repository.RepositoryLocator;

import java.util.List;

public class BranchAliasResolver {

private final static ConfigurationRepository configurationRepository =
RepositoryLocator.INSTANCE.getConfigurationRepository();

public String resolveBranchAlias(final String aliasOrRealBranchName) {
Configuration configuration = configurationRepository.getConfiguration();
List<BranchAlias> branchAliases = configuration.getBranchAliases();
for (BranchAlias branchAlias : branchAliases) {
if (branchAlias.getName().equals(aliasOrRealBranchName)) {
return branchAlias.getReferencedBranch();
}
}

return aliasOrRealBranchName;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
import org.scenarioo.dao.aggregates.AggregatedDocuDataReader;
import org.scenarioo.dao.aggregates.ScenarioDocuAggregationDao;
import org.scenarioo.dao.search.FullTextSearch;
import org.scenarioo.model.configuration.BranchAlias;
import org.scenarioo.model.configuration.Configuration;
import org.scenarioo.model.diffViewer.BuildDiffInfo;
import org.scenarioo.model.docu.aggregates.branches.BranchBuilds;
import org.scenarioo.model.docu.aggregates.branches.BuildImportStatus;
Expand Down Expand Up @@ -58,12 +56,13 @@
* using {@link #getAvailableBuilds()}.</li>
* </ul>
*/
public enum ScenarioDocuBuildsManager {
INSTANCE;
public class ScenarioDocuBuildsManager implements AliasResolver {

private final static ConfigurationRepository configurationRepository = RepositoryLocator.INSTANCE
.getConfigurationRepository();

public static ScenarioDocuBuildsManager INSTANCE = new ScenarioDocuBuildsManager();

private static final Logger LOGGER = Logger.getLogger(ScenarioDocuBuildsManager.class);

/**
Expand Down Expand Up @@ -118,13 +117,19 @@ public String resolveAliasBuildNameUnchecked(final String branchName, final Stri
/**
* Resolves branch and build names that might be aliases to their real names.
*/
@Override
public BuildIdentifier resolveBranchAndBuildAliases(final String branchName, final String buildName) {
String resolvedBranchName = resolveBranchAlias(branchName);
String resolvedBranchName = this.resolveBranchAlias(branchName);
String resolvedBuildName = resolveBuildAlias(resolvedBranchName, buildName);

return new BuildIdentifier(resolvedBranchName, resolvedBuildName);
}

@Override
public String resolveBranchAlias(String aliasOrRealBranchName) {
return new BranchAliasResolver().resolveBranchAlias(aliasOrRealBranchName);
}

/**
* Resolves possible alias names in 'buildName' for managed build alias links. Also validates that the passed branch
* and build represents a valid build (imported successfully otherwise an exception is thrown)
Expand All @@ -137,18 +142,6 @@ private String resolveBuildAlias(final String branchName, final String buildName
return resolvedBuildName;
}

public String resolveBranchAlias(final String aliasOrRealBranchName) {
Configuration configuration = configurationRepository.getConfiguration();
List<BranchAlias> branchAliases = configuration.getBranchAliases();
for (BranchAlias branchAlias : branchAliases) {
if (branchAlias.getName().equals(aliasOrRealBranchName)) {
return branchAlias.getReferencedBranch();
}
}

return aliasOrRealBranchName;
}

/**
* Processes the content of configured documentation filesystem directory discovering newly added builds or branches
* to calculate all data for them. Also updates the branches and builds list.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@
import org.apache.log4j.Logger;
import org.scenarioo.api.ScenarioDocuReader;
import org.scenarioo.api.files.ObjectFromDirectory;
import org.scenarioo.api.rules.Preconditions;
import org.scenarioo.business.builds.ScenarioDocuBuildsManager;
import org.scenarioo.business.builds.AliasResolver;
import org.scenarioo.business.diffViewer.comparator.ComparisonParameters;
import org.scenarioo.business.diffViewer.comparator.UseCaseComparator;
import org.scenarioo.dao.diffViewer.DiffReader;
Expand Down Expand Up @@ -60,13 +59,11 @@ public class ComparisonExecutor {
configurationRepository.getDocumentationDataDirectory());

private ExecutorService asyncComparisonExecutor;
private ScenarioDocuBuildsManager scenarioDocuBuildsManager;
private AliasResolver aliasResolver;

public ComparisonExecutor(ExecutorService executorService, ScenarioDocuBuildsManager scenarioDocuBuildsManager) {
Preconditions.checkNotNull(executorService, "executorService must not be null");
Preconditions.checkNotNull(scenarioDocuBuildsManager, "scenarioDocuBuildsManager must not be null");
public ComparisonExecutor(ExecutorService executorService, AliasResolver aliasResolver) {
asyncComparisonExecutor = executorService;
this.scenarioDocuBuildsManager = scenarioDocuBuildsManager;
this.aliasResolver = aliasResolver;
}

/**
Expand Down Expand Up @@ -206,10 +203,9 @@ protected synchronized List<ComparisonConfiguration> getComparisonConfigurations

List<ComparisonConfiguration> comparisonConfigurations = configurationRepository.getConfiguration()
.getComparisonConfigurations();
String resolvedBaseBranchName = scenarioDocuBuildsManager.resolveBranchAlias(baseBranchName);
String resolvedBaseBranchName = aliasResolver.resolveBranchAlias(baseBranchName);
for (ComparisonConfiguration comparisonConfiguration : comparisonConfigurations) {
String resolvedComparisonBranchName = scenarioDocuBuildsManager
.resolveBranchAlias(comparisonConfiguration.getBaseBranchName());
String resolvedComparisonBranchName = aliasResolver.resolveBranchAlias(comparisonConfiguration.getBaseBranchName());
if (resolvedBaseBranchName.equals(resolvedComparisonBranchName)) {
comparisonConfigurationsForBaseBranch.add(comparisonConfiguration);
}
Expand Down Expand Up @@ -242,7 +238,7 @@ protected ComparisonConfiguration resolveComparisonConfiguration(
comparisonBuildIdentifier = getPreviousBuildIdentifier(
comparisonConfiguration, baseBuildName, false);
} else {
comparisonBuildIdentifier = scenarioDocuBuildsManager.resolveBranchAndBuildAliases(
comparisonBuildIdentifier = this.aliasResolver.resolveBranchAndBuildAliases(
comparisonConfiguration.getComparisonBranchName(),
comparisonConfiguration.getComparisonBuildName());
}
Expand All @@ -255,12 +251,10 @@ protected ComparisonConfiguration resolveComparisonConfiguration(
}

private BuildIdentifier getPreviousBuildIdentifier(
ComparisonConfiguration comparisonConfiguration, String baseBuildName,
boolean needsSuccessfulBuild) {
ComparisonConfiguration comparisonConfiguration, String baseBuildName, boolean needsSuccessfulBuild) {

Build baseBuild = loadBaseBuild(comparisonConfiguration, baseBuildName);
String resolvedComparisonBranchName = scenarioDocuBuildsManager
.resolveBranchAlias(comparisonConfiguration.getComparisonBranchName());
String resolvedComparisonBranchName = aliasResolver.resolveBranchAlias(comparisonConfiguration.getComparisonBranchName());
Date baseBuildDate = baseBuild.getDate();
Date comparisonBuildDate = new Date(0);
Build comparisonBuild = null;
Expand Down Expand Up @@ -289,7 +283,7 @@ private BuildIdentifier getPreviousBuildIdentifier(

private Build loadBaseBuild(ComparisonConfiguration comparisonConfiguration, String baseBuildName) {

BuildIdentifier resolvedBuildIdentifier = scenarioDocuBuildsManager
BuildIdentifier resolvedBuildIdentifier = this.aliasResolver
.resolveBranchAndBuildAliases(comparisonConfiguration.getBaseBranchName(), baseBuildName);
Build baseBuild = docuReader.loadBuild(resolvedBuildIdentifier.getBranchName(),
resolvedBuildIdentifier.getBuildName());
Expand All @@ -304,8 +298,7 @@ private Build loadBaseBuild(ComparisonConfiguration comparisonConfiguration, Str

private ComparisonConfiguration getResolvedComparisonConfiguration(
ComparisonConfiguration comparisonConfiguration, BuildIdentifier comparisonBuildIdentifier) {
String resolvedBaseBranchName = scenarioDocuBuildsManager
.resolveBranchAlias(comparisonConfiguration.getBaseBranchName());
String resolvedBaseBranchName = aliasResolver.resolveBranchAlias(comparisonConfiguration.getBaseBranchName());

ComparisonConfiguration resolvedComparisonConfiguration = new ComparisonConfiguration();
resolvedComparisonConfiguration.setBaseBranchName(resolvedBaseBranchName);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.scenarioo.rest.diffViewer;

import org.apache.log4j.Logger;
import org.scenarioo.business.builds.BranchAliasResolver;
import org.scenarioo.business.builds.ScenarioDocuBuildsManager;
import org.scenarioo.dao.basic.FileSystemOperationsDao;
import org.scenarioo.dao.diffViewer.impl.DiffReaderXmlImpl;
Expand Down Expand Up @@ -108,7 +109,7 @@ public Response importAndCompare(
@PathParam("comparisonName") final String comparisonName,
BuildIdentifier comparisonBuildIdentifier) {

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);
BuildIdentifier buildIdentifier = new BuildIdentifier(resolvedBranchName, buildName);
if(buildFolderDoesNotExist(buildIdentifier)) {
logger.info("Can't import. Build " + branchName + "/" + buildName + " does not exist.");
Expand All @@ -135,7 +136,7 @@ private BuildDiffInfo getComparisonCalculation(String branchName, String buildNa
}

private BuildIdentifier resolveAndCreateBuildIdentifier(@PathParam("branchName") String branchName, @PathParam("buildName") String buildName) {
String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);
return new BuildIdentifier(resolvedBranchName, buildName);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,40 +1,26 @@
/* scenarioo-server
* Copyright (C) 2014, scenarioo.org Development Team
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.scenarioo.rest.sketcher.issue;

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.scenarioo.api.exception.ResourceNotFoundException;
import org.scenarioo.business.builds.BranchAliasResolver;
import org.scenarioo.business.builds.ScenarioDocuBuildsManager;
import org.scenarioo.dao.sketcher.SketcherDao;
import org.scenarioo.model.sketcher.Issue;
Expand All @@ -45,6 +31,15 @@
import org.scenarioo.rest.sketcher.issue.dto.SketchIds;
import org.scenarioo.utils.IdGenerator;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

@Path("/rest/branch/{branchName}/issue")
public class IssueResource {

Expand All @@ -60,7 +55,7 @@ public class IssueResource {
public Response loadIssueSummaries(@PathParam("branchName") final String branchName) {
LOGGER.info("REQUEST: loadIssueSummaries(" + branchName + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

try {
final List<Issue> issues = sketcherDao.loadIssues(resolvedBranchName);
Expand All @@ -77,7 +72,7 @@ public Response loadSketchIds(@PathParam("branchName") final String branchName,
@PathParam("issueId") final String issueId) {
LOGGER.info("REQUEST: loadSketchIds(" + branchName + ", " + issueId + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

final IssueWithSketch issueWitchSketch = loadIssueAndSketch(resolvedBranchName, issueId);

Expand All @@ -93,7 +88,7 @@ public Response loadIssueWithSketch(@PathParam("branchName") final String branch
@PathParam("issueId") final String issueId) {
LOGGER.info("REQUEST: loadIssueWithSketch(" + branchName + ", " + issueId + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

IssueWithSketch result = null;

Expand Down Expand Up @@ -138,7 +133,7 @@ public Response updateIssue(@PathParam("branchName") final String branchName,
final Issue updatedIssue) {
LOGGER.info("REQUEST: updateIssue(" + branchName + ", " + issueId + ", " + updatedIssue + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

final Issue existingIssue = sketcherDao.loadIssue(resolvedBranchName, issueId);
existingIssue.setDateModified(new Date());
Expand Down Expand Up @@ -270,4 +265,4 @@ private IssueWithSketch loadIssueAndSketch(final String branchName, final String
return result;
}

}
}
Original file line number Diff line number Diff line change
@@ -1,38 +1,33 @@
/* scenarioo-server
* Copyright (C) 2014, scenarioo.org Development Team
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.scenarioo.rest.sketcher.scenarioSketch;

import java.util.Date;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.apache.log4j.Logger;
import org.scenarioo.business.builds.ScenarioDocuBuildsManager;
import org.scenarioo.business.builds.BranchAliasResolver;
import org.scenarioo.dao.sketcher.SketcherDao;
import org.scenarioo.model.sketcher.ScenarioSketch;
import org.scenarioo.utils.IdGenerator;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Date;

@Path("/rest/branch/{branchName}/issue/{issueId}/scenariosketch")
public class ScenarioSketchResource {

Expand All @@ -47,7 +42,7 @@ public Response storeScenarioSketch(@PathParam("branchName") final String branch
final ScenarioSketch scenarioSketch) {
LOGGER.info("REQUEST: storeScenarioSketch(" + branchName + ", " + scenarioSketch + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

Date now = new Date();
scenarioSketch.setScenarioSketchId(IdGenerator.generateRandomId());
Expand All @@ -68,7 +63,7 @@ public Response updateScenarioSketch(@PathParam("branchName") final String branc
@PathParam("scenarioSketchId") final String scenarioSketchId, final ScenarioSketch updatedScenarioSketch) {
LOGGER.info("REQUEST: updateScenarioSketch(" + branchName + ", " + issueId + ", " + scenarioSketchId + ")");

String resolvedBranchName = ScenarioDocuBuildsManager.INSTANCE.resolveBranchAlias(branchName);
String resolvedBranchName = new BranchAliasResolver().resolveBranchAlias(branchName);

final ScenarioSketch scenarioSketch = sketcherDao.loadScenarioSketch(resolvedBranchName, issueId, scenarioSketchId);
scenarioSketch.setDateModified(new Date());
Expand Down

0 comments on commit 1da248d

Please sign in to comment.