Search the FirstSpirit Knowledge Base
Beim Anzeigen eines SearchDialog in FirstSpirit 5 aus einem Modul heraus wird der Dialog zwar korrekt angezeigt, allerdings sieht man im Server-Log, dass im Hintergrund eine NullPointerException fliegt.
In FirstSpirit 4.2 funktioniert das Anzeigen des SearchDialog problemlos. Hier die beiden Code Fragmente aus dem Modul für FS 4 und FS 5 im Vergleich:
Code alt (4.2):
final GuiHost host = LookUp.getNotNull(GuiHost.class);
final SearchDialog dialog = SearchDialog.getBuilder().host(host)
.storeTypes(EnumSet.of(Store.Type.MEDIASTORE)).selectionFilter(StoreElementFilter.create(MediaFolder.class))
.allowSelectionFilter(StoreElementFilter.create(MediaFolder.class)).displayFilter(StoreElementFilter.create(MediaFolder.class)).enableDropzone(false).build();
Code neu (5):
final GuiHost host = LookUp.getNotNull(GuiHost.class);
final SearchDialog dialog = SearchDialog.getBuilder().host(host)
.storeTypes(EnumSet.of(Store.Type.MEDIASTORE)).selectionFilter(StoreElementFilter.create(MediaFolder.class)).enableDropzone(false).build();
Die Methode allowSelectionFilter() gibt es in FirstSpirit 5 nicht mehr, durch welche andere Methode wurde sie ersetzt?
Exception FS 5:
ERROR 26.02.2013 15:19:35.798 (de.espirit.firstspirit.client.AbstractGuiHost): ExceptionHandler.uncaughtException() - java.lang.NullPointerException
FSVersion=5.0.211.55785#3218;JDK=1.7.0_13 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=26.02.2013 15:19:35
java.lang.NullPointerException
at de.espirit.firstspirit.client.dialog.search.SearchPanel.updateStoreType(SearchPanel.java:1041)
at de.espirit.firstspirit.client.dialog.search.SearchPanel$6$1.run(SearchPanel.java:517)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:105)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:73)
at de.espirit.firstspirit.client.dialog.search.SearchPanel$6.valueChanged(SearchPanel.java:515)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
at javax.swing.JTree.setSelectionPath(Unknown Source)
at de.espirit.firstspirit.client.dialog.AccessTreeInputDialog.gotoNode(AccessTreeInputDialog.java:591)
at de.espirit.firstspirit.client.dialog.AccessTreeInputDialog.updateHistoryDivider(AccessTreeInputDialog.java:309)
at de.espirit.firstspirit.client.dialog.ElementHistoryList.refresh(ElementHistoryList.java:122)
at de.espirit.firstspirit.client.dialog.ElementHistoryList.access$700(ElementHistoryList.java:40)
at de.espirit.firstspirit.client.dialog.ElementHistoryList$TreeModelHandler.treeStructureChanged(ElementHistoryList.java:232)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.fireTreeEvent(AbstractTreeModel.java:91)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.access$100(AbstractTreeModel.java:25)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel$1.run(AbstractTreeModel.java:68)
at de.espirit.common.gui.EventDispatchThreadHelper$2.run(EventDispatchThreadHelper.java:92)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:133)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:124)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:110)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: de.espirit.common.base.control.CallerStack: called from
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:88)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:73)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.fireTreeEvent(AbstractTreeModel.java:65)
at de.espirit.firstspirit.store.gui.MultiTreeModel.fireNodeStructureChanged(MultiTreeModel.java:291)
at de.espirit.firstspirit.store.gui.MultiTreeModel.addModel(MultiTreeModel.java:81)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper.createAndAddLoadingModel(LazySearchTreeHelper.java:175)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper.access$400(LazySearchTreeHelper.java:61)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper$1.run(LazySearchTreeHelper.java:238)
at de.espirit.firstspirit.client.gui.util.GuiUtil$RunnableWrapper.run(GuiUtil.java:1928)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Danke und viele Grüße!
in fs5 gibt es eine API fuer solche Operation http://www.e-spirit.com/odfs50/dev/de/espirit/firstspirit/ui/gadgets/aspects/operations/SelectStoreE...
eine solche Operation bekommt man ueber einen OperationAgent welchen man via http://www.e-spirit.com/odfs50/dev/de/espirit/firstspirit/agency/SpecialistsBroker.html
beziehen kann.
p.s.: in firstspirit 4 und fs5 sind und waren diese Klassen bzw. die Benutzung niemals teil der öffentlichen API....decompile?
Danke für die schnelle Antwort, ich habe es mit SelectStoreElementOperation ausprobiert. Der Dialog wird angezeigt, allerdings habe ich keine Elemente zur Auswahl. Ich habe es auch mit setPreselection() ausprobiert usw. Wie kann ich die Auswahl auf Elemente aus dem MediaStore beschränken? Ein kurzes Code-Beispiel wäre super. Vielen Dank!
final StoreTypeOptions typeOptions = operation.addProject(null).addStoreType(Type.TEMPLATESTORE);
sowas in der Art muss auf der Operation aufgerufen bzw. konfiguriert werden. also welches projekt (null == local) welcher Store und dann gibts einige andere Parameter fuer die ProjectOptions.StoreTypeOptions: bspw. addNavigatableFolders addTopLevelFolders ...
Vielen Dank! Mit folgendem Code wird der Search Dialog korrekt angezeigt. Leider fliegt beim Anzeigen die gleiche NullPointerException wie oben, sobald ich einen StoreType gesetzt habe.
OperationAgent operationAgent = broker.requireSpecialist(OperationAgent.TYPE);
SelectStoreElementOperation selectElementOperation = operationAgent.getOperation(SelectStoreElementOperation.TYPE);
selectElementOperation.addProject(null).addStoreType(Type.MEDIASTORE);
selectElementOperation.addTypeToSelect(MediaFolder.class);
List<SelectStoreElementOperation.Selection> result = selectElementOperation.perform();
Exception:
ERROR 25.03.2013 10:56:25.472 (de.espirit.firstspirit.client.AbstractGuiHost): ExceptionHandler.uncaughtException() - java.lang.NullPointerException
FSVersion=5.0.211.55785#3218;JDK=1.7.0_13 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=25.03.2013 10:56:25
java.lang.NullPointerException
at de.espirit.firstspirit.client.dialog.search.SearchPanel.updateStoreType(SearchPanel.java:1041)
at de.espirit.firstspirit.client.dialog.search.SearchPanel$6$2.run(SearchPanel.java:528)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:105)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:73)
at de.espirit.firstspirit.client.dialog.search.SearchPanel$6.valueChanged(SearchPanel.java:526)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
at javax.swing.JTree.setSelectionPath(Unknown Source)
at de.espirit.firstspirit.client.dialog.AccessTreeInputDialog.gotoNode(AccessTreeInputDialog.java:591)
at de.espirit.firstspirit.client.dialog.AccessTreeInputDialog.updateHistoryDivider(AccessTreeInputDialog.java:309)
at de.espirit.firstspirit.client.dialog.ElementHistoryList.refresh(ElementHistoryList.java:122)
at de.espirit.firstspirit.client.dialog.ElementHistoryList.access$700(ElementHistoryList.java:40)
at de.espirit.firstspirit.client.dialog.ElementHistoryList$TreeModelHandler.treeStructureChanged(ElementHistoryList.java:232)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.fireTreeEvent(AbstractTreeModel.java:91)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.access$100(AbstractTreeModel.java:25)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel$1.run(AbstractTreeModel.java:68)
at de.espirit.common.gui.EventDispatchThreadHelper$2.run(EventDispatchThreadHelper.java:92)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:133)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:124)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:110)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: de.espirit.common.base.control.CallerStack: called from
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:88)
at de.espirit.common.gui.EventDispatchThreadHelper.invokeLater(EventDispatchThreadHelper.java:73)
at de.espirit.firstspirit.store.gui.view.AbstractTreeModel.fireTreeEvent(AbstractTreeModel.java:65)
at de.espirit.firstspirit.store.gui.MultiTreeModel.fireNodeStructureChanged(MultiTreeModel.java:291)
at de.espirit.firstspirit.store.gui.MultiTreeModel.addModel(MultiTreeModel.java:81)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper.createAndAddLoadingModel(LazySearchTreeHelper.java:175)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper.access$400(LazySearchTreeHelper.java:61)
at de.espirit.firstspirit.client.dialog.search.LazySearchTreeHelper$1.run(LazySearchTreeHelper.java:238)
at de.espirit.firstspirit.client.gui.util.GuiUtil$RunnableWrapper.run(GuiUtil.java:1928)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Hallo,
bei der nun auftretenden NullPointerException könnte es sich um einen Fehler in FirstSpirit handeln. Ich habe intern ein entsprechendes Ticket erstellt (#135848).
Bitte wenden Sie sich an den Helpdesk, um über den Fortlauf dieses Tickets zu erkundigen.
Gruß
Hallo Herr Rößler,
ich nehme mal an, damit hat sich die Frage erledigt und ich setzte das Posting auf beantwortet.
Viele Grüße
Thorsten