### Eclipse Workspace Patch 1.0 #P org.eclipse.equinox.p2.repository.tools Index: src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.repository.tools/src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java,v retrieving revision 1.4 diff -u -r1.4 CompositeRepositoryTask.java --- src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java 9 Apr 2010 20:15:37 -0000 1.4 +++ src_ant/org/eclipse/equinox/p2/internal/repository/tools/tasks/CompositeRepositoryTask.java 23 Jun 2010 18:28:32 -0000 @@ -45,6 +45,21 @@ * 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 @@ * 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()); } #P org.eclipse.equinox.p2.tests Index: src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java,v retrieving revision 1.2 diff -u -r1.2 CompositeRepositoryTaskTest.java --- src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java 13 Jan 2010 17:28:24 -0000 1.2 +++ src/org/eclipse/equinox/p2/tests/ant/CompositeRepositoryTaskTest.java 23 Jun 2010 18:28:32 -0000 @@ -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 @@ 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) */