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