diff --git a/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java b/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java index 63b0bd26a7..6589d0037a 100644 --- a/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java +++ b/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java @@ -26,11 +26,10 @@ *----------------------------------------------------------------------------*/ package org.alfresco.linkvalidation; -import org.alfresco.util.AbstractLifecycleBean; -import org.springframework.context.ApplicationEvent; -import org.springframework.context.ApplicationContext; -import org.alfresco.service.cmr.avm.AVMNotFoundException; import org.alfresco.repo.avm.util.RawServices; +import org.alfresco.util.AbstractLifecycleBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationEvent; /** * Bootstrap for LinkValidationService @@ -39,10 +38,6 @@ public class LinkValidationServiceBootstrap extends AbstractLifecycleBean { private LinkValidationService linkValidationService_; - - /* (non-Javadoc) - * @see org.alfresco.util.AbstractLifecycleBean#onBootstrap(org.springframework.context.ApplicationEvent) - */ @Override protected void onBootstrap(ApplicationEvent event) { @@ -53,9 +48,6 @@ public class LinkValidationServiceBootstrap extends AbstractLifecycleBean linkValidationService_.onBootstrap(); } - /* (non-Javadoc) - * @see org.alfresco.util.AbstractLifecycleBean#onShutdown(org.springframework.context.ApplicationEvent) - */ @Override protected void onShutdown(ApplicationEvent event) { diff --git a/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformer.java b/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformer.java index a169f18a8e..dfd36ef5ba 100644 --- a/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformer.java +++ b/source/java/org/alfresco/repo/content/transform/OpenOfficeContentTransformer.java @@ -34,6 +34,7 @@ import net.sf.jooreports.converter.DocumentFormatRegistry; import net.sf.jooreports.converter.XmlDocumentFormatRegistry; import net.sf.jooreports.openoffice.connection.OpenOfficeConnection; import net.sf.jooreports.openoffice.connection.OpenOfficeException; +import net.sf.jooreports.openoffice.converter.AbstractOpenOfficeDocumentConverter; import net.sf.jooreports.openoffice.converter.OpenOfficeDocumentConverter; import org.alfresco.error.AlfrescoRuntimeException; @@ -56,7 +57,7 @@ import org.springframework.core.io.DefaultResourceLoader; public class OpenOfficeContentTransformer extends AbstractContentTransformer2 { private OpenOfficeConnection connection; - private OpenOfficeDocumentConverter converter; + private AbstractOpenOfficeDocumentConverter converter; private String documentFormatsConfiguration; private DocumentFormatRegistry formatRegistry; @@ -64,11 +65,27 @@ public class OpenOfficeContentTransformer extends AbstractContentTransformer2 { } + /** + * @param connection the connection that the converter uses + */ public void setConnection(OpenOfficeConnection connection) { this.connection = connection; } - + + /** + * Explicitly set the converter to be used. The converter must use the same connection + * set in {@link #setConnection(OpenOfficeConnection)}. + *

+ * If not set, then the OpenOfficeDocumentConverter will be used. + * + * @param converter the converter to use. + */ + public void setConverter(AbstractOpenOfficeDocumentConverter converter) + { + this.converter = converter; + } + /** * Set a non-default location from which to load the document format mappings. * @@ -110,7 +127,10 @@ public class OpenOfficeContentTransformer extends AbstractContentTransformer2 } // set up the converter - converter = new OpenOfficeDocumentConverter(connection); + if (converter == null) + { + converter = new OpenOfficeDocumentConverter(connection); + } // Register super.register(); diff --git a/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java b/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java index a41bbe7841..12c7a54c1c 100644 --- a/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java +++ b/source/java/org/alfresco/repo/transaction/TransactionServiceImpl.java @@ -28,6 +28,7 @@ import javax.transaction.UserTransaction; import org.alfresco.repo.cache.SimpleCache; import org.alfresco.service.transaction.TransactionService; +import org.alfresco.util.VmShutdownListener; import org.alfresco.util.transaction.SpringAwareUserTransaction; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionDefinition; @@ -41,6 +42,8 @@ import org.springframework.transaction.TransactionDefinition; */ public class TransactionServiceImpl implements TransactionService { + private static VmShutdownListener shutdownListener = new VmShutdownListener("TransactionService"); + private PlatformTransactionManager transactionManager; private int maxRetries = -1; private int minRetryWaitMs = -1; @@ -79,8 +82,20 @@ public class TransactionServiceImpl implements TransactionService public boolean isReadOnly() { - Boolean allowWrite = (Boolean)sysAdminCache.get(KEY_SYSADMIN_ALLOW_WRITE); - return (allowWrite == null ? false : ! allowWrite); + if (shutdownListener.isVmShuttingDown()) + { + return true; + } + try + { + Boolean allowWrite = (Boolean)sysAdminCache.get(KEY_SYSADMIN_ALLOW_WRITE); + return (allowWrite == null ? false : ! allowWrite); + } + catch (IllegalStateException e) + { + // The cache is not working + return true; + } } /**