pnever      2005/02/25 07:58:38

  Modified:    
proposals/tamino/src/store/org/apache/slide/store/tamino/datastore
                        XDbSession.java
  Added:       
proposals/tamino/src/store/org/apache/slide/store/tamino/datastore
                        TaminoCodes.java
               proposals/tamino/src/store/org/apache/slide/store/tamino/common
                        XTLockSettings.java
  Log:
  Added handling for Tamino codes to be able to abort on certain
  Tamino codes
  
  Revision  Changes    Path
  1.5       +48 -13    
jakarta-slide/proposals/tamino/src/store/org/apache/slide/store/tamino/datastore/XDbSession.java
  
  Index: XDbSession.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/tamino/src/store/org/apache/slide/store/tamino/datastore/XDbSession.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XDbSession.java   12 Jan 2005 13:09:32 -0000      1.4
  +++ XDbSession.java   25 Feb 2005 15:58:37 -0000      1.5
  @@ -37,6 +37,7 @@
   import com.softwareag.tamino.db.api.objectModel.jdom.TJDOMObjectModel;
   import com.softwareag.tamino.db.api.response.TResponse;
   import org.apache.slide.common.Domain;
  +import org.apache.slide.store.tamino.datastore.TaminoCodes;
   import org.apache.slide.store.tamino.datastore.schema.XDoctype;
   import org.apache.slide.store.tamino.jdomobjects.XDescriptors;
   import org.apache.slide.store.tamino.store.ISlideAccessor;
  @@ -302,6 +303,7 @@
               throw new XForbiddenException ("Non-XML content not allowed");
           
           String result = null;
  +        TResponse response = null;
           String docType = content.getDocumentType();
           if( docType == null || "".equals(docType) )
               docType = "application/octet-stream";
  @@ -309,7 +311,11 @@
           try {
               TNonXMLObject nonXmlObject = 
content.getContentWrapper().getNonXMLObject(docType);
               xConnection.startTransactionIfNecessary();
  -            nonXMLContentAccessor.insert (nonXmlObject);
  +            response = nonXMLContentAccessor.insert (nonXmlObject);
  +            String code = response.getReturnValue();
  +            if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                throw new XException("Tamino returned possibly aborting 
code: "+code);
  +            }
               result = nonXmlObject.getId();
           }
           catch (TException e) {
  @@ -318,7 +324,11 @@
                   docType = "application/octet-stream";
                   TNonXMLObject nonXmlObject = 
content.getContentWrapper().getNonXMLObject(docType);
                   xConnection.startTransactionIfNecessary();
  -                nonXMLContentAccessor.insert (nonXmlObject);
  +                response = nonXMLContentAccessor.insert (nonXmlObject);
  +                String code = response.getReturnValue();
  +                if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                    throw new XException("Tamino returned possibly aborting 
code: "+code);
  +                }
                   result = nonXmlObject.getId();
               }
               catch (TException x) {
  @@ -493,9 +503,12 @@
                               XProcessResultParser resultParser = new 
XProcessResultParser();
                               resultParser.parse (resultStream);
                               
  -                            String response = resultParser.getResponse();
  +                            String code = resultParser.getResponse();
  +                            if (!"0".equals(code) && 
!TaminoCodes.isNonaborting(code)) {
  +                                throw new XException("Tamino returned 
possibly aborting code: "+code);
  +                            }
                               
  -                            if (!"0".equals (response)) {
  +                            if (!"0".equals (code)) {
                                   if (allowNonXML) {
                                       docType = NONXML_CONTENT;
                                       id = createNonXmlContent (content);
  @@ -504,7 +517,7 @@
                                   else {
                                       throw new XForbiddenException(
                                           "Storing content as XML failed with 
Tamino error " +
  -                                            response + " and non-XML content 
not allowed" );
  +                                            code + " and non-XML content not 
allowed" );
                                   }
                               }
                               else {
  @@ -613,6 +626,11 @@
               xConnection.startTransactionIfNecessary();
               
               response = nonXMLContentAccessor.update (nonXmlObject);
  +            String code = response.getReturnValue();
  +            if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                throw new XException("Tamino returned possibly aborting 
code: "+code);
  +            }
  +            
               inoIdReturnedFromTamino = nonXmlObject.getId();
               
               if (!inoIdReturnedFromTamino.equals (contentId.getId()))
  @@ -659,6 +677,10 @@
               xConnection.startTransactionIfNecessary();
               nonXmlObject.setId (contentId.getId());
               response = nonXMLContentAccessor.update (nonXmlObject);
  +            String code = response.getReturnValue();
  +            if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                throw new XException("Tamino returned possibly aborting 
code: "+code);
  +            }
               result = nonXmlObject.getId();
           }
           catch (TException e) {
  @@ -668,6 +690,10 @@
                   xConnection.startTransactionIfNecessary();
                   nonXmlObject.setId (contentId.getId());
                   response = nonXMLContentAccessor.update (nonXmlObject);
  +                String code = response.getReturnValue();
  +                if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                    throw new XException("Tamino returned possibly aborting 
code: "+code);
  +                }
                   result = nonXmlObject.getId();
               }
               catch (TException x) {
  @@ -791,13 +817,21 @@
               inoId
           );
           
  +        TResponse response = null;
  +        
           try {
               xConnection.startTransactionIfNecessary();
               
  -            if (accessor instanceof TNonXMLObjectAccessor)
  -                    ((TNonXMLObjectAccessor)accessor).delete (xQuery);
  -            else
  -                    ((TXMLObjectAccessor)accessor).delete (xQuery);
  +            if (accessor instanceof TNonXMLObjectAccessor) {
  +                response = ((TNonXMLObjectAccessor)accessor).delete (xQuery);
  +            }
  +            else {
  +                response = ((TXMLObjectAccessor)accessor).delete (xQuery);
  +            }
  +            String code = response.getReturnValue();
  +            if (!"0".equals(code) && !TaminoCodes.isNonaborting(code)) {
  +                throw new XException("Tamino returned possibly aborting 
code: "+code);
  +            }
           }
           catch (TException e) {
               throw new XDatastoreException ("xpath: " + xQuery, e);
  @@ -1141,3 +1175,4 @@
   }
   
   
  +
  
  
  
  1.2       +102 -0    
jakarta-slide/proposals/tamino/src/store/org/apache/slide/store/tamino/datastore/TaminoCodes.java
  
  
  
  
  1.2       +104 -0    
jakarta-slide/proposals/tamino/src/store/org/apache/slide/store/tamino/common/XTLockSettings.java
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to