diff --git a/config/alfresco/application-context.xml b/config/alfresco/application-context.xml
index ac0217ca27..f4b9aa468e 100644
--- a/config/alfresco/application-context.xml
+++ b/config/alfresco/application-context.xml
@@ -109,6 +109,7 @@
alfresco.messages.content-service
alfresco.messages.coci-service
alfresco.messages.template-service
+ alfresco.messages.lock-service
diff --git a/config/alfresco/messages/lock-service.properties b/config/alfresco/messages/lock-service.properties
new file mode 100644
index 0000000000..754e472cf2
--- /dev/null
+++ b/config/alfresco/messages/lock-service.properties
@@ -0,0 +1,6 @@
+# Lock service externalised display strings
+
+lock_service.insufficent_preveleges=You have insufficent priveleges to realese the lock on the node (id: {0}). The node is locked by another user.
+lock_service.node_locked=The node (id: {0}) could not be locked since it is already locked by another user.
+lock_service.no_op=Can not perform operation since the node (id:{0}) is locked by another user.
+lock_service.no_op2=Can not perform operation {0} since the node (id:{1}) is locked by another user.
diff --git a/source/java/org/alfresco/repo/action/executer/LinkCategoryActionExecuter.java b/source/java/org/alfresco/repo/action/executer/LinkCategoryActionExecuter.java
index dbee2dd995..a6746d1947 100644
--- a/source/java/org/alfresco/repo/action/executer/LinkCategoryActionExecuter.java
+++ b/source/java/org/alfresco/repo/action/executer/LinkCategoryActionExecuter.java
@@ -17,6 +17,7 @@
package org.alfresco.repo.action.executer;
import java.io.Serializable;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -30,6 +31,7 @@ import org.alfresco.service.cmr.dictionary.PropertyDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
import org.alfresco.service.namespace.QName;
/**
@@ -117,10 +119,21 @@ public class LinkCategoryActionExecuter extends ActionExecuterAbstractBase
if (categoryAspect != null)
{
- // Add the aspect setting the category property to the approptiate values
- Map properties = new HashMap();
- properties.put(categoryProperty, categoryValue);
- this.nodeService.addAspect(actionedUponNodeRef, categoryAspect, properties);
+ if (this.nodeService.hasAspect(actionedUponNodeRef, categoryAspect) == false)
+ {
+ // Add the aspect and set the category property value
+ Map properties = new HashMap();
+ properties.put(categoryProperty, categoryValue);
+ this.nodeService.addAspect(actionedUponNodeRef, categoryAspect, properties);
+ }
+ else
+ {
+ // Append the category value to the existing values
+ Serializable value = this.nodeService.getProperty(actionedUponNodeRef, categoryProperty);
+ Collection categories = DefaultTypeConverter.INSTANCE.getCollection(NodeRef.class, value);
+ categories.add(categoryValue);
+ this.nodeService.setProperty(actionedUponNodeRef, categoryProperty, (Serializable)categories);
+ }
}
}
}
diff --git a/source/java/org/alfresco/repo/lock/LockServiceImplTest.java b/source/java/org/alfresco/repo/lock/LockServiceImplTest.java
index 4ca40fbb27..88e7e55d1a 100644
--- a/source/java/org/alfresco/repo/lock/LockServiceImplTest.java
+++ b/source/java/org/alfresco/repo/lock/LockServiceImplTest.java
@@ -165,6 +165,7 @@ public class LockServiceImplTest extends BaseSpringTest
}
catch (UnableToAquireLockException exception)
{
+ System.out.println(exception.getMessage());
}
TestWithUserUtils.authenticateUser(GOOD_USER_NAME, PWD, rootNodeRef, this.authenticationService);
@@ -220,6 +221,7 @@ public class LockServiceImplTest extends BaseSpringTest
}
catch (UnableToReleaseLockException exception)
{
+ System.out.println(exception.getMessage());
}
TestWithUserUtils.authenticateUser(GOOD_USER_NAME, PWD, rootNodeRef, this.authenticationService);
diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
index b911f81d91..17d5a1967b 100644
--- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
+++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java
@@ -40,6 +40,7 @@ import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.service.cmr.dictionary.AspectDefinition;
import org.alfresco.service.cmr.dictionary.ClassDefinition;
+import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.dictionary.InvalidAspectException;
import org.alfresco.service.cmr.dictionary.InvalidTypeException;
@@ -334,8 +335,32 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
{
if (properties.containsKey(entry.getKey()) == false)
{
+ Serializable value = entry.getValue();
+
+ // TODO what other conversions are nessesary here for other types of default values ?
+
+ // Check the type of the default property
+ PropertyDefinition prop = this.dictionaryService.getProperty(entry.getKey());
+ if (prop != null)
+ {
+ if (DataTypeDefinition.BOOLEAN.equals(prop.getDataType().getName()) == true)
+ {
+ if (value instanceof String)
+ {
+ if (((String)value).toUpperCase().equals("TRUE") == true)
+ {
+ value = Boolean.TRUE;
+ }
+ else if (((String)value).toUpperCase().equals("FALSE") == true)
+ {
+ value = Boolean.FALSE;
+ }
+ }
+ }
+ }
+
// Set the default value of the property
- properties.put(entry.getKey(), entry.getValue());
+ properties.put(entry.getKey(), value);
}
}
}
diff --git a/source/java/org/alfresco/service/cmr/lock/NodeLockedException.java b/source/java/org/alfresco/service/cmr/lock/NodeLockedException.java
index 7554f25218..e6a8301a44 100644
--- a/source/java/org/alfresco/service/cmr/lock/NodeLockedException.java
+++ b/source/java/org/alfresco/service/cmr/lock/NodeLockedException.java
@@ -19,6 +19,7 @@ package org.alfresco.service.cmr.lock;
import java.text.MessageFormat;
import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.i18n.I18NUtil;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -36,10 +37,8 @@ public class NodeLockedException extends AlfrescoRuntimeException
/**
* Error message
*/
- private static final String ERROR_MESSAGE = "Can not perform operation since " +
- "the node (id:{0}) is locked by another user.";
- private static final String ERROR_MESSAGE_2 = "Can not perform operation {0} since " +
- "the node (id:{1}) is locked by another user.";
+ private static final String ERROR_MESSAGE = I18NUtil.getMessage("lock_service.no_op");
+ private static final String ERROR_MESSAGE_2 = I18NUtil.getMessage("lock_service.no_op2");
/**
* @param message
diff --git a/source/java/org/alfresco/service/cmr/lock/UnableToAquireLockException.java b/source/java/org/alfresco/service/cmr/lock/UnableToAquireLockException.java
index b99b110938..9ba0c0f5e2 100644
--- a/source/java/org/alfresco/service/cmr/lock/UnableToAquireLockException.java
+++ b/source/java/org/alfresco/service/cmr/lock/UnableToAquireLockException.java
@@ -18,6 +18,7 @@ package org.alfresco.service.cmr.lock;
import java.text.MessageFormat;
+import org.alfresco.i18n.I18NUtil;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -33,8 +34,7 @@ public class UnableToAquireLockException extends RuntimeException
/**
* Error message
*/
- private final static String ERROR_MESSAGE = "The node (id: {0})could not be locked since it" +
- " is already locked by antoher user.";
+ private final static String ERROR_MESSAGE = I18NUtil.getMessage("lock_service.node_locked");
/**
* Constructor
diff --git a/source/java/org/alfresco/service/cmr/lock/UnableToReleaseLockException.java b/source/java/org/alfresco/service/cmr/lock/UnableToReleaseLockException.java
index 409af4c134..0848e0abae 100644
--- a/source/java/org/alfresco/service/cmr/lock/UnableToReleaseLockException.java
+++ b/source/java/org/alfresco/service/cmr/lock/UnableToReleaseLockException.java
@@ -18,6 +18,7 @@ package org.alfresco.service.cmr.lock;
import java.text.MessageFormat;
+import org.alfresco.i18n.I18NUtil;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -35,10 +36,7 @@ public class UnableToReleaseLockException extends RuntimeException
/**
* Error message
*/
- private static final String ERROR_MESSAGE =
- "You have insufficent priveleges to realese the " +
- "lock on the node (id: {0}). The node is locked by " +
- "another user.";
+ private static final String ERROR_MESSAGE = I18NUtil.getMessage("lock_service.insufficent_preveleges");
/**
* Constructor