| Summary: | NPE when adding a theme contribution | ||
|---|---|---|---|
| Product: | [RT] RAP | Reporter: | Ivan Furnadjiev <ivan> |
| Component: | RWT | Assignee: | Project Inbox <rap-inbox> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P1 | CC: | fr.appel, rsternberg, ruediger.herrmann |
| Version: | 1.5 | ||
| Target Milestone: | 1.5 M3 | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
getTheme( "org.eclipse.rap.rwt.theme.Default" ) at that point returns null. Fixed in CVS HEAD. The problem was that with the new configuration API adding a theme contribution could take place before the actual theme was registered. With the default theme this was always the case, since the default theme is registered during the activation of the theme manger, which always takes place after the configuration. So I introduced a theme contribution buffer that picks up all contributions during configuration time and applies them during activation after all themes have been registered. In case a contribution refers to a non existing theme id an ThemeManagerException will be thrown. |
Adding a theme contribution like: (RAP 1.5 from CVS HEAD) <extension point="org.eclipse.rap.ui.themes"> <themeContribution file="css/addition.css" themeId="org.eclipse.rap.rwt.theme.Default"> </themeContribution> </extension> leads to NPE: !ENTRY rap.bugs.application.tester 4 0 2011-08-24 18:34:02.293 !MESSAGE Could not register contribution for theme 'org.eclipse.rap.rwt.theme.Default' from file 'css/addition.css'. !STACK 0 java.lang.NullPointerException at org.eclipse.rwt.internal.engine.ContextImpl.addThemeContribution(ContextImpl.java:108) at org.eclipse.rap.ui.internal.servlet.RWTConfigurator.registerThemeContributions(RWTConfigurator.java:264) at org.eclipse.rap.ui.internal.servlet.RWTConfigurator.configure(RWTConfigurator.java:77) at org.eclipse.rwt.internal.engine.ContextConfigurable.configureCustomSettings(ContextConfigurable.java:51) at org.eclipse.rwt.internal.engine.ContextConfigurable.configure(ContextConfigurable.java:41) at org.eclipse.rwt.internal.engine.ApplicationContext.notifyConfigurablesAboutActivation(ApplicationContext.java:246) at org.eclipse.rwt.internal.engine.ApplicationContext.doActivate(ApplicationContext.java:267) at org.eclipse.rwt.internal.engine.ApplicationContext.activate(ApplicationContext.java:106) at org.eclipse.rwt.engine.ContextControl.activateApplicationContext(ContextControl.java:68) at org.eclipse.rwt.engine.ContextControl.startContext(ContextControl.java:40) at org.eclipse.rap.rwt.osgi.internal.RWTContextImpl.startContext(RWTContextImpl.java:121) at org.eclipse.rap.rwt.osgi.internal.RWTContextImpl.start(RWTContextImpl.java:77) at org.eclipse.rap.rwt.osgi.internal.RWTServiceImpl.start(RWTServiceImpl.java:91) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.startRWTContext(HttpServiceTracker.java:118) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.addingService(HttpServiceTracker.java:83) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262) at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.access$4(HttpServiceTracker.java:1) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$RWTServiceTracker.addingService(HttpServiceTracker.java:65) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262) at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.openAsSoonAsRWTServiceHasBeenStarted(HttpServiceTracker.java:103) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker.access$2(HttpServiceTracker.java:101) at org.eclipse.rap.ui.internal.servlet.HttpServiceTracker$HttpContextTracker.addingService(HttpServiceTracker.java:46) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262) at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:234) at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:941) at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451) at org.eclipse.equinox.http.registry.internal.HttpServiceTracker.open(HttpServiceTracker.java:43) at org.eclipse.equinox.http.registry.internal.Activator.addingService(Activator.java:59) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262) at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:185) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:348) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:283) at org.eclipse.equinox.http.registry.internal.Activator.start(Activator.java:37) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1130) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) Works fine with RAP 1.4