View | Details | Raw Unified | Return to bug 272066
Collapse All | Expand All

(-)src/org/eclipse/equinox/p2/operations/RepositoryTracker.java (-19 / +1 lines)
Lines 10-17 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.p2.operations;
11
package org.eclipse.equinox.p2.operations;
12
12
13
import org.eclipse.equinox.p2.core.ProvisionException;
14
15
import java.io.File;
13
import java.io.File;
16
import java.net.URI;
14
import java.net.URI;
17
import java.net.URISyntaxException;
15
import java.net.URISyntaxException;
Lines 20-25 Link Here
20
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
18
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
21
import org.eclipse.equinox.internal.p2.operations.*;
19
import org.eclipse.equinox.internal.p2.operations.*;
22
import org.eclipse.equinox.internal.p2.repository.helpers.RepositoryHelper;
20
import org.eclipse.equinox.internal.p2.repository.helpers.RepositoryHelper;
21
import org.eclipse.equinox.p2.core.ProvisionException;
23
import org.eclipse.equinox.p2.repository.IRepositoryManager;
22
import org.eclipse.equinox.p2.repository.IRepositoryManager;
24
import org.eclipse.osgi.util.NLS;
23
import org.eclipse.osgi.util.NLS;
25
24
Lines 116-142 Link Here
116
				break;
115
				break;
117
			}
116
			}
118
		}
117
		}
119
120
		if (!localValidationStatus.isOK())
121
			return localValidationStatus;
122
123
		if (contactRepositories)
124
			return validateRepositoryLocationWithManager(session, location, monitor);
125
126
		return localValidationStatus;
118
		return localValidationStatus;
127
	}
119
	}
128
120
129
	/**
121
	/**
130
	 * Validate the specified repository location using the appropriate repository manager.
131
	 * 
132
	 * @param session the provisioning session providing the repository services
133
	 * @param location the location in question
134
	 * @param monitor the progress monitor
135
	 * @return a status indicating the current status of the repository
136
	 */
137
	protected abstract IStatus validateRepositoryLocationWithManager(ProvisioningSession session, URI location, IProgressMonitor monitor);
138
139
	/**
140
	 * Add the specified location to the list of "not found" repositories.
122
	 * Add the specified location to the list of "not found" repositories.
141
	 * This list is used to ensure that errors are not reported multiple times
123
	 * This list is used to ensure that errors are not reported multiple times
142
	 * for the same repository.
124
	 * for the same repository.
(-)src/org/eclipse/equinox/p2/tests/FailingMetadataRepositoryFactory.java (-7 lines)
Lines 38-48 Link Here
38
		throw new ProvisionException(new Status(IStatus.ERROR, TestActivator.PI_PROV_TESTS, ProvisionException.REPOSITORY_NOT_FOUND, "", null));
38
		throw new ProvisionException(new Status(IStatus.ERROR, TestActivator.PI_PROV_TESTS, ProvisionException.REPOSITORY_NOT_FOUND, "", null));
39
	}
39
	}
40
40
41
	@Override
42
	public IStatus validate(URI location, IProgressMonitor monitor) {
43
		if (FAIL)
44
			throw new RuntimeException("Exception thrown deliberately as part of test");
45
		return new Status(IStatus.ERROR, TestActivator.PI_PROV_TESTS, ProvisionException.REPOSITORY_NOT_FOUND, "", null);
46
	}
47
48
}
41
}
(-)src/org/eclipse/equinox/p2/tests/engine/ProfileMetadataRepositoryTest.java (-18 lines)
Lines 11-17 Link Here
11
package org.eclipse.equinox.p2.tests.engine;
11
package org.eclipse.equinox.p2.tests.engine;
12
12
13
import java.io.File;
13
import java.io.File;
14
import org.eclipse.core.runtime.IStatus;
15
import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory;
14
import org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory;
16
import org.eclipse.equinox.internal.p2.engine.*;
15
import org.eclipse.equinox.internal.p2.engine.*;
17
import org.eclipse.equinox.p2.core.ProvisionException;
16
import org.eclipse.equinox.p2.core.ProvisionException;
Lines 44-66 Link Here
44
		}
43
		}
45
	}
44
	}
46
45
47
	public void testValidate() {
48
		File testData = getTestData("0.1", "testData/sdkpatchingtest");
49
		File tempFolder = getTempFolder();
50
		copy("0.2", testData, tempFolder);
51
52
		File simpleProfileFolder = new File(tempFolder, "SDKPatchingTest.profile");
53
		assertTrue("0.3", simpleProfileFolder.exists());
54
55
		ProfileMetadataRepositoryFactory factory = new ProfileMetadataRepositoryFactory();
56
		factory.setAgent(getAgent());
57
		IStatus status = factory.validate(simpleProfileFolder.toURI(), getMonitor());
58
		assertOK("1.0", status);
59
60
		status = factory.validate(tempFolder.toURI(), getMonitor());
61
		assertNotOK("2.0", status);
62
	}
63
64
	public void testLoad() {
46
	public void testLoad() {
65
		File testData = getTestData("0.1", "testData/sdkpatchingtest");
47
		File testData = getTestData("0.1", "testData/sdkpatchingtest");
66
		//assert that test data is intact (see bug 285158)
48
		//assert that test data is intact (see bug 285158)
(-)src/org/eclipse/equinox/p2/tests/metadata/repository/CompositeMetadataRepositoryTest.java (-9 / +3 lines)
Lines 12-24 Link Here
12
 *******************************************************************************/
12
 *******************************************************************************/
13
package org.eclipse.equinox.p2.tests.metadata.repository;
13
package org.eclipse.equinox.p2.tests.metadata.repository;
14
14
15
import org.eclipse.equinox.p2.metadata.Version;
16
17
import java.io.File;
15
import java.io.File;
18
import java.net.URI;
16
import java.net.URI;
19
import java.net.URISyntaxException;
17
import java.net.URISyntaxException;
20
import java.util.*;
18
import java.util.*;
21
import org.eclipse.core.runtime.*;
19
import org.eclipse.core.runtime.NullProgressMonitor;
20
import org.eclipse.core.runtime.URIUtil;
22
import org.eclipse.equinox.internal.p2.metadata.query.LatestIUVersionQuery;
21
import org.eclipse.equinox.internal.p2.metadata.query.LatestIUVersionQuery;
23
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
22
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
24
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepositoryFactory;
23
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepositoryFactory;
Lines 27-32 Link Here
27
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription;
26
import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription;
28
import org.eclipse.equinox.p2.core.ProvisionException;
27
import org.eclipse.equinox.p2.core.ProvisionException;
29
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
28
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
29
import org.eclipse.equinox.p2.metadata.Version;
30
import org.eclipse.equinox.p2.metadata.query.InstallableUnitQuery;
30
import org.eclipse.equinox.p2.metadata.query.InstallableUnitQuery;
31
import org.eclipse.equinox.p2.query.*;
31
import org.eclipse.equinox.p2.query.*;
32
import org.eclipse.equinox.p2.repository.IRepository;
32
import org.eclipse.equinox.p2.repository.IRepository;
Lines 306-317 Link Here
306
		assertEquals("Children size after removeAllChildren", 0, compRepo.getChildren().size());
306
		assertEquals("Children size after removeAllChildren", 0, compRepo.getChildren().size());
307
	}
307
	}
308
308
309
	public void testValidate() {
310
		//Setup: create an uncompressed repository
311
		createRepo(false);
312
		assertEquals("Verifying repository's status is OK", Status.OK_STATUS, (new CompositeMetadataRepositoryFactory()).validate(repoLocation.toURI(), null));
313
	}
314
315
	public void testLoadingRepositoryRemote() {
309
	public void testLoadingRepositoryRemote() {
316
		File knownGoodRepoLocation = getTestData("0.1", "/testData/metadataRepo/composite/good.remote");
310
		File knownGoodRepoLocation = getTestData("0.1", "/testData/metadataRepo/composite/good.remote");
317
311
(-)src/org/eclipse/equinox/internal/p2/ui/ColocatedRepositoryTracker.java (-6 / +1 lines)
Lines 10-21 Link Here
10
 *******************************************************************************/
10
 *******************************************************************************/
11
package org.eclipse.equinox.internal.p2.ui;
11
package org.eclipse.equinox.internal.p2.ui;
12
12
13
import org.eclipse.equinox.p2.core.ProvisionException;
14
15
import java.net.URI;
13
import java.net.URI;
16
import org.eclipse.core.runtime.*;
14
import org.eclipse.core.runtime.*;
17
import org.eclipse.equinox.internal.p2.ui.dialogs.RepositoryNameAndLocationDialog;
15
import org.eclipse.equinox.internal.p2.ui.dialogs.RepositoryNameAndLocationDialog;
18
import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
16
import org.eclipse.equinox.internal.provisional.p2.repository.RepositoryEvent;
17
import org.eclipse.equinox.p2.core.ProvisionException;
19
import org.eclipse.equinox.p2.operations.ProvisioningSession;
18
import org.eclipse.equinox.p2.operations.ProvisioningSession;
20
import org.eclipse.equinox.p2.operations.RepositoryTracker;
19
import org.eclipse.equinox.p2.operations.RepositoryTracker;
21
import org.eclipse.equinox.p2.repository.IRepository;
20
import org.eclipse.equinox.p2.repository.IRepository;
Lines 58-67 Link Here
58
		return session.getMetadataRepositoryManager().getKnownRepositories(getMetadataRepositoryFlags());
57
		return session.getMetadataRepositoryManager().getKnownRepositories(getMetadataRepositoryFlags());
59
	}
58
	}
60
59
61
	protected IStatus validateRepositoryLocationWithManager(ProvisioningSession session, URI location, IProgressMonitor monitor) {
62
		return session.getMetadataRepositoryManager().validateRepositoryLocation(location, monitor);
63
	}
64
65
	public void addRepository(URI repoLocation, String nickname, ProvisioningSession session) {
60
	public void addRepository(URI repoLocation, String nickname, ProvisioningSession session) {
66
		ui.signalRepositoryOperationStart();
61
		ui.signalRepositoryOperationStart();
67
		try {
62
		try {
(-)src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java (-4 lines)
Lines 812-821 Link Here
812
					RepositoryManipulationPage.this.removeRepositories();
812
					RepositoryManipulationPage.this.removeRepositories();
813
				}
813
				}
814
814
815
				protected IStatus validateRepositoryLocationWithManager(ProvisioningSession session, URI location, IProgressMonitor monitor) {
816
					return session.getMetadataRepositoryManager().validateRepositoryLocation(location, monitor);
817
				}
818
819
				public void refreshRepositories(URI[] locations, ProvisioningSession session, IProgressMonitor monitor) {
815
				public void refreshRepositories(URI[] locations, ProvisioningSession session, IProgressMonitor monitor) {
820
					// Nothing to refresh in the local cache
816
					// Nothing to refresh in the local cache
821
				}
817
				}
(-)src/org/eclipse/equinox/internal/p2/updatesite/metadata/UpdateSiteMetadataRepositoryFactory.java (-26 / +3 lines)
Lines 12-35 Link Here
12
 *******************************************************************************/
12
 *******************************************************************************/
13
package org.eclipse.equinox.internal.p2.updatesite.metadata;
13
package org.eclipse.equinox.internal.p2.updatesite.metadata;
14
14
15
import org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory;
16
17
import org.eclipse.equinox.p2.repository.metadata.spi.MetadataRepositoryFactory;
18
19
import org.eclipse.equinox.p2.core.ProvisionException;
20
21
import java.io.File;
15
import java.io.File;
22
import java.io.FileNotFoundException;
23
import java.net.URI;
16
import java.net.URI;
24
import java.util.Map;
17
import java.util.Map;
25
import org.eclipse.core.runtime.*;
18
import org.eclipse.core.runtime.*;
26
import org.eclipse.ecf.filetransfer.UserCancelledException;
27
import org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository;
19
import org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository;
28
import org.eclipse.equinox.internal.p2.repository.AuthenticationFailedException;
20
import org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory;
29
import org.eclipse.equinox.internal.p2.updatesite.*;
21
import org.eclipse.equinox.internal.p2.updatesite.*;
22
import org.eclipse.equinox.p2.core.ProvisionException;
30
import org.eclipse.equinox.p2.publisher.*;
23
import org.eclipse.equinox.p2.publisher.*;
31
import org.eclipse.equinox.p2.repository.IRepositoryManager;
24
import org.eclipse.equinox.p2.repository.IRepositoryManager;
32
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
25
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
26
import org.eclipse.equinox.p2.repository.metadata.spi.MetadataRepositoryFactory;
33
import org.eclipse.osgi.util.NLS;
27
import org.eclipse.osgi.util.NLS;
34
28
35
public class UpdateSiteMetadataRepositoryFactory extends MetadataRepositoryFactory {
29
public class UpdateSiteMetadataRepositoryFactory extends MetadataRepositoryFactory {
Lines 49-71 Link Here
49
		return null;
43
		return null;
50
	}
44
	}
51
45
52
	public IStatus validate(URI location, IProgressMonitor monitor) {
53
		try {
54
			UpdateSite.validate(location, monitor);
55
		} catch (ProvisionException e) {
56
			return e.getStatus();
57
		} catch (UserCancelledException e) {
58
			return Status.CANCEL_STATUS;
59
		} catch (AuthenticationFailedException e) {
60
			return new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_FAILED_AUTHENTICATION, NLS.bind(Messages.AuthenticationFailedFor_0, location.toString()), e);
61
		} catch (FileNotFoundException e) {
62
			return new Status(IStatus.ERROR, Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, NLS.bind(Messages.RepositoryNotFound_0, location.toString()), e);
63
		} catch (CoreException e) {
64
			return e.getStatus();
65
		}
66
		return Status.OK_STATUS;
67
	}
68
69
	public IMetadataRepository load(URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
46
	public IMetadataRepository load(URI location, int flags, IProgressMonitor monitor) throws ProvisionException {
70
		//return null if the caller wanted a modifiable repo
47
		//return null if the caller wanted a modifiable repo
71
		if ((flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0) {
48
		if ((flags & IRepositoryManager.REPOSITORY_HINT_MODIFIABLE) > 0) {

Return to bug 272066