diff --git a/source/java/org/alfresco/repo/model/ml/MultilingualContentServiceImpl.java b/source/java/org/alfresco/repo/model/ml/MultilingualContentServiceImpl.java
index d39d4b004f..ea464f1f6b 100644
--- a/source/java/org/alfresco/repo/model/ml/MultilingualContentServiceImpl.java
+++ b/source/java/org/alfresco/repo/model/ml/MultilingualContentServiceImpl.java
@@ -37,6 +37,7 @@ import javax.transaction.SystemException;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.i18n.I18NUtil;
import org.alfresco.model.ContentModel;
+import org.alfresco.repo.node.MLPropertyInterceptor;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.service.cmr.ml.ContentFilterLanguagesService;
import org.alfresco.service.cmr.ml.MultilingualContentService;
@@ -790,6 +791,9 @@ public class MultilingualContentServiceImpl implements MultilingualContentServic
*/
public NodeRef copyTranslationContainer(NodeRef mlContainerNodeRef, NodeRef newParentRef, String prefixName) throws Exception
{
+ // There is no need for the properties interceptor here
+ boolean wasMLAware = MLPropertyInterceptor.setMLAware(true);
+
if(!ContentModel.TYPE_MULTILINGUAL_CONTAINER.equals(nodeService.getType(mlContainerNodeRef)))
{
throw new IllegalArgumentException(
@@ -863,6 +867,10 @@ public class MultilingualContentServiceImpl implements MultilingualContentServic
copyNodeRef,
ContentModel.ASSOC_MULTILINGUAL_CHILD,
QNAME_ML_TRANSLATION);
+
+ // Add the ML aspects back
+ nodeService.addAspect(translationNodeRef, ContentModel.ASPECT_MULTILINGUAL_DOCUMENT, null);
+ nodeService.addAspect(translationNodeRef, ContentModel.ASPECT_MULTILINGUAL_EMPTY_TRANSLATION, null);
}
finally
{
@@ -887,6 +895,9 @@ public class MultilingualContentServiceImpl implements MultilingualContentServic
}
}
+ // The rest of the transaction can have properties modified
+ MLPropertyInterceptor.setMLAware(wasMLAware);
+
if (logger.isDebugEnabled())
{
logger.debug("MLContainer copied: \n" +
diff --git a/source/java/org/alfresco/repo/node/MLPropertyInterceptor.java b/source/java/org/alfresco/repo/node/MLPropertyInterceptor.java
index 0fe9151467..67e8a51998 100644
--- a/source/java/org/alfresco/repo/node/MLPropertyInterceptor.java
+++ b/source/java/org/alfresco/repo/node/MLPropertyInterceptor.java
@@ -88,10 +88,14 @@ public class MLPropertyInterceptor implements MethodInterceptor
*
* @param mlAwareVal true if the current thread is able to handle
* {@link MLText d:mltext} property types, otherwise false.
+ * @return
+ * true if the current transaction is ML aware
*/
- static public void setMLAware(boolean mlAwareVal)
+ static public boolean setMLAware(boolean mlAwareVal)
{
- mlAware.set(new Boolean(mlAwareVal));
+ boolean wasMLAware = isMLAware();
+ mlAware.set(Boolean.valueOf(mlAwareVal));
+ return wasMLAware;
}
/**