From c21cd5fac383745c0f2def09bc7b305748c68e1e Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Wed, 9 Sep 2015 09:26:02 +0000 Subject: [PATCH] Slight refactor. ReferredMetadataService uses the registry to look up Referrals rather than the AdminService. Seems neater. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/classified_renditions@111772 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../metadata-referral-context.xml | 1 + .../referredmetadata/ReferralRegistry.java | 24 ++++++++++++++++--- .../ReferredMetadataServiceImpl.java | 10 ++++++-- .../ReferredMetadataServiceImplUnitTest.java | 3 ++- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/metadata-referral-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/metadata-referral-context.xml index f5c7c81edb..c9f97fdfe8 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/metadata-referral-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/metadata-referral-context.xml @@ -64,6 +64,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralRegistry.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralRegistry.java index 2dacba8d45..653e2e7790 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralRegistry.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferralRegistry.java @@ -79,11 +79,29 @@ public class ReferralRegistry */ public MetadataReferral getReferralForAssociation(QName assocType) { - for (MetadataReferral d : metadataReferrals) + for (MetadataReferral mr : metadataReferrals) { - if (d.getAssocType().equals(assocType)) + if (mr.getAssocType().equals(assocType)) { - return d; + return mr; + } + } + return null; + } + + /** + * Gets the {@link MetadataReferral} which is defined to handle the specified aspect. + * + * @param aspectName the name of the aspect whose {@link MetadataReferral} is sought. + * @return the {@link MetadataReferral} handling the specified aspect if there is one, else {@code null}. + */ + public MetadataReferral getReferralForAspect(QName aspectName) + { + for (MetadataReferral mr : metadataReferrals) + { + if (mr.getAspects().contains(aspectName)) + { + return mr; } } return null; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImpl.java index add2c367c2..fe9eaca755 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImpl.java @@ -46,6 +46,7 @@ import java.util.Set; public class ReferredMetadataServiceImpl implements ReferredMetadataService { private ReferralAdminService referralAdminService; + private ReferralRegistry referralRegistry; private DictionaryService dictionaryService; private NodeService nodeService; @@ -54,6 +55,11 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService this.referralAdminService = service; } + public void setReferralRegistry(ReferralRegistry registry) + { + this.referralRegistry = registry; + } + public void setDictionaryService(DictionaryService service) { this.dictionaryService = service; @@ -71,7 +77,7 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService throw new InvalidNodeRefException(potentialReferrer); } - final MetadataReferral metadataReferral = referralAdminService.getReferralFor(aspectName); + final MetadataReferral metadataReferral = referralRegistry.getReferralForAspect(aspectName); if (metadataReferral == null) { @@ -91,7 +97,7 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService throw new InvalidNodeRefException(referrer); } - final MetadataReferral d = referralAdminService.getReferralFor(aspectName); + final MetadataReferral d = referralRegistry.getReferralForAspect(aspectName); if (d == null) { diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java index e04a96d087..0a818176ce 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/referredmetadata/ReferredMetadataServiceImplUnitTest.java @@ -64,6 +64,7 @@ public class ReferredMetadataServiceImplUnitTest @Mock DictionaryService mockDictionaryService; @Mock NodeService mockNodeService; @Mock ReferralAdminServiceImpl mockReferralAdminService; + @Mock ReferralRegistry mockReferralRegistry; /** This node has a referent node. */ private final NodeRef referringNode = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, "referringNode"); @@ -116,7 +117,7 @@ public class ReferredMetadataServiceImplUnitTest when(mockReferralAdminService.getAttachedReferralsFrom(referringNode)).thenReturn(asSet(referral)); for (QName referredAspect : asSet(referredAspect1, referredAspect2)) { - when(mockReferralAdminService.getReferralFor(referredAspect)).thenReturn(referral); + when(mockReferralRegistry.getReferralForAspect(referredAspect)).thenReturn(referral); when(mockNodeService.hasAspect(referentNode, referredAspect)).thenReturn(true); } when(mockNodeService.getSourceAssocs(referentNode, referralAssocType)).thenReturn(asList(attachedReferralAssocRef));