Re: EOModeler Flatten relationship bug

From: Pierre Frisch (pierre.frisc..pearway.com)
Date: Mon Jul 17 2006 - 12:08:29 EDT

  • Next message: Sébastien Sahuc: "EOModel Editor: Issue loading the fetchSpec: Unknown class NSNumber"

    I think I cried victory too quickly. With the latest committed
    sources (2829), with a existing fatten relationship the cardinality
    is still wrong i.e. it is a toMany but it is shown as a toOne. If I
    delete that relationship and try to recreate it I get a loop. This is
    nothing special fatten relationship part of a ManyToMany with nothing
    special. The model is broken and I have to restore it from backup.

    Thanks

    Pierre

    The EOmodeler version is:
            {
                 definition = "publicationUserPreferencess.publication";
                 joinSemantic = EOInnerJoin;
                 name = publications;
             }
    Our version is
            {
                definition = publicationUserPreferencess_publication;
                name = publicationUserPreferencess_publication;
            }
    The reference relationship to the join table is:
              {
                joinSemantic = EOInnerJoin;
                destination = UserPreferencesPublication;
                deleteRule = EODeleteRuleCascade;
                joins =
                (

                   {
                       destinationAttribute = oidUserPreferences;
                       sourceAttribute = oid;
                   }
                );
                isToMany = Y;
                name = publicationUserPreferencess;
                propagatesPrimaryKey = Y;
            }

    !ENTRY org.eclipse.ui 4 4 2006-07-17 17:56:02.068
    !MESSAGE Unhandled event loop exception

    !ENTRY org.eclipse.ui 4 0 2006-07-17 17:56:02.098
    !MESSAGE java.lang.NullPointerException
    !STACK 0
    java.lang.NullPointerException
            at
    org.objectstyle.wolips.eomodeler.model.EORelationshipPath.getChildren
    (EORelationshipPath.java:67)
            at
    org.objectstyle.wolips.eomodeler.outline.EOModelOutlineContentProvider.g
    etChildren(EOModelOutlineContentProvider.java:91)
            at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren
    (AbstractTreeViewer.java:1157)
            at org.eclipse.jface.viewers.TreeViewer.getRawChildren
    (TreeViewer.java:768)
            at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren
    (AbstractTreeViewer.java:565)
            at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren
    (AbstractTreeViewer.java:534)
            at org.eclipse.jface.viewers.AbstractTreeViewer$1.run
    (AbstractTreeViewer.java:719)
            at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:
    67)
            at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren
    (AbstractTreeViewer.java:696)
            at org.eclipse.jface.viewers.TreeViewer.createChildren
    (TreeViewer.java:892)
            at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand
    (AbstractTreeViewer.java:1240)
            at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded
    (AbstractTreeViewer.java:1252)
            at org.eclipse.swt.widgets.TypedListener.handleEvent
    (TypedListener.java:181)
            at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
            at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1496)
            at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1520)
            at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1505)
            at org.eclipse.swt.widgets.Tree.itemNotificationProc(Tree.java:2256)
            at org.eclipse.swt.widgets.Display.itemNotificationProc(Display.java:
    2254)
            at org.eclipse.swt.internal.carbon.OS.CallNextEventHandler(Native
    Method)
            at org.eclipse.swt.widgets.Tree.kEventMouseDown(Tree.java:2334)
            at org.eclipse.swt.widgets.Widget.mouseProc(Widget.java:1246)
            at org.eclipse.swt.widgets.Display.mouseProc(Display.java:2771)
            at org.eclipse.swt.internal.carbon.OS.SendEventToEventTarget(Native
    Method)
            at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2910)
            at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
            at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
            at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
    (Workbench.java:419)
            at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
            at org.eclipse.ui.internal.ide.IDEApplication.run
    (IDEApplication.java:95)
            at org.eclipse.core.internal.runtime.PlatformActivator$1.run
    (PlatformActivator.java:78)
            at
    org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplicat
    ion(EclipseAppLauncher.java:92)
            at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start
    (EclipseAppLauncher.java:68)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.run
    (EclipseStarter.java:400)
            at org.eclipse.core.runtime.adaptor.EclipseStarter.run
    (EclipseStarter.java:177)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke
    (NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke
    (DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
            at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
            at org.eclipse.core.launcher.Main.run(Main.java:977)
            at org.eclipse.core.launcher.Main.main(Main.java:952)

    !ENTRY org.eclipse.ui 4 4 2006-07-17 17:56:35.923
    !MESSAGE Unhandled event loop exception

    !ENTRY org.eclipse.ui 4 0 2006-07-17 17:56:35.927
    !MESSAGE java.lang.StackOverflowError
    !STACK 0
    java.lang.StackOverflowError
            at java.lang.ThreadLocal.get(ThreadLocal.java:125)
            at
    org.eclipse.jface.internal.databinding.provisional.observable.Observable
    Tracker.getterCalled(ObservableTracker.java:131)
            at
    org.eclipse.jface.internal.databinding.provisional.observable.list.Obser
    vableList$1.hasNext(ObservableList.java:159)
            at org.objectstyle.wolips.eomodeler.model.EOEntity.getAttributeNamed
    (EOEntity.java:795)
            at
    org.objectstyle.wolips.eomodeler.model.EOEntity.getAttributeOrRelationsh
    ipNamed(EOEntity.java:673)
            at org.objectstyle.wolips.eomodeler.model.EOEntity.resolveKeyPath
    (EOEntity.java:125)
            at org.objectstyle.wolips.eomodeler.model.EORelationship.isToMany
    (EORelationship.java:337)
            at org.objectstyle.wolips.eomodeler.model.EORelationship.isToMany
    (EORelationship.java:339)
            at org.objectstyle.wolips.eomodeler.model.EORelationship.isToMany
    (EORelationship.java:339)

    On 17-Jul-06, at 5:26 PM, Pierre Frisch wrote:

    > I cannot reproduce it with the latest bug so consider it as closed.
    > I will do more testing a bit later.
    >
    > Thanks
    >
    > Pierre
    >
    > On 17-Jul-06, at 4:41 PM, Mike Schrag wrote:
    >
    >> The cardinality thing is fixed now ... EOEntity can now resolve a
    >> keypath down to an IEOAttribute (IEOAttribute resolveKeyPath
    >> (String _keyPath)), and relationship isToMany returns the isToMany
    >> value of its target if it is a flattened relationship.
    >>
    >> For the second problem, I haven't seen this (and couldn't
    >> reproduce it in mine). Any time you get this error dialog, there
    >> should be a corresponding stack trace in the Error Log view. Can
    >> you send me the stack trace from that? The bottom exception of
    >> that trace has the actual cause of that problem.
    >>
    >> Oh, and I also set new relationships to default to be class
    >> relationships now.
    >>
    >> ms
    >>
    >> On Jul 17, 2006, at 6:35 AM, Pierre Frisch wrote:
    >>
    >>> Hi Mike,
    >>>
    >>> I have found a few bugs.
    >>>
    >>> There is a problem with the cardinality of flatten relationship.
    >>> The cardinality should be calculated based on the definition of
    >>> the relationship at the moment it is not. This quite a bit of
    >>> work as we need to explore the definition path to rebuild each
    >>> relationship and determine if it is a toMany.
    >>>
    >>> The other problem is the class property Boolean it is not set by
    >>> default as it should be and when I try to set it manually I get
    >>> an error:
    >>> <Picture 1.png>
    >>>
    >>> Thanks
    >>>
    >>> Pierre
    >>
    >>
    >
    >



    This archive was generated by hypermail 2.0.0 : Mon Jul 17 2006 - 12:08:36 EDT