Index: oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitNode.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitNode.java (revision 23df42242a29cb1c42cfd61692eae2801d405a92) +++ oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitNode.java (date 1656430958481) @@ -16,6 +16,11 @@ */ package org.apache.jackrabbit.api; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.jcr.Node; +import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.lock.LockException; import javax.jcr.nodetype.ConstraintViolationException; @@ -26,7 +31,7 @@ * The Jackrabbit Node interface. This interface contains the * Jackrabbit-specific extensions to the JCR {@link javax.jcr.Node} interface. */ -public interface JackrabbitNode { +public interface JackrabbitNode extends Node { /** * @@ -47,4 +52,36 @@ void setMixins(String[] mixinNames) throws NoSuchNodeTypeException, VersionException, ConstraintViolationException, LockException, RepositoryException; + + /** + * Returns the node at {@code relPath} relative to {@code this} node or {@code null} if no such node exists. + * The same reacquisition semantics apply as with {@link #getNode(String)}. + * + * @param relPath The relative path of the node to retrieve. + * @return The node at {@code relPath} or {@code null} + * @throws RepositoryException If an error occurs. + */ + default @Nullable Node getNodeOrNull(@NotNull String relPath) throws RepositoryException { + if (hasNode(relPath)) { + return getNode(relPath); + } else { + return null; + } + } + + /** + * Returns the property at {@code relPath} relative to {@code this} node or {@code null} if no such property exists. + * The same reacquisition semantics apply as with {@link #getNode(String)}. + * + * @param relPath The relative path of the property to retrieve. + * @return The property at {@code relPath} or {@code null} + * @throws RepositoryException If an error occurs. + */ + default @Nullable Property getPropertyOrNull(@NotNull String relPath) throws RepositoryException { + if (hasProperty(relPath)) { + return getProperty(relPath); + } else { + return null; + } + } } Index: oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/package-info.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/package-info.java (revision 23df42242a29cb1c42cfd61692eae2801d405a92) +++ oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/package-info.java (date 1656427696406) @@ -18,5 +18,5 @@ /** * Jackrabbit extensions for JCR core interfaces */ -@org.osgi.annotation.versioning.Version("2.7.0") +@org.osgi.annotation.versioning.Version("2.8.0") package org.apache.jackrabbit.api;