I think it's a bug on both EOModeler's and WO's. EOModeler's that it
let you create this to begin with, and WO's that it doesn't even warn
that there are duplicate attribute definitions. It looks like when
you call EOEntity.attributeNamed, it just makes an NSDictionary of
all the attributes, meaning the second one would just win the name
competition, potentially silently really causing weird problems. For
what it's worth, the new EOModeler eclipse plugin won't let you do
this. I'm not exactly sure what I should do if you try to open a
broken model, though, because it's going to cause really strange
problems in the plugin (in all the same ways). I can't decide if I
should reject it outright, or whether I should automatically rename
the second one with an underscore and give you a warning? The
problem is that I can't really just leave it and let you have both
names, because it's just going to break things. I'm leaning towards
automatically renaming -- I think maybe I would need to rename the
FIRST one when a second one appears, so the second one wins (to match
WO's resultant behavior).
ms
On Jul 9, 2006, at 11:54 AM, Pierre Frisch wrote:
> Sorry Mike, when you stare at things you dont see them anymore. I
> don't think it is legal but I don't understand why WO does not
> complain about it. I have been running with that for a long time. I
> think it is because it was not a class property but even then it is
> bizarre.
>
> Thanks
>
> Pierre
>
> On 9-Jul-06, at 8:46 AM, Mike Schrag wrote:
>
>> So your EOJDBCPrototypes prototype file defines TWO attributes
>> named "size". Is this actually legal? I can't imagine that it
>> is ... I don't know how you would ever be able to resolve which
>> prototype you mean.
>>
>> On Jul 9, 2006, at 11:37 AM, Pierre Frisch wrote:
>>
>>> Hi Mike
>>>
>>> I wanted to try the new EOModeler Editor but I immediately got an
>>> error. The referenced file is there: /Users/pierre/Projects/
>>> workspace/DatabaseTypes/build/DatabaseTypes.framework/Resources/
>>> Prototypes.eomodeld/EOJDBCPrototypes.plist but of course the
>>> fetchspec is not as it is a prototypes model. I have enclosed the
>>> model.
>>>
>>> I have the latest WOLips (156) which is not exactly the latest
>>> sources (the throw is at line 445 and not 416)? Could we possibly
>>> reference the versions with the subversion number it would make
>>> life easier as I have no way of knowing which sources correspond
>>> to that version.
>>>
>>> Thanks
>>>
>>> Pierre
>>>
>>>
>>> org.objectstyle.wolips.eomodeler.model.EOModelException: Failed
>>> to load model from /Users/pierre/Projects/workspace/DatabaseTypes/
>>> build/DatabaseTypes.framework/Resources/Prototypes.eomodeld/
>>> EOJDBCPrototypes.plist (fetch spec = /Users/pierre/Projects/
>>> workspace/DatabaseTypes/build/DatabaseTypes.framework/Resources/
>>> Prototypes.eomodeld/EOJDBCPrototypes.fspec).
>>> at org.objectstyle.wolips.eomodeler.model.EOEntity.loadFromFile
>>> (EOEntity.java:416)
>>> at org.objectstyle.wolips.eomodeler.model.EOModel.loadFromFolder
>>> (EOModel.java:225)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EOModelGroup.addModelsFromFol
>>> der(EOModelGroup.java:226)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EOModelGroup.addModelsFromFol
>>> der(EOModelGroup.java:231)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EOModelGroup.addModelsFromFol
>>> der(EOModelGroup.java:231)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EOModelGroup.addModelsFromFol
>>> der(EOModelGroup.java:231)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EclipseEOModelGroupFactory.ad
>>> dModelsFromFolderIfNecessary(EclipseEOModelGroupFactory.java:72)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EclipseEOModelGroupFactory.cr
>>> eateModelGroup(EclipseEOModelGroupFactory.java:125)
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EclipseEOModelGroupFactory.cr
>>> eateModel(EclipseEOModelGroupFactory.java:78)
>>> at
>>> org.objectstyle.wolips.eomodeler.editors.EOModelEditorInput.<init>
>>> (EOModelEditorInput.java:81)
>>> at org.objectstyle.wolips.eomodeler.editors.EOModelEditor.init
>>> (EOModelEditor.java:205)
>>> at org.eclipse.ui.internal.EditorManager.createSite
>>> (EditorManager.java:839)
>>> at org.eclipse.ui.internal.EditorReference.createPartHelper
>>> (EditorReference.java:583)
>>> at org.eclipse.ui.internal.EditorReference.createPart
>>> (EditorReference.java:372)
>>> at org.eclipse.ui.internal.WorkbenchPartReference.getPart
>>> (WorkbenchPartReference.java:566)
>>> at org.eclipse.ui.internal.EditorReference.getEditor
>>> (EditorReference.java:214)
>>> at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched
>>> (WorkbenchPage.java:2588)
>>> at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor
>>> (WorkbenchPage.java:2521)
>>> at org.eclipse.ui.internal.WorkbenchPage.access$10
>>> (WorkbenchPage.java:2513)
>>> at org.eclipse.ui.internal.WorkbenchPage$9.run
>>> (WorkbenchPage.java:2498)
>>> at org.eclipse.swt.custom.BusyIndicator.showWhile
>>> (BusyIndicator.java:67)
>>> at org.eclipse.ui.internal.WorkbenchPage.openEditor
>>> (WorkbenchPage.java:2493)
>>> at org.eclipse.ui.actions.OpenWithMenu.openEditor
>>> (OpenWithMenu.java:288)
>>> at org.eclipse.ui.actions.OpenWithMenu.access$0
>>> (OpenWithMenu.java:280)
>>> at org.eclipse.ui.actions.OpenWithMenu$2.handleEvent
>>> (OpenWithMenu.java:184)
>>> 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.Widget.notifyListeners(Widget.java:1279)
>>> at org.eclipse.swt.widgets.Display.runDeferredEvents
>>> (Display.java:3312)
>>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:
>>> 2941)
>>> 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.runAppl
>>> ication(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)
>>> Caused by:
>>> org.objectstyle.wolips.eomodeler.model.DuplicateAttributeNameExcepti
>>> on: There is already an attribute named 'size' in EOJDBCPrototypes.
>>> at
>>> org.objectstyle.wolips.eomodeler.model.EOEntity._checkForDuplicateAt
>>> tributeName(EOEntity.java:298)
>>> at org.objectstyle.wolips.eomodeler.model.EOEntity.addAttribute
>>> (EOEntity.java:333)
>>> at org.objectstyle.wolips.eomodeler.model.EOEntity.loadFromMap
>>> (EOEntity.java:444)
>>> at org.objectstyle.wolips.eomodeler.model.EOEntity.loadFromFile
>>> (EOEntity.java:408)
>>> ... 49 more
>>>
>>>
>>> <Prototypes.eomodeld>
>>
>
This archive was generated by hypermail 2.0.0 : Sun Jul 09 2006 - 13:14:46 EDT