You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dj...@apache.org on 2012/01/31 01:37:39 UTC
svn commit: r1238115 -
/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
Author: djencks
Date: Tue Jan 31 00:37:39 2012
New Revision: 1238115
URL: http://svn.apache.org/viewvc?rev=1238115&view=rev
Log:
ARIES-819 fix some small errors in OsgiFriendlyClassWriter
Modified:
aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java?rev=1238115&r1=1238114&r2=1238115&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java Tue Jan 31 00:37:39 2012
@@ -64,21 +64,22 @@ public final class OSGiFriendlyClassWrit
*/
@Override
protected final String getCommonSuperClass(String arg0, String arg1) {
+ //--------------- see asm ow2 316320 which proposes putting the generic common cases in ClassWriter.internalGetCommonSuperClass
//If the two are equal then return either
if(arg0.equals(arg1))
return arg0;
-
+
//If either is Object, then Object must be the answer
if(arg0.equals(OBJECT_INTERNAL_NAME) || arg1.equals(OBJECT_INTERNAL_NAME))
return OBJECT_INTERNAL_NAME;
-
+
// If either of these class names are the current class then we can short
// circuit to the superclass (which we already know)
if(arg0.equals(currentClassInternalName))
- getCommonSuperClass(currentSuperClassInternalName, arg1);
+ return getCommonSuperClass(currentSuperClassInternalName, arg1);
else if (arg1.equals(currentClassInternalName))
- getCommonSuperClass(arg0, currentSuperClassInternalName);
-
+ return getCommonSuperClass(arg0, currentSuperClassInternalName);
+ //---------------- end asm 316320 proposal
Set<String> names = new HashSet<String>();
names.add(arg0);
names.add(arg1);
@@ -96,10 +97,14 @@ public final class OSGiFriendlyClassWrit
if(is != null) {
ClassReader cr = new ClassReader(is);
arg00 = cr.getSuperName();
- if(arg00 == null)
- aRunning = false;
- else if(!!!names.add(arg00))
+ if(arg00 == null) {
+ if (names.size() == 2) {
+ return OBJECT_INTERNAL_NAME; //arg0 is an interface
+ }
+ aRunning = false; //old arg00 was java.lang.Object
+ } else if(!!!names.add(arg00)) {
return arg00;
+ }
} else {
//The class file isn't visible on this ClassLoader
unable = arg0;
@@ -111,10 +116,14 @@ public final class OSGiFriendlyClassWrit
if(is != null) {
ClassReader cr = new ClassReader(is);
arg11 = cr.getSuperName();
- if(arg11 == null)
- bRunning = false;
- else if(!!!names.add(arg11))
+ if(arg11 == null) {
+ if (names.size() == 3) {
+ return OBJECT_INTERNAL_NAME; //arg1 is an interface
+ }
+ bRunning = false; //old arg11 was java.lang.Object
+ } else if(!!!names.add(arg11)) {
return arg11;
+ }
} else {
unable = arg1;
bRunning = false;
@@ -132,9 +141,5 @@ public final class OSGiFriendlyClassWrit
}
}
- /**
- * We need access to the super's name and our class name
- */
-
}
Re: svn commit: r1238115 - /aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
Posted by David Jencks <da...@yahoo.com>.
Would anyone be willing to look this over and make sure I didn't do something stupid?
thanks
david jencks
On Jan 30, 2012, at 4:37 PM, djencks@apache.org wrote:
> Author: djencks
> Date: Tue Jan 31 00:37:39 2012
> New Revision: 1238115
>
> URL: http://svn.apache.org/viewvc?rev=1238115&view=rev
> Log:
> ARIES-819 fix some small errors in OsgiFriendlyClassWriter
>
> Modified:
> aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
>
> Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
> URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java?rev=1238115&r1=1238114&r2=1238115&view=diff
> ==============================================================================
> --- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java (original)
> +++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java Tue Jan 31 00:37:39 2012
> @@ -64,21 +64,22 @@ public final class OSGiFriendlyClassWrit
> */
> @Override
> protected final String getCommonSuperClass(String arg0, String arg1) {
> + //--------------- see asm ow2 316320 which proposes putting the generic common cases in ClassWriter.internalGetCommonSuperClass
> //If the two are equal then return either
> if(arg0.equals(arg1))
> return arg0;
> -
> +
> //If either is Object, then Object must be the answer
> if(arg0.equals(OBJECT_INTERNAL_NAME) || arg1.equals(OBJECT_INTERNAL_NAME))
> return OBJECT_INTERNAL_NAME;
> -
> +
> // If either of these class names are the current class then we can short
> // circuit to the superclass (which we already know)
> if(arg0.equals(currentClassInternalName))
> - getCommonSuperClass(currentSuperClassInternalName, arg1);
> + return getCommonSuperClass(currentSuperClassInternalName, arg1);
> else if (arg1.equals(currentClassInternalName))
> - getCommonSuperClass(arg0, currentSuperClassInternalName);
> -
> + return getCommonSuperClass(arg0, currentSuperClassInternalName);
> + //---------------- end asm 316320 proposal
> Set<String> names = new HashSet<String>();
> names.add(arg0);
> names.add(arg1);
> @@ -96,10 +97,14 @@ public final class OSGiFriendlyClassWrit
> if(is != null) {
> ClassReader cr = new ClassReader(is);
> arg00 = cr.getSuperName();
> - if(arg00 == null)
> - aRunning = false;
> - else if(!!!names.add(arg00))
> + if(arg00 == null) {
> + if (names.size() == 2) {
> + return OBJECT_INTERNAL_NAME; //arg0 is an interface
> + }
> + aRunning = false; //old arg00 was java.lang.Object
> + } else if(!!!names.add(arg00)) {
> return arg00;
> + }
> } else {
> //The class file isn't visible on this ClassLoader
> unable = arg0;
> @@ -111,10 +116,14 @@ public final class OSGiFriendlyClassWrit
> if(is != null) {
> ClassReader cr = new ClassReader(is);
> arg11 = cr.getSuperName();
> - if(arg11 == null)
> - bRunning = false;
> - else if(!!!names.add(arg11))
> + if(arg11 == null) {
> + if (names.size() == 3) {
> + return OBJECT_INTERNAL_NAME; //arg1 is an interface
> + }
> + bRunning = false; //old arg11 was java.lang.Object
> + } else if(!!!names.add(arg11)) {
> return arg11;
> + }
> } else {
> unable = arg1;
> bRunning = false;
> @@ -132,9 +141,5 @@ public final class OSGiFriendlyClassWrit
> }
> }
>
> - /**
> - * We need access to the super's name and our class name
> - */
> -
>
> }
>
>