Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 126082 Details for
Bug 264389
[publisher] Use modified url as site qualifier
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Upated patch
clipboard.txt (text/plain), 16.04 KB, created by
Ian Bull
on 2009-02-18 16:42:36 EST
(
hide
)
Description:
Upated patch
Filename:
MIME Type:
Creator:
Ian Bull
Created:
2009-02-18 16:42:36 EST
Size:
16.04 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.equinox.p2.updatesite >Index: src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java,v >retrieving revision 1.16 >diff -u -r1.16 SiteXMLAction.java >--- src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java 12 Feb 2009 22:22:40 -0000 1.16 >+++ src/org/eclipse/equinox/internal/p2/updatesite/SiteXMLAction.java 18 Feb 2009 21:40:37 -0000 >@@ -39,6 +39,7 @@ > private SiteCategory defaultCategory; > private HashSet defaultCategorySet; > private URI location; >+ private String categoryQualifier = null; > > public SiteXMLAction(URI location) { > this.location = location; >@@ -48,6 +49,13 @@ > this.updateSite = updateSite; > } > >+ /** >+ * Sets the qualifier that will be prepended to the front of category names >+ */ >+ public void setCategoryQualifier(String categoryQualifier) { >+ this.categoryQualifier = categoryQualifier; >+ } >+ > private void initialize() { > if (defaultCategory != null) > return; >@@ -236,7 +244,8 @@ > protected void generateCategoryIUs(Map categoriesToFeatures, IPublisherResult result) { > for (Iterator it = categoriesToFeatures.keySet().iterator(); it.hasNext();) { > SiteCategory category = (SiteCategory) it.next(); >- result.addIU(createCategoryIU(category, (Set) categoriesToFeatures.get(category), null), IPublisherResult.NON_ROOT); >+ String qualifier = createQualifier(); >+ result.addIU(createCategoryIU(category, (Set) categoriesToFeatures.get(category), null, qualifier), IPublisherResult.NON_ROOT); > } > } > >@@ -247,10 +256,10 @@ > * @param parentCategory The parent category, or <code>null</code> > * @return an IU representing the category > */ >- public static IInstallableUnit createCategoryIU(SiteCategory category, Set featureIUs, IInstallableUnit parentCategory) { >+ public static IInstallableUnit createCategoryIU(SiteCategory category, Set featureIUs, IInstallableUnit parentCategory, String categoryQualifier) { > InstallableUnitDescription cat = new MetadataFactory.InstallableUnitDescription(); > cat.setSingleton(true); >- String categoryId = category.getName(); >+ String categoryId = categoryQualifier + category.getName(); > cat.setId(categoryId); > cat.setVersion(Version.emptyVersion); > cat.setProperty(IInstallableUnit.PROP_NAME, category.getLabel()); >@@ -293,4 +302,16 @@ > return MetadataFactory.createInstallableUnit(cat); > } > >+ /** >+ * Creates a qualifier that can be prepended to a category to the category is unique >+ * between multiple repositories >+ */ >+ private String createQualifier() { >+ if (categoryQualifier != null) >+ return categoryQualifier; >+ if (updateSite != null) >+ return URIUtil.toUnencodedString(updateSite.getLocation()) + "."; //$NON-NLS-1$ >+ return ""; //$NON-NLS-1$ >+ } >+ > } >Index: src/org/eclipse/equinox/internal/p2/updatesite/RemoteUpdateSiteAction.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/RemoteUpdateSiteAction.java,v >retrieving revision 1.4 >diff -u -r1.4 RemoteUpdateSiteAction.java >--- src/org/eclipse/equinox/internal/p2/updatesite/RemoteUpdateSiteAction.java 9 Oct 2008 03:21:48 -0000 1.4 >+++ src/org/eclipse/equinox/internal/p2/updatesite/RemoteUpdateSiteAction.java 18 Feb 2009 21:40:37 -0000 >@@ -10,8 +10,6 @@ > ******************************************************************************/ > package org.eclipse.equinox.internal.p2.updatesite; > >-import java.net.URI; >-import java.net.URISyntaxException; > import java.util.ArrayList; > import org.eclipse.core.runtime.*; > import org.eclipse.equinox.p2.publisher.*; >@@ -30,10 +28,6 @@ > this.updateSite = updateSite; > } > >- public RemoteUpdateSiteAction(String source) { >- this.source = source; >- } >- > public IStatus perform(IPublisherInfo info, IPublisherResult results, IProgressMonitor monitor) { > IPublisherAction[] actions = createActions(); > MultiStatus finalStatus = new MultiStatus(this.getClass().getName(), 0, NLS.bind(Messages.Error_Generation, source != null ? source : (updateSite != null ? updateSite.getLocation().toString() : "Unknown")), null); //$NON-NLS-1$ >@@ -55,16 +49,6 @@ > } > > private IPublisherAction createSiteXMLAction() { >- if (updateSite != null) >- return new SiteXMLAction(updateSite); >- if (source != null) { >- try { >- return new SiteXMLAction(new URI(source + "/site.xml")); //$NON-NLS-1$ >- } catch (URISyntaxException e) { >- // never happens >- return null; >- } >- } >- return null; >+ return new SiteXMLAction(updateSite); > } > } >Index: src/org/eclipse/equinox/internal/p2/updatesite/LocalUpdateSiteAction.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/LocalUpdateSiteAction.java,v >retrieving revision 1.4 >diff -u -r1.4 LocalUpdateSiteAction.java >--- src/org/eclipse/equinox/internal/p2/updatesite/LocalUpdateSiteAction.java 9 Oct 2008 03:21:48 -0000 1.4 >+++ src/org/eclipse/equinox/internal/p2/updatesite/LocalUpdateSiteAction.java 18 Feb 2009 21:40:37 -0000 >@@ -26,12 +26,21 @@ > public class LocalUpdateSiteAction implements IPublisherAction { > protected String source; > private UpdateSite updateSite; >+ private String categoryQualifier; > > protected LocalUpdateSiteAction() { >+ // empty > } > >- public LocalUpdateSiteAction(String source) { >+ /** >+ * Creates a local updatesite publisher action. >+ * @param source The location of the directory that contains the site.xml file >+ * @param categoryQualifier The qualifier to prepend to categories. This qualifier is used >+ * to ensure tha the category IDs are unique between update sites. >+ */ >+ public LocalUpdateSiteAction(String source, String categoryQualifier) { > this.source = source; >+ this.categoryQualifier = categoryQualifier; > } > > public LocalUpdateSiteAction(UpdateSite updateSite) { >@@ -64,8 +73,12 @@ > private IPublisherAction createSiteXMLAction() { > if (updateSite != null) > return new SiteXMLAction(updateSite); >- if (source != null) >- return new SiteXMLAction(new File(source, "site.xml").toURI()); //$NON-NLS-1$ >+ if (source != null) { >+ SiteXMLAction siteXmlAction = new SiteXMLAction(new File(source, "site.xml").toURI()); //$NON-NLS-1$ >+ if (categoryQualifier != null) >+ siteXmlAction.setCategoryQualifier(categoryQualifier); >+ return siteXmlAction; >+ } > return null; > } > >Index: src/org/eclipse/equinox/internal/p2/updatesite/UpdatesitePublisherApplication.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.updatesite/src/org/eclipse/equinox/internal/p2/updatesite/UpdatesitePublisherApplication.java,v >retrieving revision 1.1 >diff -u -r1.1 UpdatesitePublisherApplication.java >--- src/org/eclipse/equinox/internal/p2/updatesite/UpdatesitePublisherApplication.java 11 Sep 2008 02:14:52 -0000 1.1 >+++ src/org/eclipse/equinox/internal/p2/updatesite/UpdatesitePublisherApplication.java 18 Feb 2009 21:40:37 -0000 >@@ -9,8 +9,8 @@ > ******************************************************************************/ > package org.eclipse.equinox.internal.p2.updatesite; > >-import org.eclipse.equinox.p2.publisher.AbstractPublisherApplication; >-import org.eclipse.equinox.p2.publisher.IPublisherAction; >+import java.net.URISyntaxException; >+import org.eclipse.equinox.p2.publisher.*; > > /** > * <p> >@@ -20,11 +20,21 @@ > */ > public class UpdatesitePublisherApplication extends AbstractPublisherApplication { > >+ private String categoryQualifier = null; >+ > public UpdatesitePublisherApplication() { > // nothing todo > } > >+ protected void processParameter(String arg, String parameter, PublisherInfo pinfo) throws URISyntaxException { >+ super.processParameter(arg, parameter, pinfo); >+ >+ if (arg.equalsIgnoreCase("-categoryQualifier")) //$NON-NLS-1$ >+ categoryQualifier = parameter; >+ >+ } >+ > protected IPublisherAction[] createActions() { >- return new IPublisherAction[] {new LocalUpdateSiteAction(source)}; >+ return new IPublisherAction[] {new LocalUpdateSiteAction(source, categoryQualifier)}; > } > } >#P org.eclipse.equinox.p2.tests >Index: src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java,v >retrieving revision 1.2 >diff -u -r1.2 AllTests.java >--- src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java 12 Dec 2008 21:11:39 -0000 1.2 >+++ src/org/eclipse/equinox/p2/tests/updatesite/AllTests.java 18 Feb 2009 21:40:38 -0000 >@@ -21,6 +21,7 @@ > TestSuite suite = new TestSuite(AllTests.class.getName()); > suite.addTestSuite(SiteXMLActionTest.class); > suite.addTestSuite(UpdateSiteTest.class); >+ suite.addTestSuite(LocalUpdatesiteTest.class); > return suite; > } > >Index: src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java >=================================================================== >RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java,v >retrieving revision 1.2 >diff -u -r1.2 SiteXMLActionTest.java >--- src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java 12 Feb 2009 22:22:39 -0000 1.2 >+++ src/org/eclipse/equinox/p2/tests/updatesite/SiteXMLActionTest.java 18 Feb 2009 21:40:38 -0000 >@@ -10,14 +10,21 @@ > *******************************************************************************/ > package org.eclipse.equinox.p2.tests.updatesite; > >+import java.io.File; > import java.net.URI; > import java.util.Collection; > import java.util.Iterator; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.core.runtime.URIUtil; > import org.eclipse.equinox.internal.p2.updatesite.SiteXMLAction; > import org.eclipse.equinox.internal.provisional.p2.core.repository.IRepository; > import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; >+import org.eclipse.equinox.internal.provisional.p2.metadata.query.IUPropertyQuery; >+import org.eclipse.equinox.internal.provisional.p2.query.Collector; >+import org.eclipse.equinox.internal.provisional.p2.query.Query; > import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.RepositoryReference; > import org.eclipse.equinox.p2.publisher.*; >+import org.eclipse.equinox.p2.publisher.eclipse.FeaturesAction; > import org.eclipse.equinox.p2.tests.*; > > /** >@@ -25,17 +32,33 @@ > */ > public class SiteXMLActionTest extends AbstractProvisioningTest { > private TestMetadataRepository metadataRepository; >+ private IPublisherResult actionResult; >+ private URI siteLocation; > > @Override > protected void setUp() throws Exception { > super.setUp(); >- IPublisherResult result = new PublisherResult(); >+ actionResult = new PublisherResult(); > PublisherInfo info = new PublisherInfo(); > metadataRepository = new TestMetadataRepository(new IInstallableUnit[0]); > info.setMetadataRepository(metadataRepository); >- URI siteLocation = TestData.getFile("updatesite", "SiteXMLActionTest/site.xml").toURI(); >+ siteLocation = TestData.getFile("updatesite", "SiteXMLActionTest/site.xml").toURI(); >+ FeaturesAction featuresAction = new FeaturesAction(new File[] {TestData.getFile("updateSite", "SiteXMLActionTest")}); >+ featuresAction.perform(info, actionResult, new NullProgressMonitor()); >+ > SiteXMLAction action = new SiteXMLAction(siteLocation); >- action.perform(info, result, getMonitor()); >+ action.perform(info, actionResult, getMonitor()); >+ } >+ >+ public void testQualifier() { >+ Query categoryQuery = new IUPropertyQuery(IInstallableUnit.PROP_TYPE_CATEGORY, Boolean.toString(true)); >+ Collector results = actionResult.query(categoryQuery, new Collector(), new NullProgressMonitor()); >+ Iterator iter = results.iterator(); >+ while (iter.hasNext()) { >+ IInstallableUnit unit = (IInstallableUnit) iter.next(); >+ assertTrue("1.0", unit.getId().startsWith(URIUtil.toUnencodedString(siteLocation))); >+ assertEquals("2.0", "Test Category Label", unit.getProperty(IInstallableUnit.PROP_NAME)); >+ } > } > > /** >Index: src/org/eclipse/equinox/p2/tests/updatesite/LocalUpdatesiteTest.java >=================================================================== >RCS file: src/org/eclipse/equinox/p2/tests/updatesite/LocalUpdatesiteTest.java >diff -N src/org/eclipse/equinox/p2/tests/updatesite/LocalUpdatesiteTest.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/equinox/p2/tests/updatesite/LocalUpdatesiteTest.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,63 @@ >+/******************************************************************************* >+* Copyright (c) 2009 EclipseSource and others. All rights reserved. This >+* program and the accompanying materials are made available under the terms of >+* the Eclipse Public License v1.0 which accompanies this distribution, and is >+* available at http://www.eclipse.org/legal/epl-v10.html >+* >+* Contributors: >+* EclipseSource - initial API and implementation >+******************************************************************************/ >+package org.eclipse.equinox.p2.tests.updatesite; >+ >+import java.io.File; >+import java.io.IOException; >+import java.util.Iterator; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.equinox.internal.p2.updatesite.UpdatesitePublisherApplication; >+import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; >+import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; >+import org.eclipse.equinox.internal.provisional.p2.metadata.query.IUPropertyQuery; >+import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; >+import org.eclipse.equinox.internal.provisional.p2.query.Collector; >+import org.eclipse.equinox.internal.provisional.p2.query.Query; >+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; >+import org.eclipse.equinox.p2.tests.TestData; >+ >+public class LocalUpdatesiteTest extends AbstractProvisioningTest { >+ protected File repoLocation; >+ >+ protected void setUp() throws Exception { >+ super.setUp(); >+ String tempDir = System.getProperty("java.io.tmpdir"); >+ repoLocation = new File(tempDir, "LocalMetadataRepositoryTest"); >+ AbstractProvisioningTest.delete(repoLocation); >+ repoLocation.mkdir(); >+ } >+ >+ protected void tearDown() throws Exception { >+ getMetadataRepositoryManager().removeRepository(repoLocation.toURI()); >+ delete(repoLocation); >+ super.tearDown(); >+ } >+ >+ public void testCategoryQualifier() throws IOException, ProvisionException { >+ Query categoryQuery = new IUPropertyQuery(IInstallableUnit.PROP_TYPE_CATEGORY, Boolean.toString(true)); >+ File siteSource = TestData.getFile("updatesite", "SiteXMLActionTest"); >+ UpdatesitePublisherApplication application = new UpdatesitePublisherApplication(); >+ try { >+ application.run(new String[] {"-metadataRepository", repoLocation.toURI().toString(), "-source", siteSource.toString(), "-categoryQualifier", "fooQualifier"}); >+ } catch (Exception e) { >+ fail("0.99"); >+ } >+ IMetadataRepository repository = getMetadataRepositoryManager().loadRepository(repoLocation.toURI(), new NullProgressMonitor()); >+ Collector results = repository.query(categoryQuery, new Collector(), new NullProgressMonitor()); >+ assertEquals("1.0", 1, results.size()); >+ Iterator iter = results.iterator(); >+ while (iter.hasNext()) { >+ IInstallableUnit unit = (IInstallableUnit) iter.next(); >+ assertTrue("2.0", unit.getId().startsWith("fooQualifier")); >+ System.out.println(unit.getId()); >+ assertEquals("3.0", "Test Category Label", unit.getProperty(IInstallableUnit.PROP_NAME)); >+ } >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 264389
:
125938
|
125939
|
126082
|
126083
|
126197
|
126200
|
126667
|
126670
|
126671