Seite 1 von 1

Wann ist der refresh(true) der ChildFactory fertig?

Verfasst: 10.03.2014, 10:16
von WeserLinux
Hallo Zusammen !

In einer NB 7.3 Applikation erweitere ich meine Klasse um ChildFactory.Detachable<...> um meine Nodes und Children-Nodes über einen ExplorerManager darzustellen. Gleichzeitig ist ein PropertyChangeListener implementiert, um auf Änderungen im darunter liegenden Datenmodell zu hören. Ändert sich nun das Datenmodell erfolgt ein FirePropertyChange, was ein refresh(true) auslöst und die Nodes anpasst. Soweit der simple Teil.

Nun werden leider in einem älteren Bereich der Applikation, diese Nodes (+Children) direkt abgefragt über

Code: Alles auswählen

exploererManager.getRootContext().getChildren().getNodes()
und natürlich scheinen sich der refresh(true) mit der o.g. Nodes-Abfrage zu überschneiden, soll heißen, nicht alle Nodes/Childnodes sind rechtzeitig generiert.

Meine Frage ist nun: Gibt es eine Möglichkeit den refresh(true) Vorgang der erst createKeys(...) und dann createNodeForKey(...) auslöst vollständig abzuwarten, bevor wieder auf die Nodes zugegriffen wird?

Danke Euch

Re: Wann ist der refresh(true) der ChildFactory fertig?

Verfasst: 10.03.2014, 12:44
von nigjo
Hi

Ich hoffe für Dich, dass du den "älteren Bereich der Applikation" noch ändern kannst. Denn in den JavaDocs zu getChildren() steht explizit drin, dass man diese Methode nicht nutzen sollte um Daten "abzugreifen". Das sollte immer über das Datenmodell passieren. Zur Not kann man auch zusätzliche Daten ins Lookup der Nodes packen, die dann abgefragt werden, aber getChildren() von Nodes aus einem ExplorerManager sollte man nur abfragen, wenn man selber ein ExplorerView schreibt. Aber auch dann sollten entsprechende Listener am Manager und an den Nodes angemeldet werden, die auf Änderungen reagieren können.

Sich darauf zu verlassen, dass ein refresh "rechtzeitig" fertig wird halte ich für sehr gewagt. Dafür sind bei diesem Updateprozess - so weit ich das bisher überblicken konnte - viel zu viele Threads involviert als das man da verlässliche Aussagen zu treffen könnte. Ich lass mich da aber auch gerne eines Besseren belehren.

Gruß
Jens

Re: Wann ist der refresh(true) der ChildFactory fertig?

Verfasst: 10.03.2014, 12:56
von WeserLinux
Hallo Jens,

das habe ich mir schon gedacht, dass da wohl etwas umgeschrieben werden muss. Leider ist der "ältere" Teil etwas groß und meine Hoffnung war, dass es eine vielleicht "unschönere" Lösung gibt, das refresh(true) vollständig beenden zu lassen und erst dann die neue Nodes (+Children) Liste anfässt.

Gruss

Olaf