You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Michael Gentry <mg...@masslight.net> on 2009/12/23 15:04:01 UTC

Another modeler bug ...

I still need to delve into this to get more details.

Yesterday a co-worker imported an EOModel and saved it.  Later on he
re-loaded the project and the DataMap fails to load.  I just repeated the
steps and verified it.  The problem lies in the stored fetch specifications
that were imported as Cayenne queries.  When we deleted the <query> parts
out of the map XML it loaded.  I haven't had a chance to try to figure out
which query was the problem yet (there are over 20 of them), but if someone
has recently done something with the query loading code, please let me know.

Thanks!  :-)

mrg

PS. This was a modeler I built on 12/15, post B1.

Re: Another modeler bug ...

Posted by Michael Gentry <mg...@masslight.net>.
I've found one query that trips it up.  Looking to see if there are others.
 I'll post them shortly (probably after a meeting I have to attend, though).

Thanks,

mrg


On Wed, Dec 23, 2009 at 9:10 AM, Andrus Adamchik <an...@objectstyle.org>wrote:

> Not sure if it is possible to share the DataMap xml file? Otherwise this
> can be posted to Jira, and somebody can take a look. Also any exceptions in
> ~/.cayenne/modeler.log ?
>
> Andrus
>
>
>
> On Dec 23, 2009, at 4:04 PM, Michael Gentry wrote:
>
>  I still need to delve into this to get more details.
>>
>> Yesterday a co-worker imported an EOModel and saved it.  Later on he
>> re-loaded the project and the DataMap fails to load.  I just repeated the
>> steps and verified it.  The problem lies in the stored fetch
>> specifications
>> that were imported as Cayenne queries.  When we deleted the <query> parts
>> out of the map XML it loaded.  I haven't had a chance to try to figure out
>> which query was the problem yet (there are over 20 of them), but if
>> someone
>> has recently done something with the query loading code, please let me
>> know.
>>
>> Thanks!  :-)
>>
>> mrg
>>
>> PS. This was a modeler I built on 12/15, post B1.
>>
>
>

Re: Another modeler bug ...

Posted by Michael Gentry <mg...@masslight.net>.
I agree that hunting down the problem in the EOF import code is a
lower priority.  I would even say it shouldn't stop 3.0 final from
being released, but the fact that the modeler will save something it
can't load should be fixed.  That Qualifier: field is free-text for
someone to type in and they can hose themselves unintentionally now.

I'll create a Jira for the Qualifier field/validation.  I should
probably create a separate one for the EOF import.  We have a lot of
EOF models here, so I'll look into it.

Thanks,

mrg


On Wed, Dec 23, 2009 at 9:42 AM, Andrus Adamchik <an...@objectstyle.org> wrote:
> On Dec 23, 2009, at 4:30 PM, Michael Gentry wrote:
>
>> db: = "OSIS "
>
> This is most certainly not a valid Cayenne expression. It is missing the
> name of the property or DB column. While I am less interested in tracing
> down EOF import code, the fact that we parse expressions on project load and
> throw an error on invalid ones is definitely a bug. It should just load, and
> give a validation error on subsequent save.
>
> Andrus
>

Re: Another modeler bug ...

Posted by Andrus Adamchik <an...@objectstyle.org>.
On Dec 23, 2009, at 4:30 PM, Michael Gentry wrote:

> db: = "OSIS "

This is most certainly not a valid Cayenne expression. It is missing  
the name of the property or DB column. While I am less interested in  
tracing down EOF import code, the fact that we parse expressions on  
project load and throw an error on invalid ones is definitely a bug.  
It should just load, and give a validation error on subsequent save.

Andrus

Re: Another modeler bug ...

Posted by Michael Gentry <mg...@masslight.net>.
23 of the 24 queries it imported loaded back in fine (although I
didn't verify they were actually correct).  Here is the one that
failed:

<query name="CoreContracts_OSISContracts"
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity"
root-name="CoreContracts">
    <qualifier><![CDATA[db: = "OSIS "]]></qualifier>
    <ordering><![CDATA[contractNum]]></ordering>
</query>

It is the only one that had a "db:" in it.  Under the "General" tab
for the query, it has: db: = "OSIS "

Here is the EOModel fetch specification it imported:

{
    OSISContracts = {
        class = EOFetchSpecification;
        entityName = CoreContracts;
        fetchLimit = 0;
        isDeep = YES;
        qualifier = {
            class = EOKeyValueQualifier;
            key = contractOwner;
            selectorName = "isEqualTo:";
            value = "OSIS ";
        };
        refreshesRefetchedObjects = YES;
        sortOrderings = (
            {
                class = EOSortOrdering;
                key = contractNum;
                selectorName = "compareAscending:";
            }
        );
    };
}

It doesn't look like the qualifier was correctly imported, either.
Here is the stack trace:

INFO: Warning: map loading failed.
org.apache.cayenne.CayenneRuntimeException: [v.3.0-SNAPSHOT Dec 15
2009 20:25:11] Error loading DataMap, last processed tag: <qualifier>
	at org.apache.cayenne.map.MapLoader.loadDataMap(MapLoader.java:732)
	at org.apache.cayenne.conf.RuntimeLoadDelegate.loadDataMap(RuntimeLoadDelegate.java:212)
	at org.apache.cayenne.conf.RuntimeLoadDelegate.shouldLoadDataMaps(RuntimeLoadDelegate.java:170)
	at org.apache.cayenne.conf.ConfigLoader$DomainHandler.loadMaps(ConfigLoader.java:251)
	at org.apache.cayenne.conf.ConfigLoader$DomainHandler.finished(ConfigLoader.java:235)
	at org.apache.cayenne.conf.AbstractHandler.endElement(AbstractHandler.java:124)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
	at org.apache.cayenne.conf.ConfigLoader.loadDomains(ConfigLoader.java:78)
	at org.apache.cayenne.conf.DefaultConfiguration.initialize(DefaultConfiguration.java:152)
	at org.apache.cayenne.project.ApplicationProject.loadProject(ApplicationProject.java:114)
	at org.apache.cayenne.project.ApplicationProject.postInitialize(ApplicationProject.java:101)
	at org.apache.cayenne.project.ApplicationProject.<init>(ApplicationProject.java:85)
	at org.apache.cayenne.modeler.action.OpenProjectAction.openProject(OpenProjectAction.java:123)
	at org.apache.cayenne.modeler.ProjectWatchdog.doOnChange(ProjectWatchdog.java:86)
	at org.apache.cayenne.modeler.util.FileWatchdog.check(FileWatchdog.java:198)
	at org.apache.cayenne.modeler.util.FileWatchdog.run(FileWatchdog.java:209)
Caused by: org.apache.cayenne.exp.parser.ParseException: Encountered "
"=" "= "" at line 1, column 5.
Was expecting:
    <PROPERTY_PATH> ...

	at org.apache.cayenne.exp.parser.ExpressionParser.generateParseException(ExpressionParser.java:1487)
	at org.apache.cayenne.exp.parser.ExpressionParser.jj_consume_token(ExpressionParser.java:1422)
	at org.apache.cayenne.exp.parser.ExpressionParser.pathExpression(ExpressionParser.java:1298)
	at org.apache.cayenne.exp.parser.ExpressionParser.numericPrimary(ExpressionParser.java:1202)
	at org.apache.cayenne.exp.parser.ExpressionParser.numericTerm(ExpressionParser.java:1156)
	at org.apache.cayenne.exp.parser.ExpressionParser.multiplySubtractExp(ExpressionParser.java:1063)
	at org.apache.cayenne.exp.parser.ExpressionParser.scalarNumericExpression(ExpressionParser.java:987)
	at org.apache.cayenne.exp.parser.ExpressionParser.scalarConditionExpression(ExpressionParser.java:780)
	at org.apache.cayenne.exp.parser.ExpressionParser.simpleCondition(ExpressionParser.java:237)
	at org.apache.cayenne.exp.parser.ExpressionParser.notCondition(ExpressionParser.java:190)
	at org.apache.cayenne.exp.parser.ExpressionParser.andCondition(ExpressionParser.java:96)
	at org.apache.cayenne.exp.parser.ExpressionParser.orCondition(ExpressionParser.java:56)
	at org.apache.cayenne.exp.parser.ExpressionParser.expression(ExpressionParser.java:49)
	at org.apache.cayenne.exp.Expression.fromString(Expression.java:136)
	at org.apache.cayenne.map.QueryLoader.setQualifier(QueryLoader.java:136)
	at org.apache.cayenne.map.MapLoader.processEndQualifier(MapLoader.java:1311)
	at org.apache.cayenne.map.MapLoader.access$49(MapLoader.java:1297)
	at org.apache.cayenne.map.MapLoader$49.execute(MapLoader.java:560)
	at org.apache.cayenne.map.MapLoader.endElement(MapLoader.java:873)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
	at org.apache.cayenne.map.MapLoader.loadDataMap(MapLoader.java:721)
	... 22 more


I have to run off for a bit now ...

Thanks,

mrg



On Wed, Dec 23, 2009 at 9:10 AM, Andrus Adamchik <an...@objectstyle.org> wrote:
>
> Not sure if it is possible to share the DataMap xml file? Otherwise this can be posted to Jira, and somebody can take a look. Also any exceptions in ~/.cayenne/modeler.log ?
>
> Andrus
>
>
> On Dec 23, 2009, at 4:04 PM, Michael Gentry wrote:
>
>> I still need to delve into this to get more details.
>>
>> Yesterday a co-worker imported an EOModel and saved it.  Later on he
>> re-loaded the project and the DataMap fails to load.  I just repeated the
>> steps and verified it.  The problem lies in the stored fetch specifications
>> that were imported as Cayenne queries.  When we deleted the <query> parts
>> out of the map XML it loaded.  I haven't had a chance to try to figure out
>> which query was the problem yet (there are over 20 of them), but if someone
>> has recently done something with the query loading code, please let me know.
>>
>> Thanks!  :-)
>>
>> mrg
>>
>> PS. This was a modeler I built on 12/15, post B1.
>

Re: Another modeler bug ...

Posted by Andrus Adamchik <an...@objectstyle.org>.
Not sure if it is possible to share the DataMap xml file? Otherwise  
this can be posted to Jira, and somebody can take a look. Also any  
exceptions in ~/.cayenne/modeler.log ?

Andrus


On Dec 23, 2009, at 4:04 PM, Michael Gentry wrote:

> I still need to delve into this to get more details.
>
> Yesterday a co-worker imported an EOModel and saved it.  Later on he
> re-loaded the project and the DataMap fails to load.  I just  
> repeated the
> steps and verified it.  The problem lies in the stored fetch  
> specifications
> that were imported as Cayenne queries.  When we deleted the <query>  
> parts
> out of the map XML it loaded.  I haven't had a chance to try to  
> figure out
> which query was the problem yet (there are over 20 of them), but if  
> someone
> has recently done something with the query loading code, please let  
> me know.
>
> Thanks!  :-)
>
> mrg
>
> PS. This was a modeler I built on 12/15, post B1.