I'm using JBossCache for a product in Hewlett Packard and here I have seen a
strange issue that I have not been able to resolve.
The problem is that I have a HashMap wrapped in a annotated class that also
holds some additional information. When I draw the keyset from the HashMap and
iterate over the keys I see is that the type of the keys entered have changed
to String.
I positively know that I put a Long as the key in the HashMap, however when I
iterate usign the set returned from the keyset all the keys have "changed" type
to String.
I have created a small test application that I have entered into the examples
directory in the JBossCache 1.3.0.SP1 kit that I have downloaded. I have made a
copy of the annotated50 example and modified this to present my problem to
ensure that I have no impact from "other" sources.
I run with Suns 1.5_06 Java
The code for the "main" part of the application is very simple and looks like
this. The result of the code is that the text "This is a String" is printed on
stdout.
| try {
| distributedInfo = new TreeCacheAop();
| PropertyConfigurator config = new PropertyConfigurator();
| config.configure(distributedInfo, "META-INF/replSync-service.xml");
| distributedInfo.setClusterName("ClassCastIssue");
| distributedInfo.start();
| } catch (Exception e) {
| e.printStackTrace();
| }
|
| // Add the map container element for the distribution
| try {
| map = new CachedMap();
| distributedInfo.putObject(NODE_JOB_RELATION_CACHE_PATH, map);
| } catch (CacheException e) {
| e.printStackTrace();
| }
|
| map.put(new Long(123), new Integer(234));
|
| Iterator i = map.keySet().iterator();
|
| Object obj = i.next();
|
| System.out.println("Class name = " + obj.getClass().getName());
|
| if (obj instanceof String) {
| System.out.println("This is a String");
| }
|
| if (obj instanceof Long) {
| System.out.println("This is a Long");
| }
|
The code for the annotated wrapper class including the map looks like this:
| @org.jboss.cache.aop.annotation.PojoCacheable
| public class CachedMap
| {
| private HashMap map = new HashMap();
|
| public void put(Long id, Object bean)
| {
| map.put(id, bean);
| }
|
| public Object get(Long id)
| {
| return map.get(id);
| }
|
| public void remove(Long id)
| {
| map.remove(id);
| }
|
| public Set keySet()
| {
| return map.keySet();
| }
| }
|
Can anyone tell me what is happening here - am I doing anything wrong - to me
this mostly seems like a bug!
Regards
Peter
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3948074#3948074
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3948074
-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user