I'm writing some code to load a baseline set (i.e. snapshot). I gotten this to work already by creating a temporary workspace from the baseline set, but then I noticed com.ibm.team.filesystem.client.operations.ILoadOperation.requestLoad(ISandbox, IRelativeLocation, IBaselineConnection, Collection<extends>) and thought maybe I could skip having to create the workspace.
When I tried I got this exception:
java.lang.ClassCastException: $Proxy20 incompatible with com.ibm.team.scm.common.IFolder
at com.ibm.team.filesystem.client.internal.operations.LoadEvaluator.fetchCompleteItems(LoadEvaluator.java:286)
at com.ibm.team.filesystem.client.internal.operations.HierarchicalLoadEvaluator.fetchInfoForLoadEvaluation(HierarchicalLoadEvaluator.java:382)
at com.ibm.team.filesystem.client.internal.operations.HierarchicalLoadEvaluator.getElementsToLoad(HierarchicalLoadEvaluator.java:245)
at com.ibm.team.filesystem.client.internal.operations.HierarchicalLoadEvaluator.doEvaluation(HierarchicalLoadEvaluator.java:155)
at com.ibm.team.filesystem.client.internal.operations.LoadEvaluator.evaluateLoadRequests(LoadEvaluator.java:86)
at com.ibm.team.filesystem.client.internal.operations.LoadOperation.evaluate(LoadOperation.java:480)
at com.ibm.team.filesystem.client.internal.operations.LoadOperation.evaluateLoadRequests(LoadOperation.java:474)
at com.ibm.team.filesystem.client.internal.operations.LoadOperation$1.run(LoadOperation.java:623)
at com.ibm.team.filesystem.rcp.core.internal.resources.ResourceSharingManager$1.run(ResourceSharingManager.java:200)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at com.ibm.team.filesystem.rcp.core.internal.resources.ResourceSharingManager.runWithinFileSystemLock(ResourceSharingManager.java:212)
at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.runWithinFileSystemLock(FileSystemOperation.java:164)
at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.runWithinFileSystemLock(FileSystemOperation.java:144)
at com.ibm.team.filesystem.client.internal.operations.LoadOperation.execute(LoadOperation.java:657)
at com.ibm.team.filesystem.client.internal.operations.FileSystemOperation.run(FileSystemOperation.java:89)
at com.ibm.mrbuild.rtc.applications.ExtractSnapshot.run(ExtractSnapshot.java:129)
at com.ibm.mrbuild.core.cli.Application.start(Application.java:110)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287
Here's the relevant code:
final ILoadOperation loadOp = IOperationFactory.instance.getLoadOperation (new ExtractLoadDilemaHandler ());
loadOp.setDownloadListener (new DownloadListener ());
final IBaselineSet snapshot = fetch (_snapshotHandle);
for (final IBaselineHandle blHandle : (List<IBaselineHandle>) snapshot.getBaselines ()) {
final IBaselineConnection connection = getWorkspaceManager ().getBaselineConnection (blHandle, getMonitor ());
loadOp.requestLoad (sandbox,
null,
connection,
connection.configuration ().childEntriesForRoot (getMonitor ()).values ());
}
loadOp.run (getMonitor ());
Any ideas? I can go back to using a temporary workspace if need be but I would prefer not to.
Comments
Still waiting for an answer on this one.