mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-22 15:12:38 +00:00
ACE-4752 dynamic type filter creation - fixed invalid or missing namespace bug
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@119652 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -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,17 +178,23 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
||||
}
|
||||
catch (NamespaceException e)
|
||||
{
|
||||
throw new IllegalArgumentException("Illegal filters string " + filtersString
|
||||
+ " due to unregistered name space in " + filters[i],
|
||||
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],
|
||||
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;
|
||||
}
|
||||
|
@@ -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 ")));
|
||||
|
||||
Mockito
|
||||
.doReturn(Arrays.<String> asList(SiteModel.SITE_MODEL_PREFIX))
|
||||
Mockito.doReturn(Arrays.<String> 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.<String> asList(NamespaceService.CONTENT_MODEL_PREFIX))
|
||||
Mockito.doReturn(Arrays.<String> 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;
|
||||
|
Reference in New Issue
Block a user