diff --git a/source/java/org/alfresco/repo/virtual/store/TypeVirtualizationMethod.java b/source/java/org/alfresco/repo/virtual/store/TypeVirtualizationMethod.java index 8d237e3722..776fdaba22 100644 --- a/source/java/org/alfresco/repo/virtual/store/TypeVirtualizationMethod.java +++ b/source/java/org/alfresco/repo/virtual/store/TypeVirtualizationMethod.java @@ -69,19 +69,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod private NodeRefExpression templatesPath; - private QNamePattern[] qnamePatternFilters = new QNamePattern[] { RegexQNamePattern.MATCH_ALL }; - - private static final QNamePattern MATCH_NONE = new QNamePattern() - { - - @Override - public boolean isMatch(QName qname) - { - return false; - } - - }; - private String filters; /** @@ -99,14 +86,16 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod public void init() { - resetFilters(); + // resetFilters(); } - private synchronized void resetFilters() + private QNamePattern[] createFilters() { + QNamePattern[] qnamePatternFilters = new QNamePattern[] {}; + if (namespacePrefixResolver != null && filters != null) { - this.qnamePatternFilters = asRegExpQNamePatternFilters(filters); + qnamePatternFilters = asRegExpQNamePatternFilters(filters); if (logger.isDebugEnabled()) { String regExpFilters = ""; @@ -123,6 +112,7 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod + " and filters=" + filters); } + return qnamePatternFilters; } private QNamePattern[] asRegExpQNamePatternFilters(String filtersString) @@ -144,7 +134,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod if ("none".equals(trimmedFilters)) { patterns.clear(); - patterns.add(MATCH_NONE); break; } @@ -189,15 +178,21 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod } catch (NamespaceException e) { - throw new IllegalArgumentException("Illegal filters string " + filtersString - + " due to unregistered name space in " + filters[i], - e); + if (logger.isDebugEnabled()) + { + logger.debug("Illegal filters string " + filtersString + " due to unregistered name space in " + + filters[i], + e); + } } catch (PatternSyntaxException e) { - throw new IllegalArgumentException("Illegal filters string " + filtersString - + " due to invalid regexp translatrion in " + filters[i], - e); + if (logger.isDebugEnabled()) + { + logger.debug("Illegal filters string " + filtersString + + " due to invalid regexp translation in " + filters[i], + e); + } } } @@ -211,8 +206,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod ParameterCheck.mandatoryString("filters", filters); this.filters = filters; - - resetFilters(); } public void setTemplatesPath(NodeRefExpression templatesPath) @@ -223,8 +216,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod public void setNamespacePrefixResolver(NamespacePrefixResolver resolver) { this.namespacePrefixResolver = resolver; - - resetFilters(); } @Override @@ -259,9 +250,10 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod private boolean isAnyFilterMatch(QName qname) { - for (int i = 0; i < qnamePatternFilters.length; i++) + QNamePattern[] syncFilters = createFilters(); + for (int i = 0; i < syncFilters.length; i++) { - if (qnamePatternFilters[i].isMatch(qname)) + if (syncFilters[i].isMatch(qname)) { return true; } diff --git a/source/test-java/org/alfresco/repo/virtual/store/TypeVirtualizationMethodTest.java b/source/test-java/org/alfresco/repo/virtual/store/TypeVirtualizationMethodTest.java index 2da6d70494..d0031b3b29 100644 --- a/source/test-java/org/alfresco/repo/virtual/store/TypeVirtualizationMethodTest.java +++ b/source/test-java/org/alfresco/repo/virtual/store/TypeVirtualizationMethodTest.java @@ -19,6 +19,7 @@ package org.alfresco.repo.virtual.store; + import java.io.InputStream; import java.io.Serializable; import java.util.Arrays; @@ -100,16 +101,6 @@ public class TypeVirtualizationMethodTest extends TestSuite assertTrue(typeVirtualizationMethod.canVirtualize(environment, virtuaChildRef)); - try - { - // invalid prefix - typeVirtualizationMethod.setQnameFilters("invalid:site"); - fail("Should not be able to se invalib filters."); - } - catch (IllegalArgumentException e) - { - // as expected - } assertTrue(typeVirtualizationMethod.canVirtualize(environment, virtuaChildRef)); @@ -274,8 +265,7 @@ public class TypeVirtualizationMethodTest extends TestSuite final String prefixedType = theType.toPrefixString(environment.getNamespacePrefixResolver()); String contentName = prefixedType; contentName = contentName.replaceAll(":", - "_") - + ".json"; + "_") + ".json"; InputStream testTemplsteJsonIS = getClass().getResourceAsStream(cp); ChildAssociationRef templateContentChildRef = createContent(templatesLocation, @@ -299,17 +289,7 @@ public class TypeVirtualizationMethodTest extends TestSuite this); assertIllegalQNameFilters("", this); - assertIllegalQNameFilters(":", - this); - assertIllegalQNameFilters("vm:", - this); - assertIllegalQNameFilters(":vm", - this); - assertIllegalQNameFilters("vm:fooBar,vm:", - this); - // undefined prefix - assertIllegalQNameFilters("vm:anAspect", - this); + } public void testQNameFiltersSetter_validFilters() throws Exception @@ -336,26 +316,26 @@ public class TypeVirtualizationMethodTest extends TestSuite private static NamespacePrefixResolver mockNamespacePrefixResolver() { - NamespacePrefixResolver mockNamespacePrefixResolver = Mockito.mock(NamespacePrefixResolver.class, + NamespacePrefixResolver mockNamespacePrefixResolver = Mockito + .mock(NamespacePrefixResolver.class, - new ThrowsException(new NamespaceException("Mock exception "))); + new ThrowsException(new NamespaceException("Mock exception "))); - Mockito - .doReturn(Arrays. asList(SiteModel.SITE_MODEL_PREFIX)) + Mockito.doReturn(Arrays. asList(SiteModel.SITE_MODEL_PREFIX)) .when(mockNamespacePrefixResolver) .getPrefixes(SiteModel.SITE_MODEL_URL); - Mockito.doReturn(SiteModel.SITE_MODEL_URL).when(mockNamespacePrefixResolver).getNamespaceURI( - SiteModel.SITE_MODEL_PREFIX); + Mockito.doReturn(SiteModel.SITE_MODEL_URL) + .when(mockNamespacePrefixResolver) + .getNamespaceURI(SiteModel.SITE_MODEL_PREFIX); - Mockito - .doReturn(Arrays. asList(NamespaceService.CONTENT_MODEL_PREFIX)) + Mockito.doReturn(Arrays. asList(NamespaceService.CONTENT_MODEL_PREFIX)) .when(mockNamespacePrefixResolver) .getPrefixes(NamespaceService.CONTENT_MODEL_1_0_URI); - Mockito.doReturn(NamespaceService.CONTENT_MODEL_1_0_URI).when(mockNamespacePrefixResolver).getNamespaceURI( - NamespaceService.CONTENT_MODEL_PREFIX); + Mockito.doReturn(NamespaceService.CONTENT_MODEL_1_0_URI) + .when(mockNamespacePrefixResolver) + .getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX); - Mockito - .doReturn("mock(NamespacePrefixResolver)@" + TypeVirtualizationMethod.class.toString()) + Mockito.doReturn("mock(NamespacePrefixResolver)@" + TypeVirtualizationMethod.class.toString()) .when(mockNamespacePrefixResolver) .toString(); return mockNamespacePrefixResolver;