[ 
http://issues.apache.org/jira/browse/JDO-194?page=comments#action_12361239 ] 

Craig Russell commented on JDO-194:
-----------------------------------

We are going to file a bug on the JRE saying that behavior for classes that 
don't exist is inconsistent based on the platform and the name. Specifically, 
it seems that Windows platforms get confused trying to resolve class names that 
differ in capitalization from real class names. 

There are two action items to take away.

1. JDO implementations should behave defensively and treat both 
NoClassDefFoundError and ClassNotFoundException as "class does not exist". 
There is no reason to expect that Sun will timely fix this defect in the 
relevant Java platforms that JDO implementations support.

2. TCK test cases should be changed to avoid using variable names that conflict 
modulo capitalization with class names.


> JPOX does not support implicit variables.
> -----------------------------------------
>
>          Key: JDO-194
>          URL: http://issues.apache.org/jira/browse/JDO-194
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michael Watzek
>     Assignee: Michael Bouschen

>
> JPOX throws an exception executing queries having implicit parameters (see 
> below). The bug may be reproduced executing test case 
> org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields.
> Query: SELECT FROM org.apache.jdo.tck.pc.company.Employee WHERE 
> team.contains(employee) & employee.firstname == 'emp1First' 
> org.jpox.store.exceptions.NoSuchPersistentFieldException: Field "employee" 
> does not exist in org.apache.jdo.tck.pc.company.Person or is not persistent
>       at 
> org.jpox.store.rdbms.table.ClassTable.getFieldMapping(ClassTable.java:1790)
>       at 
> org.jpox.store.expression.TableExpression.newFieldExpression(TableExpression.java:183)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileIdentifier(JDOQLQuery.java:1534)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1299)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1346)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1245)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1226)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1179)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1156)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1125)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1102)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1090)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1078)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1066)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1054)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1036)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:1013)
>       at 
> org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:891)
>       at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:569)
>       at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:639)
>       at org.jpox.store.query.Query.executeWithMap(Query.java:907)
>       at org.jpox.store.query.Query.executeWithArray(Query.java:887)
>       at org.jpox.store.query.Query.execute(Query.java:819)
>       at org.apache.jdo.tck.query.QueryTest.execute(QueryTest.java:706)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:625)
>       at 
> org.apache.jdo.tck.query.QueryTest.executeAPIQuery(QueryTest.java:601)
>       at 
> org.apache.jdo.tck.query.jdoql.variables.VariablesAndFields.testPositive(VariablesAndFields.java:148)
>       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:324)
>       at junit.framework.TestCase.runTest(TestCase.java:154)
>       at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       at junit.textui.TestRunner.doRun(TestRunner.java:116)
>       at junit.textui.TestRunner.doRun(TestRunner.java:109)
>       at 
> org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:120)
>       at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:95)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to