import com.opensymphony.xwork2.Validateable;
import com.opensymphony.xwork2.Preparable;
import org.apache.archiva.audit.Auditable;
+import org.apache.archiva.audit.AuditEvent;
import org.apache.archiva.stagerepository.merge.Maven2RepositoryMerger;
import org.apache.archiva.metadata.model.ArtifactMetadata;
+import org.apache.archiva.metadata.repository.filter.Filter;
+import org.apache.archiva.metadata.repository.filter.IncludesFilter;
+import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
-import java.io.File;
import java.util.List;
/**
*/
private ArchivaConfiguration configuration;
+ /**
+ * @plexus.requirement role-hint="default"
+ */
+ private MetadataRepository metadataRepository;
+
private ManagedRepositoryConfiguration repository;
private String repoid;
private final String action = "merge";
- List<ArtifactMetadata> conflictList;
+ private final String noConflicts = "NO CONFLICTS";
- public String doMerge()
+ private final String hasConflicts = "CONFLICTS";
+
+ private List<ArtifactMetadata> conflictSourceArtifacts;
+
+ public String getConflicts()
{
targetRepoId = repoid + "-stage";
Configuration config = configuration.getConfiguration();
if ( targetRepoConfig != null )
{
+ return hasConflicts;
- try
+ }
+ else
+ {
+ return ERROR;
+ }
+ }
+
+ public String doMerge()
+ throws Exception
+ {
+ try
+ {
+ List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( targetRepoId );
+ repositoryMerger.merge( targetRepoId, repoid );
+ triggerAuditEvent( targetRepoId, "file-eshan", AuditEvent.MERGING_REPOSITORIES );
+
+ for ( ArtifactMetadata metadata : sourceArtifacts )
{
- repositoryMerger.merge( repoid, targetRepoId );
+ triggerAuditEvent( targetRepoId, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
}
- catch ( Exception e )
+ return SUCCESS;
+ }
+ catch ( Exception ex )
+ {
+ return ERROR;
+ }
+ }
+
+ public String mergeBySkippingConflicts()
+ {
+ try
+ {
+ List<ArtifactMetadata> sourceArtifacts = metadataRepository.getArtifacts( targetRepoId );
+ sourceArtifacts.removeAll( conflictSourceArtifacts );
+ Filter<ArtifactMetadata> artifactsWithOutConflicts =
+ new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
+ repositoryMerger.merge( targetRepoId, repoid, artifactsWithOutConflicts );
+
+ for ( ArtifactMetadata metadata : sourceArtifacts )
{
- return ERROR;
+
+ triggerAuditEvent( targetRepoId, metadata.getId(), AuditEvent.MERGING_REPOSITORIES );
+//
}
return SUCCESS;
+
}
- else
+ catch ( Exception ex )
{
return ERROR;
}
try
{
- conflictList = repositoryMerger.mergeWithOutConflictArtifacts( repoid, targetRepoId );
+ conflictSourceArtifacts = repositoryMerger.getConflictsartifacts( targetRepoId, repoid );
}
catch ( Exception e )
{
return ERROR;
}
-
return SUCCESS;
}
+ public ManagedRepositoryConfiguration getRepository()
+ {
+ return repository;
+ }
+
+ public void setRepository( ManagedRepositoryConfiguration repository )
+ {
+ this.repository = repository;
+ }
+
public void prepare()
throws Exception
{
+ targetRepoId = repoid + "-stage";
+ conflictSourceArtifacts = repositoryMerger.getConflictsartifacts( targetRepoId, repoid );
this.repository = new ManagedRepositoryConfiguration();
}
- public ManagedRepositoryConfiguration getRepository()
+ public String getTargetRepoId()
{
- return repository;
+ return targetRepoId;
}
- public void setRepository( ManagedRepositoryConfiguration repository )
+ public void setTargetRepoId( String targetRepoId )
{
- this.repository = repository;
+ this.targetRepoId = targetRepoId;
}
public String getRepoid()
{
this.repoid = repoid;
}
+
+ public List<ArtifactMetadata> getConflictSourceArtifacts()
+ {
+ return conflictSourceArtifacts;
+ }
+
+ public void setConflictSourceArtifacts( List<ArtifactMetadata> conflictSourceArtifacts )
+ {
+ this.conflictSourceArtifacts = conflictSourceArtifacts;
+ }
}
+
<interceptor-ref name="configuredPrepareParamsStack"/>
</action>
- <action name="conflictsArtifacts" class="mergeAction" method="mergeWithOutConlficts" >
- <result name="success"> /WEB-INF/jsp/mergeActionResults.jsp</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="merge" class="mergeAction" method="doMerge" >
- <!--<result name="input"> /WEB-INF/jsp/mergeAction.jsp</result>-->
- <!--<result name="conflictsAvailable"> /WEB-INF/jsp/mergeExcludeConflicts.jsp</result>-->
- <result name="success"> /WEB-INF/jsp/mergeActionResults.jsp</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
+ <action name="merge" class="mergeAction" method="getConflicts">
+ <result name="CONFLICTS">/WEB-INF/jsp/mergeExcludeConflicts.jsp</result>
+ <result name="success">/WEB-INF/jsp/mergeActionResults.jsp</result>
+ <interceptor-ref name="configuredPrepareParamsStack"/>
+ </action>
<action name="deleteRemoteRepository" class="deleteRemoteRepositoryAction" method="input">
<result name="input">/WEB-INF/jsp/admin/deleteRemoteRepository.jsp</result>
+<%@ page import="java.io.File" %>
<%--
- ~ 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.
- --%>
+~ 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.
+--%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<h3 class="repository">${repository.name}</h3>
<table class="infoTable">
-<tr>
- <th>Groups</th>
- <td>
- <c:forEach items="${repositoryToGroupMap[repository.id]}" varStatus="i" var="group">
- ${group}<c:if test="${!i.last}">,</c:if>
- </c:forEach>
- </td>
-</tr>
-<tr>
- <th>Delete Released Snapshots</th>
- <td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon"></td>
-</tr>
-<tr>
- <th>Repository Purge By Days Older Than</th>
- <td>${repository.daysOlder}</td>
-</tr>
-<tr>
- <th>Repository Purge By Retention Count</th>
- <td>${repository.retentionCount}</td>
-</tr>
-<tr>
- <th>Scanning Cron</th>
- <td>${repository.refreshCronExpression}</td>
-</tr>
-<tr>
- <th>
- Actions
- </th>
- <td>
- <c:choose>
- <c:when test="${empty (stats)}">
- No Statistics Available.
- </c:when>
- <c:otherwise>
- <table>
- <tr>
- <th>Last Scanned</th>
- <td>${stats.scanStartTime}</td>
- </tr>
- <tr>
- <th>Duration</th>
- <td>${stats.duration} ms</td>
- </tr>
- <tr>
- <th>Total File Count</th>
- <td>${stats.totalFileCount}
- </tr>
- <tr>
- <th>New Files Found</th>
- <td>${stats.newFileCount}
- </tr>
- </table>
- </c:otherwise>
- </c:choose>
- </td>
-</tr>
-<c:if test="${!empty (repositoryToGroupMap[repository.id])}">
<tr>
<th>Groups</th>
<td>
</c:forEach>
</td>
</tr>
-</c:if>
-<tr>
- <th>Releases Included</th>
- <td class="${repository.releases ? 'donemark' : 'errormark'} booleanIcon"></td>
-</tr>
-<tr>
- <th>Snapshots Included</th>
- <td class="${repository.snapshots ? 'donemark' : 'errormark'} booleanIcon"></td>
-</tr>
-<c:if test="${repository.snapshots}">
<tr>
<th>Delete Released Snapshots</th>
<td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon"></td>
- </tr>
+ </tr>
<tr>
<th>Repository Purge By Days Older Than</th>
<td>${repository.daysOlder}</td>
<th>Repository Purge By Retention Count</th>
<td>${repository.retentionCount}</td>
</tr>
-</c:if>
-<tr>
- <th>Scanned</th>
- <td class="${repository.scanned ? 'donemark' : 'errormark'} booleanIcon"></td>
-</tr>
-<c:if test="${repository.scanned}">
<tr>
<th>Scanning Cron</th>
<td>${repository.refreshCronExpression}</td>
Actions
</th>
<td>
- <redback:ifAuthorized permission="archiva-run-indexer">
- <s:form action="indexRepository" theme="simple">
- <s:hidden name="repoid" value="%{#attr.repository.id}"/>
- <table>
- <tr>
- <td><s:checkbox name="scanAll" value="scanAll"/>Process All Artifacts</td>
- </tr>
- <tr>
- <td><s:submit value="Scan Repository Now"/></td>
- </tr>
- </table>
- </s:form>
- </redback:ifAuthorized>
- </td>
- </tr>
- <tr>
- <th>Stats</th>
- <td>
- <c:set var="stats" value="${repositoryStatistics[repository.id]}"/>
<c:choose>
<c:when test="${empty (stats)}">
No Statistics Available.
</c:choose>
</td>
</tr>
-</c:if>
-<tr>
- <th>POM Snippet</th>
- <td>
- <archiva:copy-paste-snippet object="${repository}" wrapper="toggle"/>
- </td>
-
-</tr>
-
-
-<c:set var="str" value="${repository.id}"/>
-<jsp:useBean id="str" type="java.lang.String"/>
-<c:if test='<%= !( (str.equalsIgnoreCase("internal") ) || (str.equalsIgnoreCase( "snapshots" )) )%>'>
- <tr>
- <th>Merge Actions</th>
- <td >
- <redback:ifAuthorized permission="archiva-run-indexer">
- <s:form action="merge" theme="simple">
- <s:hidden name="repoid" value="%{#attr.repository.id}"/>
- <table>
- <tr>
- <td><s:submit value="Merge All"/></td>
- </tr>
+ <c:if test="${!empty (repositoryToGroupMap[repository.id])}">
+ <tr>
+ <th>Groups</th>
+ <td>
+ <c:forEach items="${repositoryToGroupMap[repository.id]}" varStatus="i" var="group">
+ ${group}<c:if test="${!i.last}">,</c:if>
+ </c:forEach>
+ </td>
+ </tr>
+ </c:if>
+ <tr>
+ <th>Releases Included</th>
+ <td class="${repository.releases ? 'donemark' : 'errormark'} booleanIcon"></td>
+ </tr>
+ <tr>
+ <th>Snapshots Included</th>
+ <td class="${repository.snapshots ? 'donemark' : 'errormark'} booleanIcon"></td>
+ </tr>
+ <c:if test="${repository.snapshots}">
+ <tr>
+ <th>Delete Released Snapshots</th>
+ <td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon"></td>
+ </tr>
+ <tr>
+ <th>Repository Purge By Days Older Than</th>
+ <td>${repository.daysOlder}</td>
+ </tr>
+ <tr>
+ <th>Repository Purge By Retention Count</th>
+ <td>${repository.retentionCount}</td>
+ </tr>
+ </c:if>
+ <tr>
+ <th>Scanned</th>
+ <td class="${repository.scanned ? 'donemark' : 'errormark'} booleanIcon"></td>
+ </tr>
+ <c:if test="${repository.scanned}">
+ <tr>
+ <th>Scanning Cron</th>
+ <td>${repository.refreshCronExpression}</td>
+ </tr>
+ <tr>
+ <th>
+ Actions
+ </th>
+ <td>
+ <redback:ifAuthorized permission="archiva-run-indexer">
+ <s:form action="indexRepository" theme="simple">
+ <s:hidden name="repoid" value="%{#attr.repository.id}"/>
+ <table>
+ <tr>
+ <td><s:checkbox name="scanAll" value="scanAll"/>Process All Artifacts</td>
+ </tr>
+ <tr>
+ <td><s:submit value="Scan Repository Now"/></td>
+ </tr>
+ </table>
+ </s:form>
+ </redback:ifAuthorized>
+ </td>
+ </tr>
+ <tr>
+ <th>Stats</th>
+ <td>
+ <c:set var="stats" value="${repositoryStatistics[repository.id]}"/>
+ <c:choose>
+ <c:when test="${empty (stats)}">
+ No Statistics Available.
+ </c:when>
+ <c:otherwise>
+ <table>
+ <tr>
+ <th>Last Scanned</th>
+ <td>${stats.scanStartTime}</td>
+ </tr>
+ <tr>
+ <th>Duration</th>
+ <td>${stats.duration} ms</td>
+ </tr>
+ <tr>
+ <th>Total File Count</th>
+ <td>${stats.totalFileCount}
+ </tr>
+ <tr>
+ <th>New Files Found</th>
+ <td>${stats.newFileCount}
+ </tr>
+ </table>
+ </c:otherwise>
+ </c:choose>
+ </td>
+ </tr>
+ </c:if>
+ <tr>
+ <th>POM Snippet</th>
+ <td>
+ <archiva:copy-paste-snippet object="${repository}" wrapper="toggle"/>
+ </td>
- </table>
- </s:form>
- </redback:ifAuthorized>
- </td>
- <td align="left">
- <redback:ifAuthorized permission="archiva-run-indexer">
- <s:form action="conflictsArtifacts" theme="simple">
- <s:hidden name="repoid" value="%{#attr.repository.id}"/>
- <table>
- <tr>
- <td align="left" ><s:submit value="Merge With skip"/></td>
- </tr>
+ </tr>
- </table>
- </s:form>
- </redback:ifAuthorized>
- </td>
-</tr>
-</c:if>
+ <c:set var="str" value="${repository.id}" />
+ <jsp:useBean id="str" type="java.lang.String" scope="page"/>
+ <c:set var="location" value="${repository.location}"/>
+ <jsp:useBean id="location" type="java.lang.String" scope="page"/>
+ <c:if
+ test='<%= !( (str.equalsIgnoreCase("internal") ) || (str.equalsIgnoreCase( "snapshots" )) ) &&
+ new File (new File(location ).getParent() ,str + "-stage" ).exists()%>'>
+ <tr>
+ <th>
+ stage repository location
+ </th>
+ <td>
+ ${repository.location}${'-stage'}
+ </td>
+ </tr>
+ <tr>
+ <th>Merge Actions</th>
+ <td>
+ <redback:ifAuthorized permission="archiva-run-indexer">
+ <s:form action="merge" theme="simple">
+ <s:hidden name="repoid" value="%{#attr.repository.id}"/>
+ <%--<s:hidden name="repository" value="%{repository}"/>--%>
+ <table>
+ <tr>
+ <td><s:submit value="Merge"/></td>
+ </tr>
+
+ </table>
+ </s:form>
+ </redback:ifAuthorized>
+ </td>
+ </tr>
+
+
+ </c:if>
</table>
<html>
<head>
- <title>Admin: Add Managed Repository</title>
+ <title>Admin: Merge Staging Repository</title>
<s:head/>
</head>
<body>
-<h1>Admin: Add Managed Repository</h1>
+<h1>Admin: Merge Staging Repository</h1>
- <div class="warningbox">
- <p>
- <strong>WARNING: There Are some conflicts Artifacts.</strong>
- </p>
- </div>
+<p>
+ Are you sure you want to merge the repository?
+</p>
- <p>
- Are you sure you want to merge the Repository
- <%--<c:choose>--%>
- <%--<c:when test="${action == 'merge'}">add</c:when>--%>
- <%--<c:otherwise>update</c:otherwise>--%>
- <%--</c:choose>--%>
+<div class="infobox">
+ <table class="infotable">
- </p>
-
- <div class="infobox">
- <table class="infotable">
- <tr>
- <td>ID:</td>
- <td><code>${repository.id}</code></td>
- </tr>
- <tr>
- <td>Name:</td>
- <td>${repository.name}</td>
- </tr>
- <tr>
- <td>Directory:</td>
- <td>${repository.location}</td>
- </tr>
- <tr>
- <td>Index Directory:</td>
- <td>${repository.indexDir}</td>
- </tr>
- <tr>
- <td>Type:</td>
- <%--td>${repository.layout}</td--%>
- <td>
- <c:choose>
- <c:when test="${repository.layout == 'default'}">
- Maven 2.x Repository
- </c:when>
- <c:otherwise>
- Maven 1.x Repository
- </c:otherwise>
- </c:choose>
- </td>
- </tr>
- <tr>
- <td>Cron:</td>
- <td>${repository.refreshCronExpression}</td>
- </tr>
- <tr>
- <td>Repository Purge By Days Older Than:</td>
- <td>${repository.daysOlder}</td>
- </tr>
- <tr>
- <td>Repository Purge By Retention Count:</td>
- <td>${repository.retentionCount}</td>
- </tr>
- <tr>
- <td>Releases Included:</td>
- <td class="${repository.releases ? 'donemark' : 'errormark'} booleanIcon">
- </tr>
- <tr>
- <td>Snapshots Included:</td>
- <td class="${repository.snapshots ? 'donemark' : 'errormark'} booleanIcon">
- </tr>
- <tr>
- <td>Scannable:</td>
- <td class="${repository.scanned ? 'donemark' : 'errormark'} booleanIcon">
- </tr>
- <tr>
- <td>Delete Released Snapshots:</td>
- <td class="${repository.deleteReleasedSnapshots ? 'donemark' : 'errormark'} booleanIcon">
- </tr>
- </table>
- </div>
-
- <s:form method="post" action="%{action}" namespace="/admin" validate="true" theme="simple">
- <div class="buttons">
- <s:hidden name="repository.id" value="%{#attr.repository.id}"/>
- <s:hidden name="repository.name" value="%{#attr.repository.name}"/>
- <s:hidden name="repository.location" value="%{#attr.repository.location}"/>
- <s:hidden name="repository.indexDir" value="%{#attr.repository.indexDir}"/>
- <s:hidden name="repository.layout" value="%{#attr.repository.layout}"/>
- <s:hidden name="repository.refreshCronExpression" value="%{#attr.repository.refreshCronExpression}"/>
- <s:hidden name="repository.daysOlder" value="%{#attr.repository.daysOlder}"/>
- <s:hidden name="repository.retentionCount" value="%{#attr.repository.retentionCount}"/>
- <s:hidden name="repository.releases" value="%{#attr.repository.releases}"/>
- <s:hidden name="repository.snapshots" value="%{#attr.repository.snapshots}"/>
- <s:hidden name="repository.scanned" value="%{#attr.repository.scanned}"/>
- <s:hidden name="repository.deleteReleasedSnapshots" value="%{#attr.repository.deleteReleasedSnapshots}"/>
-
- <%--<c:choose>--%>
-
- <s:submit value="Save" method="merge"/>
- <%--<c:when test="${action == 'addRepository'}">--%>
- <%--<s:submit value="Save" method="confirmAdd"/>--%>
- <%--</c:when>--%>
- <%--<c:otherwise>--%>
- <%--<s:submit value="Save" method="confirmUpdate"/>--%>
- <%--</c:otherwise>--%>
- <%--</c:choose>--%>
-
- <s:submit value="Cancel" method="execute"/>
- </div>
- </s:form>
+ <c:choose>
+ <c:when test="${empty (conflictSourceArtifacts)}">
+ <h1>No conflicting artifacts</h1>
+ <s:form method="post" action="merge" namespace="/admin" validate="false" theme="simple">
+ <s:hidden name="repoid"/>
+ <div class="buttons">
+ <s:submit value="MergeAll" method="doMerge"/>
+ </div>
+ </s:form>
+ </c:when>
+ <c:otherwise>
+ <div class="warningbox">
+ <p>
+ <strong>WARNING: The following are the artifacts in conflict.</strong>
+ </p>
+ </div>
+ <c:forEach items="${conflictSourceArtifacts}" var="artifact">
+ <tr>
+ <td>Artifact Id :</td>
+ <td><code>${artifact.id}</code></td>
+ </tr>
+ </c:forEach>
+ <tr>
+ <td>
+ <s:form action="merge" method="post" namespace="/admin" validate="false">
+ <s:hidden name="repoid"/>
+ <div class="buttons">
+ <table>
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td>
+ <s:submit value="MergeAll" method="doMerge"/>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <table>
+ <tr>
+ <td>
+ <s:submit value="Merge With Skipp" method="mergeBySkippingConflicts"/>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </s:form>
+ </td>
+ </tr>
+ </c:otherwise>
+ </c:choose>
+ </table>
+</div>
</body>
</html>
public static final String REMOVE_SCANNED = "Removed in Filesystem";
+ public static final String MERGING_REPOSITORIES = "Merging repositories";
+
// configuration events
public static final String ADD_MANAGED_REPO = "Added Managed Repository";
public void auditEvent( AuditEvent event )
{
// for now we only log upload events, some of the others are quite noisy
- if ( event.getAction().equals( AuditEvent.CREATE_FILE ) || event.getAction().equals( AuditEvent.UPLOAD_FILE ) )
+ if ( event.getAction().equals( AuditEvent.CREATE_FILE ) || event.getAction().equals( AuditEvent.UPLOAD_FILE ) ||
+ event.getAction().equals( AuditEvent.MERGING_REPOSITORIES ) )
{
auditManager.addAuditEvent( event );
}
List<ArtifactMetadata> artifactsInSourceRepo = metadataRepository.getArtifacts( sourceRepoId );
for ( ArtifactMetadata artifactMetadata : artifactsInSourceRepo )
{
+ artifactMetadata.setRepositoryId( targetRepoId );
createFolderStructure( sourceRepoId, targetRepoId, artifactMetadata );
}
}
return metadata;
}
- public List<ArtifactMetadata> mergeWithOutConflictArtifacts( String sourceRepo, String targetRepo )
+ public List<ArtifactMetadata> getConflictsartifacts( String sourceRepo, String targetRepo )
throws Exception
{
sourceArtifacts.removeAll( conflictsArtifacts );
Filter<ArtifactMetadata> artifactsWithOutConflicts = new IncludesFilter<ArtifactMetadata>( sourceArtifacts );
- merge( sourceRepo, targetRepo, artifactsWithOutConflicts );
+// merge( sourceRepo, targetRepo, artifactsWithOutConflicts );
return conflictsArtifacts;
}
when( metadataRepository.getArtifacts( sourceRepoId ) ).thenReturn( sourceRepoArtifactsList );
when( metadataRepository.getArtifacts( TEST_REPO_ID ) ).thenReturn( targetRepoArtifactsList );
- assertEquals( 1, repositoryMerger.mergeWithOutConflictArtifacts( sourceRepoId, TEST_REPO_ID ).size() );
+ assertEquals( 1, repositoryMerger.getConflictsartifacts( sourceRepoId, TEST_REPO_ID ).size() );
verify( metadataRepository ).getArtifacts( TEST_REPO_ID );
}