Re: ExistsInRelationshipQualifier
Re: ExistsInRelationshipQualifier
- Subject: Re: ExistsInRelationshipQualifier
- From: Pierre Bernard <email@hidden>
- Date: Wed, 5 Dec 2007 18:24:29 +0100
Hi Daniele,
First off: somehow the line numbers don't match up. Your stack trace
shows a call to _aliasForRelatedAttributeRelationshipPath at line 100
of ExistsInRelationshipQualifierSupport. I find 2 such calls. One at
line 119 and one at 123. Which one is it?
How come the lines don't match?
What do the joins between the tables look like? Single or compound
foreign keys? Any flattened relationships?
Could you tell me what expression, subExpression, sourceAttribute and
destinationAttribute look like at the moment of the crash?
Pierre
On Dec 5, 2007, at 5:54 PM, Daniele Corti wrote:
Hi Pierre,
this is what I'm going to do:
first: what I need to do. I need to obtain the rows of GWS_STOCK
table (entity name GWSStock) that have a configuration (instance of
GWSConfiguration) passed by argument at the method, and that have no
one related valid GWSLicense
my model is:
(the objects I'm fetching) GWSStock
GWSStock --->> licenses -->> GWSLicense
GWSStock --> configuration --> GWSConfiguration
GWSLicense ha a field isvalid as Integer (don't blame me I did it
before I discover EOPrototype...)
the piece of code is:
EOKeyValueQualifier keyValueQualifier;
NSMutableArray mutableArray;
mutableArray = new NSMutableArray();
keyValueQualifier = new EOKeyValueQualifier( "configuration",
EOQualifier.QualifierOperatorEqual, configuration);
mutableArray.addObject(keyValueQualifier);
keyValueQualifier = new EOKeyValueQualifier( "isvalid",
EOQualifier.QualifierOperatorEqual, new Integer(1));
ExistsInRelationshipQualifier existsInRelationshipQualifier =
new ExistsInRelationshipQualifier("licenses", keyValueQualifier);
EONotQualifier not = new
EONotQualifier(existsInRelationshipQualifier);
mutableArray.addObject(not);
EOFetchSpecification fetchSpecification = new
EOFetchSpecification(GWSStock. ENTITY_NAME, new
EOAndQualifier(mutableArray), null);
fetchSpecification.setRefreshesRefetchedObjects(true);
NSArray array =
ec.objectsWithFetchSpecification(fetchSpecification);
the StackTrace Error is:
dic 05 17:23:07 GWSupportV2[55338] ( ERXNSLogLog4jBridge.java:44)
DEBUG NSLog - Using JDBCPlugIn
'com.webobjects.jdbcadaptor.FrontbasePlugIn' for JDBCAdaptor@12892567
dic 05 17:23:07 GWSupportV2[55338] (ERXNSLogLog4jBridge.java:41)
WARN NSLog -
<com.webobjects.appserver._private.WOComponentRequestHandler >:
Exception occurred while handling request:
java.lang.NullPointerException
[2007-12-05 17:23:07 CET] <WorkerThread3>
java.lang.NullPointerException
at
com
.webobjects
.eoaccess
.EOSQLExpression._aliasForRelationshipPath( EOSQLExpression.java:324)
at
com
.webobjects
.eoaccess
.EOSQLExpression
._aliasForRelatedAttributeRelationshipPath( EOSQLExpression.java:259)
at
com
.houdah
.webobjects
.eoaccess
.qualifiers
.ExistsInRelationshipQualifierSupport.sqlStringForSQLExpression
(ExistsInRelationshipQualifierSupport.java:100)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$Support._sqlStringForSQLExpression( EOQualifierSQLGeneration.java:
151)
at
com
.webobjects
.eoaccess
.EOSQLExpression.sqlStringForNegatedQualifier( EOSQLExpression.java:
1637)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$_NotQualifierSupport.sqlStringForSQLExpression
(EOQualifierSQLGeneration.java:569)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$Support._sqlStringForSQLExpression( EOQualifierSQLGeneration.java:
151)
at
com
.webobjects
.eoaccess
.EOSQLExpression.sqlStringForArrayOfQualifiers( EOSQLExpression.java:
1562)
at
com
.webobjects
.eoaccess
.EOSQLExpression
.sqlStringForConjoinedQualifiers( EOSQLExpression.java:1597)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$_AndQualifierSupport.sqlStringForSQLExpression
(EOQualifierSQLGeneration.java:512)
at com.webobjects.eoaccess.EOQualifierSQLGeneration
$Support._sqlStringForSQLExpression( EOQualifierSQLGeneration.java:
151)
at
com
.webobjects
.eoaccess
.EOSQLExpression
.prepareSelectExpressionWithAttributes( EOSQLExpression.java:1024)
at
com
.webobjects
.jdbcadaptor
.JDBCExpression
.prepareSelectExpressionWithAttributes( JDBCExpression.java:273)
at
com
.webobjects
.eoaccess
.EOSQLExpressionFactory
.selectStatementForAttributes( EOSQLExpressionFactory.java:226)
at
com
.webobjects
.jdbcadaptor.JDBCChannel.selectAttributes( JDBCChannel.java:178)
at
com
.webobjects
.eoaccess
.EODatabaseChannel
._selectWithFetchSpecificationEditingContext( EODatabaseChannel.java:
878)
at
com
.webobjects
.eoaccess
.EODatabaseChannel
.selectObjectsWithFetchSpecification( EODatabaseChannel.java:215)
at
com
.webobjects
.eoaccess
.EODatabaseContext
._objectsWithFetchSpecificationEditingContext
( EODatabaseContext.java:3205)
at
com
.webobjects
.eoaccess
.EODatabaseContext
.objectsWithFetchSpecification( EODatabaseContext.java:3346)
at
com
.webobjects
.eocontrol
.EOObjectStoreCoordinator
.objectsWithFetchSpecification( EOObjectStoreCoordinator.java:539)
at
com
.webobjects
.eocontrol
.EOEditingContext
.objectsWithFetchSpecification( EOEditingContext.java:4114)
at er.extensions.ERXEC.objectsWithFetchSpecification( ERXEC.java:
1075)
at
com
.webobjects
.eocontrol
.EOEditingContext
.objectsWithFetchSpecification( EOEditingContext.java:4500)
at
supportv2
.gestweb
.model.GWSStock.stocksAvviableForConfiguration( GWSStock.java:133)
at
supportv2
.gestweb.model.GWSStock.stocksAvviableForLicense( GWSStock.java:107)
at
supportv2
.gestweb
.component
.manage.GWSManageLicense.stocksAvviable( GWSManageLicense.java:161)
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 com.webobjects.foundation.NSKeyValueCoding$ValueAccessor
$1.methodValue( NSKeyValueCoding.java:684)
at com.webobjects.foundation.NSKeyValueCoding
$_MethodBinding.valueInObject( NSKeyValueCoding.java:1160)
at com.webobjects.foundation.NSKeyValueCoding
$DefaultImplementation.valueForKey( NSKeyValueCoding.java:1268)
at
com.webobjects.appserver.WOComponent.valueForKey( WOComponent.java:
1539)
at com.webobjects.foundation.NSKeyValueCoding
$Utility.valueForKey( NSKeyValueCoding.java:498)
at com.webobjects.foundation.NSKeyValueCodingAdditions
$
DefaultImplementation
.valueForKeyPath( NSKeyValueCodingAdditions.java:212)
at
com
.webobjects.appserver.WOComponent.valueForKeyPath( WOComponent.java:
1600)
at
com
.webobjects
.appserver
._private
.WOKeyValueAssociation.valueInComponent( WOKeyValueAssociation.java:
46)
at
com
.webobjects
.appserver
._private.WOPopUpButton.appendChildrenToResponse( WOPopUpButton.java:
181)
at
com
.webobjects
.appserver
._private
.WOHTMLDynamicElement.appendToResponse( WOHTMLDynamicElement.java:424)
at er.extensions.ERXPatcher$DynamicElementsPatches
$PopUpButton.appendToResponse( ERXPatcher.java:366)
at
com
.webobjects
.appserver
._private
.WODynamicGroup.appendChildrenToResponse( WODynamicGroup.java:121)
at
er
.ajax.AjaxUpdateContainer.appendToResponse( AjaxUpdateContainer.java:
152)
at
com
.webobjects
.appserver
._private
.WODynamicGroup.appendChildrenToResponse( WODynamicGroup.java:121)
at
er
.extensions
.ERXWOConditional.appendChildrenToResponse( ERXWOConditional.java:115)
at
er
.extensions.ERXWOConditional.appendToResponse( ERXWOConditional.java:
109)
at
com
.webobjects
.appserver
._private
.WODynamicGroup.appendChildrenToResponse( WODynamicGroup.java:121)
at
com
.webobjects
.appserver
._private.WODynamicGroup.appendToResponse( WODynamicGroup.java:130)
at
com
.webobjects
.appserver
._private
.WOComponentContent.appendToResponse( WOComponentContent.java:43)
at
com
.webobjects
.appserver
._private
.WODynamicGroup.appendChildrenToResponse( WODynamicGroup.java:121)
at
com
.webobjects
.appserver
._private.WODynamicGroup.appendToResponse( WODynamicGroup.java:130)
at
com
.webobjects.appserver.WOComponent.appendToResponse( WOComponent.java:
992)
at
com
.webobjects
.appserver
._private
.WOComponentReference.appendToResponse( WOComponentReference.java:111)
at
com
.webobjects
.appserver
._private
.WODynamicGroup.appendChildrenToResponse( WODynamicGroup.java:121)
at
com
.webobjects
.appserver
._private.WODynamicGroup.appendToResponse( WODynamicGroup.java:130)
at
com
.webobjects.appserver.WOComponent.appendToResponse( WOComponent.java:
992)
at
com.webobjects.appserver.WOSession.appendToResponse( WOSession.java:
1200)
at er.extensions.ERXSession.appendToResponse( ERXSession.java:529)
at
com
.webobjects
.appserver.WOApplication.appendToResponse( WOApplication.java:1418)
at
er.extensions.ERXApplication.appendToResponse( ERXApplication.java:
1008)
at
com
.webobjects
.appserver
._private
.WOComponentRequestHandler
._dispatchWithPreparedPage( WOComponentRequestHandler.java:230)
at
com
.webobjects
.appserver
._private
.WOComponentRequestHandler
._dispatchWithPreparedSession( WOComponentRequestHandler.java:287)
at
com
.webobjects
.appserver
._private.WOComponentRequestHandler._dispatchWithPreparedApplication
(WOComponentRequestHandler.java:322)
at
com
.webobjects
.appserver
._private
.WOComponentRequestHandler
._handleRequest( WOComponentRequestHandler.java:358)
at
com
.webobjects
.appserver
._private
.WOComponentRequestHandler
.handleRequest( WOComponentRequestHandler.java:432)
at
com
.webobjects
.appserver.WOApplication.dispatchRequest( WOApplication.java:1306)
at
er.extensions.ERXApplication.dispatchRequest( ERXApplication.java:
1041)
at
com
.webobjects
.appserver._private.WOWorkerThread.runOnce( WOWorkerThread.java:173)
at
com
.webobjects
.appserver._private.WOWorkerThread.run( WOWorkerThread.java:254)
at java.lang.Thread.run(Thread.java:552 )
dic 05 17:23:07 GWSupportV2[55338] (ERXApplication.java:843) ERROR
er.extensions.ERXApplication - Exception caught: null
Extra info: {
"CurrentPage" =
"supportv2.gestweb.component.manage.GWSManageLicense";
"Bundles" = {
"Ajax" = "3.0";
"ERExtensions" = "3.0";
"JavaWebObjects" = "5.3.3";
"JavaXML" = "5.3";
"ERJars" = "3.0";
"ERJavaMail" = "3.0";
"JavaEOAccess" = "5.3.2";
"JavaJDBCAdaptor" = "5.3.2";
"HoudahEOAccess" = "";
"FrontBasePlugIn" = "";
"JavaWOExtensions" = "3.0";
"GWSupportV2" = "";
"HoudahFoundation" = "";
"JavaEOControl" = "5.3.2";
"QualifierAdditions" = "";
"WOOgnl" = "3.0";
"HoudahEOControl" = "";
"JavaFoundation" = "5.3.3";
"Validity" = "3.0";
"ERPrototypes" = "3.0";
};
"uri" = "/cgi-bin/WebObjects/GWSupportV2.woa/wo/
BqhchvXtY9bKEJMhiBwqJ0/8.0.43.3.69.7.23";
"CurrentComponent" =
"supportv2.gestweb.component.manage.GWSManageLicense";
"PreviousPageList" = (
"supportv2.gestweb.component.Main",
"supportv2.gestweb.component.GWSActions",
"supportv2.gestweb.component.search.GWSSearchOrder",
"supportv2.gestweb.component.manage.GWSInsertOrder"
);
}
Some other info: I'm working with WO 5.3 on tiger, with Java 1.4.2.
2007/12/5, Pierre Bernard <email@hidden>:
Hi!
Could you please send me the relevant bit of your source as well as
a complete stack trace using the newest version of the code (so line
numbers match up)?
Chances are there are still bugs in the qualifiers. I have used them
on a couple projects. So did other people. Don't know how many
though. E.g. Chuck has found bugs and suggested fixes. The version
committed with Houdah Frameworks includes all fixes I am aware of.
Yet in all likeliness not all possible setups have been tested or
thought of. Qualifier SQL generation is a very complex subject.
Best,
Pierre Bernard
Houdah Software s.à r.l.
On Dec 5, 2007, at 5:26 PM, Daniele Corti wrote:
Hi,
Same error of David, and I've just up-to-date the houdah frameworks
with the svn checkout http://houdah- webobjects-
frameworks.googlecode.com/svn/trunk/ houdah-webobjects-frameworks-
read-only Command.
Can it be a source error?
2007/12/5, Pierre Bernard < email@hidden>: The
latest version is at : http://code.google.com/p/houdah-webobjects-frameworks/
Pierre
On Dec 5, 2007, at 2:58 AM, Chuck Hill wrote:
> That looks familiar. Pierre and I fixed a bug in this a while
> back. Are you using the current ( i.e. up to date) ones from
Houdah
> frameworks?
>
> Chuck
>
>
> On Dec 4, 2007, at 5:51 PM, David Holt wrote:
>
>> Hello All,
>>
>> I am finally getting the chance to use the QualifierAdditions from
>> Pierre Bernard (thanks Pierre!). I am using the following code
that
>> generates a NullPointerException. Can anyone see what I have done
>> wrong?
>>
>> I am trying to show all Artifacts that have not been specified as
>> "favourites".
>>
>>
>>
>> public EOFetchSpecification getPubliclyDisplayed() {
>>
>> EOQualifier q1 = new EOKeyValueQualifier( "userName",
>> EOQualifier.QualifierOperatorEqual, applicationUser.userName());
>> ExistsInRelationshipQualifier q2 = new
>> ExistsInRelationshipQualifier("applicationUsers", q1);
>> // the inverse
>> EONotQualifier notq2 = new EONotQualifier(q2);
>>
>> // EOQualifier q3 = new EOAndQualifier( new
NSArray( new Object[]
>> { q1, notq2 } ) );
>> EOFetchSpecification fs = new
EOFetchSpecification( "Artifact",
>> notq2, null );
>>
>> return fs;
>> }
>>
>>
>> Stack trace:
>>
>> java.lang.NullPointerException
>> File
>> Line#
>> Method
>> Package
>>
>>
>> EOSQLExpression.java
>> 324
>> _aliasForRelationshipPath
>> com.webobjects.eoaccess
>> EOSQLExpression.java
>> 259
>> _aliasForRelatedAttributeRelationshipPath
>> com.webobjects.eoaccess
>> ExistsInRelationshipQualifierSupport.java
>> 99
>> sqlStringForSQLExpression
>> com.houdah.webobjects.eoaccess.qualifiers
>> EOQualifierSQLGeneration.java
>> 151
>> _sqlStringForSQLExpression
>> com.webobjects.eoaccess
>> EOSQLExpression.java
>> 1024
>> prepareSelectExpressionWithAttributes
>> com.webobjects.eoaccess
>> JDBCExpression.java
>> 273
>> prepareSelectExpressionWithAttributes
>> com.webobjects.jdbcadaptor
>> EOSQLExpressionFactory.java
>> 226
>> selectStatementForAttributes
>> com.webobjects.eoaccess
>> ERXSQLHelper.java
>> 461
>> sqlExpressionForFetchSpecification
>> er.extensions
>> ERXSQLHelper.java
>> 513
>> rowCountForFetchSpecification
>> er.extensions
>> ERXEOAccessUtilities.java
>> 284
>> rowCountForFetchSpecification
>> er.extensions
>> ERXBatchingDisplayGroup.java
>> 189
>> rowCount
>> er.extensions
>> ERXBatchingDisplayGroup.java
>> 216
>> refetch
>> er.extensions
>> ERXBatchingDisplayGroup.java
>> 276
>> fetch
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list ( email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
> --
>
> Practical WebObjects - for developers who want to increase their
> overall knowledge of WebObjects or who are trying to solve specific
> problems.
> http://www.global-village.net/products/practical_webobjects
>
>
>
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ( email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
- - -
Houdah Software s. à r. l.
http://www.houdah.com
HoudahGeo: One-stop photo geocoding
HoudahSpot: Powerful Spotlight frontend
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ( email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
--
Daniele Corti
AIM: S0CR4TE5
Messenger: email@hidden
--
Computers are like air conditioners -- they stop working properly
if you open
WINDOWS
--
What about the four lusers of the apocalypse? I nominate:
"advertising", "can't log in", "power switch" and "what backup?"
--Alistair Young
- - -
Houdah Software s. à r. l.
http://www.houdah.com
HoudahGeo: One-stop photo geocoding
HoudahSpot: Powerful Spotlight frontend
--
Daniele Corti
AIM: S0CR4TE5
Messenger: email@hidden
--
Computers are like air conditioners -- they stop working properly if
you open
WINDOWS
--
What about the four lusers of the apocalypse? I nominate:
"advertising", "can't log in", "power switch" and "what backup?"
--Alistair Young
- - -
Houdah Software s. à r. l.
http://www.houdah.com
HoudahGeo: One-stop photo geocoding
HoudahSpot: Powerful Spotlight frontend
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden