geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: NullPointerException MultiPoolConnectionInterceptor$SubjectCRIKey.equals
Date Thu, 21 May 2009 07:51:29 GMT
I'm a little confused.  What code did you apply javap to?  I dont  
think I pushed a copy of the newly revised code to any repos so you'd  
have to build it yourself.

The new code looks like this:

         public boolean equals(Object o) {
             if (this == o) return true;
             if (o == null || getClass() != o.getClass()) return false;

             SubjectCRIKey that = (SubjectCRIKey) o;

             if (hashcode != that.hashcode) return false;
             if (cri != null ? !cri.equals(that.cri) : that.cri !=  
null) return false;
             if (subject != null ? !subject.equals(that.subject) :  
that.subject != null) return false;

             return true;
         }


I can believe the old code resembled your deconstruction below with  
the addition of a "return".

thanks
david jencks

On May 21, 2009, at 12:08 AM, Bert_nor wrote:

>
> I think this is a compiler bug.
> javap gives next code:
> ...........
> 26:  getfield        #2; //Field subject:Ljavax/security/auth/Subject;
> 29:  ifnonnull       42
> 32:  aload_2
> 33:  getfield        #2; //Field subject:Ljavax/security/auth/Subject;
> 36:  ifnonnull       91
> 39:  goto    87
> 42:  aload_0
> 43:  getfield        #2; //Field subject:Ljavax/security/auth/Subject;
> 46:  aload_2
> 47:  getfield        #2; //Field subject:Ljavax/security/auth/Subject;
> 50:  invokevirtual   #8; //Method
> javax/security/auth/Subject.equals:(Ljava/lang/Object;)Z
> 53:  ifeq    73         <---------------------
> if(subject.equals(o.subject))
> 56:  aload_0
> 57:  getfield        #3; //Field
> cri:Ljavax/resource/spi/ConnectionRequestInfo;
> 60:  ifnonnull       73
> 63:  aload_2
> 64:  getfield        #3; //Field
> cri:Ljavax/resource/spi/ConnectionRequestInfo;
> 67:  ifnonnull       91
> 70:  goto    87
> 73:  aload_0            <----------------------
> 74:  getfield        #3; //Field
> cri:Ljavax/resource/spi/ConnectionRequestInfo;
> 77:  aload_2
> 78:  getfield        #3; //Field
> cri:Ljavax/resource/spi/ConnectionRequestInfo;
> 81:  invokevirtual   #9; //Method
> java/lang/Object.equals:(Ljava/lang/Object;)Z
> 84:  ifeq    91
> 87:  iconst_1
> 88:  goto    92
> 91:  iconst_0
> 92:  ireturn
>
> The result is the following construction
>
> if(subject.equals(o.subject)){
>     cri.equals(o.cri);
> }
>
>
>
> djencks wrote:
>>
>> I opened GERONIMO-4639 and fixed this in trunk and branches 2.1
>>
>> I couldn't understand the nested iff statements too well so I just
>> replaced it with what idea generates for equals :-)
>>
>> This is a component, not part of geronimo itself.  We'll need to push
>> a release of at least the 2.1 branch.
>>
>> thanks
>> david jencks
>>
>
>
>
> -- 
> View this message in context: http://www.nabble.com/NullPointerException-MultiPoolConnectionInterceptor%24SubjectCRIKey.equals-tp23634940s134p23648828.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>

Mime
View raw message