Change By: Espen Jervidalo (08/Jul/13 5:19 PM)
Description: When an app encounters a problem, either because of a configuration error, such as starting an app that is not correctly configured or when it throws an exception because of a programming error, admincentral breaks because it gets stalled in app loading mode.

We need a plan for how we deal with this, either just close the app and go back to app launcher, or insert a view that informs the user about the error.

Here's two scenarios in which this happens:

Launching an app that doesn't have any sub apps

{noformat}
java.lang.NullPointerException
at info.magnolia.ui.framework.app.AppControllerImpl.updateLocation(AppControllerImpl.java:358)
at info.magnolia.ui.framework.app.AppControllerImpl.onLocationChanged(AppControllerImpl.java:324)
at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64)
at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42)
at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:78)
at info.magnolia.ui.api.location.LocationController.goToWithoutChecks(LocationController.java:105)
at info.magnolia.ui.api.location.LocationController.goTo(LocationController.java:99)
at info.magnolia.ui.api.location.LocationHistoryHandler.handleFragment(LocationHistoryHandler.java:120)
at info.magnolia.ui.api.location.LocationHistoryHandler.access$100(LocationHistoryHandler.java:49)
at info.magnolia.ui.api.location.LocationHistoryHandler$1.onFragmentChanged(LocationHistoryHandler.java:79)
at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:55)
at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:41)
at info.magnolia.event.EventHandlerCollection.dispatch(EventHandlerCollection.java:72)
at info.magnolia.ui.framework.shell.ShellImpl$2.onFragmentChanged(ShellImpl.java:132)
at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.notifyOnFragmentChanged(MagnoliaShell.java:272)
at info.magnolia.ui.framework.shell.ShellImpl.goToApp(ShellImpl.java:263)
at info.magnolia.ui.framework.shell.ShellImpl.access$500(ShellImpl.java:80)
at info.magnolia.ui.framework.shell.ShellImpl$2.goToApp(ShellImpl.java:152)
at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.goToApp(MagnoliaShell.java:131)
at info.magnolia.ui.vaadin.magnoliashell.rpc.MagnoliaShellRpcDelegate.activateApp(MagnoliaShellRpcDelegate.java:68)
at sun.reflect.GeneratedMethodAccessor278.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
at com.vaadin.server.AbstractCommunicationManager.handleBurst(AbstractCommunicationManager.java:1680)
at com.vaadin.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1566)
at com.vaadin.server.AbstractCommunicationManager.handleUidlRequest(AbstractCommunicationManager.java:582)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:315)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
{noformat}

Launching an app that has sub apps but no app class set

{noformat}
java.lang.NullPointerException
at info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:59)
at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:118)
at info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstance(GuiceComponentProvider.java:108)
at info.magnolia.ui.framework.app.AppInstanceControllerImpl.start(AppInstanceControllerImpl.java:212)
at info.magnolia.ui.framework.app.AppControllerImpl.doStartIfNotAlreadyRunning(AppControllerImpl.java:254)
at info.magnolia.ui.framework.app.AppControllerImpl.onLocationChanged(AppControllerImpl.java:335)
at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64)
at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42)
at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:78)
at info.magnolia.ui.api.location.LocationController.goToWithoutChecks(LocationController.java:105)
at info.magnolia.ui.api.location.LocationController.goTo(LocationController.java:99)
at info.magnolia.ui.api.location.LocationHistoryHandler.handleFragment(LocationHistoryHandler.java:120)
at info.magnolia.ui.api.location.LocationHistoryHandler.access$100(LocationHistoryHandler.java:49)
at info.magnolia.ui.api.location.LocationHistoryHandler$1.onFragmentChanged(LocationHistoryHandler.java:79)
at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:55)
at info.magnolia.ui.api.shell.FragmentChangedEvent.dispatch(FragmentChangedEvent.java:41)
at info.magnolia.event.EventHandlerCollection.dispatch(EventHandlerCollection.java:72)
at info.magnolia.ui.framework.shell.ShellImpl$2.onFragmentChanged(ShellImpl.java:132)
at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.notifyOnFragmentChanged(MagnoliaShell.java:272)
at info.magnolia.ui.framework.shell.ShellImpl.goToApp(ShellImpl.java:263)
at info.magnolia.ui.framework.shell.ShellImpl.access$500(ShellImpl.java:80)
at info.magnolia.ui.framework.shell.ShellImpl$2.goToApp(ShellImpl.java:152)
at info.magnolia.ui.vaadin.magnoliashell.MagnoliaShell.goToApp(MagnoliaShell.java:131)
at info.magnolia.ui.vaadin.magnoliashell.rpc.MagnoliaShellRpcDelegate.activateApp(MagnoliaShellRpcDelegate.java:68)
at sun.reflect.GeneratedMethodAccessor278.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:168)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
at com.vaadin.server.AbstractCommunicationManager.handleBurst(AbstractCommunicationManager.java:1680)
at com.vaadin.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1566)
at com.vaadin.server.AbstractCommunicationManager.handleUidlRequest(AbstractCommunicationManager.java:582)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:315)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201)
{noformat}

Launching a content app with none of the configured content views set as "active" will break the admin central:

{noformat}
2013-07-08 17:03:33,492 WARN  info.magnolia.event.SimpleEventBus                : Exception caught when dispatching event: null
java.lang.NullPointerException
at info.magnolia.ui.workbench.WorkbenchPresenter.setViewType(WorkbenchPresenter.java:165)
at info.magnolia.ui.workbench.WorkbenchPresenter.resynch(WorkbenchPresenter.java:247)
at info.magnolia.ui.contentapp.browser.BrowserPresenter.resync(BrowserPresenter.java:239)
at info.magnolia.ui.contentapp.browser.BrowserSubApp.restoreBrowser(BrowserSubApp.java:209)

{noformat}

info.magnolia.ui.workbench.WorkbenchPresenter#start
we should not rely on a property called "active" (meaning default?). Instead we should use the first configured contentview as default. Same pattern we are using for the configured sub apps
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



----------------------------------------------------------------
For list details, see: http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to