[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform] Re: treeviewer databinding error

Could you provide a complete snippet I can runn out of the box?

Tom

hao schrieb:
I tried a treeviewer jface databinding but got some error. Could someone tell me what causes the error. Here are the error I got:
org.eclipse.core.databinding - 4 - cannot get value
java.lang.IllegalArgumentException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)


at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:615)
at org.eclipse.core.internal.databinding.beans.JavaBeanObservableMap.doGet(JavaBeanObservableMap.java:105)


at org.eclipse.core.databinding.observable.map.ComputedObservableMap$1.handleSetChange(ComputedObservableMap.java:52)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.internal.databinding.observable.UnmodifiableObservableSet.access$0(UnmodifiableObservableSet.java:1)

at org.eclipse.core.internal.databinding.observable.UnmodifiableObservableSet$1.handleSetChange(UnmodifiableObservableSet.java:30)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet.access$1(DetailObservableSet.java:1)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet$1.handleSetChange(DetailObservableSet.java:42)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.databinding.observable.set.WritableSet.add(WritableSet.java:90)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet.add(DetailObservableSet.java:106)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider$TreeNode.<init>(ObservableCollectionTreeContentProvider.java:284)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getOrCreateNode(ObservableCollectionTreeContentProvider.java:181)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getChildren(ObservableCollectionTreeContentProvider.java:162)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getElements(ObservableCollectionTreeContentProvider.java:158)

at org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider.getElements(ObservableListTreeContentProvider.java:155)

at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:937)

at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:703)

at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1330)

at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:385)
at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren(AbstractTreeViewer.java:636)


at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:602)

at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:799)

at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)


at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:634)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1490)


at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:823)

at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1474)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365)

at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:397)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328)

at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1467)

at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1603)


at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.initDataBindings(PhoneBookUsingTreeViewer.java:313)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.createContents(PhoneBookUsingTreeViewer.java:283)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.open(PhoneBookUsingTreeViewer.java:161)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer$1.run(PhoneBookUsingTreeViewer.java:147)

at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.main(PhoneBookUsingTreeViewer.java:142)

java.lang.RuntimeException: java.lang.IllegalArgumentException
at org.eclipse.core.internal.databinding.beans.JavaBeanObservableMap.doGet(JavaBeanObservableMap.java:110)


at org.eclipse.core.databinding.observable.map.ComputedObservableMap$1.handleSetChange(ComputedObservableMap.java:52)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.internal.databinding.observable.UnmodifiableObservableSet.access$0(UnmodifiableObservableSet.java:1)

at org.eclipse.core.internal.databinding.observable.UnmodifiableObservableSet$1.handleSetChange(UnmodifiableObservableSet.java:30)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet.access$1(DetailObservableSet.java:1)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet$1.handleSetChange(DetailObservableSet.java:42)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:129)

at org.eclipse.core.databinding.observable.set.ObservableSet.fireSetChange(ObservableSet.java:67)

at org.eclipse.core.databinding.observable.set.WritableSet.add(WritableSet.java:90)

at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableSet.add(DetailObservableSet.java:106)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider$TreeNode.<init>(ObservableCollectionTreeContentProvider.java:284)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getOrCreateNode(ObservableCollectionTreeContentProvider.java:181)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getChildren(ObservableCollectionTreeContentProvider.java:162)

at org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider.getElements(ObservableCollectionTreeContentProvider.java:158)

at org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider.getElements(ObservableListTreeContentProvider.java:155)

at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:937)

at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:703)

at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1330)

at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:385)
at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren(AbstractTreeViewer.java:636)


at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:602)

at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:799)

at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)


at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:634)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1490)


at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:823)

at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1474)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365)

at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:397)

at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328)

at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1467)

at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1603)


at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.initDataBindings(PhoneBookUsingTreeViewer.java:313)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.createContents(PhoneBookUsingTreeViewer.java:283)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.open(PhoneBookUsingTreeViewer.java:161)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer$1.run(PhoneBookUsingTreeViewer.java:147)

at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)

at com.discover.plugin.phonebook.treeviewer.v34.PhoneBookUsingTreeViewer.main(PhoneBookUsingTreeViewer.java:142)

Caused by: java.lang.IllegalArgumentException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)


at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:615)
at org.eclipse.core.internal.databinding.beans.JavaBeanObservableMap.doGet(JavaBeanObservableMap.java:105)


    ... 46 more

Here's the binding code
    private PersonGroups m_groups = new PersonGroups();
    private TreeViewer m_personViewer;

ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
BeansObservables.listFactory(Realm.getDefault(), "groups",
PersonGroups.class), null);
m_personViewer.setContentProvider(contentProvider);
IObservableMap[] m_personViewerLabelProviderMaps = BeansObservables.observeMaps(contentProvider.getKnownElements(),
PersonGroup.class, new String[]{"persons"});
m_personViewer.setLabelProvider(new ObservableMapLabelProvider(m_personViewerLabelProviderMaps));


//IObservableList m_groupsGroupsObserveList = //BeansObservables.observeList(Realm.getDefault(), m_groups, "groups");
m_personViewer.setInput(m_groups);
..
public class PersonGroups extends AbstractModelObject {
private final List/* <PersonGroup> */m_groups = new ArrayList();


    public void addGroup(PersonGroup group) {
        m_groups.add(group);
        firePropertyChange("groups", null, m_groups);
    }

    public void removeGroup(PersonGroup group) {
        m_groups.remove(group);
        firePropertyChange("groups", null, m_groups);
    }

    public List getGroups() {
        return m_groups;
    }

@Override
public String toString() {
String RL = System.getProperty("line.separator");
StringBuilder strBuf = new StringBuilder();
strBuf.append("Person Groups");
strBuf.append(RL);
for(Iterator it= m_groups.iterator(); it.hasNext(); ){
strBuf.append(it.next());
strBuf.append(RL);
}
return strBuf.toString();
}
}


public class PersonGroup extends AbstractModelObject {
    private final List/* <Person> */m_persons = new ArrayList();
    private String m_name;

    public PersonGroup() {
    }

    public PersonGroup(String name) {
        m_name = name;
    }

    public String getName() {
        return m_name;
    }

    public void setName(String name) {
        String oldValue = m_name;
        m_name = name;
        firePropertyChange("name", oldValue, m_name);
    }

    public void addPerson(Person person) {
        m_persons.add(person);
        firePropertyChange("persons", null, m_persons);
    }

    public void removePerson(Person person) {
        m_persons.remove(person);
        firePropertyChange("persons", null, m_persons);
    }

    public List getPersons() {
        return m_persons;
    }

    public String getEmail() {
        return "";
    }

    public void setEmail(String email) {
    }

    public String getPhone() {
        return "";
    }

    public void setPhone(String phone) {
    }

    public String getMobilePhone1() {
        return "";
    }

    public void setMobilePhone1(String phone1) {
    }

    public String getMobilePhone2() {
        return "";
    }

    public void setMobilePhone2(String phone2) {
    }

@Override
public String toString() {
String RL = System.getProperty("line.separator");
StringBuilder strBuf = new StringBuilder();
strBuf.append("Person Group - ");
strBuf.append(m_name);
strBuf.append(RL);
for(Iterator it= m_persons.iterator(); it.hasNext(); ){
strBuf.append(it.next());
strBuf.append(RL);
}
return strBuf.toString();
}
}


public class Person extends AbstractModelObject {
    private String m_name = "";
    private String m_email = "";
    private String m_phone = "";
    private String m_mobilePhone1 = "";
    private String m_mobilePhone2 = "";

    public Person() {
    }

    public Person(String name, String email, String phone, String phone1,
            String phone2) {
        m_name = name;
        m_email = email;
        m_phone = phone;
        m_mobilePhone1 = phone1;
        m_mobilePhone2 = phone2;
    }

    public String getName() {
        return m_name;
    }

    public void setName(String name) {
        String oldValue = m_name;
        m_name = name;
        firePropertyChange("name", oldValue, m_name);
    }

    public String getEmail() {
        return m_email;
    }

    public void setEmail(String email) {
        String oldValue = m_email;
        m_email = email;
        firePropertyChange("email", oldValue, m_email);
    }

    public String getPhone() {
        return m_phone;
    }

    public void setPhone(String phone) {
        String oldValue = m_phone;
        m_phone = phone;
        firePropertyChange("phone", oldValue, m_phone);
    }

    public String getMobilePhone1() {
        return m_mobilePhone1;
    }

    public void setMobilePhone1(String phone1) {
        String oldValue = m_mobilePhone1;
        m_mobilePhone1 = phone1;
        firePropertyChange("mobilePhone1", oldValue, m_mobilePhone1);
    }

    public String getMobilePhone2() {
        return m_mobilePhone2;
    }

    public void setMobilePhone2(String phone2) {
        String oldValue = m_mobilePhone2;
        m_mobilePhone2 = phone2;
        firePropertyChange("mobilePhone2", oldValue, m_mobilePhone2);
    }

@Override
public String toString() {
StringBuilder strBuf = new StringBuilder();
strBuf.append("name=");
strBuf.append(m_name);
strBuf.append(";");
strBuf.append("email=");
strBuf.append(m_email);
strBuf.append(";");
strBuf.append("phone=");
strBuf.append(m_phone);
strBuf.append(";");
strBuf.append("mobilePhone1=");
strBuf.append(m_mobilePhone1);
strBuf.append(";");
strBuf.append("mobilePhone2=");
strBuf.append(m_mobilePhone2);
return strBuf.toString();
}
}






--
B e s t S o l u t i o n . at
--------------------------------------------------------------------
Tom Schindl                                          JFace-Committer
--------------------------------------------------------------------