You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by br...@apache.org on 2013/08/01 16:17:30 UTC
svn commit: r1509243 - in
/ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo:
RepoCommands.java RepositoryUtil.java
Author: bramk
Date: Thu Aug 1 14:17:30 2013
New Revision: 1509243
URL: http://svn.apache.org/r1509243
Log:
ACE-366 Do not copy resources that exist in target repo
Modified:
ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepoCommands.java
ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepositoryUtil.java
Modified: ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepoCommands.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepoCommands.java?rev=1509243&r1=1509242&r2=1509243&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepoCommands.java (original)
+++ ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepoCommands.java Thu Aug 1 14:17:30 2013
@@ -19,9 +19,11 @@
package org.apache.ace.gogo.repo;
import static org.apache.ace.gogo.repo.RepositoryUtil.copyResources;
+import static org.apache.ace.gogo.repo.RepositoryUtil.copyResource;
import static org.apache.ace.gogo.repo.RepositoryUtil.createRepository;
import static org.apache.ace.gogo.repo.RepositoryUtil.deleteResource;
import static org.apache.ace.gogo.repo.RepositoryUtil.findResources;
+import static org.apache.ace.gogo.repo.RepositoryUtil.getIdentityVersionRequirement;
import static org.apache.ace.gogo.repo.RepositoryUtil.getRequirement;
import static org.apache.ace.gogo.repo.RepositoryUtil.getUrl;
import static org.apache.ace.gogo.repo.RepositoryUtil.indexDirectory;
@@ -86,7 +88,17 @@ public class RepoCommands {
Requirement requirement = getRequirement(filter);
List<Resource> resources = findResources(sourceRepo, requirement);
- copyResources(sourceRepo, targetRepo, resources);
+
+ for (Resource resource : resources) {
+ List<Resource> existingResources = findResources(targetRepo, getIdentityVersionRequirement(resource));
+ if (existingResources.size() == 0) {
+ Resource copied = copyResource(sourceRepo, targetRepo, resource);
+ System.out.println("copied: " + copied);
+ }
+ else {
+ System.out.println("skipped: " + existingResources.get(0));
+ }
+ }
}
@Descriptor("remove resources from a repository")
Modified: ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepositoryUtil.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepositoryUtil.java?rev=1509243&r1=1509242&r2=1509243&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepositoryUtil.java (original)
+++ ace/trunk/org.apache.ace.gogo/src/org/apache/ace/gogo/repo/RepositoryUtil.java Thu Aug 1 14:17:30 2013
@@ -201,58 +201,14 @@ public class RepositoryUtil {
}
public static List<Resource> copyResources(AbstractIndexedRepo sourceRepo, AbstractIndexedRepo targetRepo, Requirement requirement) throws Exception {
-
List<Resource> sourceResources = findResources(sourceRepo, requirement);
List<Resource> targetResources = new ArrayList<Resource>();
-
for (Resource resource : sourceResources) {
- File file = sourceRepo.get(getIdentity(resource), getVersion(resource).toString(), Strategy.EXACT, null);
- InputStream input = null;
- try {
- input = new FileInputStream(file);
- if (targetRepo instanceof AceObrRepository) {
- // ACE OBR can handle non bundle resource if we pass a filename
- AceObrRepository aceToRepo = (AceObrRepository) targetRepo;
- aceToRepo.upload(input, getFileName(resource), getMimetype(resource));
- }
- else {
- targetRepo.put(input, null);
- }
- targetRepo.reset();
-
- List<Resource> copied = findResources(targetRepo, getIdentityVersionRequirement(resource));
- if (copied.size() != 1) {
- throw new IllegalStateException("expected one match");
- }
- targetResources.addAll(copied);
- }
- finally {
- if (input != null)
- input.close();
- }
+ targetResources.add(copyResource(sourceRepo, targetRepo, resource));
}
return targetResources;
}
- public static void uploadResource(AbstractIndexedRepo targetRepo, URL location, String filename) throws Exception {
- InputStream input = null;
- try {
- input = location.openStream();
- if (targetRepo instanceof AceObrRepository) {
- // ACE OBR can handle non bundle resource if we pass a filename
- AceObrRepository aceToRepo = (AceObrRepository) targetRepo;
- aceToRepo.upload(input, filename, null);
- }
- else {
- targetRepo.put(input, null);
- }
- }
- finally {
- if (input != null)
- input.close();
- }
- }
-
public static List<Resource> copyResources(AbstractIndexedRepo sourceRepo, AbstractIndexedRepo targetRepo, List<Resource> resources) throws Exception {
List<Resource> targetResources = new LinkedList<Resource>();
for (Resource resource : resources) {
@@ -276,6 +232,7 @@ public class RepositoryUtil {
else {
targetRepo.put(input, null);
}
+ targetRepo.reset();
List<Resource> resultResources = findResources(targetRepo, getIdentity(resource), getVersion(resource).toString());
if (resultResources == null || resultResources.size() == 0) {
@@ -289,6 +246,25 @@ public class RepositoryUtil {
}
}
+ public static void uploadResource(AbstractIndexedRepo targetRepo, URL location, String filename) throws Exception {
+ InputStream input = null;
+ try {
+ input = location.openStream();
+ if (targetRepo instanceof AceObrRepository) {
+ // ACE OBR can handle non bundle resource if we pass a filename
+ AceObrRepository aceToRepo = (AceObrRepository) targetRepo;
+ aceToRepo.upload(input, filename, null);
+ }
+ else {
+ targetRepo.put(input, null);
+ }
+ }
+ finally {
+ if (input != null)
+ input.close();
+ }
+ }
+
public static List<Resource> findResources(Repository repository) {
return findResources(repository, "*");
}