There are two steps to executing an operation: resolution, then
provisioning. It looks like you are attempting to provision without first
resolving. You need to either first call getResolveJob() and run that job,
or use ProfileChangeOperation#resolveModal. After resolving you should be
able to provision.

Of course it is a bug in p2 that it throws an NPE here. The javadoc says it
should return null if you attempt to get the provisioning job before
resolving the operation. I will fix that.

John


On Mon, Jul 22, 2013 at 1:56 PM, Thomas Meyer <[email protected]> wrote:

> Hi,
>
> I get this NPE:
>
> !ENTRY org.eclipse.ui 4 4 2013-07-22 19:37:58.303
> !MESSAGE An internal error has occurred.
> !STACK 0
> java.lang.NullPointerException
>         at
> org.eclipse.equinox.p2.operations.ProfileChangeOperation.getProvisioningJob(ProfileChangeOperation.java:320)
>         at
> org.rssowl.ui.internal.actions.FindUpdatesAction.run(FindUpdatesAction.java:102)
>         at org.rssowl.ui.internal.Controller$11.run(Controller.java:1526)
>         at
> org.rssowl.ui.internal.util.JobRunner$1.runInUIThread(JobRunner.java:97)
>         at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
>         at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
>         at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
>         at
> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3717)
>         at
> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3366)
>         at
> org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
>         at
> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>         at
> org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
>         at
> org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)
>         at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)
>         at
> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>         at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
>         at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
>         at org.rssowl.ui.internal.Application.start(Application.java:119)
>         at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
>         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:354)
>         at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
>         at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
>         at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
>         at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
>
> I tried to change the RssOwl update mechanism to use the p2 framework.
>
> The current code does the UpdateJob in FindUpdatesAction:
>
>
> https://github.com/rssowl/RSSOwl/blob/master/org.rssowl.ui/src/org/rssowl/ui/internal/actions/FindUpdatesAction.java#L95
>
> I tried to replace the update job with this:
>
>       NullProgressMonitor monitor = new NullProgressMonitor();
>       Collection<URI> repos = Arrays.asList(new URI(UPDATE_SITE));
>
>       UpdateOperation updateOperation =
> operationFactory.createUpdateOperation(null, repos, monitor);
>       ProvisioningJob job = updateOperation.getProvisioningJob(null);
>
> But this code results in above NPE.
>
> The p2 repository directory seems to be missing in my runtime:
>
>
> org.eclipse.equinox.p2.core.IAgentLocation=file:/home/thomas/workspace/.metadata/.plugins/org.eclipse.pde.core/Launch%20RSSOwl%202.0/.p2/
>
> $ pwd
> /home/thomas/workspace/.metadata/.plugins/org.eclipse.pde.core/Launch
> RSSOwl 2.0
>
> $ ll -a
> insgesamt 32
> drwxrwxr-x. 6 thomas thomas 4096 22. Jul 19:34 .
> drwxrwxr-x. 9 thomas thomas 4096 22. Jul 19:33 ..
> -rw-rw-r--. 1 thomas thomas  698 22. Jul 19:33 config.ini
> -rw-rw-r--. 1 thomas thomas  184 22. Jul 19:33 dev.properties
> drwxrwxr-x. 3 thomas thomas 4096 22. Jul 19:34 org.eclipse.core.runtime
> drwxrwxr-x. 3 thomas thomas 4096 22. Jul 19:34 org.eclipse.equinox.app
> drwxrwxr-x. 2 thomas thomas 4096 22. Jul 19:33
> org.eclipse.equinox.simpleconfigurator
> drwxrwxr-x. 4 thomas thomas 4096 22. Jul 19:34 org.eclipse.osgi
>
> how's creating this directory?
> what's missing in my approach?
>
> with kind regards
> thomas
>
> _______________________________________________
> p2-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/p2-dev
>
_______________________________________________
p2-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/p2-dev

Reply via email to