Update of 
/cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/session/resources
In directory sc8-pr-cvs1:/tmp/cvs-serv6178/src/xdoclet/modules/ejb/session/resources

Modified Files:
        remotefacade.xdt 
Log Message:
improvement in remote session facade - ade it java.util.Observable, 
added configurable result caching and invalidation


Index: remotefacade.xdt
===================================================================
RCS file: 
/cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/session/resources/remotefacade.xdt,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** remotefacade.xdt    6 Oct 2002 17:43:18 -0000       1.3
--- remotefacade.xdt    12 Jan 2003 16:54:59 -0000      1.4
***************
*** 14,19 ****
  <XDtClass:classCommentTags indent="0"/> */
  
! public class <XDtClass:classOf><XDtEjbFacade:remoteFacadeClass/></XDtClass:classOf>
  {
  
    <XDtEjbIntf:ifRemoteEjb>
--- 14,26 ----
  <XDtClass:classCommentTags indent="0"/> */
  
! public class <XDtClass:classOf><XDtEjbFacade:remoteFacadeClass/></XDtClass:classOf> 
extends Observable
  {
+     static <XDtClass:classOf><XDtEjbFacade:remoteFacadeClass/></XDtClass:classOf> 
+_instance = null;
+     public static 
+<XDtClass:classOf><XDtEjbFacade:remoteFacadeClass/></XDtClass:classOf> getInstance() {
+         if(_instance == null) {
+          _instance = new 
+<XDtClass:classOf><XDtEjbFacade:remoteFacadeClass/></XDtClass:classOf>();
+       }
+       return _instance;
+     }
  
    <XDtEjbIntf:ifRemoteEjb>
***************
*** 43,46 ****
--- 50,66 ----
     <XDtEjbIntf:ifIsInterfaceMethod superclasses="false" interface="remote">
       <XDtMethod:ifHasMethodTag tagName="ejb.facade-method">
+      
+      <XDtMethod:ifIsNotOfType type="void">
+          <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
+paramName="cache" value="true">
+             <XDtType:ifIsPrimitive value="<XDtMethod:methodType/>">
+    <XDtMethod:methodType/> _<XDtMethod:methodName/>Cached;
+    boolean _<XDtMethod:methodName/>WasSet = false;            
+             </XDtType:ifIsPrimitive>
+             <XDtType:ifIsNotPrimitive value="<XDtMethod:methodType/>">
+    <XDtMethod:methodType/> _<XDtMethod:methodName/>Cached = null;
+             </XDtType:ifIsNotPrimitive>
+         </XDtMethod:ifMethodTagValueEquals>
+      </XDtMethod:ifIsNotOfType>
+      
     public <XDtMethod:methodType/> <XDtMethod:methodName/> ( 
<XDtParameter:parameterList/> )
          <XDtMethod:exceptionList append="java.rmi.RemoteException" 
skip="javax.ejb.EJBException"/>
***************
*** 48,61 ****
        <XDtMethod:ifIsOfType type="void">
        getSession().<XDtMethod:methodName/>( <XDtParameter:parameterList 
includeDefinition="false"/> );
!       </XDtMethod:ifIsOfType>
        <XDtMethod:ifIsNotOfType type="void">
!       <XDtMethod:methodType/> retval =  getSession().<XDtMethod:methodName/>( 
<XDtParameter:parameterList includeDefinition="false"/> );
!       </XDtMethod:ifIsNotOfType>
  
-       <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
paramName="invalidate" value="true">
-       invalidate();
-       </XDtMethod:ifMethodTagValueEquals>
  
-       <XDtMethod:ifIsNotOfType type="void">
        return retval;
        </XDtMethod:ifIsNotOfType>
--- 68,105 ----
        <XDtMethod:ifIsOfType type="void">
        getSession().<XDtMethod:methodName/>( <XDtParameter:parameterList 
includeDefinition="false"/> );
!          <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
paramName="invalidate" value="true">
!       invalidate();
!          </XDtMethod:ifMethodTagValueEquals>
!      </XDtMethod:ifIsOfType>
        <XDtMethod:ifIsNotOfType type="void">
!         <XDtMethod:methodType/> retval;
!          <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
paramName="cache" value="true">
!           <XDtType:ifIsPrimitive value="<XDtMethod:methodType/>">
!         if(!_<XDtMethod:methodName/>WasSet) {
!             _<XDtMethod:methodName/>Cached =  getSession().<XDtMethod:methodName/>( 
<XDtParameter:parameterList includeDefinition="false"/> );
!           _<XDtMethod:methodName/>WasSet = true;
!       }
!         retval = _<XDtMethod:methodName/>Cached;
!           </XDtType:ifIsPrimitive>
!           
!           <XDtType:ifIsNotPrimitive value="<XDtMethod:methodType/>">
!       synchronized(_<XDtMethod:methodName/>Cached) {
!            if(_<XDtMethod:methodName/>Cached == null) {
!                _<XDtMethod:methodName/>Cached =  
getSession().<XDtMethod:methodName/>( <XDtParameter:parameterList 
includeDefinition="false"/> );
!          }
!            retval = _<XDtMethod:methodName/>Cached;
!       }
!           </XDtType:ifIsNotPrimitive>
!           
!        </XDtMethod:ifMethodTagValueEquals>
!        
!        <XDtMethod:ifMethodTagValueNotEquals tagName="ejb.facade-method" 
paramName="cache" value="true">
!        retval =  getSession().<XDtMethod:methodName/>( <XDtParameter:parameterList 
includeDefinition="false"/> );
!             <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
paramName="invalidate" value="true">
!        invalidate();
!             </XDtMethod:ifMethodTagValueEquals>
!        </XDtMethod:ifMethodTagValueNotEquals>
  
  
        return retval;
        </XDtMethod:ifIsNotOfType>
***************
*** 72,75 ****
--- 116,141 ----
     */
    public void invalidate() {
+   
+   <XDtMethod:forAllMethods>
+    <XDtEjbIntf:ifIsInterfaceMethod superclasses="false" interface="remote">
+       <XDtMethod:ifMethodTagValueEquals tagName="ejb.facade-method" 
+paramName="cache" value="true">
+          <XDtMethod:ifMethodTagValueNotEquals tagName="ejb.facade-method" 
+paramName="immutable" value="true">
+            <XDtType:ifIsPrimitive value="<XDtMethod:methodType/>">
+       _<XDtMethod:methodName/>WasSet = false;
+            </XDtType:ifIsPrimitive>
+            <XDtType:ifIsNotPrimitive value="<XDtMethod:methodType/>">
+       if(_<XDtMethod:methodName/>Cached != null) {
+           synchronized(_<XDtMethod:methodName/>Cached) {
+               _<XDtMethod:methodName/>Cached = null;
+           }
+       }
+            </XDtType:ifIsNotPrimitive>             
+          </XDtMethod:ifMethodTagValueNotEquals>
+       </XDtMethod:ifMethodTagValueEquals>
+    </XDtEjbIntf:ifIsInterfaceMethod>
+   </XDtMethod:forAllMethods>
+ 
+       setChanged();
+       notifyObservers();
    }
  }



-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to