This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push:
new 6acf9ec316 Revert "OAK-11397 Map Oak to expanded JCR name in
NameMapper"
6acf9ec316 is described below
commit 6acf9ec31646cb6b4d7b8cec8553945210a5617e
Author: Julian Reschke <[email protected]>
AuthorDate: Sat Feb 1 17:35:23 2025 +0100
Revert "OAK-11397 Map Oak to expanded JCR name in NameMapper"
This reverts commit 2502f4c343412c48ef2ae5de5fa589dfb28c12cd.
---
.../apache/jackrabbit/oak/namepath/NameMapper.java | 23 ++-----------
.../jackrabbit/oak/namepath/NamePathMapper.java | 12 -------
.../apache/jackrabbit/oak/namepath/PathMapper.java | 16 ---------
.../jackrabbit/oak/namepath/package-info.java | 2 +-
.../oak/namepath/impl/GlobalNameMapper.java | 38 ++--------------------
.../oak/namepath/impl/NamePathMapperImpl.java | 23 ++-----------
.../oak/namepath/impl/GlobalNameMapperTest.java | 31 ++++--------------
.../oak/namepath/impl/NamePathMapperImplTest.java | 20 ------------
.../jackrabbit/oak/jcr/session/SessionContext.java | 6 ----
9 files changed, 16 insertions(+), 155 deletions(-)
diff --git
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java
index c2d796c1f4..ec62432521 100644
---
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java
+++
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java
@@ -63,35 +63,16 @@ public interface NameMapper {
Map<String, String> getSessionLocalMappings();
/**
- * Returns the JCR name in qualified form for the given Oak name. The
given name is
+ * Returns the JCR name for the given Oak name. The given name is
* expected to have come from a valid Oak repository that contains
* only valid names with proper namespace mappings. If that's not
* the case, either a programming error or a repository corruption
* has occurred and an appropriate unchecked exception gets thrown.
*
* @param oakName Oak name
- * @return JCR name in qualified form
- *
- * @see <a
href="https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.2.5.2%20Qualified%20Form">JCR
2.0, 3.2.5.2 Qualifed Form</a>
+ * @return JCR name
*/
@NotNull
String getJcrName(@NotNull String oakName);
- /**
- * Returns the JCR name in expanded form for the given Oak name. The given
name is
- * expected to have come from a valid Oak repository that contains
- * only valid names with proper namespace mappings. If that's not
- * the case, either a programming error or a repository corruption
- * has occurred and an appropriate unchecked exception gets thrown.
- *
- * @param oakName Oak name
- * @return JCR name in expanded form
- * @since Oak 1.76.0
- * @throws IllegalStateException in case the namespace URI for the given
Oak name cannot be resolved
- *
- * @see <a
href="https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.2.5.1%20Expanded%20Form">JCR
2.0, 3.2.5.1 Expanded Form</a>
- */
- @NotNull
- String getExpandedJcrName(@NotNull String oakName);
-
}
diff --git
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapper.java
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapper.java
index 5e756e0dbe..5ab341a0c2 100644
---
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapper.java
+++
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapper.java
@@ -62,12 +62,6 @@ public interface NamePathMapper extends NameMapper,
PathMapper {
return oakName;
}
- @NotNull
- @Override
- public String getExpandedJcrName(@NotNull String oakName) {
- throw new UnsupportedOperationException("Cannot create expanded
JCR name as no namespace mappings are available");
- }
-
@Override
public String getOakPath(String jcrPath) {
return jcrPath;
@@ -78,11 +72,5 @@ public interface NamePathMapper extends NameMapper,
PathMapper {
public String getJcrPath(String oakPath) {
return oakPath;
}
-
- @NotNull
- @Override
- public String getExpandedJcrPath(@NotNull String oakPath) {
- throw new UnsupportedOperationException("Cannot create expanded
JCR path as no namespace mappings are available");
- }
}
}
diff --git
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
index 5e451f3059..d99cdb41b2 100644
---
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
+++
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java
@@ -56,20 +56,4 @@ public interface PathMapper {
@NotNull
String getJcrPath(String oakPath);
- /**
- * Returns the JCR path in expanded form for the given Oak path. The given
path is
- * expected to have come from a valid Oak repository that contains
- * only valid names with proper namespace mappings. If that's not
- * the case, either a programming error or a repository corruption
- * has occurred and an appropriate unchecked exception gets thrown.
- *
- * @param oakPath Oak path
- * @return JCR path in expanded form
- * @since Oak 1.76.0
- * @throws IllegalStateException in case the namespace URI for the given
Oak name cannot be resolved
- *
- * @see <a
href="https://s.apache.org/jcr-2.0-spec/3_Repository_Model.html#3.2.5.1%20Expanded%20Form">JCR
2.0, 3.2.5.1 Expanded Form</a>
- */
- @NotNull
- String getExpandedJcrPath(@NotNull String oakPath);
}
diff --git
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java
index 746dffb91b..b372e71426 100644
---
a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java
+++
b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/namepath/package-info.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.1.0")
+@Version("1.0.1")
package org.apache.jackrabbit.oak.namepath;
import org.osgi.annotation.versioning.Version;
diff --git
a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java
b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java
index b584254450..d2c54d12c2 100644
---
a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java
+++
b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapper.java
@@ -67,15 +67,10 @@ public class GlobalNameMapper implements NameMapper {
protected static boolean isExpandedName(String name) {
if (name.startsWith("{")) {
int brace = name.indexOf('}', 1);
- if (brace != -1) {
- String namespace = name.substring(1, brace);
- // the empty namespace is valid as well, otherwise it always
contains a colon (as it is a URI)
- if (namespace.isEmpty() || namespace.indexOf(':') != -1) {
- return true;
- }
- }
+ return brace != -1 && name.substring(1, brace).indexOf(':') != -1;
+ } else {
+ return false;
}
- return false;
}
private final Root root;
@@ -128,33 +123,6 @@ public class GlobalNameMapper implements NameMapper {
return oakName;
}
- @Override
- @NotNull
- public String getExpandedJcrName(@NotNull String oakName) {
- String qualifiedName = getJcrName(oakName); // sanity check
- String uri;
- final String localName;
- int colon = qualifiedName.indexOf(':');
- if (colon > 0) {
- String oakPrefix = qualifiedName.substring(0, colon);
- // local mapping must take precedence...
- uri = getSessionLocalMappings().get(oakPrefix);
- if (uri == null) {
- // ...over global mappings
- uri = getNamespacesProperty(oakPrefix);
- }
- if (uri == null) {
- throw new IllegalStateException(
- "No namespace mapping found for " + oakName);
- }
- localName = qualifiedName.substring(colon + 1);
- } else {
- uri = "";
- localName = qualifiedName;
- }
- return "{" + uri + "}" + localName;
- }
-
@Override @Nullable
public String getOakNameOrNull(@NotNull String jcrName) {
if (jcrName.startsWith("{")) {
diff --git
a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImpl.java
b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImpl.java
index c38c2cbeb5..3f9c3451c9 100644
---
a/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImpl.java
+++
b/oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImpl.java
@@ -19,8 +19,6 @@ package org.apache.jackrabbit.oak.namepath.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.function.BooleanSupplier;
-import java.util.function.UnaryOperator;
import javax.jcr.RepositoryException;
@@ -75,12 +73,6 @@ public class NamePathMapperImpl implements NamePathMapper {
return nameMapper.getJcrName(oakName);
}
- @NotNull
- @Override
- public String getExpandedJcrName(@NotNull String oakName) {
- return nameMapper.getExpandedJcrName(oakName);
- }
-
@Override @NotNull
public Map<String, String> getSessionLocalMappings() {
return nameMapper.getSessionLocalMappings();
@@ -168,23 +160,14 @@ public class NamePathMapperImpl implements NamePathMapper
{
@Override
@NotNull
public String getJcrPath(final String oakPath) {
- return getJcrPath(oakPath, nameMapper::getJcrName, () ->
nameMapper.getSessionLocalMappings().isEmpty());
- }
-
- @Override
- @NotNull
- public String getExpandedJcrPath(@NotNull String oakPath) {
- return getJcrPath(oakPath, nameMapper::getExpandedJcrName, () ->
false);
- }
-
- public String getJcrPath(final String oakPath, final UnaryOperator<String>
mapFunction, final BooleanSupplier shouldSkipMappingFunction) {
if ("/".equals(oakPath)) {
// avoid the need to special case the root path later on
return "/";
} else if (oakPath.isEmpty()) {
// empty path: map to "."
return ".";
- } else if (shouldSkipMappingFunction.getAsBoolean()) {
+ } else if (nameMapper.getSessionLocalMappings().isEmpty()) {
+ // no local namespace mappings
return oakPath;
}
@@ -202,7 +185,7 @@ public class NamePathMapperImpl implements NamePathMapper {
@Override
public boolean name(String name, int index) {
- String p = mapFunction.apply(name);
+ String p = nameMapper.getJcrName(name);
if (index == 0) {
elements.add(p);
} else {
diff --git
a/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapperTest.java
b/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapperTest.java
index bd1884aac0..d0eade307b 100644
---
a/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapperTest.java
+++
b/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/GlobalNameMapperTest.java
@@ -46,7 +46,6 @@ public class GlobalNameMapperTest {
assertEquals("", mapper.getJcrName(""));
assertEquals("", mapper.getOakNameOrNull(""));
assertEquals("", mapper.getOakName(""));
- assertEquals("{}", mapper.getExpandedJcrName(""));
}
@@ -83,11 +82,6 @@ public class GlobalNameMapperTest {
for (String jcrName : jcrToOak.keySet()) {
assertEquals(jcrToOak.get(jcrName),
mapper.getOakNameOrNull(jcrName));
assertEquals(jcrToOak.get(jcrName), mapper.getOakName(jcrName));
- if (GlobalNameMapper.isExpandedName(jcrName)) {
- assertEquals(jcrName,
mapper.getExpandedJcrName(jcrToOak.get(jcrName)));
- } else {
- assertEquals("{}"+jcrName,
mapper.getExpandedJcrName(jcrToOak.get(jcrName)));
- }
}
assertNull(mapper.getOakNameOrNull("{http://www.example.com/bar}bar"));
@@ -101,28 +95,17 @@ public class GlobalNameMapperTest {
@Test
public void testPrefixedNames() throws RepositoryException {
- Map<String, String> prefixedToExpanded = new HashMap<>();
- prefixedToExpanded.put("nt:base",
"{http://www.jcp.org/jcr/nt/1.0}base");
- prefixedToExpanded.put("foo: bar", "{http://www.example.com/foo} bar");
- prefixedToExpanded.put("quu:bar ", "{http://www.example.com/quu}bar ");
+ List<String> prefixed = new ArrayList<String>();
+ prefixed.add("nt:base");
+ prefixed.add("foo: bar");
+ prefixed.add("quu:bar ");
+ // unknown prefixes are only captured by the NameValidator
+ prefixed.add("unknown:bar");
- for (String name : prefixedToExpanded.keySet()) {
+ for (String name : prefixed) {
assertEquals(name, mapper.getOakNameOrNull(name));
assertEquals(name, mapper.getOakName(name));
assertEquals(name, mapper.getJcrName(name));
- assertEquals(prefixedToExpanded.get(name),
mapper.getExpandedJcrName(name));
- }
-
- // unknown prefixes are only captured by the NameValidator
- String unknownPrefix = "unknown:bar";
- assertEquals(unknownPrefix, mapper.getOakNameOrNull(unknownPrefix));
- assertEquals(unknownPrefix, mapper.getOakName(unknownPrefix));
- assertEquals(unknownPrefix, mapper.getJcrName(unknownPrefix));
- try {
- mapper.getExpandedJcrName(unknownPrefix);
- fail("IllegalStateException expected");
- } catch (IllegalStateException e) {
- // successs
}
}
}
diff --git
a/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImplTest.java
b/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImplTest.java
index 6aae24b8c9..190bd2e4bf 100644
---
a/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImplTest.java
+++
b/oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/impl/NamePathMapperImplTest.java
@@ -135,26 +135,6 @@ public class NamePathMapperImplTest {
}
}
- @Test
- public void testOakToExpandedJcr() {
- assertEquals("/{http://www.example.com/foo}bar",
npMapper.getExpandedJcrPath("/oak-foo:bar"));
-
assertEquals("/{http://www.example.com/foo}bar/{http://www.example.com/quu}qux",
npMapper.getExpandedJcrPath("/oak-foo:bar/oak-quu:qux"));
- assertEquals("{http://www.example.com/foo}bar",
npMapper.getExpandedJcrPath("oak-foo:bar"));
- assertEquals(".", npMapper.getExpandedJcrPath(""));
-
- try {
-
npMapper.getExpandedJcrPath("{http://www.jcp.org/jcr/nt/1.0}unstructured");
- fail("expanded name should not be accepted");
- } catch (IllegalArgumentException expected) {
- }
-
- try {
-
npMapper.getExpandedJcrPath("foobar/{http://www.jcp.org/jcr/1.0}content");
- fail("expanded name should not be accepted");
- } catch (IllegalArgumentException expected) {
- }
- }
-
@Test
public void testInvalidJcrPaths() {
String[] paths = {
diff --git
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
index 902e2200c5..fadd201209 100644
---
a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
+++
b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
@@ -353,12 +353,6 @@ public class SessionContext implements NamePathMapper {
return namePathMapper.getJcrName(oakName);
}
- @NotNull
- @Override
- public String getExpandedJcrName(@NotNull String oakName) {
- return namePathMapper.getExpandedJcrName(oakName);
- }
-
@Override
@Nullable
public String getOakPath(String jcrPath) {