[JBoss JIRA] Created: (JBCACHE-907) UnsupportedException on using Websphere CMT and hibernate and jbosscache
by Lakshmi Dasari (JIRA)
UnsupportedException on using Websphere CMT and hibernate and jbosscache
------------------------------------------------------------------------
Key: JBCACHE-907
URL: http://jira.jboss.com/jira/browse/JBCACHE-907
Project: JBoss Cache
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 1.4.0.SP1, 1.3.0.SP4
Environment: Hibernate 3.1 , Websphere 6.0, Jbosscache 1.3.0SP4, Jbosscache 1.4.0SP1
Reporter: Lakshmi Dasari
Assigned To: Manik Surtani
The environment for the applicatin is stated in te environment section.
I have enabled Jboss cache as second level cache for Hibernate. Currently it is in a non-clustered and replicated environment. The application uses EJBs and I have a session bean method which participates in a container managed transaction and invokes the hibernate DAO to fetch data. I get the exception below on invoking the method from a EJB client.
It appears to me that the configurations are all in place but am thwarted by this excepiton which does not let me progress further. This exception appears in both versions of 1.3.0SP4 and 1.4.0SP1.
Excerpt from hibernate.cfg.xml are as follows :
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>
<property name="hibernate.current_session_context_class">jta</property>
<property name="hibernate.transaction.flush_before_completion">true</property>
<property name="hibernate.transaction.auto_close_session">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.TreeCacheProvider</property>
relevant section from treecache.xml
---
<attribute name="TransactionManagerLookupClass">org.jboss.cache.GenericTransactionManagerLookup</attribute>
<attribute name="IsolationLevel">REPEATABLE_READ</attribute>
<attribute name="CacheMode">LOCAL</attribute>
---
Stack trace :
[12/14/06 16:14:42:247 IST] 0000002d ExceptionUtil E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "getValidValuesWithCMT" on bean "BeanId(HibernateCacheProjectEAR#HibernateCacheProject.jar#ValidValueSessionBean, null)". Exception data: java.lang.UnsupportedOperationException
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.suspend(WebSphereExtendedJTATransactionLookup.java:105)
at org.hibernate.cache.TreeCache.suspend(TreeCache.java:101)
at org.hibernate.cache.TreeCache.put(TreeCache.java:71)
at org.hibernate.cache.TransactionalCache.put(TransactionalCache.java:50)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1533)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at com.acs.enterprise.common.program.dataaccess.dao.impl.ValidValueDAOImpl.getValidValueDomainDetail(ValidValueDAOImpl.java:170)
at ejbs.ValidValueSessionBeanBean.getValidValuesWithCMT(ValidValueSessionBeanBean.java:69)
at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
at java.security.AccessController.doPrivileged1(Native Method)
at java.security.AccessController.doPrivileged(AccessController.java:351)
at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
at $Proxy2.getValidValuesWithCMT(Unknown Source)
at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
[12/14/06 16:14:42:325 IST] 0000002d OrderedSynchr E failed calling afterCompletion() on TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:1, tx=org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter$TransactionAdapter@0)
[12/14/06 16:14:42:325 IST] 0000002d OrderedSynchr E TRAS0014I: The following exception was logged java.lang.IllegalStateException: illegal status: 5
at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:1019)
at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1103)
at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:83)
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$1.invoke(WebSphereExtendedJTATransactionLookup.java:133)
at $Proxy3.afterCompletion(Unknown Source)
at com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.afterCompletion(SynchronizationCallbackWrapper.java:74)
at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:358)
at com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3268)
at com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3312)
at com.ibm.ws.Transaction.JTA.TransactionImpl.internalRollback(TransactionImpl.java:2368)
at com.ibm.ws.Transaction.JTA.TransactionImpl.rollback(TransactionImpl.java:1698)
at com.ibm.ws.Transaction.JTA.TranManagerImpl.rollback(TranManagerImpl.java:274)
at com.ibm.ws.Transaction.JTA.TranManagerSet.rollback(TranManagerSet.java:181)
at com.ibm.ejs.csi.TranStrategy.rollback(TranStrategy.java:911)
at com.ibm.ejs.csi.TranStrategy.handleException(TranStrategy.java:220)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:566)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3798)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3620)
at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
at java.security.AccessController.doPrivileged1(Native Method)
at java.security.AccessController.doPrivileged(AccessController.java:351)
at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
at $Proxy2.getValidValuesWithCMT(Unknown Source)
at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
.
java.lang.IllegalStateException: illegal status: 5
at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:1019)
at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1103)
at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:83)
at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$1.invoke(WebSphereExtendedJTATransactionLookup.java:133)
at $Proxy3.afterCompletion(Unknown Source)
at com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.afterCompletion(SynchronizationCallbackWrapper.java:74)
at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:358)
at com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3268)
at com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3312)
at com.ibm.ws.Transaction.JTA.TransactionImpl.internalRollback(TransactionImpl.java:2368)
at com.ibm.ws.Transaction.JTA.TransactionImpl.rollback(TransactionImpl.java:1698)
at com.ibm.ws.Transaction.JTA.TranManagerImpl.rollback(TranManagerImpl.java:274)
at com.ibm.ws.Transaction.JTA.TranManagerSet.rollback(TranManagerSet.java:181)
at com.ibm.ejs.csi.TranStrategy.rollback(TranStrategy.java:911)
at com.ibm.ejs.csi.TranStrategy.handleException(TranStrategy.java:220)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:566)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3798)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3620)
at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
at java.security.AccessController.doPrivileged1(Native Method)
at java.security.AccessController.doPrivileged(AccessController.java:351)
at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
at $Proxy2.getValidValuesWithCMT(Unknown Source)
at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months
Buy impotence drugs with us much cheaper
by Sonny Greenwood
little about the substance of it. And this is one cause why so the Lord: well may this be a mystery to the natural, for it is a flesh, bone of his bone; they talk, they walk with him, as a spirit.� Hence it happens, that so many, even of the most communion, when the Lord's love flows in upon your souls, his daily practice to �keep under his body, and bring it into disciple of Christ, to make always, even unto the 3end of the practice, he is guided more by the world, than by the word of delivers believers from the guilt of it: Christ is their Savior, to all elect sinners � they are made to know themselves, so Savior, when we will not endeavor sincerely to approve Sonny Greenwood
19 years, 7 months
[JBoss JIRA] Updated: (JBCACHE-546) Move lock related operations to a separate utility, such as NodeLock
by Manik Surtani (JIRA)
[ http://jira.jboss.com/jira/browse/JBCACHE-546?page=all ]
Manik Surtani updated JBCACHE-546:
----------------------------------
Fix Version/s: 2.0.0.ALPHA2
Description:
This is to reduce the amount of methods in Node to keep them fairly succinct.
The lock in a Node itself could be package-protected so that interactions must happen through this class.
was:
This is to reduce the amount of methods in Node to keep them fairly succinct.
The lock in a Node itself could be package-protected so that interactions must happen through this class.
> Move lock related operations to a separate utility, such as NodeLock
> --------------------------------------------------------------------
>
> Key: JBCACHE-546
> URL: http://jira.jboss.com/jira/browse/JBCACHE-546
> Project: JBoss Cache
> Issue Type: Sub-task
> Security Level: Public(Everyone can see)
> Affects Versions: 1.3.0.GA
> Reporter: Elias Ross
> Assigned To: Manik Surtani
> Fix For: 2.0.0.GA, 2.0.0.ALPHA2
>
>
> This is to reduce the amount of methods in Node to keep them fairly succinct.
> The lock in a Node itself could be package-protected so that interactions must happen through this class.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months
[JBoss JIRA] Updated: (JBCACHE-541) Create one true Node class; that's lean and mean and stuff
by Manik Surtani (JIRA)
[ http://jira.jboss.com/jira/browse/JBCACHE-541?page=all ]
Manik Surtani updated JBCACHE-541:
----------------------------------
Fix Version/s: 2.0.0.ALPHA2
Description:
There are TreeNode, AbstractNode, DataNode and Node as basically Node types.
I'm thinking as a simplification in design, that a single Node.java class that's concrete and has a fairly comprehensive but non-bloated method set. This will save on memory and reduce confusion. Also, having interfaces for data classes is fairly difficult, as you end up having so many data accessor methods that it is hard to maintain.
The end result would be something like:
public class Node
{
private Fqn fqn; // name is Fqn.getLast()
private Map attributes;
private Map children;
private Lock lock;
}
Note: No parent, no reference to TreeCache (clients can supply it if they want, no need for every node to have a reference), external locking is done on the Lock, internal locking is done on "this".
For all the locking that needs done, create a NodeLock utility class that has these methods, including ten versions of printLocks. :-)
I'll create a list of tasks, some possibly now without breaking compatibility, some for later (like post 2.0?)
was:
There are TreeNode, AbstractNode, DataNode and Node as basically Node types.
I'm thinking as a simplification in design, that a single Node.java class that's concrete and has a fairly comprehensive but non-bloated method set. This will save on memory and reduce confusion. Also, having interfaces for data classes is fairly difficult, as you end up having so many data accessor methods that it is hard to maintain.
The end result would be something like:
public class Node
{
private Fqn fqn; // name is Fqn.getLast()
private Map attributes;
private Map children;
private Lock lock;
}
Note: No parent, no reference to TreeCache (clients can supply it if they want, no need for every node to have a reference), external locking is done on the Lock, internal locking is done on "this".
For all the locking that needs done, create a NodeLock utility class that has these methods, including ten versions of printLocks. :-)
I'll create a list of tasks, some possibly now without breaking compatibility, some for later (like post 2.0?)
All a part of the Node/Cache object model refactoring
> Create one true Node class; that's lean and mean and stuff
> ----------------------------------------------------------
>
> Key: JBCACHE-541
> URL: http://jira.jboss.com/jira/browse/JBCACHE-541
> Project: JBoss Cache
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 1.3.0.GA
> Reporter: Elias Ross
> Assigned To: Manik Surtani
> Fix For: 2.0.0.GA, 2.0.0.ALPHA2
>
>
> There are TreeNode, AbstractNode, DataNode and Node as basically Node types.
> I'm thinking as a simplification in design, that a single Node.java class that's concrete and has a fairly comprehensive but non-bloated method set. This will save on memory and reduce confusion. Also, having interfaces for data classes is fairly difficult, as you end up having so many data accessor methods that it is hard to maintain.
> The end result would be something like:
> public class Node
> {
> private Fqn fqn; // name is Fqn.getLast()
> private Map attributes;
> private Map children;
> private Lock lock;
> }
> Note: No parent, no reference to TreeCache (clients can supply it if they want, no need for every node to have a reference), external locking is done on the Lock, internal locking is done on "this".
> For all the locking that needs done, create a NodeLock utility class that has these methods, including ten versions of printLocks. :-)
> I'll create a list of tasks, some possibly now without breaking compatibility, some for later (like post 2.0?)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months