Michele,

if you have an idea on how to implement toString() don't hold back. I'd
suggest to create a separate issue where you outline how you want to
format the string before preparing a patch.

As you may have seen in jira there are a lot of other small and also
bigger issues that you can help us with if you are interested ;-)

Regards
Ralf


Michele Mazzucco schrieb:
> Done.
> The toString() method is very similar, but simpler. Maybe it should be a
> very good idea to implement it as well.
> 
> Michele
> 
> Ralf Joachim wrote:
> 
>>Hi Michele,
>>
>>to create new issues you need to login which is only possible if you
>>have signed up first. You can do that with the following steps:
>>
>>- goto: http://jira.codehaus.org/browse/CASTOR
>>- select "login" at the top right corner of the page
>>- select "signup" at right side of page
>>- enter the requested information
>>
>>You should be redirected to the original url from above after you
>>finished but this time you should see "CREATE NEW ISSUE" as the 4. item
>>on the menue bar at the top of the page.
>>
>>As creator of the issue you should get notification mails if someone
>>comments to or changes the issue as I, and other commiters, get
>>notifications on every new /changed issue.
>>
>>Hope this helps
>>Ralf
>>
>>
>>Michele Mazzucco schrieb:
>>
>>>Ralf,
>>>
>>>I'm sorry, but I've never used a tool like that. How can I create a new
>>>issue (it seems that from that link you can just browse issues)?
>>>
>>>Michele
>>>
>>>Ralf Joachim wrote:
>>>
>>>
>>>>Hi Michele,
>>>>
>>>>thank you very much for your contribution so far. May it be possible for
>>>>you to create a new issue for this in castor bug tracking under:
>>>>
>>>>http://jira.codehaus.org/browse/CASTOR
>>>>
>>>>and attach you additions as a unified patch to the new issue. The patch
>>>>would make my work just a bit easier then without. Having said that I'll
>>>>try to get your additions into next release.
>>>>
>>>>Regards
>>>>Ralf
>>>>
>>>>
>>>>Michele Mazzucco schrieb:
>>>>
>>>>
>>>>>I added this code to the org.exolab.castor.builder.SourceFactory class:
>>>>>
>>>>>/**
>>>>>    * Create an "hashCode" method on the given JClass.
>>>>>    *
>>>>>    * @param jclass the JClass in wich we create the hashCode method.
>>>>>    */
>>>>>   public static void createHashCodeMethod(JClass jclass) {
>>>>>           if (jclass == null) {
>>>>>                   throw new IllegalArgumentException("JClass must not be 
>>>>> null");
>>>>>           }
>>>>>           
>>>>>           // The argument is not null
>>>>>           JField[] fields = jclass.getFields();
>>>>>           
>>>>>           // Creates the method signature
>>>>>       JMethod jMethod = new JMethod(JType.Int, "hashCode");
>>>>>           jMethod.setComment("Override the java.lang.Object.hashCode 
>>>>> method");
>>>>>           
>>>>>           // The hashCode method has no arguments
>>>>>           jclass.addMethod(jMethod);
>>>>>           
>>>>>           JSourceCode jsc = jMethod.getSourceCode();
>>>>>           
>>>>>           // The following steps came from Effective Java Programming 
>>>>> Language
>>>>>Guide by Joshua Bloch, chapter 3
>>>>>           jsc.add("int result = 17;");
>>>>>           
>>>>>           for (int i = 0; i <fields.length; i++) {
>>>>>           JField temp = fields[i];
>>>>>                   // If the field is an object the hashCode method is 
>>>>> called recursively
>>>>>                   
>>>>>                   JType type = temp.getType();
>>>>>                   String name = temp.getName();
>>>>>                   if (type.isPrimitive()) {
>>>>>                           if (type == JType.Boolean) {
>>>>>                                   jsc.add("result = 37 * result + (" + 
>>>>> name + "?0:1);");
>>>>>                           } else
>>>>>                           if ((type == JType.Byte) ||
>>>>>                                   (type == JType.Short) ||
>>>>>                                   (type == JType.Int)) {
>>>>>                                           
>>>>>                                   jsc.add("result = 37 * result + (int)" 
>>>>> + name + ";");
>>>>>                           } else if (type == JType.Long) {
>>>>>                                   jsc.add("result = 37 * result + (int)(" 
>>>>> + name + "^(" + name +
>>>>>">>>32));");
>>>>>                           } else if (type == JType.Float) {
>>>>>                                   jsc.add("result = 37 * result + 
>>>>> Float.floatToIntBits(" + name + ");");
>>>>>                           } else if (type == JType.Double) {
>>>>>                                   jsc.add("long tmp = 
>>>>> Double.doubleToLongBits(" + name + ");");
>>>>>                                   jsc.add("result = 37 * result + 
>>>>> (int)(tmp^(tmp>>>32));");
>>>>>                           }
>>>>>                   }       else {
>>>>>                           // Calculates hashCode in a recursive manner.
>>>>>                           jsc.add("result = 37 * result + " + name + 
>>>>> ".hashCode();");
>>>>>                   }
>>>>>           }
>>>>>           jsc.add("");
>>>>>           jsc.add("return result;");              
>>>>>   }       //createHashCodeMethod
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>and into the createSourceCode() method I've added the following control
>>>>>
>>>>>//create equals() method?
>>>>>if (component.hasEquals()) {
>>>>>   createEqualsMethod(jClass);
>>>>>   createHashCodeMethod(jClass);
>>>>>}
>>>>>
>>>>>since the hashCode method *must* be added when the equals method is
>>>>>created (see Effective Java Programming Language Guide by Joshua Bloch,
>>>>>chapter 3).
>>>>>
>>>>>
>>>>>Best regards,
>>>>>Michele
>>>>>
>>>>>
>>>>>
>>>>>Ralf Joachim wrote:
>>>>>
>>>>>
>>>>>
>>>>>>Hi Michele,
>>>>>>
>>>>>>SourceGenerator seams not to be able to generate hashcode() / equals()
>>>>>>methods at the moment. In general I don't see a reason why it should not
>>>>>>be possible to improve SourceGenerator to also generate them. As with
>>>>>>other open source projects we are open for contributions. So you are
>>>>>>open to volunteer on this addition.
>>>>>>
>>>>>>Regards
>>>>>>Ralf
>>>>>>Castor JDO, committer
>>>>>>
>>>>>>
>>>>>>Michele Mazzucco schrieb:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>Hi all,
>>>>>>>
>>>>>>>is it possible to "autogenerate" the hashCode() method on java objects
>>>>>>>created from the xml schema?, otherwise checks on the server side could
>>>>>>>return wrong values (i.e. checking if an object sent by by client is
>>>>>>>stored in a collection hosted by the server side).
>>>>>>>
>>>>>>>
>>>>>>>Thanks in advance,
>>>>>>>Michele
>>>>>>>
>>>>>>>-------------------------------------------------
>>>>>>>If you wish to unsubscribe from this list, please send an empty
>>>>>>>message to the following address:
>>>>>>>
>>>>>>>[EMAIL PROTECTED]
>>>>>>>-------------------------------------------------
>>>>>>
>>>>>>-------------------------------------------------
>>>>>>If you wish to unsubscribe from this list, please send an empty message
>>>>>>to the following address:
>>>>>>
>>>>>>[EMAIL PROTECTED]
>>>>>>-------------------------------------------------
>>>>>>
>>>>>
>>>>>-------------------------------------------------
>>>>>If you wish to unsubscribe from this list, please 
>>>>>send an empty message to the following address:
>>>>>
>>>>>[EMAIL PROTECTED]
>>>>>-------------------------------------------------
>>>
>>>-------------------------------------------------
>>>If you wish to unsubscribe from this list, please 
>>>send an empty message to the following address:
>>>
>>>[EMAIL PROTECTED]
>>>-------------------------------------------------
>>
> 
> -------------------------------------------------
> If you wish to unsubscribe from this list, please 
> send an empty message to the following address:
> 
> [EMAIL PROTECTED]
> -------------------------------------------------

-- 

Syscon Ingenieurbüro für
Meß- und Datentechnik GmbH
Ralf Joachim
Raiffeisenstraße 11
D-72127 Kusterdingen
Germany

Tel.   +49 7071 3690 52
Mobil: +49 173 9630135
Fax    +49 7071 3690 98

Email: [EMAIL PROTECTED]
Web:   www.syscon-world.de

-------------------------------------------------
If you wish to unsubscribe from this list, please 
send an empty message to the following address:

[EMAIL PROTECTED]
-------------------------------------------------

Reply via email to