mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Fix AR-1464: Locale is carried into and out of the Content stack.
ApplicationContextHelper now gives out a singleton ApplicationContext and includes a 'closeApplicationContext' method. Pulled all "org.alfresco.repo.content/**Test" classes into a single test suite. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5722 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -33,15 +33,15 @@ import java.nio.channels.FileLock;
|
|||||||
import java.nio.channels.ReadableByteChannel;
|
import java.nio.channels.ReadableByteChannel;
|
||||||
import java.nio.channels.WritableByteChannel;
|
import java.nio.channels.WritableByteChannel;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.alfresco.error.StackTraceUtil;
|
import org.alfresco.error.StackTraceUtil;
|
||||||
|
import org.alfresco.i18n.I18NUtil;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
import org.alfresco.repo.transaction.TransactionUtil;
|
|
||||||
import org.alfresco.service.cmr.repository.ContentAccessor;
|
import org.alfresco.service.cmr.repository.ContentAccessor;
|
||||||
import org.alfresco.service.cmr.repository.ContentData;
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
import org.alfresco.service.cmr.repository.ContentIOException;
|
import org.alfresco.service.cmr.repository.ContentIOException;
|
||||||
import org.alfresco.service.cmr.repository.ContentStreamListener;
|
import org.alfresco.service.cmr.repository.ContentStreamListener;
|
||||||
import org.alfresco.service.transaction.TransactionService;
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.aop.AfterReturningAdvice;
|
import org.springframework.aop.AfterReturningAdvice;
|
||||||
@@ -66,12 +66,12 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
private StackTraceElement[] traceLoggerChannelAssignTrace;
|
private StackTraceElement[] traceLoggerChannelAssignTrace;
|
||||||
|
|
||||||
/** when set, ensures that listeners are executed within a transaction */
|
/** when set, ensures that listeners are executed within a transaction */
|
||||||
// private TransactionService transactionService;
|
|
||||||
private RetryingTransactionHelper transactionHelper;
|
private RetryingTransactionHelper transactionHelper;
|
||||||
|
|
||||||
private String contentUrl;
|
private String contentUrl;
|
||||||
private String mimetype;
|
private String mimetype;
|
||||||
private String encoding;
|
private String encoding;
|
||||||
|
private Locale locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param contentUrl the content URL
|
* @param contentUrl the content URL
|
||||||
@@ -86,6 +86,8 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
|
|
||||||
// the default encoding is Java's default encoding
|
// the default encoding is Java's default encoding
|
||||||
encoding = "UTF-8";
|
encoding = "UTF-8";
|
||||||
|
// the default locale
|
||||||
|
locale = I18NUtil.getLocale();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,36 +117,17 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
.append(", mimetype=").append(getMimetype())
|
.append(", mimetype=").append(getMimetype())
|
||||||
.append(", size=").append(getSize())
|
.append(", size=").append(getSize())
|
||||||
.append(", encoding=").append(getEncoding())
|
.append(", encoding=").append(getEncoding())
|
||||||
|
.append(", locale=").append(getLocale())
|
||||||
.append("]");
|
.append("]");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ContentData getContentData()
|
public ContentData getContentData()
|
||||||
{
|
{
|
||||||
ContentData property = new ContentData(contentUrl, mimetype, getSize(), encoding);
|
ContentData property = new ContentData(contentUrl, mimetype, getSize(), encoding, locale);
|
||||||
return property;
|
return property;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides access to transactions for implementing classes
|
|
||||||
*
|
|
||||||
* @return Returns a source of user transactions
|
|
||||||
*/
|
|
||||||
// protected TransactionService getTransactionService()
|
|
||||||
// {
|
|
||||||
// return transactionService;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the transaction provider to be used by {@link ContentStreamListener listeners}.
|
|
||||||
*
|
|
||||||
* @param transactionService the transaction service to wrap callback code in
|
|
||||||
*/
|
|
||||||
// public void setTransactionService(TransactionService transactionService)
|
|
||||||
// {
|
|
||||||
// this.transactionService = transactionService;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void setRetryingTransactionHelper(RetryingTransactionHelper helper)
|
public void setRetryingTransactionHelper(RetryingTransactionHelper helper)
|
||||||
{
|
{
|
||||||
this.transactionHelper = helper;
|
this.transactionHelper = helper;
|
||||||
@@ -199,6 +182,22 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
this.encoding = encoding;
|
this.encoding = encoding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Returns the content locale or <tt>null</tt> if unkown
|
||||||
|
*/
|
||||||
|
public Locale getLocale()
|
||||||
|
{
|
||||||
|
return locale;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param locale the content's locale, if known.
|
||||||
|
*/
|
||||||
|
public void setLocale(Locale locale)
|
||||||
|
{
|
||||||
|
this.locale = locale;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a callback instance of the {@link FileChannel FileChannel}.
|
* Generate a callback instance of the {@link FileChannel FileChannel}.
|
||||||
*
|
*
|
||||||
@@ -264,18 +263,6 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// TransactionUtil.TransactionWork<Object> work = new TransactionUtil.TransactionWork<Object>()
|
|
||||||
// {
|
|
||||||
// public Object doWork()
|
|
||||||
// {
|
|
||||||
// // call the listeners
|
|
||||||
// for (ContentStreamListener listener : listeners)
|
|
||||||
// {
|
|
||||||
// listener.contentStreamClosed();
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
if (transactionHelper != null)
|
if (transactionHelper != null)
|
||||||
{
|
{
|
||||||
// Execute in transaction.
|
// Execute in transaction.
|
||||||
@@ -372,18 +359,6 @@ public abstract class AbstractContentAccessor implements ContentAccessor
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// TransactionUtil.TransactionWork<Object> work = new TransactionUtil.TransactionWork<Object>()
|
|
||||||
// {
|
|
||||||
// public Object doWork()
|
|
||||||
// {
|
|
||||||
// // call the listeners
|
|
||||||
// for (ContentStreamListener listener : listeners)
|
|
||||||
// {
|
|
||||||
// listener.contentStreamClosed();
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
// We're now doing this inside a Retrying transaction.
|
// We're now doing this inside a Retrying transaction.
|
||||||
// NB
|
// NB
|
||||||
if (transactionHelper != null)
|
if (transactionHelper != null)
|
||||||
|
@@ -35,13 +35,13 @@ import java.nio.ByteBuffer;
|
|||||||
import java.nio.channels.FileChannel;
|
import java.nio.channels.FileChannel;
|
||||||
import java.nio.channels.ReadableByteChannel;
|
import java.nio.channels.ReadableByteChannel;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.transaction.UserTransaction;
|
import javax.transaction.UserTransaction;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.alfresco.repo.transaction.DummyTransactionService;
|
|
||||||
import org.alfresco.service.cmr.repository.ContentIOException;
|
import org.alfresco.service.cmr.repository.ContentIOException;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentStreamListener;
|
import org.alfresco.service.cmr.repository.ContentStreamListener;
|
||||||
@@ -143,12 +143,13 @@ public abstract class AbstractContentReadWriteTest extends TestCase
|
|||||||
readerContentUrl.startsWith(ContentStore.STORE_PROTOCOL));
|
readerContentUrl.startsWith(ContentStore.STORE_PROTOCOL));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testMimetypeAndEncoding() throws Exception
|
public void testMimetypAbdEncodingAndLocale() throws Exception
|
||||||
{
|
{
|
||||||
ContentWriter writer = getWriter();
|
ContentWriter writer = getWriter();
|
||||||
// set mimetype and encoding
|
// set mimetype and encoding
|
||||||
writer.setMimetype("text/plain");
|
writer.setMimetype("text/plain");
|
||||||
writer.setEncoding("UTF-16");
|
writer.setEncoding("UTF-16");
|
||||||
|
writer.setLocale(Locale.CHINESE);
|
||||||
|
|
||||||
// create a UTF-16 string
|
// create a UTF-16 string
|
||||||
String content = "A little bit o' this and a little bit o' that";
|
String content = "A little bit o' this and a little bit o' that";
|
||||||
@@ -163,6 +164,7 @@ public abstract class AbstractContentReadWriteTest extends TestCase
|
|||||||
assertEquals("Writer -> Reader content URL mismatch", writer.getContentUrl(), reader.getContentUrl());
|
assertEquals("Writer -> Reader content URL mismatch", writer.getContentUrl(), reader.getContentUrl());
|
||||||
assertEquals("Writer -> Reader mimetype mismatch", writer.getMimetype(), reader.getMimetype());
|
assertEquals("Writer -> Reader mimetype mismatch", writer.getMimetype(), reader.getMimetype());
|
||||||
assertEquals("Writer -> Reader encoding mismatch", writer.getEncoding(), reader.getEncoding());
|
assertEquals("Writer -> Reader encoding mismatch", writer.getEncoding(), reader.getEncoding());
|
||||||
|
assertEquals("Writer -> Reader locale mismatch", writer.getLocale(), reader.getLocale());
|
||||||
|
|
||||||
// now get the string directly from the reader
|
// now get the string directly from the reader
|
||||||
String contentCheck = reader.getContentString(); // internally it should have taken care of the encoding
|
String contentCheck = reader.getContentString(); // internally it should have taken care of the encoding
|
||||||
@@ -204,6 +206,7 @@ public abstract class AbstractContentReadWriteTest extends TestCase
|
|||||||
long before = System.currentTimeMillis();
|
long before = System.currentTimeMillis();
|
||||||
writer.setMimetype("text/plain");
|
writer.setMimetype("text/plain");
|
||||||
writer.setEncoding("UTF-8");
|
writer.setEncoding("UTF-8");
|
||||||
|
writer.setLocale(Locale.CHINESE);
|
||||||
writer.putContent(content);
|
writer.putContent(content);
|
||||||
long after = System.currentTimeMillis();
|
long after = System.currentTimeMillis();
|
||||||
|
|
||||||
@@ -212,12 +215,14 @@ public abstract class AbstractContentReadWriteTest extends TestCase
|
|||||||
assertEquals("URL incorrect", writer.getContentUrl(), readerFromWriter.getContentUrl());
|
assertEquals("URL incorrect", writer.getContentUrl(), readerFromWriter.getContentUrl());
|
||||||
assertEquals("Mimetype incorrect", writer.getMimetype(), readerFromWriter.getMimetype());
|
assertEquals("Mimetype incorrect", writer.getMimetype(), readerFromWriter.getMimetype());
|
||||||
assertEquals("Encoding incorrect", writer.getEncoding(), readerFromWriter.getEncoding());
|
assertEquals("Encoding incorrect", writer.getEncoding(), readerFromWriter.getEncoding());
|
||||||
|
assertEquals("Locale incorrect", writer.getLocale(), readerFromWriter.getLocale());
|
||||||
|
|
||||||
// get another reader from the reader
|
// get another reader from the reader
|
||||||
ContentReader readerFromReader = readerFromWriter.getReader();
|
ContentReader readerFromReader = readerFromWriter.getReader();
|
||||||
assertEquals("URL incorrect", writer.getContentUrl(), readerFromReader.getContentUrl());
|
assertEquals("URL incorrect", writer.getContentUrl(), readerFromReader.getContentUrl());
|
||||||
assertEquals("Mimetype incorrect", writer.getMimetype(), readerFromReader.getMimetype());
|
assertEquals("Mimetype incorrect", writer.getMimetype(), readerFromReader.getMimetype());
|
||||||
assertEquals("Encoding incorrect", writer.getEncoding(), readerFromReader.getEncoding());
|
assertEquals("Encoding incorrect", writer.getEncoding(), readerFromReader.getEncoding());
|
||||||
|
assertEquals("Locale incorrect", writer.getLocale(), readerFromReader.getLocale());
|
||||||
|
|
||||||
// check the content
|
// check the content
|
||||||
String contentCheck = readerFromWriter.getContentString();
|
String contentCheck = readerFromWriter.getContentString();
|
||||||
|
@@ -124,6 +124,7 @@ public abstract class AbstractContentReader extends AbstractContentAccessor impl
|
|||||||
// copy across common attributes
|
// copy across common attributes
|
||||||
reader.setMimetype(this.getMimetype());
|
reader.setMimetype(this.getMimetype());
|
||||||
reader.setEncoding(this.getEncoding());
|
reader.setEncoding(this.getEncoding());
|
||||||
|
reader.setLocale(this.getLocale());
|
||||||
// done
|
// done
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
|
@@ -139,6 +139,7 @@ public abstract class AbstractContentWriter extends AbstractContentAccessor impl
|
|||||||
// copy across common attributes
|
// copy across common attributes
|
||||||
reader.setMimetype(this.getMimetype());
|
reader.setMimetype(this.getMimetype());
|
||||||
reader.setEncoding(this.getEncoding());
|
reader.setEncoding(this.getEncoding());
|
||||||
|
reader.setLocale(this.getLocale());
|
||||||
// done
|
// done
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
|
@@ -22,13 +22,14 @@
|
|||||||
* the FLOSS exception, and it is also available here:
|
* the FLOSS exception, and it is also available here:
|
||||||
* http://www.alfresco.com/legal/licensing"
|
* http://www.alfresco.com/legal/licensing"
|
||||||
*/
|
*/
|
||||||
package org.alfresco.service.cmr.repository;
|
package org.alfresco.repo.content;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.alfresco.i18n.I18NUtil;
|
import org.alfresco.i18n.I18NUtil;
|
||||||
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||||
|
|
||||||
/**
|
/**
|
91
source/java/org/alfresco/repo/content/ContentTestSuite.java
Normal file
91
source/java/org/alfresco/repo/content/ContentTestSuite.java
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
* As a special exception to the terms and conditions of version 2.0 of
|
||||||
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||||
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||||
|
* FLOSS exception. You should have recieved a copy of the text describing
|
||||||
|
* the FLOSS exception, and it is also available here:
|
||||||
|
* http://www.alfresco.com/legal/licensing"
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.content;
|
||||||
|
|
||||||
|
import org.alfresco.repo.content.cleanup.ContentStoreCleanerTest;
|
||||||
|
import org.alfresco.repo.content.filestore.FileContentStoreTest;
|
||||||
|
import org.alfresco.repo.content.filestore.NoRandomAccessFileContentStoreTest;
|
||||||
|
import org.alfresco.repo.content.metadata.HtmlMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.metadata.MappingMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.metadata.OfficeMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.metadata.OpenDocumentMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.metadata.OpenOfficeMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.metadata.PdfBoxMetadataExtracterTest;
|
||||||
|
import org.alfresco.repo.content.replication.ContentStoreReplicatorTest;
|
||||||
|
import org.alfresco.repo.content.replication.ReplicatingContentStoreTest;
|
||||||
|
import org.alfresco.repo.content.transform.BinaryPassThroughContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.ComplexContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.ContentTransformerRegistryTest;
|
||||||
|
import org.alfresco.repo.content.transform.HtmlParserContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.OpenOfficeContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.PdfBoxContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.PoiHssfContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.StringExtractingContentTransformerTest;
|
||||||
|
import org.alfresco.repo.content.transform.TextMiningContentTransformerTest;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Suite for content-related tests.
|
||||||
|
*
|
||||||
|
* @author Derek Hulley
|
||||||
|
*/
|
||||||
|
public class ContentTestSuite extends TestSuite
|
||||||
|
{
|
||||||
|
public static Test suite()
|
||||||
|
{
|
||||||
|
TestSuite suite = new TestSuite();
|
||||||
|
|
||||||
|
suite.addTestSuite(ContentStoreCleanerTest.class);
|
||||||
|
suite.addTestSuite(ContentStoreCleanerTest.class);
|
||||||
|
suite.addTestSuite(FileContentStoreTest.class);
|
||||||
|
suite.addTestSuite(NoRandomAccessFileContentStoreTest.class);
|
||||||
|
suite.addTestSuite(MappingMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(HtmlMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(OfficeMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(OpenDocumentMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(OpenOfficeMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(PdfBoxMetadataExtracterTest.class);
|
||||||
|
suite.addTestSuite(ContentStoreReplicatorTest.class);
|
||||||
|
suite.addTestSuite(ReplicatingContentStoreTest.class);
|
||||||
|
suite.addTestSuite(BinaryPassThroughContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(ComplexContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(ContentTransformerRegistryTest.class);
|
||||||
|
suite.addTestSuite(HtmlParserContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(OpenOfficeContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(PdfBoxContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(PoiHssfContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(RuntimeExecutableContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(StringExtractingContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(TextMiningContentTransformerTest.class);
|
||||||
|
suite.addTestSuite(ContentDataTest.class);
|
||||||
|
suite.addTestSuite(MimetypeMapTest.class);
|
||||||
|
suite.addTestSuite(RoutingContentServiceTest.class);
|
||||||
|
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
}
|
@@ -26,26 +26,35 @@ package org.alfresco.repo.content;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.util.BaseSpringTest;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.alfresco.service.ServiceRegistry;
|
||||||
|
import org.alfresco.service.cmr.repository.MimetypeService;
|
||||||
|
import org.alfresco.util.ApplicationContextHelper;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.MimetypeMap
|
* @see org.alfresco.repo.content.MimetypeMap
|
||||||
*
|
*
|
||||||
* @author Derek Hulley
|
* @author Derek Hulley
|
||||||
*/
|
*/
|
||||||
public class MimetypeMapTest extends BaseSpringTest
|
public class MimetypeMapTest extends TestCase
|
||||||
{
|
{
|
||||||
private MimetypeMap mimetypeMap;
|
private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
|
||||||
|
|
||||||
public void setMimetypeMap(MimetypeMap mimetypeMap)
|
private MimetypeService mimetypeService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
this.mimetypeMap = mimetypeMap;
|
ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
|
||||||
|
mimetypeService = serviceRegistry.getMimetypeService();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExtensions() throws Exception
|
public void testExtensions() throws Exception
|
||||||
{
|
{
|
||||||
Map<String, String> extensionsByMimetype = mimetypeMap.getExtensionsByMimetype();
|
Map<String, String> extensionsByMimetype = mimetypeService.getExtensionsByMimetype();
|
||||||
Map<String, String> mimetypesByExtension = mimetypeMap.getMimetypesByExtension();
|
Map<String, String> mimetypesByExtension = mimetypeService.getMimetypesByExtension();
|
||||||
|
|
||||||
// plain text
|
// plain text
|
||||||
assertEquals("txt", extensionsByMimetype.get("text/plain"));
|
assertEquals("txt", extensionsByMimetype.get("text/plain"));
|
||||||
|
@@ -319,6 +319,7 @@ public class RoutingContentService implements ContentService
|
|||||||
// set extra data on the reader
|
// set extra data on the reader
|
||||||
reader.setMimetype(contentData.getMimetype());
|
reader.setMimetype(contentData.getMimetype());
|
||||||
reader.setEncoding(contentData.getEncoding());
|
reader.setEncoding(contentData.getEncoding());
|
||||||
|
reader.setLocale(contentData.getLocale());
|
||||||
|
|
||||||
// Fire the content read policy
|
// Fire the content read policy
|
||||||
if (reader != null && fireContentReadPolicy == true)
|
if (reader != null && fireContentReadPolicy == true)
|
||||||
@@ -372,6 +373,7 @@ public class RoutingContentService implements ContentService
|
|||||||
ContentData contentData = (ContentData)contentValue;
|
ContentData contentData = (ContentData)contentValue;
|
||||||
writer.setMimetype(contentData.getMimetype());
|
writer.setMimetype(contentData.getMimetype());
|
||||||
writer.setEncoding(contentData.getEncoding());
|
writer.setEncoding(contentData.getEncoding());
|
||||||
|
writer.setLocale(contentData.getLocale());
|
||||||
}
|
}
|
||||||
|
|
||||||
// attach a listener if required
|
// attach a listener if required
|
||||||
|
@@ -27,6 +27,7 @@ package org.alfresco.repo.content;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import javax.transaction.RollbackException;
|
import javax.transaction.RollbackException;
|
||||||
import javax.transaction.UserTransaction;
|
import javax.transaction.UserTransaction;
|
||||||
@@ -107,7 +108,7 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
}
|
}
|
||||||
rootNodeRef = nodeService.getRootNode(storeRef);
|
rootNodeRef = nodeService.getRootNode(storeRef);
|
||||||
// create a content node
|
// create a content node
|
||||||
ContentData contentData = new ContentData(null, "text/plain", 0L, "UTF-16");
|
ContentData contentData = new ContentData(null, "text/plain", 0L, "UTF-16", Locale.CHINESE);
|
||||||
|
|
||||||
PropertyMap properties = new PropertyMap();
|
PropertyMap properties = new PropertyMap();
|
||||||
properties.put(ContentModel.PROP_CONTENT, contentData);
|
properties.put(ContentModel.PROP_CONTENT, contentData);
|
||||||
@@ -173,7 +174,8 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
// write some content
|
// write some content
|
||||||
writer.putContent(SOME_CONTENT);
|
writer.putContent(SOME_CONTENT);
|
||||||
writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
|
writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
|
||||||
writer.setEncoding("UTF8");
|
writer.setEncoding("UTF-16");
|
||||||
|
writer.setLocale(Locale.CHINESE);
|
||||||
|
|
||||||
// set the content property manually
|
// set the content property manually
|
||||||
nodeService.setProperty(contentNodeRef, ContentModel.PROP_CONTENT, writer.getContentData());
|
nodeService.setProperty(contentNodeRef, ContentModel.PROP_CONTENT, writer.getContentData());
|
||||||
@@ -182,6 +184,8 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
ContentReader reader = contentService.getReader(contentNodeRef, ContentModel.PROP_CONTENT);
|
ContentReader reader = contentService.getReader(contentNodeRef, ContentModel.PROP_CONTENT);
|
||||||
assertNotNull("Reader should not be null", reader);
|
assertNotNull("Reader should not be null", reader);
|
||||||
assertNotNull("Content URL should not be null", reader.getContentUrl());
|
assertNotNull("Content URL should not be null", reader.getContentUrl());
|
||||||
|
assertEquals("Content Encoding was not set", "UTF-16", reader.getEncoding());
|
||||||
|
assertEquals("Content Locale was not set", Locale.CHINESE, reader.getLocale());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -196,6 +200,7 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
assertNotNull("Content URL should not be null", writer.getContentUrl());
|
assertNotNull("Content URL should not be null", writer.getContentUrl());
|
||||||
assertNotNull("Content mimetype should not be null", writer.getMimetype());
|
assertNotNull("Content mimetype should not be null", writer.getMimetype());
|
||||||
assertNotNull("Content encoding should not be null", writer.getEncoding());
|
assertNotNull("Content encoding should not be null", writer.getEncoding());
|
||||||
|
assertNotNull("Content locale should not be null", writer.getLocale());
|
||||||
|
|
||||||
// write some content
|
// write some content
|
||||||
writer.putContent(SOME_CONTENT);
|
writer.putContent(SOME_CONTENT);
|
||||||
@@ -206,6 +211,7 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
assertNotNull("Content URL should not be null", reader.getContentUrl());
|
assertNotNull("Content URL should not be null", reader.getContentUrl());
|
||||||
assertNotNull("Content mimetype should not be null", reader.getMimetype());
|
assertNotNull("Content mimetype should not be null", reader.getMimetype());
|
||||||
assertNotNull("Content encoding should not be null", reader.getEncoding());
|
assertNotNull("Content encoding should not be null", reader.getEncoding());
|
||||||
|
assertNotNull("Content locale should not be null", reader.getLocale());
|
||||||
|
|
||||||
// check that the content length is correct
|
// check that the content length is correct
|
||||||
// - note encoding is important as we get the byte length
|
// - note encoding is important as we get the byte length
|
||||||
@@ -223,8 +229,9 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
// previously, the node was populated with the mimetype, etc
|
// previously, the node was populated with the mimetype, etc
|
||||||
// check that the write has these
|
// check that the write has these
|
||||||
ContentWriter writer = contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true);
|
ContentWriter writer = contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true);
|
||||||
assertNotNull(writer.getMimetype());
|
assertEquals(MimetypeMap.MIMETYPE_TEXT_PLAIN, writer.getMimetype());
|
||||||
assertNotNull(writer.getEncoding());
|
assertEquals("UTF-16", writer.getEncoding());
|
||||||
|
assertEquals(Locale.CHINESE, writer.getLocale());
|
||||||
|
|
||||||
// now remove the content property from the node
|
// now remove the content property from the node
|
||||||
nodeService.setProperty(contentNodeRef, ContentModel.PROP_CONTENT, null);
|
nodeService.setProperty(contentNodeRef, ContentModel.PROP_CONTENT, null);
|
||||||
@@ -232,10 +239,12 @@ public class RoutingContentServiceTest extends TestCase
|
|||||||
writer = contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true);
|
writer = contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true);
|
||||||
assertNull(writer.getMimetype());
|
assertNull(writer.getMimetype());
|
||||||
assertEquals("UTF-8", writer.getEncoding());
|
assertEquals("UTF-8", writer.getEncoding());
|
||||||
|
assertEquals(Locale.getDefault(), writer.getLocale());
|
||||||
|
|
||||||
// now set it on the writer
|
// now set it on the writer
|
||||||
writer.setMimetype("text/plain");
|
writer.setMimetype("text/plain");
|
||||||
writer.setEncoding("UTF-8");
|
writer.setEncoding("UTF-16");
|
||||||
|
writer.setLocale(Locale.FRENCH);
|
||||||
|
|
||||||
String content = "The quick brown fox ...";
|
String content = "The quick brown fox ...";
|
||||||
writer.putContent(content);
|
writer.putContent(content);
|
||||||
|
@@ -46,7 +46,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
*
|
*
|
||||||
* @author Derek Hulley
|
* @author Derek Hulley
|
||||||
*/
|
*/
|
||||||
public class AbstractMappingMetadataExtracterTest extends TestCase
|
public class MappingMetadataExtracterTest extends TestCase
|
||||||
{
|
{
|
||||||
private DummyMappingMetadataExtracter extracter;
|
private DummyMappingMetadataExtracter extracter;
|
||||||
private ContentReader reader;
|
private ContentReader reader;
|
@@ -32,13 +32,20 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.repo.content.filestore.FileContentReader;
|
import org.alfresco.repo.content.filestore.FileContentReader;
|
||||||
import org.alfresco.repo.content.filestore.FileContentWriter;
|
import org.alfresco.repo.content.filestore.FileContentWriter;
|
||||||
|
import org.alfresco.service.ServiceRegistry;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||||
import org.alfresco.util.BaseSpringTest;
|
import org.alfresco.service.cmr.repository.MimetypeService;
|
||||||
|
import org.alfresco.util.ApplicationContextHelper;
|
||||||
import org.alfresco.util.TempFileProvider;
|
import org.alfresco.util.TempFileProvider;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a base set of tests for testing
|
* Provides a base set of tests for testing
|
||||||
@@ -47,18 +54,18 @@ import org.alfresco.util.TempFileProvider;
|
|||||||
*
|
*
|
||||||
* @author Derek Hulley
|
* @author Derek Hulley
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractContentTransformerTest extends BaseSpringTest
|
public abstract class AbstractContentTransformerTest extends TestCase
|
||||||
{
|
{
|
||||||
private static String QUICK_CONTENT = "The quick brown fox jumps over the lazy dog";
|
private static String QUICK_CONTENT = "The quick brown fox jumps over the lazy dog";
|
||||||
private static String[] QUICK_WORDS = new String[] {
|
private static String[] QUICK_WORDS = new String[] {
|
||||||
"quick", "brown", "fox", "jumps", "lazy", "dog"};
|
"quick", "brown", "fox", "jumps", "lazy", "dog"};
|
||||||
|
|
||||||
protected MimetypeMap mimetypeMap;
|
private static Log logger = LogFactory.getLog(AbstractContentTransformerTest.class);
|
||||||
|
|
||||||
public final void setMimetypeMap(MimetypeMap mimetypeMap)
|
protected static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
|
||||||
{
|
|
||||||
this.mimetypeMap = mimetypeMap;
|
protected ServiceRegistry serviceRegistry;
|
||||||
}
|
protected MimetypeService mimetypeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches a transformer to test for a given transformation. The transformer
|
* Fetches a transformer to test for a given transformation. The transformer
|
||||||
@@ -77,8 +84,10 @@ public abstract class AbstractContentTransformerTest extends BaseSpringTest
|
|||||||
* Ensures that the temp locations are cleaned out before the tests start
|
* Ensures that the temp locations are cleaned out before the tests start
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void onSetUpInTransaction() throws Exception
|
protected void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
|
||||||
|
mimetypeService = serviceRegistry.getMimetypeService();
|
||||||
// perform a little cleaning up
|
// perform a little cleaning up
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
TempFileProvider.TempFileCleanerJob.removeFiles(now);
|
TempFileProvider.TempFileCleanerJob.removeFiles(now);
|
||||||
@@ -89,7 +98,7 @@ public abstract class AbstractContentTransformerTest extends BaseSpringTest
|
|||||||
*/
|
*/
|
||||||
public void testSetUp() throws Exception
|
public void testSetUp() throws Exception
|
||||||
{
|
{
|
||||||
assertNotNull("MimetypeMap not present", mimetypeMap);
|
assertNotNull("MimetypeMap not present", mimetypeService);
|
||||||
// check that the quick resources are available
|
// check that the quick resources are available
|
||||||
File sourceFile = AbstractContentTransformerTest.loadQuickTestFile("txt");
|
File sourceFile = AbstractContentTransformerTest.loadQuickTestFile("txt");
|
||||||
assertNotNull(sourceFile);
|
assertNotNull(sourceFile);
|
||||||
@@ -144,11 +153,11 @@ public abstract class AbstractContentTransformerTest extends BaseSpringTest
|
|||||||
.append("\n");
|
.append("\n");
|
||||||
|
|
||||||
// get all mimetypes
|
// get all mimetypes
|
||||||
Set<String> mimetypes = new TreeSet<String>(mimetypeMap.getMimetypes());
|
Set<String> mimetypes = new TreeSet<String>(mimetypeService.getMimetypes());
|
||||||
for (String sourceMimetype : mimetypes)
|
for (String sourceMimetype : mimetypes)
|
||||||
{
|
{
|
||||||
// attempt to get a source file for each mimetype
|
// attempt to get a source file for each mimetype
|
||||||
String sourceExtension = mimetypeMap.getExtension(sourceMimetype);
|
String sourceExtension = mimetypeService.getExtension(sourceMimetype);
|
||||||
|
|
||||||
sb.append(" Source Extension: ").append(sourceExtension).append("\n");
|
sb.append(" Source Extension: ").append(sourceExtension).append("\n");
|
||||||
|
|
||||||
@@ -157,7 +166,7 @@ public abstract class AbstractContentTransformerTest extends BaseSpringTest
|
|||||||
{
|
{
|
||||||
ContentWriter targetWriter = null;
|
ContentWriter targetWriter = null;
|
||||||
// construct a reader onto the source file
|
// construct a reader onto the source file
|
||||||
String targetExtension = mimetypeMap.getExtension(targetMimetype);
|
String targetExtension = mimetypeService.getExtension(targetMimetype);
|
||||||
|
|
||||||
// must we test the transformation?
|
// must we test the transformation?
|
||||||
ContentTransformer transformer = getTransformer(sourceMimetype, targetMimetype);
|
ContentTransformer transformer = getTransformer(sourceMimetype, targetMimetype);
|
||||||
|
@@ -25,8 +25,6 @@
|
|||||||
package org.alfresco.repo.content.transform;
|
package org.alfresco.repo.content.transform;
|
||||||
|
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.transform.BinaryPassThroughContentTransformer
|
* @see org.alfresco.repo.content.transform.BinaryPassThroughContentTransformer
|
||||||
@@ -35,12 +33,13 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class BinaryPassThroughContentTransformerTest extends AbstractContentTransformerTest
|
public class BinaryPassThroughContentTransformerTest extends AbstractContentTransformerTest
|
||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(BinaryPassThroughContentTransformerTest.class);
|
|
||||||
|
|
||||||
private ContentTransformer transformer;
|
private ContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new BinaryPassThroughContentTransformer();
|
transformer = new BinaryPassThroughContentTransformer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -42,10 +42,13 @@ public class ComplexContentTransformerTest extends AbstractContentTransformerTes
|
|||||||
private ComplexContentTransformer transformer;
|
private ComplexContentTransformer transformer;
|
||||||
private boolean isAvailable;
|
private boolean isAvailable;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
ContentTransformer unoTransformer = (ContentTransformer) applicationContext.getBean("transformer.OpenOffice");
|
super.setUp();
|
||||||
ContentTransformer pdfBoxTransformer = (ContentTransformer) applicationContext.getBean("transformer.PdfBox");
|
|
||||||
|
ContentTransformer unoTransformer = (ContentTransformer) ctx.getBean("transformer.OpenOffice");
|
||||||
|
ContentTransformer pdfBoxTransformer = (ContentTransformer) ctx.getBean("transformer.PdfBox");
|
||||||
// make sure that they are working for this test
|
// make sure that they are working for this test
|
||||||
if (unoTransformer.getReliability(MimetypeMap.MIMETYPE_PPT, MimetypeMap.MIMETYPE_PDF) == 0.0)
|
if (unoTransformer.getReliability(MimetypeMap.MIMETYPE_PPT, MimetypeMap.MIMETYPE_PDF) == 0.0)
|
||||||
{
|
{
|
||||||
@@ -63,7 +66,7 @@ public class ComplexContentTransformerTest extends AbstractContentTransformerTes
|
|||||||
}
|
}
|
||||||
|
|
||||||
transformer = new ComplexContentTransformer();
|
transformer = new ComplexContentTransformer();
|
||||||
transformer.setMimetypeService(mimetypeMap);
|
transformer.setMimetypeService(mimetypeService);
|
||||||
// set the transformer list
|
// set the transformer list
|
||||||
List<ContentTransformer> transformers = new ArrayList<ContentTransformer>(2);
|
List<ContentTransformer> transformers = new ArrayList<ContentTransformer>(2);
|
||||||
transformers.add(unoTransformer);
|
transformers.add(unoTransformer);
|
||||||
|
@@ -55,17 +55,13 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
|
|||||||
private ContentReader reader;
|
private ContentReader reader;
|
||||||
private ContentWriter writer;
|
private ContentWriter writer;
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows dependency injection
|
|
||||||
*/
|
|
||||||
public void setContentTransformerRegistry(ContentTransformerRegistry registry)
|
|
||||||
{
|
|
||||||
this.registry = registry;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSetUpInTransaction() throws Exception
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
registry = (ContentTransformerRegistry) ctx.getBean("contentTransformerRegistry");
|
||||||
|
|
||||||
reader = new FileContentReader(TempFileProvider.createTempFile(getName(), ".txt"));
|
reader = new FileContentReader(TempFileProvider.createTempFile(getName(), ".txt"));
|
||||||
reader.setMimetype(A);
|
reader.setMimetype(A);
|
||||||
writer = new FileContentWriter(TempFileProvider.createTempFile(getName(), ".txt"));
|
writer = new FileContentWriter(TempFileProvider.createTempFile(getName(), ".txt"));
|
||||||
@@ -79,17 +75,17 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
|
|||||||
// create the dummyRegistry
|
// create the dummyRegistry
|
||||||
dummyRegistry = new ContentTransformerRegistry();
|
dummyRegistry = new ContentTransformerRegistry();
|
||||||
// create some dummy transformers for reliability tests
|
// create some dummy transformers for reliability tests
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, B, 0.3, 10L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, B, 0.3, 10L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, B, 0.6, 10L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, B, 0.6, 10L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, C, 0.5, 10L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, C, 0.5, 10L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, C, 1.0, 10L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, C, 1.0, 10L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, B, C, 0.2, 10L);
|
new DummyTransformer(mimetypeService, dummyRegistry, B, C, 0.2, 10L);
|
||||||
// create some dummy transformers for speed tests
|
// create some dummy transformers for speed tests
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, D, 1.0, 20L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, D, 1.0, 20L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 10L); // the fast one
|
new DummyTransformer(mimetypeService, dummyRegistry, A, D, 1.0, 10L); // the fast one
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, D, 1.0, 20L);
|
||||||
new DummyTransformer(mimetypeMap, dummyRegistry, A, D, 1.0, 20L);
|
new DummyTransformer(mimetypeService, dummyRegistry, A, D, 1.0, 20L);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -167,7 +163,7 @@ public class ContentTransformerRegistryTest extends AbstractContentTransformerTe
|
|||||||
public void testExplicitTransformation()
|
public void testExplicitTransformation()
|
||||||
{
|
{
|
||||||
AbstractContentTransformer dummyTransformer = new DummyTransformer(
|
AbstractContentTransformer dummyTransformer = new DummyTransformer(
|
||||||
mimetypeMap,
|
mimetypeService,
|
||||||
dummyRegistry,
|
dummyRegistry,
|
||||||
MimetypeMap.MIMETYPE_FLASH, MimetypeMap.MIMETYPE_EXCEL,
|
MimetypeMap.MIMETYPE_FLASH, MimetypeMap.MIMETYPE_EXCEL,
|
||||||
1.0, 12345);
|
1.0, 12345);
|
||||||
|
@@ -36,8 +36,9 @@ public class HtmlParserContentTransformerTest extends AbstractContentTransformer
|
|||||||
private ContentTransformer transformer;
|
private ContentTransformer transformer;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSetUpInTransaction() throws Exception
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
transformer = new HtmlParserContentTransformer();
|
transformer = new HtmlParserContentTransformer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -46,12 +46,15 @@ public class OpenOfficeContentTransformerTest extends AbstractContentTransformer
|
|||||||
|
|
||||||
private OpenOfficeContentTransformer transformer;
|
private OpenOfficeContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
OpenOfficeConnection connection = (OpenOfficeConnection) applicationContext.getBean("openOfficeConnection");
|
super.setUp();
|
||||||
|
|
||||||
|
OpenOfficeConnection connection = (OpenOfficeConnection) ctx.getBean("openOfficeConnection");
|
||||||
|
|
||||||
transformer = new OpenOfficeContentTransformer();
|
transformer = new OpenOfficeContentTransformer();
|
||||||
transformer.setMimetypeService(mimetypeMap);
|
transformer.setMimetypeService(mimetypeService);
|
||||||
transformer.setConnection(connection);
|
transformer.setConnection(connection);
|
||||||
transformer.setDocumentFormatsConfiguration("classpath:alfresco/mimetype/openoffice-document-formats.xml");
|
transformer.setDocumentFormatsConfiguration("classpath:alfresco/mimetype/openoffice-document-formats.xml");
|
||||||
transformer.register();
|
transformer.register();
|
||||||
@@ -68,7 +71,7 @@ public class OpenOfficeContentTransformerTest extends AbstractContentTransformer
|
|||||||
public void testSetUp() throws Exception
|
public void testSetUp() throws Exception
|
||||||
{
|
{
|
||||||
super.testSetUp();
|
super.testSetUp();
|
||||||
assertNotNull(mimetypeMap);
|
assertNotNull(mimetypeService);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testReliability() throws Exception
|
public void testReliability() throws Exception
|
||||||
|
@@ -25,8 +25,6 @@
|
|||||||
package org.alfresco.repo.content.transform;
|
package org.alfresco.repo.content.transform;
|
||||||
|
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.transform.PdfBoxContentTransformer
|
* @see org.alfresco.repo.content.transform.PdfBoxContentTransformer
|
||||||
@@ -35,12 +33,13 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class PdfBoxContentTransformerTest extends AbstractContentTransformerTest
|
public class PdfBoxContentTransformerTest extends AbstractContentTransformerTest
|
||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(PdfBoxContentTransformerTest.class);
|
|
||||||
|
|
||||||
private ContentTransformer transformer;
|
private ContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new PdfBoxContentTransformer();
|
transformer = new PdfBoxContentTransformer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,8 +31,6 @@ import org.alfresco.repo.content.MimetypeMap;
|
|||||||
import org.alfresco.repo.content.filestore.FileContentWriter;
|
import org.alfresco.repo.content.filestore.FileContentWriter;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.util.TempFileProvider;
|
import org.alfresco.util.TempFileProvider;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.transform.PoiHssfContentTransformer
|
* @see org.alfresco.repo.content.transform.PoiHssfContentTransformer
|
||||||
@@ -41,12 +39,13 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class PoiHssfContentTransformerTest extends AbstractContentTransformerTest
|
public class PoiHssfContentTransformerTest extends AbstractContentTransformerTest
|
||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(PoiHssfContentTransformerTest.class);
|
|
||||||
|
|
||||||
private ContentTransformer transformer;
|
private ContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new PoiHssfContentTransformer();
|
transformer = new PoiHssfContentTransformer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -66,8 +66,10 @@ public class StringExtractingContentTransformerTest extends AbstractContentTrans
|
|||||||
private ContentWriter targetWriter;
|
private ContentWriter targetWriter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSetUpInTransaction() throws Exception
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new StringExtractingContentTransformer();
|
transformer = new StringExtractingContentTransformer();
|
||||||
targetWriter = new FileContentWriter(getTempFile());
|
targetWriter = new FileContentWriter(getTempFile());
|
||||||
targetWriter.setMimetype("text/plain");
|
targetWriter.setMimetype("text/plain");
|
||||||
|
@@ -31,8 +31,6 @@ import org.alfresco.repo.content.MimetypeMap;
|
|||||||
import org.alfresco.repo.content.filestore.FileContentWriter;
|
import org.alfresco.repo.content.filestore.FileContentWriter;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.util.TempFileProvider;
|
import org.alfresco.util.TempFileProvider;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.transform.TextMiningContentTransformer
|
* @see org.alfresco.repo.content.transform.TextMiningContentTransformer
|
||||||
@@ -41,12 +39,13 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class TextMiningContentTransformerTest extends AbstractContentTransformerTest
|
public class TextMiningContentTransformerTest extends AbstractContentTransformerTest
|
||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(TextMiningContentTransformerTest.class);
|
|
||||||
|
|
||||||
private ContentTransformer transformer;
|
private ContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new TextMiningContentTransformer();
|
transformer = new TextMiningContentTransformer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -40,14 +40,17 @@ public class ImageMagickContentTransformerTest extends AbstractContentTransforme
|
|||||||
{
|
{
|
||||||
private ImageMagickContentTransformer transformer;
|
private ImageMagickContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
RuntimeExec executer = new RuntimeExec();
|
RuntimeExec executer = new RuntimeExec();
|
||||||
executer.setCommand("imconvert.exe ${source} ${options} ${target}");
|
executer.setCommand("imconvert.exe ${source} ${options} ${target}");
|
||||||
executer.setDefaultProperties(Collections.singletonMap("options", ""));
|
executer.setDefaultProperties(Collections.singletonMap("options", ""));
|
||||||
|
|
||||||
transformer = new ImageMagickContentTransformer();
|
transformer = new ImageMagickContentTransformer();
|
||||||
transformer.setMimetypeService(mimetypeMap);
|
transformer.setMimetypeService(mimetypeService);
|
||||||
transformer.setExecuter(executer);
|
transformer.setExecuter(executer);
|
||||||
transformer.init();
|
transformer.init();
|
||||||
}
|
}
|
||||||
|
@@ -27,8 +27,6 @@ package org.alfresco.repo.content.transform.magick;
|
|||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
||||||
import org.alfresco.repo.content.transform.ContentTransformer;
|
import org.alfresco.repo.content.transform.ContentTransformer;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.repo.content.transform.magick.JMagickContentTransformer
|
* @see org.alfresco.repo.content.transform.magick.JMagickContentTransformer
|
||||||
@@ -37,14 +35,15 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
*/
|
*/
|
||||||
public class JMagickContentTransformerTest extends AbstractContentTransformerTest
|
public class JMagickContentTransformerTest extends AbstractContentTransformerTest
|
||||||
{
|
{
|
||||||
private static final Log logger = LogFactory.getLog(JMagickContentTransformerTest.class);
|
|
||||||
|
|
||||||
private JMagickContentTransformer transformer;
|
private JMagickContentTransformer transformer;
|
||||||
|
|
||||||
public void onSetUpInTransaction() throws Exception
|
@Override
|
||||||
|
public void setUp() throws Exception
|
||||||
{
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
transformer = new JMagickContentTransformer();
|
transformer = new JMagickContentTransformer();
|
||||||
transformer.setMimetypeService(mimetypeMap);
|
transformer.setMimetypeService(mimetypeService);
|
||||||
transformer.init();
|
transformer.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,6 +24,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.alfresco.service.cmr.repository;
|
package org.alfresco.service.cmr.repository;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
import org.alfresco.service.transaction.TransactionService;
|
import org.alfresco.service.transaction.TransactionService;
|
||||||
|
|
||||||
@@ -120,4 +122,18 @@ public interface ContentAccessor
|
|||||||
* @param encoding a java-recognised encoding format
|
* @param encoding a java-recognised encoding format
|
||||||
*/
|
*/
|
||||||
public void setEncoding(String encoding);
|
public void setEncoding(String encoding);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the locale of the content being accessed
|
||||||
|
*
|
||||||
|
* @return Returns a valid java Locale
|
||||||
|
*/
|
||||||
|
public Locale getLocale();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the <code>Locale</code> for this accessor
|
||||||
|
*
|
||||||
|
* @param locale a java-recognised locale
|
||||||
|
*/
|
||||||
|
public void setLocale(Locale locale);
|
||||||
}
|
}
|
||||||
|
@@ -35,17 +35,40 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|||||||
*/
|
*/
|
||||||
public class ApplicationContextHelper
|
public class ApplicationContextHelper
|
||||||
{
|
{
|
||||||
|
private static ClassPathXmlApplicationContext instance;
|
||||||
|
|
||||||
/** location of required configuration files */
|
/** location of required configuration files */
|
||||||
public static final String[] CONFIG_LOCATIONS = new String[] { "classpath:alfresco/application-context.xml" };
|
public static final String[] CONFIG_LOCATIONS = new String[] { "classpath:alfresco/application-context.xml" };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new application context.
|
* Provides a static, single instance of the application context. This method can be
|
||||||
|
* called repeatedly.
|
||||||
*
|
*
|
||||||
* @return Returns a new application context
|
* @return Returns a new application context
|
||||||
*/
|
*/
|
||||||
public static ApplicationContext getApplicationContext()
|
public synchronized static ApplicationContext getApplicationContext()
|
||||||
{
|
{
|
||||||
return new ClassPathXmlApplicationContext(CONFIG_LOCATIONS);
|
if (instance != null)
|
||||||
|
{
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
instance = new ClassPathXmlApplicationContext(CONFIG_LOCATIONS);
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes and releases the application context. On the next call to
|
||||||
|
* {@link #getApplicationContext()}, a new context will be given.
|
||||||
|
*/
|
||||||
|
public synchronized void closeApplicationContext()
|
||||||
|
{
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
// Nothing to do
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
instance.close();
|
||||||
|
instance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String ... args)
|
public static void main(String ... args)
|
||||||
|
Reference in New Issue
Block a user