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
This commit is contained in:
Neil McErlean
2015-09-09 09:26:02 +00:00
parent 10fdfcf078
commit c21cd5fac3
4 changed files with 32 additions and 6 deletions

View File

@@ -64,6 +64,7 @@
<bean id="referredMetadataService" <bean id="referredMetadataService"
class="org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataServiceImpl" > class="org.alfresco.module.org_alfresco_module_rm.referredmetadata.ReferredMetadataServiceImpl" >
<property name="referralAdminService" ref="ReferralAdminService" /> <property name="referralAdminService" ref="ReferralAdminService" />
<property name="referralRegistry" ref="referralRegistry" />
<property name="dictionaryService" ref="dictionaryService" /> <property name="dictionaryService" ref="dictionaryService" />
<property name="nodeService" ref="NodeService" /> <property name="nodeService" ref="NodeService" />
</bean> </bean>

View File

@@ -79,11 +79,29 @@ public class ReferralRegistry
*/ */
public MetadataReferral getReferralForAssociation(QName assocType) 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; return null;

View File

@@ -46,6 +46,7 @@ import java.util.Set;
public class ReferredMetadataServiceImpl implements ReferredMetadataService public class ReferredMetadataServiceImpl implements ReferredMetadataService
{ {
private ReferralAdminService referralAdminService; private ReferralAdminService referralAdminService;
private ReferralRegistry referralRegistry;
private DictionaryService dictionaryService; private DictionaryService dictionaryService;
private NodeService nodeService; private NodeService nodeService;
@@ -54,6 +55,11 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService
this.referralAdminService = service; this.referralAdminService = service;
} }
public void setReferralRegistry(ReferralRegistry registry)
{
this.referralRegistry = registry;
}
public void setDictionaryService(DictionaryService service) public void setDictionaryService(DictionaryService service)
{ {
this.dictionaryService = service; this.dictionaryService = service;
@@ -71,7 +77,7 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService
throw new InvalidNodeRefException(potentialReferrer); throw new InvalidNodeRefException(potentialReferrer);
} }
final MetadataReferral metadataReferral = referralAdminService.getReferralFor(aspectName); final MetadataReferral metadataReferral = referralRegistry.getReferralForAspect(aspectName);
if (metadataReferral == null) if (metadataReferral == null)
{ {
@@ -91,7 +97,7 @@ public class ReferredMetadataServiceImpl implements ReferredMetadataService
throw new InvalidNodeRefException(referrer); throw new InvalidNodeRefException(referrer);
} }
final MetadataReferral d = referralAdminService.getReferralFor(aspectName); final MetadataReferral d = referralRegistry.getReferralForAspect(aspectName);
if (d == null) if (d == null)
{ {

View File

@@ -64,6 +64,7 @@ public class ReferredMetadataServiceImplUnitTest
@Mock DictionaryService mockDictionaryService; @Mock DictionaryService mockDictionaryService;
@Mock NodeService mockNodeService; @Mock NodeService mockNodeService;
@Mock ReferralAdminServiceImpl mockReferralAdminService; @Mock ReferralAdminServiceImpl mockReferralAdminService;
@Mock ReferralRegistry mockReferralRegistry;
/** This node has a referent node. */ /** This node has a referent node. */
private final NodeRef referringNode = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, "referringNode"); 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)); when(mockReferralAdminService.getAttachedReferralsFrom(referringNode)).thenReturn(asSet(referral));
for (QName referredAspect : asSet(referredAspect1, referredAspect2)) 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.hasAspect(referentNode, referredAspect)).thenReturn(true);
} }
when(mockNodeService.getSourceAssocs(referentNode, referralAssocType)).thenReturn(asList(attachedReferralAssocRef)); when(mockNodeService.getSourceAssocs(referentNode, referralAssocType)).thenReturn(asList(attachedReferralAssocRef));