Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java24
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java25
2 files changed, 47 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java b/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java
index 023ce05ca..14659399d 100644
--- a/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java
+++ b/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java
@@ -45,6 +45,21 @@ public class CompositeRepositoryTask extends AbstractRepositoryTask {
* Add the listed repositories to the composite repository
*/
public void addConfiguredAdd(RepositoryList list) {
+ if (list.getRepoLocation() != null) {
+ RepositoryDescriptor descriptor = new RepositoryDescriptor();
+ //don't use RepositoryList#getRepoLocationURI() because we want relative URIs if they were specified
+ try {
+ descriptor.setLocation(URIUtil.fromString(list.getRepoLocation()));
+ descriptor.setOptional(list.isOptional());
+ if (!list.isBoth()) {
+ descriptor.setKind(list.isArtifact() ? RepositoryDescriptor.KIND_ARTIFACT : RepositoryDescriptor.KIND_METADATA);
+ }
+ ((CompositeRepositoryApplication) application).addChild(descriptor);
+ } catch (URISyntaxException e) {
+ //no good
+ }
+ }
+
for (DestinationRepository repo : list.getRepositoryList()) {
((CompositeRepositoryApplication) application).addChild(repo.getDescriptor());
}
@@ -54,6 +69,15 @@ public class CompositeRepositoryTask extends AbstractRepositoryTask {
* Remove the listed repositories from the composite repository
*/
public void addConfiguredRemove(RepositoryList list) {
+ if (list.getRepoLocation() != null) {
+ RepositoryDescriptor descriptor = new RepositoryDescriptor();
+ descriptor.setLocation(list.getRepoLocationURI());
+ descriptor.setOptional(list.isOptional());
+ if (!list.isBoth()) {
+ descriptor.setKind(list.isArtifact() ? RepositoryDescriptor.KIND_ARTIFACT : RepositoryDescriptor.KIND_METADATA);
+ }
+ ((CompositeRepositoryApplication) application).addChild(descriptor);
+ }
for (DestinationRepository repo : list.getRepositoryList()) {
((CompositeRepositoryApplication) application).removeChild(repo.getDescriptor());
}
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java
index 759155a62..4ea8f7480 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java
@@ -11,8 +11,7 @@
package org.eclipse.equinox.p2.tests.ant;
import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URI;
+import java.net.*;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.URIUtil;
import org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository;
@@ -124,6 +123,28 @@ public class CompositeRepositoryTaskTest extends AbstractAntProvisioningTest {
assertTrue("Repository does not contain child", repo.getChildren().contains(childSite));
}
+ public void testAddChild() throws URISyntaxException {
+ // Create repository
+ createCompositeRepository(TYPE_METADATA);
+ // Create the modify repository task
+ AntTaskElement modify = createCompositeRepositoryTaskElement(TYPE_METADATA);
+ addTask(modify);
+
+ // Create the Add element
+ AntTaskElement add = new AntTaskElement(ADD_ELEMENT);
+ add.addAttribute("location", "childSite");
+ add.addAttribute("kind", TYPE_METADATA);
+ modify.addElement(add);
+
+ // Run the task
+ runAntTask();
+
+ CompositeMetadataRepository repo = (CompositeMetadataRepository) getCompositeRepository(TYPE_METADATA);
+ URI child = URIUtil.fromString("childSite");
+ child = URIUtil.makeAbsolute(child, repo.getLocation());
+ assertTrue("Repository does not contain child", repo.getChildren().contains(child));
+ }
+
/*
* Test adding a child to both types of repositories (which already exist)
*/

Back to the top