Author: mreutegg
Date: Thu Apr 11 09:36:26 2019
New Revision: 1857304
URL: http://svn.apache.org/viewvc?rev=1857304&view=rev
Log:
OAK-8218: ReadOnlyNodeTypeManager.isNodeType prone to NPE
Modified:
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugValidatorTest.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ReadOnlyNodeTypeManager.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistry.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/JcrUUIDTest.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/WorkspaceImpl.java
jackrabbit/oak/trunk/oak-search/ (props changed)
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Modified:
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
Thu Apr 11 09:36:26 2019
@@ -233,6 +233,7 @@ public class CugConfiguration extends Co
static boolean registerCugNodeTypes(@NotNull final Root root) {
try {
ReadOnlyNodeTypeManager ntMgr = new ReadOnlyNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NodeTypeConstants.NODE_TYPES_PATH);
Modified:
jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugValidatorTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugValidatorTest.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugValidatorTest.java
(original)
+++
jackrabbit/oak/trunk/oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugValidatorTest.java
Thu Apr 11 09:36:26 2019
@@ -153,7 +153,7 @@ public class CugValidatorTest extends Ab
return root;
}
- @Nullable
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/NodeTypeImpl.java
Thu Apr 11 09:36:26 2019
@@ -485,7 +485,8 @@ class NodeTypeImpl extends AbstractTypeD
private ReadOnlyNodeTypeManager getManager() {
final Tree types = definition.getParent();
return new ReadOnlyNodeTypeManager() {
- @Override @Nullable
+ @NotNull
+ @Override
protected Tree getTypes() {
return types;
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ReadOnlyNodeTypeManager.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ReadOnlyNodeTypeManager.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ReadOnlyNodeTypeManager.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/ReadOnlyNodeTypeManager.java
Thu Apr 11 09:36:26 2019
@@ -82,10 +82,13 @@ public abstract class ReadOnlyNodeTypeMa
}
/**
- * @return {@link org.apache.jackrabbit.oak.api.Tree} instance where the
node types
- * are stored or {@code null} if none.
+ * Returns the {@link Tree} instance where the node types are stored. This
+ * method never returns {@code null} and may return a {@code Tree} that
+ * does not exist (see {@link Tree#exists()} when there are no types
stored.
+ *
+ * @return {@link Tree} instance where the node types are stored.
*/
- @Nullable
+ @NotNull
protected abstract Tree getTypes();
/**
@@ -125,6 +128,7 @@ public abstract class ReadOnlyNodeTypeMa
public static ReadOnlyNodeTypeManager getInstance(final Root root,
final NamePathMapper
namePathMapper) {
return new ReadOnlyNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
@@ -142,8 +146,7 @@ public abstract class ReadOnlyNodeTypeMa
@Override
public boolean hasNodeType(String name) throws RepositoryException {
- Tree types = getTypes();
- return types != null && types.hasChild(getOakName(name));
+ return getTypes().hasChild(getOakName(name));
}
@Override
@@ -155,11 +158,9 @@ public abstract class ReadOnlyNodeTypeMa
public NodeTypeIterator getAllNodeTypes() throws RepositoryException {
List<NodeType> list = Lists.newArrayList();
Tree types = getTypes();
- if (types != null) {
- NamePathMapper mapper = getNamePathMapper();
- for (Tree type : types.getChildren()) {
- list.add(new NodeTypeImpl(type, mapper));
- }
+ NamePathMapper mapper = getNamePathMapper();
+ for (Tree type : types.getChildren()) {
+ list.add(new NodeTypeImpl(type, mapper));
}
return new NodeTypeIteratorAdapter(list);
}
@@ -411,11 +412,9 @@ public abstract class ReadOnlyNodeTypeMa
@NotNull
NodeTypeImpl internalGetNodeType(@NotNull String oakName) throws
NoSuchNodeTypeException {
Tree types = getTypes();
- if (types != null) {
- Tree type = types.getChild(oakName);
- if (type.exists()) {
- return new NodeTypeImpl(type, getNamePathMapper());
- }
+ Tree type = types.getChild(oakName);
+ if (type.exists()) {
+ return new NodeTypeImpl(type, getNamePathMapper());
}
throw new
NoSuchNodeTypeException(getNamePathMapper().getJcrName(oakName));
}
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistry.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistry.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistry.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistry.java
Thu Apr 11 09:36:26 2019
@@ -51,6 +51,7 @@ public final class NodeTypeRegistry {
private NodeTypeRegistry(final Root root) {
this.ntMgr = new ReadWriteNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/write/NodeTypeRegistryTest.java
Thu Apr 11 09:36:26 2019
@@ -182,12 +182,14 @@ public class NodeTypeRegistryTest {
registerNodeType(root, "oak6440-1.cnd");
NodeTypeManager readOnlyNtMgr = new ReadOnlyNodeTypeManager() {
private Root r = session.getLatestRoot();
+ @NotNull
@Override
protected Tree getTypes() {
return r.getTree(NODE_TYPES_PATH);
}
};
NodeTypeManager ntMgr = new ReadWriteNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
@@ -234,6 +236,7 @@ public class NodeTypeRegistryTest {
@Test
public void reRegisterNtResource() throws Exception {
NodeTypeManager ntMgr = new ReadWriteNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/JcrUUIDTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/JcrUUIDTest.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/JcrUUIDTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/evaluation/JcrUUIDTest.java
Thu Apr 11 09:36:26 2019
@@ -57,6 +57,7 @@ public class JcrUUIDTest extends Abstrac
return root;
}
+ @NotNull
@Override
protected Tree getTypes() {
return root.getTree(NODE_TYPES_PATH);
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/WorkspaceImpl.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/WorkspaceImpl.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/WorkspaceImpl.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/WorkspaceImpl.java
Thu Apr 11 09:36:26 2019
@@ -81,6 +81,7 @@ public class WorkspaceImpl implements Ja
getSession().refresh(true);
}
+ @NotNull
@Override
protected Tree getTypes() {
return sessionDelegate.getRoot().getTree(NODE_TYPES_PATH);
Propchange: jackrabbit/oak/trunk/oak-search/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Apr 11 09:36:26 2019
@@ -1,3 +1,5 @@
target
.*
*.iml
+*.ipr
+*.iws
Modified:
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java
(original)
+++
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/IndexDefinition.java
Thu Apr 11 09:36:26 2019
@@ -42,6 +42,7 @@ import com.google.common.collect.Sets;
import com.google.common.primitives.Ints;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.PathUtils;
@@ -51,7 +52,7 @@ import org.apache.jackrabbit.oak.plugins
import
org.apache.jackrabbit.oak.plugins.index.search.util.FunctionIndexProcessor;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
-import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
+import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
import org.apache.jackrabbit.oak.spi.filter.PathFilter;
import org.apache.jackrabbit.oak.spi.query.QueryIndex.OrderEntry;
@@ -774,7 +775,7 @@ public class IndexDefinition implements
}
Map<String, List<IndexingRule>> nt2rules = newHashMap();
- ReadOnlyNodeTypeManager ntReg =
createNodeTypeManager(TreeFactory.createReadOnlyTree(root));
+ ReadOnlyNodeTypeManager ntReg =
createNodeTypeManager(RootFactory.createReadOnlyRoot(root));
//Use Tree API to read ordered child nodes
Tree ruleTree = TreeFactory.createReadOnlyTree(indexRules);
@@ -1593,11 +1594,12 @@ public class IndexDefinition implements
}
}
- private static ReadOnlyNodeTypeManager createNodeTypeManager(final Tree
root) {
+ private static ReadOnlyNodeTypeManager createNodeTypeManager(final Root
root) {
return new ReadOnlyNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
- return TreeUtil.getTree(root,NODE_TYPES_PATH);
+ return root.getTree(NODE_TYPES_PATH);
}
@NotNull
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1857304&r1=1857303&r2=1857304&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Thu Apr 11 09:36:26 2019
@@ -451,6 +451,7 @@ public class RepositoryUpgrade {
} else {
logger.info("Copying registered node types");
NodeTypeManager ntMgr = new ReadWriteNodeTypeManager() {
+ @NotNull
@Override
protected Tree getTypes() {
return upgradeRoot.getTree(NODE_TYPES_PATH);