Hi Pascal,

On 2011-05-29, at 9:20 PM, Pascal Robert wrote:

> I did :
> 
>    ERXRouteResults results = (ERXRouteResults)response(someEntity, filter);
>    String etagHash = 
> ERXCrypto.sha256Encode(results.responseNode().toString(results.format(), 
> this.restContext()));

IMO, this is an expensive approach because of encryption algorithm. Unless 
encryption of the data is key requirement, don't use it. Because normally the 
toString() if not overridden returns a String comprising the memory address of 
the instance, this is the reason a simple hashCode() call is not sufficient in 
your case. You can simply override the hashCode() method and compute the values 
based on your entity attributes.

For caching use Hashtable but that will only benefit if your hashCode() 
generates unique value. In my experience the best way to cache the values is to 
maintain a binary tree using the hashCode() as the node value. If you want to 
implement a better caching, try exploring Splay tree model. With a little 
modification to it, you can make you caching super fast.

These things are not normally practiced by API users but they do matter is you 
develop your own API to be used by someone else :)

Farrukh

> 
>> there's not a direct simple way to do it ... probably grab the snapshot off 
>> the EO and compute a hash of the values (you can ignore the keys because 
>> they're fixed). it might be something where you can make a new interface in 
>> ERX that your EO's could implement to provide a more optimal impl (like 
>> ERCStamped could use its lastModified as a basis).
>> 
>> ms
>> 
>> On May 25, 2011, at 1:55 PM, Pascal Robert wrote:
>> 
>>> I'm trying to find a way to generate a HTTP ETag for EOs so that caching 
>>> can be done for REST services. What I want to do is to have the same ETag 
>>> value for each representation of the EO, so when one of the values change, 
>>> the ETag value will also change, but if the EO have the same value, it will 
>>> generate the same ETag as another request got.
>>> 
>>> Problem is: I don't know what to use. I tried with myEO.hashCode() but I 
>>> did some tests and every time I fetch the EO, the hashcode is different 
>>> even if the data didn't change. I'm thinking of doing a MD5 digest of part 
>>> of the EO, but I was wondering if another way exist? I could use a "last 
>>> modified" date and generate a MD5 of that too, but that date is a better 
>>> option for the Last-Modified header.
>>> 
>>> --
>>> Pascal Robert
>>> prob...@macti.ca
>>> 
>>> WOWODC 2011 : July 1-2-3, Montreal. wowodc.com
>>> 
>>> AIM/iChat : MacTICanada
>>> LinkedIn : http://www.linkedin.com/in/macti
>>> Twitter : pascal_robert
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>>> 
>>> This email sent to msch...@pobox.com
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/farrukh.ijaz%40fuegodigitalmedia.com
> 
> This email sent to farrukh.i...@fuegodigitalmedia.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to