Hi there,
I'm currently facing a porblem I'm unable to understand or solve:
If I create two new NodeTypes and then ask for the second one, I get a javax.jcr.query.InvalidQueryException.
Note that the first search works, only the second one fails.
If have no idea what is happening or what I maybe do wrong.
Any help is appreciated.
@RunWith(CdiTestRunner.class)
@TestControl(startScopes = ApplicationScoped.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class CDITest {
@Inject
private Session session;
private void regNodeType(Session repoSession, String typeName) throws RepositoryException{
NodeTypeManager mgr = repoSession.getWorkspace().getNodeTypeManager();
// Create a template for the node type ...
NodeTypeTemplate type = mgr.createNodeTypeTemplate();
type.setName(typeName);
type.setDeclaredSuperTypeNames(new String[]{CrConstants.JCR_NT_UNSTRUCTURED});
type.setAbstract(false);
type.setOrderableChildNodes(true);
type.setMixin(false);
type.setQueryable(true);
mgr.registerNodeType(type, true);
}
private void fireQuery(Session repoSession, String typeName) throws RepositoryException{
Query query = repoSession.getWorkspace().getQueryManager().createQuery(
"SELECT BASE.* FROM [" + typeName + "] AS BASE ", Query.JCR_SQL2);
query.execute();
}
private Node saveNode(Session repoSession, String typeName) throws RepositoryException{
Node root = repoSession.getNode("/");
Node x = root.addNode("xyz:XYZ", typeName);
repoSession.save();
return x;
}
private void regNs(Session repoSession) throws RepositoryException{
NamespaceRegistry reg = repoSession.getWorkspace().getNamespaceRegistry();
reg.registerNamespace("xyz", "org://some");
}
@Test
public void test000Schrott() throws RepositoryException {
regNs(session);
regNodeType(session, "xyz:pommes");
fireQuery(session, "xyz:pommes");
Node x = saveNode(session, "xyz:pommes");
x.setProperty("some", "thing");
regNodeType(session, "xyz:mayo");
fireQuery(session, "xyz:mayo");
}
}
EDIT: this is most likely a bug, the behavior should be consistent between the 2 node types.
Does ModeShape 3.x exhibit the same behavior in this case ?