Author: bpapez
Date: Fri Aug 17 16:14:36 2007
New Revision: 18206

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18206&repname=
=3Djahia
Log:
SAN-9 - Slide transactions were not cleaned up correctly, if exceptions occ=
urred
* Similar implementation for Jackrabbit, but has to be reworked, once it is=
 known, how to implement transactions correctly

Modified:
    trunk/core/src/java/org/jahia/admin/sites/ManageSites.java
    trunk/core/src/java/org/jahia/blogs/actions/NewMediaObjectAction.java
    trunk/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_Engine=
.java
    trunk/core/src/java/org/jahia/engines/importexport/ManageImportExport.j=
ava
    trunk/core/src/java/org/jahia/engines/shared/DAVFile_Field.java
    trunk/core/src/java/org/jahia/services/importexport/FilesAclImportHandl=
er.java
    trunk/core/src/java/org/jahia/services/importexport/ImportExportBaseSer=
vice.java
    trunk/core/src/java/org/jahia/services/webdav/DAVFileAccess.java
    trunk/core/src/java/org/jahia/taglibs/form/FormContentMapperHandlerTag.=
java
    trunk/core/src/java/org/jahia/taglibs/mediagallery/MediaThumbTag.java

Modified: trunk/core/src/java/org/jahia/admin/sites/ManageSites.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/admin/sites/ManageSites.java&rev=3D18206&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/admin/sites/ManageSites.java (original)
+++ trunk/core/src/java/org/jahia/admin/sites/ManageSites.java Fri Aug 17 1=
6:14:36 2007
@@ -83,6 +83,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.transaction.Status;
+
 import java.io.*;
 import java.util.*;
 import java.util.zip.ZipEntry;
@@ -1099,14 +1101,24 @@
 =

                         String dateOfExport =3D ImportExportBaseService.DA=
TE_FORMAT.format(new Date());
                         String path =3D "/users/" + jParams.getUser().getU=
sername() + "/private";
+                        String uploadname =3D "initialImport_" + dateOfExp=
ort + ".zip";                        =

                         DAVFileAccess dav =3D new DAVFileAccess(jParams, j=
Params.getSite(), jParams.getUser(), path);
                         dav.beginTransaction();
-                        dav.createCollection("imports");
-                        path =3D "/users/" + jParams.getUser().getUsername=
() + "/private/imports";
-                        dav =3D new DAVFileAccess(jParams, jParams.getSite=
(), jParams.getUser(), path);
-                        String uploadname =3D "initialImport_" + dateOfExp=
ort + ".zip";
-                        dav.uploadFile(uploadname, new FileInputStream(ini=
tialZip), initialZip.length(), "application/zip");
-                        dav.commitTransaction();
+                        try {
+                            dav.createCollection("imports");
+                            path =3D "/users/" + jParams.getUser().getUser=
name()
+                                    + "/private/imports";
+                            dav =3D new DAVFileAccess(jParams, jParams.get=
Site(),
+                                    jParams.getUser(), path);
+                            dav.uploadFile(uploadname, new FileInputStream(
+                                    initialZip), initialZip.length(),
+                                    "application/zip");
+                            dav.commitTransaction();
+                        } finally {
+                            if (dav.getTransactionStatus() =3D=3D Status.S=
TATUS_ACTIVE) {
+                                dav.rollbackTransaction();
+                            }
+                        }
                         jobDataMap.put(ImportJob.URI, path+"/"+uploadname);
                         jobDataMap.put(ImportJob.FILENAME, initialZip.getN=
ame());
                         jobDataMap.put(ImportJob.CONTENT_TYPE, "applicatio=
n/zip");

Modified: trunk/core/src/java/org/jahia/blogs/actions/NewMediaObjectAction.=
java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/blogs/actions/NewMediaObjectAction.java&rev=3D18206&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/blogs/actions/NewMediaObjectAction.java (=
original)
+++ trunk/core/src/java/org/jahia/blogs/actions/NewMediaObjectAction.java F=
ri Aug 17 16:14:36 2007
@@ -37,6 +37,8 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 =

+import javax.transaction.Status;
+
 /**
  * Action used to upload a file to the Jahia content repository.
  * Compliant with MetaWeblog API's newMediaObject method.
@@ -135,6 +137,10 @@
             throw new JahiaException(e.getMessage(), e.getMessage(),
                     JahiaException.APPLICATION_ERROR, =

                     JahiaException.ERROR_SEVERITY, e);
+        } finally {
+            if (dav.getTransactionStatus() =3D=3D Status.STATUS_ACTIVE) {
+                dav.rollbackTransaction();
+            }
         }
     }
 }

Modified: trunk/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_=
Engine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/filemanager/DAVFilemanager_Engine.java&rev=3D18206&repname=
=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_Engine=
.java (original)
+++ trunk/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_Engine=
.java Fri Aug 17 16:14:36 2007
@@ -63,6 +63,8 @@
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.jcr.RepositoryException;
+import javax.transaction.Status;
+
 import java.io.*;
 import java.security.Principal;
 import java.text.Collator;
@@ -212,12 +214,16 @@
                     final DAVFileAccess objectDav =3D objectDaves[i];
                     if (objectDav.isLocked()) continue;
                     objectDav.beginTransaction();
-                    ok =3D objectDav.lockFile(jParams.getUser().isRoot());
-                    if (ok) {
-                        objectDav.commitTransaction();
-                    } else {
-                        objectDav.rollbackTransaction();
-                    }
+                    try {
+                        ok =3D objectDav.lockFile(jParams.getUser().isRoot=
());
+                        if (ok) {
+                            objectDav.commitTransaction();
+                        }
+                    } finally {
+                        if (objectDav.getTransactionStatus() =3D=3D Status=
.STATUS_ACTIVE) {
+                            objectDav.rollbackTransaction();
+                        }
+                    }                    =

                     logger.debug("lockFile: " + objectDav.isLocked() + ", =
operationStatus: " + ok);
                 }
             }
@@ -320,139 +326,166 @@
 =

         if (objectDav.getException() =3D=3D null) {
             objectDav.beginTransaction();
-
-            if (actionScreen.equals("save")) {
-                jParams.setParameter("screen", "close");
-            } else if (actionScreen.equals("apply")) {
-                jParams.setParameter("screen", lastScreen);
-            }
-
-            if (lastScreen.equals("view")) {
-                final String action =3D jParams.getParameter("act");
-                if (action.equals("move")) {
-                    final String[] filesToMove =3D (String[]) ((ParamBean)=
 jParams).getRequest().getSession().getAttribute("filesToMove");
-                    final DAVFileAccess[] files =3D toDAVFileAccess(jParam=
s, filesToMove, true);
-                    result =3D true;
-                    for (int i =3D 0; i < files.length; i++) {
-                        if (!result) break;
-                        result =3D moveFile(files[i], jParams);
+            try {
+                if (actionScreen.equals("save")) {
+                    jParams.setParameter("screen", "close");
+                } else if (actionScreen.equals("apply")) {
+                    jParams.setParameter("screen", lastScreen);
+                }
+
+                if (lastScreen.equals("view")) {
+                    final String action =3D jParams.getParameter("act");
+                    if (action.equals("move")) {
+                        final String[] filesToMove =3D (String[]) ((ParamB=
ean) jParams)
+                                .getRequest().getSession().getAttribute(
+                                        "filesToMove");
+                        final DAVFileAccess[] files =3D toDAVFileAccess(jP=
arams,
+                                filesToMove, true);
+                        result =3D true;
+                        for (int i =3D 0; i < files.length; i++) {
+                            if (!result)
+                                break;
+                            result =3D moveFile(files[i], jParams);
+                        }
+                    } else if (action.equals("copy")) {
+                        final String[] filesToCopy =3D (String[]) ((ParamB=
ean) jParams)
+                                .getRequest().getSession().getAttribute(
+                                        "filesToCopy");
+                        final DAVFileAccess[] files =3D toDAVFileAccess(jP=
arams,
+                                filesToCopy, true);
+                        result =3D true;
+                        for (int i =3D 0; i < files.length; i++) {
+                            if (!result)
+                                break;
+                            result =3D copyFile(files[i], jParams);
+                        }
+                    } else if (action.equals("unzip")) {
+                        result =3D unzipContent(objectDav, jParams);
                     }
-                } else if (action.equals("copy")) {
-                    final String[] filesToCopy =3D (String[]) ((ParamBean)=
 jParams).getRequest().getSession().getAttribute("filesToCopy");
-                    final DAVFileAccess[] files =3D toDAVFileAccess(jParam=
s, filesToCopy, true);
+                } else if (lastScreen.equals("unzip")) {
+                    result =3D uploadAndUnzip(objectDav, jParams);
+                    logger.debug("unzip: " + result);
+                } else if (lastScreen.equals("zip")) {
+                    // In the case of the ZipFile, the last value of the A=
rray is the directory where the file will be put
+                    final String[] filesToZip =3D (String[]) ((ParamBean) =
jParams)
+                            .getRequest().getSession().getAttribute(
+                                    "filesToZip");
+                    final DAVFileAccess[] files =3D toDAVFileAccess(jParam=
s,
+                            filesToZip, true);
+                    final String zipName =3D jParams.getParameter("zipName=
");
+                    if (zipName.indexOf(".zip") >=3D 0)
+                        result =3D zipFiles(objectDav, zipName, files);
+                    else
+                        result =3D zipFiles(objectDav, zipName + ".zip", f=
iles);
+                    logger.debug("zip: " + result);
+                } else if (lastScreen.equals("info")) {
+                    final String tab =3D jParams.getParameter("tab");
                     result =3D true;
-                    for (int i =3D 0; i < files.length; i++) {
-                        if (!result) break;
-                        result =3D copyFile(files[i], jParams);
+                    logger.debug("tab value is: " + tab);
+                    if (tab.equals("rightsMgmt")) {
+                        List futur403 =3D null;
+                        final boolean ignoreWarning =3D jParams
+                                .getParameter("ignoreAllWarnings") !=3D nu=
ll;
+                        try {
+                            futur403 =3D saveAcl(objectDav, jParams,
+                                    ignoreWarning);
+                        } catch (JahiaException je) {
+                            logger.error(je, je);
+                        }
+                        result =3D ignoreWarning
+                                || (futur403 =3D=3D null || futur403.size(=
) =3D=3D 0);
+                        if (!result) {
+                            if (objectDav.isCollection()) {
+                                jParams
+                                        .setAttribute("error",
+                                                "org.jahia.engines.fileman=
ager.Filemanager_Engine.permissionError.label");
+                            } else {
+                                logger.debug("futur403: " + futur403);
+                                jParams
+                                        .setAttribute("error",
+                                                "org.jahia.engines.fileman=
ager.Filemanager_Engine.readPermissionError.label");
+                                jParams.setAttribute("futur403", futur403);
+                            }
+                        }
+                    } else if (tab.equals("edit")) {
+                        try {
+                            saveProperties(objectDav, jParams);
+                        } catch (JahiaException e) {
+                            logger.error("Cannot save properties", e);
+                        }
+                    } else if (tab.equals("version")) {
+                        if (jParams.getParameter("activate") !=3D null) {
+                            objectDav.versionFile();
+                        }
                     }
-                } else if (action.equals("unzip")) {
-                    result =3D unzipContent(objectDav, jParams);
-                }
-            } else if (lastScreen.equals("unzip")) {
-                result =3D uploadAndUnzip(objectDav, jParams);
-                logger.debug("unzip: " + result);
-            } else if (lastScreen.equals("zip")) {
-                // In the case of the ZipFile, the last value of the Array=
 is the directory where the file will be put
-                final String[] filesToZip =3D (String[]) ((ParamBean) jPar=
ams).getRequest().getSession().getAttribute("filesToZip");
-                final DAVFileAccess[] files =3D toDAVFileAccess(jParams, f=
ilesToZip, true);
-                final String zipName =3D jParams.getParameter("zipName");
-                if (zipName.indexOf(".zip") >=3D 0)
-                    result =3D zipFiles(objectDav, zipName, files);
-                else
-                    result =3D zipFiles(objectDav, zipName + ".zip", files=
);
-                logger.debug("zip: " + result);
-            } else if (lastScreen.equals("info")) {
-                final String tab =3D jParams.getParameter("tab");
-                result =3D true;
-                logger.debug("tab value is: " + tab);
-                if (tab.equals("rightsMgmt")) {
-                    List futur403 =3D null;
-                    final boolean ignoreWarning =3D jParams.getParameter("=
ignoreAllWarnings") !=3D null;
+                } else if (lastScreen.equals("fileDelete")) {
+                    result =3D deleteFile(objectDav, jParams);
+                } else if (lastScreen.equals("fileRename")) {
+                    result =3D renameFile(objectDav, jParams);
+
+                } else if (lastScreen.equals("rightsMgmt")) {
                     try {
-                        futur403 =3D saveAcl(objectDav, jParams, ignoreWar=
ning);
+                        final List tmp =3D saveAcl(objectDav, jParams, fal=
se);
+                        result =3D (tmp =3D=3D null || tmp.size() =3D=3D 0=
);
                     } catch (JahiaException je) {
                         logger.error(je, je);
                     }
-                    result =3D ignoreWarning || (futur403 =3D=3D null || f=
utur403.size() =3D=3D 0);
                     if (!result) {
-                        if (objectDav.isCollection()) {
-                            jParams.setAttribute("error", "org.jahia.engin=
es.filemanager.Filemanager_Engine.permissionError.label");
-                        } else {
-                            logger.debug("futur403: " + futur403);
-                            jParams.setAttribute("error", "org.jahia.engin=
es.filemanager.Filemanager_Engine.readPermissionError.label");
-                            jParams.setAttribute("futur403", futur403);
-                        }
-                    }
-                } else if (tab.equals("edit")) {
-                    try {
-                        saveProperties(objectDav, jParams );
-                    } catch (JahiaException e) {
-                        logger.error("Cannot save properties",e);
+                        jParams
+                                .setAttribute("error",
+                                        "org.jahia.engines.filemanager.Fil=
emanager_Engine.permissionError.label");
                     }
-                } else if (tab.equals("version")) {
-                    if (jParams.getParameter("activate") !=3D null) {
-                        objectDav.versionFile();
+                } else if (lastScreen.equals("createDir")) {
+                    jParams.getSessionState().setAttribute("changeDir",
+                            TableEntry.javascriptEncode(objectDav.getPath(=
)));
+                    result =3D createCollection(objectDav, jParams);
+                } else if (lastScreen.equals("fileUpload")) {
+                    jParams.getSessionState().setAttribute("changeDir",
+                            TableEntry.javascriptEncode(objectDav.getPath(=
)));
+                    result =3D uploadFile(objectDav, jParams);
+                    logger.debug("uploadFile: " + result);
+
+                } else if (lastScreen.equals("fileUploadConfirm")) {
+                    jParams.getSessionState().setAttribute("changeDir",
+                            TableEntry.javascriptEncode(objectDav.getPath(=
)));
+                    result =3D uploadConfirm(objectDav, jParams);
+
+                } else if (lastScreen.equals("unlockFile")) {
+                    if (jParams.getParameter("doUnlock") !=3D null) {
+                        result =3D objectDav.unlockFile(true);
+                    } else {
+                        result =3D true;
                     }
-                }
-            } else if (lastScreen.equals("fileDelete")) {
-                result =3D deleteFile(objectDav, jParams);
-            } else if (lastScreen.equals("fileRename")) {
-                result =3D renameFile(objectDav, jParams);
-
-            } else if (lastScreen.equals("rightsMgmt")) {
-                try {
-                    final List tmp =3D saveAcl(objectDav, jParams, false);
-                    result =3D (tmp =3D=3D null || tmp.size() =3D=3D 0);
-                } catch (JahiaException je) {
-                    logger.error(je, je);
-                }
-                if (!result) {
-                    jParams.setAttribute("error", "org.jahia.engines.filem=
anager.Filemanager_Engine.permissionError.label");
-                }
-            } else if (lastScreen.equals("createDir")) {
-                jParams.getSessionState().setAttribute("changeDir",
-                        TableEntry.javascriptEncode(objectDav.getPath()));
-                result =3D createCollection(objectDav, jParams);
-            } else if (lastScreen.equals("fileUpload")) {
-                jParams.getSessionState().setAttribute("changeDir",
-                        TableEntry.javascriptEncode(objectDav.getPath()));
-                result =3D uploadFile(objectDav, jParams);
-                logger.debug("uploadFile: " + result);
-
-            } else if (lastScreen.equals("fileUploadConfirm")) {
-                jParams.getSessionState().setAttribute("changeDir",
-                        TableEntry.javascriptEncode(objectDav.getPath()));
-                result =3D uploadConfirm(objectDav, jParams);
-
-            } else if (lastScreen.equals("unlockFile")) {
-                if (jParams.getParameter("doUnlock") !=3D null) {
-                    result =3D objectDav.unlockFile(true);
-                } else {
+                } else if (lastScreen.equals("ajaxfilemanagerhelp")) {
                     result =3D true;
                 }
-            } else if (lastScreen.equals("ajaxfilemanagerhelp")) {
-                result =3D true;
-            }
 =

-            if (result) {
-                try {
-                    objectDav.commitTransaction();
-                    logger.debug("commitTransaction");
-                } catch (Throwable e) {
-                    logger.debug(e, e);
-                }
-            } else {
-                objectDav.rollbackTransaction();
-                if (jParams.getAttribute("error") =3D=3D null) {
-                    jParams.setAttribute("error", "org.jahia.engines.filem=
anager.Filemanager_Engine.filemanagerError.label");
-                }
-                if ("rightsMgmt".equals(jParams.getParameter("tab"))) {
-                    jParams.setParameter("screen", "info");
-                    jParams.setParameter("tab", "rightsMgmt");
+                if (result) {
+                    try {
+                        objectDav.commitTransaction();
+                        logger.debug("commitTransaction");
+                    } catch (Throwable e) {
+                        logger.debug(e, e);
+                    }
                 } else {
-                    jParams.setParameter("screen", "error");
+                    objectDav.rollbackTransaction();
+                    if (jParams.getAttribute("error") =3D=3D null) {
+                        jParams
+                                .setAttribute("error",
+                                        "org.jahia.engines.filemanager.Fil=
emanager_Engine.filemanagerError.label");
+                    }
+                    if ("rightsMgmt".equals(jParams.getParameter("tab"))) {
+                        jParams.setParameter("screen", "info");
+                        jParams.setParameter("tab", "rightsMgmt");
+                    } else {
+                        jParams.setParameter("screen", "error");
+                    }
                 }
-            }
+            } finally {
+                if (objectDav.getTransactionStatus() =3D=3D Status.STATUS_=
ACTIVE) {
+                    objectDav.rollbackTransaction();
+                }
+            }            =

         }
     }
 =


Modified: trunk/core/src/java/org/jahia/engines/importexport/ManageImportEx=
port.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/importexport/ManageImportExport.java&rev=3D18206&repname=
=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/engines/importexport/ManageImportExport.j=
ava (original)
+++ trunk/core/src/java/org/jahia/engines/importexport/ManageImportExport.j=
ava Fri Aug 17 16:14:36 2007
@@ -41,6 +41,8 @@
 =

 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import javax.transaction.Status;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URLConnection;
@@ -230,15 +232,24 @@
                     String contentType =3D URLConnection.getFileNameMap().=
getContentTypeFor(fupload.getFileSystemName(name));
                     String ext =3D file.getName().substring(file.getName()=
.lastIndexOf("."));
                     String dateOfExport =3D ImportExportBaseService.DATE_F=
ORMAT.format(new Date());
+                    String uploadname =3D "importInto_" + dkey + "_" + dat=
eOfExport + ext;
                     String path =3D "/users/" + jParams.getUser().getUsern=
ame() + "/private";
                     DAVFileAccess dav =3D new DAVFileAccess(jParams, jPara=
ms.getSite(), jParams.getUser(), path);
                     dav.beginTransaction();
-                    dav.createCollection("imports");
-                    path =3D "/users/" + jParams.getUser().getUsername() +=
 "/private/imports";
-                    dav =3D new DAVFileAccess(jParams, jParams.getSite(), =
jParams.getUser(), path);
-                    String uploadname =3D "importInto_" + dkey + "_" + dat=
eOfExport + ext;
-                    dav.uploadFile(uploadname, new FileInputStream(file), =
file.length(), contentType);
-                    dav.commitTransaction();
+                    try {
+                        dav.createCollection("imports");
+                        path =3D "/users/" + jParams.getUser().getUsername=
()
+                                + "/private/imports";
+                        dav =3D new DAVFileAccess(jParams, jParams.getSite=
(),
+                                jParams.getUser(), path);
+                        dav.uploadFile(uploadname, new FileInputStream(fil=
e),
+                                file.length(), contentType);
+                        dav.commitTransaction();
+                    } finally {
+                        if (dav.getTransactionStatus() =3D=3D Status.STATU=
S_ACTIVE) {
+                            dav.rollbackTransaction();
+                        }
+                    }                        =

                     jobDataMap.put(ImportJob.URI, path + "/" + uploadname);
                     jobDataMap.put(ImportJob.FILENAME, file.getName());
                     jobDataMap.put(ImportJob.CONTENT_TYPE, contentType);

Modified: trunk/core/src/java/org/jahia/engines/shared/DAVFile_Field.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/engines/shared/DAVFile_Field.java&rev=3D18206&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/engines/shared/DAVFile_Field.java (origin=
al)
+++ trunk/core/src/java/org/jahia/engines/shared/DAVFile_Field.java Fri Aug=
 17 16:14:36 2007
@@ -39,6 +39,8 @@
 import org.jahia.services.lock.LockKey;
 =

 import javax.servlet.http.HttpSession;
+import javax.transaction.Status;
+
 import java.util.*;
 =

 /**
@@ -151,8 +153,14 @@
         }
         if (!uris.isEmpty()) {
             objectDav.beginTransaction();
-            objectDav.alignPermsWithField(theField, uris);
-            objectDav.commitTransaction();
+            try {
+                objectDav.alignPermsWithField(theField, uris);
+                objectDav.commitTransaction();
+            } finally {
+                if (objectDav.getTransactionStatus() =3D=3D Status.STATUS_=
ACTIVE) {
+                    objectDav.rollbackTransaction();
+                }
+            }                =

         }
 //        }
 =


Modified: trunk/core/src/java/org/jahia/services/importexport/FilesAclImpor=
tHandler.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/importexport/FilesAclImportHandler.java&rev=3D18206&repna=
me=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/services/importexport/FilesAclImportHandl=
er.java (original)
+++ trunk/core/src/java/org/jahia/services/importexport/FilesAclImportHandl=
er.java Fri Aug 17 16:14:36 2007
@@ -30,6 +30,8 @@
 =

 import java.util.StringTokenizer;
 =

+import javax.transaction.Status;
+
 /**
  * Created by IntelliJ IDEA.
  * User: toto
@@ -53,46 +55,64 @@
             DAVFileAccess f =3D JahiaWebdavBaseService.getInstance ().getD=
AVFileAccess (jParams, jParams.getSite(), jParams.getUser(), path);
             if (f.isValid()) {
                 f.beginTransaction();
-
-                if (acl !=3D null && acl.length()>0) {
-                    StringTokenizer st =3D new StringTokenizer(acl, "|");
-                    while (st.hasMoreElements()) {
-                        String s =3D st.nextToken();
-                        int beginIndex =3D s.lastIndexOf(":");
-
-                        String principal =3D s.substring(0,beginIndex);
-                        String userName =3D principal.substring(2);
-                        String value =3D null;
-                        try {
-                            if (principal.charAt(0) =3D=3D 'u') {
-                                JahiaUser user =3D ServicesRegistry.getIns=
tance().getJahiaSiteUserManagerService().getMember(jParams.getSiteID(), use=
rName);
-                                if (user !=3D null) {
-                                    value =3D "/users/" + user.getUsername=
();
-                                }
-                            } else {
-                                JahiaGroup group =3D ServicesRegistry.getI=
nstance().getJahiaGroupManagerService().lookupGroup(jParams.getSiteID(), us=
erName);
-                                if (group !=3D null) {
-                                    value =3D "+/groups/" + group.getGroup=
name() + "/members";
+                try {
+                    if (acl !=3D null && acl.length() > 0) {
+                        StringTokenizer st =3D new StringTokenizer(acl, "|=
");
+                        while (st.hasMoreElements()) {
+                            String s =3D st.nextToken();
+                            int beginIndex =3D s.lastIndexOf(":");
+
+                            String principal =3D s.substring(0, beginIndex=
);
+                            String userName =3D principal.substring(2);
+                            String value =3D null;
+                            try {
+                                if (principal.charAt(0) =3D=3D 'u') {
+                                    JahiaUser user =3D ServicesRegistry
+                                            .getInstance()
+                                            .getJahiaSiteUserManagerServic=
e()
+                                            .getMember(jParams.getSiteID(),
+                                                    userName);
+                                    if (user !=3D null) {
+                                        value =3D "/users/" + user.getUser=
name();
+                                    }
+                                } else {
+                                    JahiaGroup group =3D ServicesRegistry
+                                            .getInstance()
+                                            .getJahiaGroupManagerService()
+                                            .lookupGroup(jParams.getSiteID=
(),
+                                                    userName);
+                                    if (group !=3D null) {
+                                        value =3D "+/groups/"
+                                                + group.getGroupname()
+                                                + "/members";
+                                    }
                                 }
+                            } catch (JahiaException e) {
+                                logger.debug("Cannot get user " + userName=
, e);
                             }
-                        } catch (JahiaException e) {
-                            logger.debug("Cannot get user "+userName ,e);
-                        }
 =

-                        if (value !=3D null) {
-                            f.changePermissions(value, s.substring(beginIn=
dex +1));
+                            if (value !=3D null) {
+                                f.changePermissions(value, s
+                                        .substring(beginIndex + 1));
+                            }
+                        }
+                    }
+                    for (int i =3D 0; i < attributes.getLength(); i++) {
+                        String attUri =3D attributes.getURI(i);
+                        String attName =3D attributes.getLocalName(i);
+                        if (!ImportExportBaseService.JAHIA_URI.equals(attU=
ri)
+                                || (!"path".equals(attName) && !"fileacl"
+                                        .equals(attName))) {
+                            String attValue =3D attributes.getValue(i);
+                            f.setProperty(attUri, attName, attValue);
                         }
                     }
-                }              =

-                for (int i =3D 0; i < attributes.getLength(); i++) {
-                    String attUri =3D attributes.getURI(i);
-                    String attName =3D attributes.getLocalName(i);
-                    if (!ImportExportBaseService.JAHIA_URI.equals(attUri) =
|| (!"path".equals(attName) && !"fileacl".equals(attName))) {
-                        String attValue =3D attributes.getValue(i);
-                        f.setProperty(attUri, attName, attValue);
+                    f.commitTransaction();
+                } finally {
+                    if (f.getTransactionStatus() =3D=3D Status.STATUS_ACTI=
VE) {
+                        f.rollbackTransaction();
                     }
-                }
-                f.commitTransaction();
+                }  =

             }
         }
     }

Modified: trunk/core/src/java/org/jahia/services/importexport/ImportExportB=
aseService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/importexport/ImportExportBaseService.java&rev=3D18206&rep=
name=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/services/importexport/ImportExportBaseSer=
vice.java (original)
+++ trunk/core/src/java/org/jahia/services/importexport/ImportExportBaseSer=
vice.java Fri Aug 17 16:14:36 2007
@@ -96,6 +96,7 @@
 import org.xml.sax.helpers.AttributesImpl;
 import org.xml.sax.helpers.DefaultHandler;
 =

+import javax.transaction.Status;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
@@ -1454,8 +1455,15 @@
                         if (dir !=3D null) {
                             String contentType =3D Jahia.getStaticServletC=
onfig().getServletContext().getMimeType(filename);
                             dir.beginTransaction();
-                            dir.uploadFile(filename, zis, zipentry.getSize=
(), contentType);
-                            dir.commitTransaction();
+                            try {
+                                dir.uploadFile(filename, zis, zipentry
+                                        .getSize(), contentType);
+                                dir.commitTransaction();
+                            } finally {
+                                if (dir.getTransactionStatus() =3D=3D Stat=
us.STATUS_ACTIVE) {
+                                    dir.rollbackTransaction();
+                                }
+                            }                             =

                         }
                     } catch (Exception e) {
                         logger.error("Cannot upload file "+zipentry.getNam=
e() ,e);
@@ -1593,8 +1601,15 @@
                 return null;
             }
             parentDir.beginTransaction();
-            parentDir.createCollection(name.substring(name.lastIndexOf('/'=
) + 1));
-            parentDir.commitTransaction();
+            try {
+                parentDir.createCollection(name
+                        .substring(name.lastIndexOf('/') + 1));
+                parentDir.commitTransaction();
+            } finally {
+                if (dir.getTransactionStatus() =3D=3D Status.STATUS_ACTIVE=
) {
+                    dir.rollbackTransaction();
+                }
+            }                =

             dir =3D JahiaWebdavBaseService.getInstance().getDAVFileAccess(=
jParams, site, jParams.getUser(), name);
             logger.debug("Folder created "+name);
         }
@@ -1614,9 +1629,17 @@
             JahiaFileField jahiaFileField =3D file.getJahiaFileField();
             logger.debug("Add file to " + parentDir.getPath() + " (valid=
=3D" + parentDir.isValid() + ")");
             parentDir.beginTransaction();
-            String res =3D parentDir.uploadFile(path.substring(path.lastIn=
dexOf('/') + 1), file.downloadFile(), jahiaFileField.getSize(), jahiaFileFi=
eld.getType());
-            parentDir.commitTransaction();
-            logger.debug("File added -> "+res);
+            try {
+                String res =3D parentDir.uploadFile(path.substring(path
+                        .lastIndexOf('/') + 1), file.downloadFile(),
+                        jahiaFileField.getSize(), jahiaFileField.getType()=
);
+                parentDir.commitTransaction();
+                logger.debug("File added -> "+res);                =

+            } finally {
+                if (parentDir.getTransactionStatus() =3D=3D Status.STATUS_=
ACTIVE) {
+                    parentDir.rollbackTransaction();
+                }
+            }                =

         }
     }
 =


Modified: trunk/core/src/java/org/jahia/services/webdav/DAVFileAccess.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/webdav/DAVFileAccess.java&rev=3D18206&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/services/webdav/DAVFileAccess.java (origi=
nal)
+++ trunk/core/src/java/org/jahia/services/webdav/DAVFileAccess.java Fri Au=
g 17 16:14:36 2007
@@ -51,6 +51,7 @@
 import org.jahia.exceptions.JahiaException;
 =

 import javax.servlet.http.HttpServletRequest;
+import javax.transaction.Status;
 import javax.jcr.*;
 import javax.jcr.version.VersionHistory;
 import javax.jcr.version.VersionIterator;
@@ -1093,6 +1094,17 @@
         return newFile;
     }
 =

+    public int getTransactionStatus() {
+        try {
+            return session.hasPendingChanges() ? Status.STATUS_ACTIVE : St=
atus.STATUS_UNKNOWN;
+        } catch (Exception e) {
+            // anything to do ?
+            logger.error("Error", e);
+        }
+
+        return Status.STATUS_UNKNOWN;
+    }      =

+    =

     public boolean equals(final Object o) {
         if (this =3D=3D o) return true;
         if (o =3D=3D null || this.getClass() !=3D o.getClass()) return fal=
se;

Modified: trunk/core/src/java/org/jahia/taglibs/form/FormContentMapperHandl=
erTag.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/taglibs/form/FormContentMapperHandlerTag.java&rev=3D18206&repname=
=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/taglibs/form/FormContentMapperHandlerTag.=
java (original)
+++ trunk/core/src/java/org/jahia/taglibs/form/FormContentMapperHandlerTag.=
java Fri Aug 17 16:14:36 2007
@@ -44,6 +44,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.tagext.BodyTagSupport;
+import javax.transaction.Status;
+
 import java.util.Enumeration;
 import java.util.Set;
 import java.util.HashSet;
@@ -291,8 +293,14 @@
                         }
                         if (!uris.isEmpty()) {
                             objectDav.beginTransaction();
-                            objectDav.alignPermsWithField(curField, uris);
-                            objectDav.commitTransaction();
+                            try {
+                                objectDav.alignPermsWithField(curField, ur=
is);
+                                objectDav.commitTransaction();
+                            } finally {
+                                if (objectDav.getTransactionStatus() =3D=
=3D Status.STATUS_ACTIVE) {
+                                    objectDav.rollbackTransaction();
+                                }
+                            }                                =

                         }
 =

                         curField.save(jData.getProcessingContext());

Modified: trunk/core/src/java/org/jahia/taglibs/mediagallery/MediaThumbTag.=
java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/taglibs/mediagallery/MediaThumbTag.java&rev=3D18206&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/taglibs/mediagallery/MediaThumbTag.java (=
original)
+++ trunk/core/src/java/org/jahia/taglibs/mediagallery/MediaThumbTag.java F=
ri Aug 17 16:14:36 2007
@@ -27,6 +27,8 @@
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.tagext.TagSupport;
+import javax.transaction.Status;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -372,16 +374,25 @@
         logger.debug("uploading thumb " + thumbname + " mediatype: " + mty=
pe);
         DAVFileAccess parentdir =3D getParentDir(jParams, source);
         if (parentdir.beginTransaction()) {
-            String resultthumb;
             try {
-                resultthumb =3D parentdir.uploadFile(thumbname + "." + ext=
, new FileInputStream(f), f.length(), mtype);
-                logger.debug("uploaded thumb:" + resultthumb);
-            } catch (FileNotFoundException e) {
-                logger.error("file not found", e);
-                return;
-            }
-            if (resultthumb =3D=3D null) logger.debug("uploading of " + th=
umbname + " had some problems");
-            parentdir.commitTransaction();
+                String resultthumb;
+                try {
+                    resultthumb =3D parentdir.uploadFile(thumbname + "." +=
 ext,
+                            new FileInputStream(f), f.length(), mtype);
+                    logger.debug("uploaded thumb:" + resultthumb);
+                } catch (FileNotFoundException e) {
+                    logger.error("file not found", e);
+                    return;
+                }
+                if (resultthumb =3D=3D null)
+                    logger.debug("uploading of " + thumbname
+                            + " had some problems");
+                parentdir.commitTransaction();
+            } finally {
+                if (parentdir.getTransactionStatus() =3D=3D Status.STATUS_=
ACTIVE) {
+                    parentdir.rollbackTransaction();
+                }
+            }                =

         } else {
             logger.debug("no transaction available");
         }

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to