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 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;
|
private String filters;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,14 +86,16 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
|
|
||||||
public void init()
|
public void init()
|
||||||
{
|
{
|
||||||
resetFilters();
|
// resetFilters();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void resetFilters()
|
private QNamePattern[] createFilters()
|
||||||
{
|
{
|
||||||
|
QNamePattern[] qnamePatternFilters = new QNamePattern[] {};
|
||||||
|
|
||||||
if (namespacePrefixResolver != null && filters != null)
|
if (namespacePrefixResolver != null && filters != null)
|
||||||
{
|
{
|
||||||
this.qnamePatternFilters = asRegExpQNamePatternFilters(filters);
|
qnamePatternFilters = asRegExpQNamePatternFilters(filters);
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
String regExpFilters = "";
|
String regExpFilters = "";
|
||||||
@@ -123,6 +112,7 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
+ " and filters=" + filters);
|
+ " and filters=" + filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return qnamePatternFilters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private QNamePattern[] asRegExpQNamePatternFilters(String filtersString)
|
private QNamePattern[] asRegExpQNamePatternFilters(String filtersString)
|
||||||
@@ -144,7 +134,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
if ("none".equals(trimmedFilters))
|
if ("none".equals(trimmedFilters))
|
||||||
{
|
{
|
||||||
patterns.clear();
|
patterns.clear();
|
||||||
patterns.add(MATCH_NONE);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,17 +178,23 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
}
|
}
|
||||||
catch (NamespaceException e)
|
catch (NamespaceException e)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Illegal filters string " + filtersString
|
if (logger.isDebugEnabled())
|
||||||
+ " due to unregistered name space in " + filters[i],
|
{
|
||||||
|
logger.debug("Illegal filters string " + filtersString + " due to unregistered name space in "
|
||||||
|
+ filters[i],
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (PatternSyntaxException e)
|
catch (PatternSyntaxException e)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Illegal filters string " + filtersString
|
if (logger.isDebugEnabled())
|
||||||
+ " due to invalid regexp translatrion in " + filters[i],
|
{
|
||||||
|
logger.debug("Illegal filters string " + filtersString
|
||||||
|
+ " due to invalid regexp translation in " + filters[i],
|
||||||
e);
|
e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,8 +206,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
ParameterCheck.mandatoryString("filters",
|
ParameterCheck.mandatoryString("filters",
|
||||||
filters);
|
filters);
|
||||||
this.filters = filters;
|
this.filters = filters;
|
||||||
|
|
||||||
resetFilters();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTemplatesPath(NodeRefExpression templatesPath)
|
public void setTemplatesPath(NodeRefExpression templatesPath)
|
||||||
@@ -223,8 +216,6 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
public void setNamespacePrefixResolver(NamespacePrefixResolver resolver)
|
public void setNamespacePrefixResolver(NamespacePrefixResolver resolver)
|
||||||
{
|
{
|
||||||
this.namespacePrefixResolver = resolver;
|
this.namespacePrefixResolver = resolver;
|
||||||
|
|
||||||
resetFilters();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -259,9 +250,10 @@ public class TypeVirtualizationMethod extends TemplateVirtualizationMethod
|
|||||||
|
|
||||||
private boolean isAnyFilterMatch(QName qname)
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.alfresco.repo.virtual.store;
|
package org.alfresco.repo.virtual.store;
|
||||||
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -100,16 +101,6 @@ public class TypeVirtualizationMethodTest extends TestSuite
|
|||||||
assertTrue(typeVirtualizationMethod.canVirtualize(environment,
|
assertTrue(typeVirtualizationMethod.canVirtualize(environment,
|
||||||
virtuaChildRef));
|
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,
|
assertTrue(typeVirtualizationMethod.canVirtualize(environment,
|
||||||
virtuaChildRef));
|
virtuaChildRef));
|
||||||
@@ -274,8 +265,7 @@ public class TypeVirtualizationMethodTest extends TestSuite
|
|||||||
final String prefixedType = theType.toPrefixString(environment.getNamespacePrefixResolver());
|
final String prefixedType = theType.toPrefixString(environment.getNamespacePrefixResolver());
|
||||||
String contentName = prefixedType;
|
String contentName = prefixedType;
|
||||||
contentName = contentName.replaceAll(":",
|
contentName = contentName.replaceAll(":",
|
||||||
"_")
|
"_") + ".json";
|
||||||
+ ".json";
|
|
||||||
|
|
||||||
InputStream testTemplsteJsonIS = getClass().getResourceAsStream(cp);
|
InputStream testTemplsteJsonIS = getClass().getResourceAsStream(cp);
|
||||||
ChildAssociationRef templateContentChildRef = createContent(templatesLocation,
|
ChildAssociationRef templateContentChildRef = createContent(templatesLocation,
|
||||||
@@ -299,17 +289,7 @@ public class TypeVirtualizationMethodTest extends TestSuite
|
|||||||
this);
|
this);
|
||||||
assertIllegalQNameFilters("",
|
assertIllegalQNameFilters("",
|
||||||
this);
|
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
|
public void testQNameFiltersSetter_validFilters() throws Exception
|
||||||
@@ -336,26 +316,26 @@ public class TypeVirtualizationMethodTest extends TestSuite
|
|||||||
|
|
||||||
private static NamespacePrefixResolver mockNamespacePrefixResolver()
|
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
|
Mockito.doReturn(Arrays.<String> asList(SiteModel.SITE_MODEL_PREFIX))
|
||||||
.doReturn(Arrays.<String> asList(SiteModel.SITE_MODEL_PREFIX))
|
|
||||||
.when(mockNamespacePrefixResolver)
|
.when(mockNamespacePrefixResolver)
|
||||||
.getPrefixes(SiteModel.SITE_MODEL_URL);
|
.getPrefixes(SiteModel.SITE_MODEL_URL);
|
||||||
Mockito.doReturn(SiteModel.SITE_MODEL_URL).when(mockNamespacePrefixResolver).getNamespaceURI(
|
Mockito.doReturn(SiteModel.SITE_MODEL_URL)
|
||||||
SiteModel.SITE_MODEL_PREFIX);
|
.when(mockNamespacePrefixResolver)
|
||||||
|
.getNamespaceURI(SiteModel.SITE_MODEL_PREFIX);
|
||||||
|
|
||||||
Mockito
|
Mockito.doReturn(Arrays.<String> asList(NamespaceService.CONTENT_MODEL_PREFIX))
|
||||||
.doReturn(Arrays.<String> asList(NamespaceService.CONTENT_MODEL_PREFIX))
|
|
||||||
.when(mockNamespacePrefixResolver)
|
.when(mockNamespacePrefixResolver)
|
||||||
.getPrefixes(NamespaceService.CONTENT_MODEL_1_0_URI);
|
.getPrefixes(NamespaceService.CONTENT_MODEL_1_0_URI);
|
||||||
Mockito.doReturn(NamespaceService.CONTENT_MODEL_1_0_URI).when(mockNamespacePrefixResolver).getNamespaceURI(
|
Mockito.doReturn(NamespaceService.CONTENT_MODEL_1_0_URI)
|
||||||
NamespaceService.CONTENT_MODEL_PREFIX);
|
.when(mockNamespacePrefixResolver)
|
||||||
|
.getNamespaceURI(NamespaceService.CONTENT_MODEL_PREFIX);
|
||||||
|
|
||||||
Mockito
|
Mockito.doReturn("mock(NamespacePrefixResolver)@" + TypeVirtualizationMethod.class.toString())
|
||||||
.doReturn("mock(NamespacePrefixResolver)@" + TypeVirtualizationMethod.class.toString())
|
|
||||||
.when(mockNamespacePrefixResolver)
|
.when(mockNamespacePrefixResolver)
|
||||||
.toString();
|
.toString();
|
||||||
return mockNamespacePrefixResolver;
|
return mockNamespacePrefixResolver;
|
||||||
|
|||||||
Reference in New Issue
Block a user