From 99cd45d810eb5517f16cc5ce0d9fc247f45b4ce9 Mon Sep 17 00:00:00 2001 From: Bogdan Horje Date: Thu, 12 Nov 2015 19:23:33 +0000 Subject: [PATCH] CM-690 extensions git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@117482 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/copy/CopyServiceImpl.java | 3 +- .../copy/DefaultCopyBehaviourCallback.java | 42 ++++++++++++++++++- ...DefaultCopyBehaviourCallbackExtension.java | 27 ++++++++++++ .../DefaultCopyBehaviourCallbackTrait.java | 28 +++++++++++++ 4 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackExtension.java create mode 100644 source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackTrait.java diff --git a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java index c34d5b39a9..286255077a 100644 --- a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java +++ b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java @@ -1455,9 +1455,8 @@ public class CopyServiceImpl extends AbstractBaseCopyService implements CopyServ " " + copyDetails); } } - } - + /** * Callback behaviour retrieval for the 'ownable' aspect. * diff --git a/source/java/org/alfresco/repo/copy/DefaultCopyBehaviourCallback.java b/source/java/org/alfresco/repo/copy/DefaultCopyBehaviourCallback.java index baecbe1f76..bb9dafef7e 100644 --- a/source/java/org/alfresco/repo/copy/DefaultCopyBehaviourCallback.java +++ b/source/java/org/alfresco/repo/copy/DefaultCopyBehaviourCallback.java @@ -21,7 +21,14 @@ package org.alfresco.repo.copy; import java.io.Serializable; import java.util.Map; +import org.alfresco.repo.copy.traitextender.DefaultCopyBehaviourCallbackExtension; +import org.alfresco.repo.copy.traitextender.DefaultCopyBehaviourCallbackTrait; import org.alfresco.service.namespace.QName; +import org.alfresco.traitextender.AJExtender; +import org.alfresco.traitextender.Extend; +import org.alfresco.traitextender.ExtendedTrait; +import org.alfresco.traitextender.Extensible; +import org.alfresco.traitextender.Trait; import org.alfresco.util.Pair; @@ -41,10 +48,16 @@ import org.alfresco.util.Pair; * @author Derek Hulley * @since 3.2 */ -public class DefaultCopyBehaviourCallback extends AbstractCopyBehaviourCallback +public class DefaultCopyBehaviourCallback extends AbstractCopyBehaviourCallback implements Extensible { private static CopyBehaviourCallback instance = new DefaultCopyBehaviourCallback(); + private final ExtendedTrait defaultCopyBehaviourCallbackTrait; + + public DefaultCopyBehaviourCallback() + { + defaultCopyBehaviourCallbackTrait=new ExtendedTrait(createTrait()); + } /** * @return Returns a stateless singleton */ @@ -58,6 +71,7 @@ public class DefaultCopyBehaviourCallback extends AbstractCopyBehaviourCallback * * @return Returns true always */ + @Extend(traitAPI=DefaultCopyBehaviourCallbackTrait.class,extensionAPI=DefaultCopyBehaviourCallbackExtension.class) public boolean getMustCopy(QName classQName, CopyDetails copyDetails) { return true; @@ -115,4 +129,30 @@ public class DefaultCopyBehaviourCallback extends AbstractCopyBehaviourCallback { return properties; } + + private DefaultCopyBehaviourCallbackTrait createTrait() + { + return new DefaultCopyBehaviourCallbackTrait() + { + @Override + public boolean getMustCopy(final QName classQName, final CopyDetails copyDetails) + { + return AJExtender.run(new AJExtender.ExtensionBypass() + { + @Override + public Boolean run() + { + return getInstance().getMustCopy(classQName, copyDetails); + }; + }); + + } + }; + } + + @Override + public ExtendedTrait getTrait(Class traitAPI) + { + return (ExtendedTrait) defaultCopyBehaviourCallbackTrait; + } } diff --git a/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackExtension.java b/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackExtension.java new file mode 100644 index 0000000000..afc19c247f --- /dev/null +++ b/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackExtension.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2005-2015 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see http://www.gnu.org/licenses/. + */ +package org.alfresco.repo.copy.traitextender; + +import org.alfresco.repo.copy.CopyDetails; +import org.alfresco.service.namespace.QName; + +public interface DefaultCopyBehaviourCallbackExtension +{ + boolean getMustCopy(QName classQName, CopyDetails copyDetails); +} diff --git a/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackTrait.java b/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackTrait.java new file mode 100644 index 0000000000..e25e13bddd --- /dev/null +++ b/source/java/org/alfresco/repo/copy/traitextender/DefaultCopyBehaviourCallbackTrait.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2005-2015 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see http://www.gnu.org/licenses/. + */ +package org.alfresco.repo.copy.traitextender; + +import org.alfresco.repo.copy.CopyDetails; +import org.alfresco.service.namespace.QName; +import org.alfresco.traitextender.Trait; + +public interface DefaultCopyBehaviourCallbackTrait extends Trait +{ + boolean getMustCopy(QName classQName, CopyDetails copyDetails); +}