RCP WritableList Error

lumo

Top Contributor
Hallo,

ich habe in einem meiner programme bis jetzt eine simple liste in einer tabelle dargestellt.
jetzt ist es so weit, dass ich die liste aktualisieren will, wenn sie im hinergrund geändert wurde.
dafür musste ich die List in eine WritableList ändern.

mein problem ist nun aber, dass er sich genau bei dieser tätigkeit aufhängt (ich habe das gleiche in einem test-programm gemacht, wo ich eine liste per code erstelle und dann writable mache... ohne Eclipse&RCP und da klappts...)

hier die fehlermeldung, die ich geworfen bekomme:

Code:
org.eclipse.core.runtime.AssertionFailedException: null argument:Realm cannot be null
	at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
	at org.eclipse.core.databinding.observable.ChangeManager.<init>(ChangeManager.java:37)
	at org.eclipse.core.databinding.observable.AbstractObservable.<init>(AbstractObservable.java:29)
	at org.eclipse.core.databinding.observable.list.ObservableList.<init>(ObservableList.java:56)
	at org.eclipse.core.databinding.observable.list.WritableList.<init>(WritableList.java:105)
	at org.eclipse.core.databinding.observable.list.WritableList.<init>(WritableList.java:71)
	at lumo.core.controller.CoreController.setList(CoreController.java:245)

HINWEIS: die liste ist weder null noch leer!

ideen?

ich hab jetzt etwas gefunden mit dem es funktioniert - aber die lösung find ich nicht wirklich schön...


Code:
Realm.runWithDefault(SWTObservables.getRealm(Display.getDefault()), new Runnable() {
				
				@Override
				public void run() {
					// code to create writeable list
					list.put(clazz, new WritableList(newValues, null));
				}
			});
es sollte doch möglich sein dass eclipse selbst den default realm erstellt... oder wozu gibts das teil sonst?!

ECLIPSE: Helios SR1
 
Zuletzt bearbeitet:

lumo

Top Contributor
es ist mir klar, dass das ohne realm nicht geht.
aber an die stelle wo er den realm fordert, ist standard eclipse code - also nicht von mir.
er lädt seinen realm per Realm.getDefault() und bekommt dort einen nullpointer retour.

da es kein Realm.setDefault(meinrealm) gibt... häng ich mit dem oben genannten code fest...

mein code ist wie oben "list.put(clazz, new WritableList(newValues, null));"
ich speichere eine liste in einer hashmap für eine klasse...
 

lumo

Top Contributor
die exception fiegt schon vor dem context.
meine reihenfolge sieht so aus.
erstellen der einzelnen objekte (laden aus der datenbank - alle bind-able)
dann erstellen einer liste aus diesen elementen.
dann wandle ich diese liste in eine writablelist um (IObservableList) (HIER fliegt die exception schon!)
und die kommt dann in meine binding factory, die das ganze an die tabelle bindet.

hab mir eine BindingFactory geschrieben, damit ich das ganze binding zeug nicht jedes mal neu programmieren muss...
(der code funktioniert auch - läuft schon der rest des programmes damit...)
 

lumo

Top Contributor
ich frag mich langsam wirklich, ob ich das ganze falsch verstanden hab...
(das kann ja nicht so kompliziert sein, wie es mir gerade vorkommt...)

meine ganzen objekte sind observed.
jetzt soll eine liste observed gemacht werden und in meine tabelle gebunden werden
also eine liste aus meinen objekten erstellen
dann die writeablelist erstellen mit dem realm
dann die liste an die tabelle binden mit

Code:
ViewerSupport.bind(viewer, writeablelist, BeanProperties.values(fieldNames));

das ist doch schon die ganze hexerei oder???
 

lumo

Top Contributor
so, hab meine kiste neu gestartet!
und siehe da, jetzt klappt alles so wie es soll.

windows oder eclipse haben wohl nicht ganz sauber gearbeitet...
 

Ähnliche Java Themen


Oben