[jira] [Updated] (LANG-403) HashcodeBuilder is broken for Annotations

2013-10-20 Thread Henri Yandell (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Henri Yandell updated LANG-403:
---

Fix Version/s: (was: 3.x)
   Patch Needed

> HashcodeBuilder is broken for Annotations
> -
>
> Key: LANG-403
> URL: https://issues.apache.org/jira/browse/LANG-403
> Project: Commons Lang
>  Issue Type: Improvement
>  Components: lang.builder.*
>Affects Versions: 2.3
>Reporter: Jay Liang
> Fix For: Patch Needed
>
>
> HashCodeBuilder does not produce a correct hashCode that conforms to java 
> language specs. Running the following code snippets, i get 
> @Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
> 895255138
> Simple$CustomAnnotationImpl@665753[_name=blah,_type=class java.lang.String] 
> hashCode= 122852694
> hashCode should be 895255138
> The hashCode should computed according to 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
>  for annotations.
> {code:java}
> public class Simple{
>   @Retention(RetentionPolicy.RUNTIME)
>   @Target({FIELD, METHOD, PARAMETER})
>   private @interface CustomAnnotation{
> public String name();
> public Class type();
>   }
>   private static class CustomAnnotationImpl implements CustomAnnotation{
> final String _name;
> final Class _type;
> public CustomAnnotationImpl(String name, Class type) {
>   _name = name;
>   _type = type;
> }
> public String name() {
>   return _name;
> }
> public Class type() {
>   return _type;
> }
> public Class annotationType() {
>   return CustomAnnotation.class;
> }
> @Override
> public int hashCode() {
>   return HashCodeBuilder.reflectionHashCode(this);
> }
> /**
>  * This conform to specs defined at 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
>  * @return good annotation hashCode
>  */
> public int goodHashCode() {
>   return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
> *"type".hashCode() ^ _type.hashCode());
> }
> 
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   private static class Test{
> @CustomAnnotation(name="blah", type=String.class)
> String _blah;
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   
>   public static void main(String[] args) throws Exception{
> for(Field f : Test.class.getDeclaredFields()){
>   for(Annotation a : f.getAnnotations()){
> System.out.println(a + " hashCode= " + a.hashCode());
> CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
> String.class);
> System.out.println(c + " hashCode= " + c.hashCode());
> System.out.println("hashCode should be "+ c.goodHashCode());
>   }
> }
>   }
> } 
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] Updated: (LANG-403) HashcodeBuilder is broken for Annotations

2010-01-24 Thread Henri Yandell (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Henri Yandell updated LANG-403:
---

Issue Type: Improvement  (was: Bug)

> HashcodeBuilder is broken for Annotations
> -
>
> Key: LANG-403
> URL: https://issues.apache.org/jira/browse/LANG-403
> Project: Commons Lang
>  Issue Type: Improvement
>  Components: lang.builder.*
>Affects Versions: 2.3
>Reporter: Jay Liang
> Fix For: 3.1
>
>
> HashCodeBuilder does not produce a correct hashCode that conforms to java 
> language specs. Running the following code snippets, i get 
> @Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
> 895255138
> simple$customannotationi...@665753[_name=blah,_type=class java.lang.String] 
> hashCode= 122852694
> hashCode should be 895255138
> The hashCode should computed according to 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
>  for annotations.
> {code:java}
> public class Simple{
>   @Retention(RetentionPolicy.RUNTIME)
>   @Target({FIELD, METHOD, PARAMETER})
>   private @interface CustomAnnotation{
> public String name();
> public Class type();
>   }
>   private static class CustomAnnotationImpl implements CustomAnnotation{
> final String _name;
> final Class _type;
> public CustomAnnotationImpl(String name, Class type) {
>   _name = name;
>   _type = type;
> }
> public String name() {
>   return _name;
> }
> public Class type() {
>   return _type;
> }
> public Class annotationType() {
>   return CustomAnnotation.class;
> }
> @Override
> public int hashCode() {
>   return HashCodeBuilder.reflectionHashCode(this);
> }
> /**
>  * This conform to specs defined at 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
>  * @return good annotation hashCode
>  */
> public int goodHashCode() {
>   return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
> *"type".hashCode() ^ _type.hashCode());
> }
> 
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   private static class Test{
> @CustomAnnotation(name="blah", type=String.class)
> String _blah;
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   
>   public static void main(String[] args) throws Exception{
> for(Field f : Test.class.getDeclaredFields()){
>   for(Annotation a : f.getAnnotations()){
> System.out.println(a + " hashCode= " + a.hashCode());
> CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
> String.class);
> System.out.println(c + " hashCode= " + c.hashCode());
> System.out.println("hashCode should be "+ c.goodHashCode());
>   }
> }
>   }
> } 
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (LANG-403) HashcodeBuilder is broken for Annotations

2010-01-10 Thread Paul Benedict (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Benedict updated LANG-403:
---

Fix Version/s: (was: 3.0)
   3.x

Without a patch, moving this to post 3.0 release.

> HashcodeBuilder is broken for Annotations
> -
>
> Key: LANG-403
> URL: https://issues.apache.org/jira/browse/LANG-403
> Project: Commons Lang
>  Issue Type: Bug
>  Components: lang.builder.*
>Affects Versions: 2.3
>Reporter: Jay Liang
> Fix For: 3.x
>
>
> HashCodeBuilder does not produce a correct hashCode that conforms to java 
> language specs. Running the following code snippets, i get 
> @Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
> 895255138
> simple$customannotationi...@665753[_name=blah,_type=class java.lang.String] 
> hashCode= 122852694
> hashCode should be 895255138
> The hashCode should computed according to 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
>  for annotations.
> {code:java}
> public class Simple{
>   @Retention(RetentionPolicy.RUNTIME)
>   @Target({FIELD, METHOD, PARAMETER})
>   private @interface CustomAnnotation{
> public String name();
> public Class type();
>   }
>   private static class CustomAnnotationImpl implements CustomAnnotation{
> final String _name;
> final Class _type;
> public CustomAnnotationImpl(String name, Class type) {
>   _name = name;
>   _type = type;
> }
> public String name() {
>   return _name;
> }
> public Class type() {
>   return _type;
> }
> public Class annotationType() {
>   return CustomAnnotation.class;
> }
> @Override
> public int hashCode() {
>   return HashCodeBuilder.reflectionHashCode(this);
> }
> /**
>  * This conform to specs defined at 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
>  * @return good annotation hashCode
>  */
> public int goodHashCode() {
>   return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
> *"type".hashCode() ^ _type.hashCode());
> }
> 
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   private static class Test{
> @CustomAnnotation(name="blah", type=String.class)
> String _blah;
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   
>   public static void main(String[] args) throws Exception{
> for(Field f : Test.class.getDeclaredFields()){
>   for(Annotation a : f.getAnnotations()){
> System.out.println(a + " hashCode= " + a.hashCode());
> CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
> String.class);
> System.out.println(c + " hashCode= " + c.hashCode());
> System.out.println("hashCode should be "+ c.goodHashCode());
>   }
> }
>   }
> } 
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (LANG-403) HashcodeBuilder is broken for Annotations

2008-01-24 Thread Joerg Schaible (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Joerg Schaible updated LANG-403:


Description: 
HashCodeBuilder does not produce a correct hashCode that conforms to java 
language specs. Running the following code snippets, i get 

@Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
895255138
[EMAIL PROTECTED],_type=class java.lang.String] hashCode= 122852694
hashCode should be 895255138

The hashCode should computed according to 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
 for annotations.

{code:java}
public class Simple{

  @Retention(RetentionPolicy.RUNTIME)
  @Target({FIELD, METHOD, PARAMETER})
  private @interface CustomAnnotation{

public String name();
public Class type();
  }

  private static class CustomAnnotationImpl implements CustomAnnotation{
final String _name;
final Class _type;

public CustomAnnotationImpl(String name, Class type) {
  _name = name;
  _type = type;
}

public String name() {
  return _name;
}

public Class type() {
  return _type;
}

public Class annotationType() {
  return CustomAnnotation.class;
}

@Override
public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}

/**
 * This conform to specs defined at 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
 * @return good annotation hashCode
 */
public int goodHashCode() {
  return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
*"type".hashCode() ^ _type.hashCode());
}

@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}

  }

  private static class Test{
@CustomAnnotation(name="blah", type=String.class)
String _blah;
@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}
  }

  
  public static void main(String[] args) throws Exception{
for(Field f : Test.class.getDeclaredFields()){
  for(Annotation a : f.getAnnotations()){
System.out.println(a + " hashCode= " + a.hashCode());
CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
String.class);
System.out.println(c + " hashCode= " + c.hashCode());
System.out.println("hashCode should be "+ c.goodHashCode());
  }
}
  }

} 
{code}

  was:
HashCodeBuilder does not produce a correct hashCode that conforms to java 
language specs. Running the following code snippets, i get 

@Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
895255138
[EMAIL PROTECTED],_type=class java.lang.String] hashCode= 122852694
hashCode should be 895255138

The hashCode should computed according to 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
 for annotations.

===
public class Simple{

  @Retention(RetentionPolicy.RUNTIME)
  @Target({FIELD, METHOD, PARAMETER})
  private @interface CustomAnnotation{

public String name();
public Class type();
  }

  private static class CustomAnnotationImpl implements CustomAnnotation{
final String _name;
final Class _type;

public CustomAnnotationImpl(String name, Class type) {
  _name = name;
  _type = type;
}

public String name() {
  return _name;
}

public Class type() {
  return _type;
}

public Class annotationType() {
  return CustomAnnotation.class;
}

@Override
public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}

/**
 * This conform to specs defined at 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
 * @return good annotation hashCode
 */
public int goodHashCode() {
  return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
*"type".hashCode() ^ _type.hashCode());
}

@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}

  }

  private static class Test{
@CustomAnnotation(name="blah", type=String.class)
String _blah;
@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}
  }

  
  public static void main(String[] args) throws Exception{
for(Field f : Test.class.getDeclaredFields()){
  for(Annotation a : f.getAnnotations()){
System.out.println(a + " hashCode= " + a.hashCode());
CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
String.class);
System.out.println(c + " hashCode= " + c.hashCode());
System.out.println("hashCode should be "+ c.goodHashCode());
  }
}
  }

} 


> HashcodeBuilder is broken for Annotations
> -
>
> Key: LANG-403
>

[jira] Updated: (LANG-403) HashcodeBuilder is broken for Annotations

2008-01-24 Thread Henri Yandell (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Henri Yandell updated LANG-403:
---

Fix Version/s: LangTwo 1.0

I suspect the answer is that Lang does not support JDK 1.5 features, and we 
need to save this issue for when such a Lang is worked on (the next one imo).

> HashcodeBuilder is broken for Annotations
> -
>
> Key: LANG-403
> URL: https://issues.apache.org/jira/browse/LANG-403
> Project: Commons Lang
>  Issue Type: Bug
>Affects Versions: 2.3
>Reporter: Jay Liang
> Fix For: LangTwo 1.0
>
>
> HashCodeBuilder does not produce a correct hashCode that conforms to java 
> language specs. Running the following code snippets, i get 
> @Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
> 895255138
> [EMAIL PROTECTED],_type=class java.lang.String] hashCode= 122852694
> hashCode should be 895255138
> The hashCode should computed according to 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
>  for annotations.
> ===
> public class Simple{
>   @Retention(RetentionPolicy.RUNTIME)
>   @Target({FIELD, METHOD, PARAMETER})
>   private @interface CustomAnnotation{
> public String name();
> public Class type();
>   }
>   private static class CustomAnnotationImpl implements CustomAnnotation{
> final String _name;
> final Class _type;
> public CustomAnnotationImpl(String name, Class type) {
>   _name = name;
>   _type = type;
> }
> public String name() {
>   return _name;
> }
> public Class type() {
>   return _type;
> }
> public Class annotationType() {
>   return CustomAnnotation.class;
> }
> @Override
> public int hashCode() {
>   return HashCodeBuilder.reflectionHashCode(this);
> }
> /**
>  * This conform to specs defined at 
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
>  * @return good annotation hashCode
>  */
> public int goodHashCode() {
>   return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
> *"type".hashCode() ^ _type.hashCode());
> }
> 
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   private static class Test{
> @CustomAnnotation(name="blah", type=String.class)
> String _blah;
> @Override
> public String toString() {
>   return ToStringBuilder.reflectionToString(this);
> }
>   }
>   
>   public static void main(String[] args) throws Exception{
> for(Field f : Test.class.getDeclaredFields()){
>   for(Annotation a : f.getAnnotations()){
> System.out.println(a + " hashCode= " + a.hashCode());
> CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
> String.class);
> System.out.println(c + " hashCode= " + c.hashCode());
> System.out.println("hashCode should be "+ c.goodHashCode());
>   }
> }
>   }
> } 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (LANG-403) HashcodeBuilder is broken for Annotations

2008-01-24 Thread Jay Liang (JIRA)

 [ 
https://issues.apache.org/jira/browse/LANG-403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jay Liang updated LANG-403:
---

Description: 
HashCodeBuilder does not produce a correct hashCode that conforms to java 
language specs. Running the following code snippets, i get 

@Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
895255138
[EMAIL PROTECTED],_type=class java.lang.String] hashCode= 122852694
hashCode should be 895255138

The hashCode should computed according to 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
 for annotations.

===
public class Simple{

  @Retention(RetentionPolicy.RUNTIME)
  @Target({FIELD, METHOD, PARAMETER})
  private @interface CustomAnnotation{

public String name();
public Class type();
  }

  private static class CustomAnnotationImpl implements CustomAnnotation{
final String _name;
final Class _type;

public CustomAnnotationImpl(String name, Class type) {
  _name = name;
  _type = type;
}

public String name() {
  return _name;
}

public Class type() {
  return _type;
}

public Class annotationType() {
  return CustomAnnotation.class;
}

@Override
public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}

/**
 * This conform to specs defined at 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
 * @return good annotation hashCode
 */
public int goodHashCode() {
  return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
*"type".hashCode() ^ _type.hashCode());
}

@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}

  }

  private static class Test{
@CustomAnnotation(name="blah", type=String.class)
String _blah;
@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}
  }

  
  public static void main(String[] args) throws Exception{
for(Field f : Test.class.getDeclaredFields()){
  for(Annotation a : f.getAnnotations()){
System.out.println(a + " hashCode= " + a.hashCode());
CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
String.class);
System.out.println(c + " hashCode= " + c.hashCode());
System.out.println("hashCode should be "+ c.goodHashCode());
  }
}
  }

} 

  was:
HashCodeBuilder does not produce a correct hashCode that conforms to java 
language specs. Running the following code snippets, i get 

@Simple$CustomAnnotation(name=blah, type=class java.lang.String) hashCode= 
895255138
[EMAIL PROTECTED],_type=class java.lang.String] hashCode= 122852694
hashCode should be 895255138

The hashCode should computed according to 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode()
 for annotations.

===
public class Simple{
  @BindingAnnotation
  @Retention(RetentionPolicy.RUNTIME)
  @Target({FIELD, METHOD, PARAMETER})
  private @interface CustomAnnotation{

public String name();
public Class type();
  }

  private static class CustomAnnotationImpl implements CustomAnnotation{
final String _name;
final Class _type;

public CustomAnnotationImpl(String name, Class type) {
  _name = Objects.nonNull(name, "property name should not be null");
  _type = Objects.nonNull(type, "property type should not be null");
}

public String name() {
  return _name;
}

public Class type() {
  return _type;
}

public Class annotationType() {
  return CustomAnnotation.class;
}

@Override
public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}

/**
 * This conform to specs defined at 
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html#hashCode
 * @return good annotation hashCode
 */
public int goodHashCode() {
  return (127 * "name".hashCode() ^ _name.hashCode()) + (127 
*"type".hashCode() ^ _type.hashCode());
}

@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}

  }

  private static class Test{
@CustomAnnotation(name="blah", type=String.class)
String _blah;
@Override
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}
  }

  
  public static void main(String[] args) throws Exception{
for(Field f : Test.class.getDeclaredFields()){
  for(Annotation a : f.getAnnotations()){
System.out.println(a + " hashCode= " + a.hashCode());
CustomAnnotationImpl c =  new Simple.CustomAnnotationImpl("blah", 
String.class);
System.out.println(c + " hashCode= " + c.hashCode());
System.out.println("hashCode should be "+ c.goodHashCode());
  }
}
  }

} 


removed google guice codes