Contacts based app, use of IObservable [message #573162] |
Wed, 07 April 2010 06:32  |
Eclipse User |
|
|
|
Hi,
On my continued journey learning e4. The Contacts example saves the Contact entity using saveAsVCard direct to a file. Is there a reason I cannot save the List contents directly?
When I try to do that I get an exception that I cannot find a decent description of using Google. It is clear what the exception is saying, but I could not find an example of using a WritableList is the correct way. Here is the exception
Caused by: org.eclipse.core.runtime.AssertionFailedException: assertion failed: Getter called outside realm of observable org.eclipse.core.databinding.observable.list.WritableList@437dcb
at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110)
at org.eclipse.core.databinding.observable.ObservableTracker.ge tterCalled(ObservableTracker.java:256)
at org.eclipse.core.databinding.observable.list.ObservableList. getterCalled(ObservableList.java:241)
at org.eclipse.core.databinding.observable.list.ObservableList. size(ObservableList.java:121)
at com.hsbcib.grds.testui.model.TestCaseRepository.saveTestCase s(TestCaseRepository.java:98)
Here is the code at fault
public TestCaseRepository () {
List<TestCase> tempcases = new ArrayList<TestCase>();
// Get the testcases from file store
getTestCases(tempcases);
this.testcases = new WritableList(tempcases, null);
}
...
public void saveTestCases() {
// Uses this format 'testcase name'|'Inbound meta filename'|
// 'Outbound meta filename'|'Mapping meta filename'|
// 'Inbound data filename'|'Outbound data filename'
// maps to Testcase object
FileWriter outputStream = null;
try {
outputStream = new FileWriter("./grdstestcase.dat");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedWriter writer = new BufferedWriter(outputStream);
try {
for(int i=0; i<testcases.size(); i++){
TestCase aCase = (TestCase) testcases.get(i);
String record = "";
record = aCase.getName()+"|";
record += aCase.getInboundMetaFile()+"|";
record += aCase.getOutboundMetaFile()+"|";
record += aCase.getMappingMetaFile()+"|";
record += aCase.getInboundDataFile()+"|";
record += aCase.getOutboundDataFile()+"\n";
writer.write(record);
}
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
testcases is the IObservableList object. The access to testcases.size() is line 98 in TestCaseRepository.
Thanks,
David
|
|
|
Re: Contacts based app, use of IObservable [message #573237 is a reply to message #573162] |
Wed, 07 April 2010 12:59  |
Eclipse User |
|
|
|
Eclipse-Databinding stuff needs to have Realm for the thread you are
using it. The workbench creates a default one for the Display-Thread
hence you often see people not using it.
If you are the one responsible for this you need to create your own
realm or if you invoke stuff not in an UI-Thread you need to provide the
Realm invoking code with Realm.runWithDefault().
Tom
Am 07.04.10 12:32, schrieb David Wynter:
> Hi,
>
> On my continued journey learning e4. The Contacts example saves the
> Contact entity using saveAsVCard direct to a file. Is there a reason I
> cannot save the List contents directly?
>
> When I try to do that I get an exception that I cannot find a decent
> description of using Google. It is clear what the exception is saying,
> but I could not find an example of using a WritableList is the correct
> way. Here is the exception
>
> Caused by: org.eclipse.core.runtime.AssertionFailedException: assertion
> failed: Getter called outside realm of observable
> org.eclipse.core.databinding.observable.list.WritableList@437dcb
> at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110)
> at
> org.eclipse.core.databinding.observable.ObservableTracker.ge tterCalled(ObservableTracker.java:256)
>
> at
> org.eclipse.core.databinding.observable.list.ObservableList. getterCalled(ObservableList.java:241)
>
> at
> org.eclipse.core.databinding.observable.list.ObservableList. size(ObservableList.java:121)
>
> at
> com.hsbcib.grds.testui.model.TestCaseRepository.saveTestCase s(TestCaseRepository.java:98)
>
>
>
> Here is the code at fault
>
> public TestCaseRepository () {
> List<TestCase> tempcases = new ArrayList<TestCase>();
> // Get the testcases from file store
> getTestCases(tempcases);
> this.testcases = new WritableList(tempcases, null);
> }
> ..
> public void saveTestCases() {
> // Uses this format 'testcase name'|'Inbound meta filename'|
> // 'Outbound meta filename'|'Mapping meta filename'|
> // 'Inbound data filename'|'Outbound data filename'
> // maps to Testcase object
> FileWriter outputStream = null;
> try {
> outputStream = new FileWriter("./grdstestcase.dat");
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> BufferedWriter writer = new BufferedWriter(outputStream);
> try {
> for(int i=0; i<testcases.size(); i++){
> TestCase aCase = (TestCase) testcases.get(i);
> String record = "";
> record = aCase.getName()+"|";
> record += aCase.getInboundMetaFile()+"|";
> record += aCase.getOutboundMetaFile()+"|";
> record += aCase.getMappingMetaFile()+"|";
> record += aCase.getInboundDataFile()+"|";
> record += aCase.getOutboundDataFile()+"\n";
> writer.write(record);
> }
> writer.close();
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> testcases is the IObservableList object. The access to testcases.size()
> is line 98 in TestCaseRepository.
> Thanks,
>
> David
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.08258 seconds