Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/WorkspaceImpl.java (revision ) @@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.jcr.nodetype.NodeTypeManagerImpl; import org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl; import org.apache.jackrabbit.oak.jcr.security.privileges.PrivilegeManagerImpl; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.ContentHandler; @@ -90,8 +91,13 @@ throw new UnsupportedRepositoryOperationException("Not implemented."); } + try { - sessionDelegate.copy(sessionDelegate.getOakPath(srcAbsPath), sessionDelegate.getOakPath(destAbsPath)); - } + sessionDelegate.copy(sessionDelegate.getOakPath(srcAbsPath), sessionDelegate.getOakPath(destAbsPath)); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } + } @SuppressWarnings("deprecation") @Override @@ -108,7 +114,12 @@ ensureSupportedOption(Repository.LEVEL_2_SUPPORTED); ensureIsAlive(); + try { - sessionDelegate.move(sessionDelegate.getOakPath(srcAbsPath), sessionDelegate.getOakPath(destAbsPath), false); + sessionDelegate.move(sessionDelegate.getOakPath(srcAbsPath), sessionDelegate.getOakPath(destAbsPath), false); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } } @Override \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/value/ValueImpl.java (revision ) @@ -18,6 +18,8 @@ import org.apache.commons.io.IOUtils; import org.apache.jackrabbit.oak.api.CoreValue; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.util.ISO8601; import org.slf4j.Logger; @@ -148,22 +150,30 @@ */ @Override public String getString() throws RepositoryException { + try { - switch (getType()) { - case PropertyType.NAME : - return namePathMapper.getJcrName(value.toString()); - case PropertyType.PATH: - return namePathMapper.getJcrPath(value.toString()); - case PropertyType.BINARY: - InputStream stream = getStream(); - try { - return IOUtils.toString(stream, "UTF-8"); - } catch (IOException e) { - throw new RepositoryException("conversion from stream to string failed", e); - } finally { - IOUtils.closeQuietly(stream); - } - default: - return value.toString(); + switch (getType()) { + case PropertyType.NAME : + return namePathMapper.getJcrName(value.toString()); + case PropertyType.PATH: + return namePathMapper.getJcrPath(value.toString()); + case PropertyType.BINARY: + InputStream stream = getStream(); + try { + return IOUtils.toString(stream, "UTF-8"); + } catch (IOException e) { + throw new RepositoryException("conversion from stream to string failed", e); + } finally { + IOUtils.closeQuietly(stream); + } + default: + return value.toString(); + } + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); } } \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/UserManagerImpl.java (revision ) @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.jcr.SessionDelegate; import org.apache.jackrabbit.oak.jcr.security.user.action.AuthorizableAction; import org.apache.jackrabbit.oak.jcr.value.ValueConverter; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -356,7 +357,7 @@ return sessionDelegate.getSession(); } - MembershipManager getMembershipManager() { + MembershipManager getMembershipManager() throws RepositoryException { if (membershipManager == null) { int splitSize = config.getConfigValue(UserManagerConfig.PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE, 0); if (splitSize < 4) { @@ -388,6 +389,11 @@ } private String getInternalPath(Node node) throws RepositoryException { + try { - return sessionDelegate.getOakPath(node.getPath()); + return sessionDelegate.getOakPath(node.getPath()); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } } } \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java (revision ) @@ -16,6 +16,17 @@ */ package org.apache.jackrabbit.oak.jcr.nodetype; +import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.NameMapper; + +import javax.jcr.RepositoryException; +import javax.jcr.Value; +import javax.jcr.nodetype.NodeDefinition; +import javax.jcr.nodetype.NodeType; +import javax.jcr.nodetype.NodeTypeIterator; +import javax.jcr.nodetype.NodeTypeManager; +import javax.jcr.nodetype.PropertyDefinition; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -25,17 +36,6 @@ import java.util.Queue; import java.util.Set; -import javax.jcr.RepositoryException; -import javax.jcr.Value; -import javax.jcr.nodetype.NodeDefinition; -import javax.jcr.nodetype.NodeType; -import javax.jcr.nodetype.NodeTypeIterator; -import javax.jcr.nodetype.NodeTypeManager; -import javax.jcr.nodetype.PropertyDefinition; - -import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter; -import org.apache.jackrabbit.oak.namepath.NameMapper; - class NodeTypeImpl implements NodeType { private final NodeTypeManager manager; @@ -81,39 +81,52 @@ @Override public String getName() { + try { - return mapper.getJcrName(name); - } + return mapper.getJcrName(name); + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); + } + } @Override public String[] getDeclaredSupertypeNames() { + try { - List names = new ArrayList(); - boolean addNtBase = !mixin; - for (String name : declaredSuperTypeNames) { - + List names = new ArrayList(); + boolean addNtBase = !mixin; + for (String name : declaredSuperTypeNames) { + - String jcrName = mapper.getJcrName(name); + String jcrName = null; + jcrName = mapper.getJcrName(name); - - // TODO: figure out a more performant way - // check of at least one declared super type being a non-mixin type - if (addNtBase) { - try { - NodeType nt = manager.getNodeType(jcrName); - if (! nt.isMixin()) { - addNtBase = false; - } - } - catch (RepositoryException ex) { - // ignored - } - } - names.add(jcrName); - } - - if (addNtBase) { - names.add(mapper.getJcrName("nt:base")); - } - - return names.toArray(new String[names.size()]); - } + + // TODO: figure out a more performant way + // check of at least one declared super type being a non-mixin type + if (addNtBase) { + try { + NodeType nt = manager.getNodeType(jcrName); + if (! nt.isMixin()) { + addNtBase = false; + } + } + catch (RepositoryException ex) { + // ignored + } + } + names.add(jcrName); + } + + if (addNtBase) { + names.add(mapper.getJcrName("nt:base")); + } + + return names.toArray(new String[names.size()]); + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); + } + } @Override public boolean isAbstract() { @@ -137,10 +150,16 @@ @Override public String getPrimaryItemName() { + try { - if (primaryItemName != null) { - return mapper.getJcrName(primaryItemName); - } else { - return null; + if (primaryItemName != null) { + return mapper.getJcrName(primaryItemName); + } else { + return null; + } + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); } } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NameMapper.java (revision ) @@ -19,8 +19,8 @@ public interface NameMapper { // TODO consider error handling - String getOakName(String jcrName); + String getOakName(String jcrName) throws NoSuchNameException; // TODO consider error handling - String getJcrName(String oakName); + String getJcrName(String oakName) throws NoSuchNameException; } Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java (revision ) @@ -17,6 +17,8 @@ package org.apache.jackrabbit.oak.jcr; import org.apache.jackrabbit.commons.AbstractItem; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -172,24 +174,39 @@ return sessionDelegate.getValueFactory(); } - String toOakName(String jcrName) { + String toOakName(String jcrName) throws RepositoryException { + try { - return sessionDelegate.getNamePathMapper().getOakName(jcrName); - } + return sessionDelegate.getNamePathMapper().getOakName(jcrName); + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } + } String toOakPath(String jcrPath) throws RepositoryException { try { return sessionDelegate.getOakPath(jcrPath); - } catch (IllegalArgumentException ex) { - // TODO we shouldn't have to catch this one - throw new RepositoryException(ex); } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); - } + } + } - String toJcrName(String oakName) { + String toJcrName(String oakName) throws RepositoryException { + try { - return sessionDelegate.getNamePathMapper().getJcrName(oakName); - } + return sessionDelegate.getNamePathMapper().getJcrName(oakName); + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } + } - String toJcrPath(String oakPath) { + String toJcrPath(String oakPath) throws RepositoryException { + try { - return sessionDelegate.getNamePathMapper().getJcrPath(oakPath); + return sessionDelegate.getNamePathMapper().getJcrPath(oakPath); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } } } \ No newline at end of file Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/AbstractNameMapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/AbstractNameMapper.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/AbstractNameMapper.java (revision ) @@ -25,7 +25,7 @@ protected abstract String getOakPrefixFromURI(String uri); @Override - public String getOakName(String jcrName) { + public String getOakName(String jcrName) throws NoSuchNameException { int pos = jcrName.indexOf(':'); @@ -57,7 +57,7 @@ String name = jcrName.substring(pos + 1); String oakPrefix = getOakPrefix(pref); if (oakPrefix == null) { - throw new IllegalArgumentException("prefix '" + pref + "' is not mapped" ); + throw new NoSuchNameException("prefix '" + pref + "' is not mapped" ); } else { return oakPrefix + ':' + name; } @@ -65,7 +65,7 @@ } @Override - public String getJcrName(String oakName) { + public String getJcrName(String oakName) throws NoSuchNameException { int pos = oakName.indexOf(':'); if (pos < 0) { // non-prefixed @@ -82,7 +82,7 @@ String jcrPrefix = getJcrPrefix(pref); if (jcrPrefix == null) { - throw new IllegalStateException("invalid oak name: " + oakName); + throw new NoSuchNameException("invalid oak name: " + oakName); } else { return jcrPrefix + ':' + name; } Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrNameParser.java (revision ) @@ -46,7 +46,7 @@ * @param message Details about the error. * @see JcrNameParser#parse(String, org.apache.jackrabbit.oak.namepath.JcrNameParser.Listener) */ - void error(String message); + void error(String message) throws InvalidNamePathException; /** * Informs this listener about the result of {@link JcrNameParser#parse(String, org.apache.jackrabbit.oak.namepath.JcrNameParser.Listener)} @@ -54,7 +54,7 @@ * @param name The resulting name upon successful completion of * {@link JcrNameParser#parse(String, org.apache.jackrabbit.oak.namepath.JcrNameParser.Listener)} */ - void name(String name); + void name(String name) throws InvalidNamePathException; } /** @@ -70,7 +70,7 @@ * @param jcrName The jcr name to be parsed. * @param listener The listener to be informed about success or failure. */ - public static void parse(String jcrName, Listener listener) { + public static void parse(String jcrName, Listener listener) throws InvalidNamePathException { // trivial check int len = jcrName == null ? 0 : jcrName.length(); if (len == 0) { Index: oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java (revision 1335404) +++ oak-core/src/test/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImplTest.java (revision ) @@ -33,7 +33,7 @@ private NamePathMapper npMapper = new NamePathMapperImpl(mapper); @Test - public void testValidIdentifierPath() { + public void testValidIdentifierPath() throws InvalidNamePathException { String idPath = '[' + UUID.randomUUID().toString()+ ']'; npMapper.getOakPath(idPath); } @@ -55,7 +55,7 @@ } @Test - public void testJcrToOak() { + public void testJcrToOak() throws InvalidNamePathException { assertEquals("/", npMapper.getOakPath("/")); assertEquals("foo", npMapper.getOakPath("{}foo")); assertEquals("/oak-foo:bar", npMapper.getOakPath("/foo:bar")); @@ -69,7 +69,7 @@ } @Test - public void testOakToJcr() { + public void testOakToJcr() throws InvalidNamePathException { assertEquals("/jcr-foo:bar", npMapper.getJcrPath("/foo:bar")); assertEquals("/jcr-foo:bar/jcr-quu:qux", npMapper.getJcrPath("/foo:bar/quu:qux")); \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/ItemDefinitionImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/ItemDefinitionImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/ItemDefinitionImpl.java (revision ) @@ -16,11 +16,12 @@ */ package org.apache.jackrabbit.oak.jcr.nodetype; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.NameMapper; + import javax.jcr.nodetype.ItemDefinition; import javax.jcr.nodetype.NodeType; -import org.apache.jackrabbit.oak.namepath.NameMapper; - class ItemDefinitionImpl implements ItemDefinition { private final NodeType type; @@ -56,7 +57,13 @@ @Override public String getName() { + try { - return mapper.getJcrName(name); + return mapper.getJcrName(name); + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); + } } @Override Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/JcrPathParser.java (revision ) @@ -35,16 +35,16 @@ private JcrPathParser() { } - + interface Listener extends JcrNameParser.Listener { - void root(); - void identifier(String identifier); - void current(); - void parent(); - void index(int index); + void root() throws InvalidNamePathException; + void identifier(String identifier) throws InvalidNamePathException; + void current() throws InvalidNamePathException; + void parent() throws InvalidNamePathException; + void index(int index) throws InvalidNamePathException; } - public static void parse(String jcrPath, Listener listener) { + public static void parse(String jcrPath, Listener listener) throws InvalidNamePathException { // check for length int len = jcrPath == null ? 0 : jcrPath.length(); Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/PathMapper.java (revision ) @@ -21,8 +21,8 @@ */ public interface PathMapper { - String getOakPath(String jcrPath); + String getOakPath(String jcrPath) throws InvalidNamePathException; - String getJcrPath(String oakPath); + String getJcrPath(String oakPath) throws InvalidNamePathException; } Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java (revision ) @@ -16,15 +16,17 @@ */ package org.apache.jackrabbit.oak.jcr.nodetype; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader; +import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory; +import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder; +import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder; +import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder; +import org.apache.jackrabbit.commons.cnd.ParseException; +import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter; +import org.apache.jackrabbit.oak.api.CoreValue; +import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.NameMapper; import javax.jcr.RepositoryException; import javax.jcr.UnsupportedRepositoryOperationException; @@ -38,18 +40,16 @@ import javax.jcr.nodetype.NodeTypeTemplate; import javax.jcr.nodetype.PropertyDefinition; import javax.jcr.nodetype.PropertyDefinitionTemplate; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; -import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader; -import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory; -import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeDefinitionBuilder; -import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractNodeTypeDefinitionBuilder; -import org.apache.jackrabbit.commons.cnd.DefinitionBuilderFactory.AbstractPropertyDefinitionBuilder; -import org.apache.jackrabbit.commons.cnd.ParseException; -import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter; -import org.apache.jackrabbit.oak.api.CoreValue; -import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl; -import org.apache.jackrabbit.oak.namepath.NameMapper; - public class NodeTypeManagerImpl implements NodeTypeManager { private final NameMapper mapper; @@ -90,17 +90,28 @@ @Override public boolean hasNodeType(String name) throws RepositoryException { init(); + try { - return typemap.containsKey(mapper.getOakName(name)); - } + return typemap.containsKey(mapper.getOakName(name)); + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } + } @Override public NodeType getNodeType(String name) throws RepositoryException { + try { - init(); + init(); - NodeType type = typemap.get(mapper.getOakName(name)); + NodeType type = null; + type = typemap.get(mapper.getOakName(name)); - if (type == null) { - throw new NoSuchNodeTypeException("Unknown node type: " + name); - } - return type; + if (type == null) { + throw new NoSuchNodeTypeException("Unknown node type: " + name); + } + return type; + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } } @Override Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java (revision 1335404) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NamePathMapperImpl.java (revision ) @@ -40,18 +40,18 @@ //---------------------------------------------------------< NameMapper >--- @Override - public String getOakName(String jcrName) { + public String getOakName(String jcrName) throws NoSuchNameException { return nameMapper.getOakName(jcrName); } @Override - public String getJcrName(String oakName) { + public String getJcrName(String oakName) throws NoSuchNameException { return nameMapper.getJcrName(oakName); } //---------------------------------------------------------< PathMapper >--- @Override - public String getOakPath(String jcrPath) { + public String getOakPath(String jcrPath) throws InvalidNamePathException { final List elements = new ArrayList(); if ("/".equals(jcrPath)) { @@ -64,17 +64,17 @@ // TODO: replace RuntimeException by something that oak-jcr can deal with (e.g. ValueFactory) @Override - public void root() { + public void root() throws InvalidNamePathException { if (!elements.isEmpty()) { - throw new RuntimeException("/ on non-empty path"); + throw new InvalidNamePathException("/ on non-empty path"); } elements.add(""); } @Override - public void identifier(String identifier) { + public void identifier(String identifier) throws InvalidNamePathException { if (!elements.isEmpty()) { - throw new RuntimeException("[identifier] on non-empty path"); + throw new InvalidNamePathException("[identifier] on non-empty path"); } elements.add(identifier); // todo resolve identifier // todo seal @@ -86,28 +86,34 @@ } @Override - public void parent() { + public void parent() throws InvalidNamePathException { if (elements.isEmpty()) { - throw new RuntimeException(".. of empty path"); + throw new InvalidNamePathException(".. of empty path"); } elements.remove(elements.size() - 1); } @Override - public void index(int index) { + public void index(int index) throws InvalidNamePathException { if (index > 1) { - throw new RuntimeException("index > 1"); + throw new InvalidNamePathException("index > 1"); } } @Override - public void error(String message) { - throw new RuntimeException(message); + public void error(String message) throws InvalidNamePathException { + throw new InvalidNamePathException(message); } @Override - public void name(String name) { - String p = nameMapper.getOakName(name); + public void name(String name) throws InvalidNamePathException { + String p = null; + try { + p = nameMapper.getOakName(name); + } + catch (NoSuchNameException e) { + throw new InvalidNamePathException(e); + } elements.add(p); } }; @@ -133,7 +139,7 @@ } @Override - public String getJcrPath(String oakPath) { + public String getJcrPath(String oakPath) throws InvalidNamePathException { final List elements = new ArrayList(); if ("/".equals(oakPath)) { @@ -143,17 +149,17 @@ JcrPathParser.Listener listener = new JcrPathParser.Listener() { @Override - public void root() { + public void root() throws InvalidNamePathException { if (!elements.isEmpty()) { - throw new RuntimeException("/ on non-empty path"); + throw new InvalidNamePathException("/ on non-empty path"); } elements.add(""); } @Override - public void identifier(String identifier) { + public void identifier(String identifier) throws InvalidNamePathException { if (!elements.isEmpty()) { - throw new RuntimeException("[identifier] on non-empty path"); + throw new InvalidNamePathException("[identifier] on non-empty path"); } elements.add(identifier); // todo resolve identifier // todo seal @@ -165,28 +171,34 @@ } @Override - public void parent() { + public void parent() throws InvalidNamePathException { if (elements.isEmpty()) { - throw new RuntimeException(".. of empty path"); + throw new InvalidNamePathException(".. of empty path"); } elements.remove(elements.size() - 1); } @Override - public void index(int index) { + public void index(int index) throws InvalidNamePathException { if (index > 1) { - throw new RuntimeException("index > 1"); + throw new InvalidNamePathException("index > 1"); } } @Override - public void error(String message) { - throw new RuntimeException(message); + public void error(String message) throws InvalidNamePathException { + throw new InvalidNamePathException(message); } @Override - public void name(String name) { - String p = nameMapper.getJcrName(name); + public void name(String name) throws InvalidNamePathException { + String p = null; + try { + p = nameMapper.getJcrName(name); + } + catch (NoSuchNameException e) { + throw new InvalidNamePathException(e); + } elements.add(p); } }; \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionImpl.java (revision ) @@ -20,6 +20,7 @@ import org.apache.jackrabbit.api.security.principal.PrincipalManager; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.jackrabbit.commons.AbstractSession; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.ContentHandler; @@ -120,8 +121,14 @@ @Override public void move(String srcAbsPath, String destAbsPath) throws RepositoryException { ensureIsAlive(); + + try { - dlg.move(dlg.getOakPath(srcAbsPath), dlg.getOakPath(destAbsPath), true); - } + dlg.move(dlg.getOakPath(srcAbsPath), dlg.getOakPath(destAbsPath), true); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } + } @Override public void save() throws RepositoryException { @@ -157,9 +164,14 @@ ensureIsAlive(); // TODO + try { - String internalPath = dlg.getOakPath(parentAbsPath); - throw new UnsupportedRepositoryOperationException("TODO: Session.getImportContentHandler"); - } + String internalPath = dlg.getOakPath(parentAbsPath); + throw new UnsupportedRepositoryOperationException("TODO: Session.getImportContentHandler"); + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } + } /** * @see javax.jcr.Session#addLockToken(String) @@ -200,10 +212,15 @@ @Override public boolean hasPermission(String absPath, String actions) throws RepositoryException { ensureIsAlive(); + try { - String internalPath = dlg.getOakPath(absPath); + String internalPath = dlg.getOakPath(absPath); + return false; + } + catch (InvalidNamePathException e) { + throw new RepositoryException(e); + } // TODO - return false; } /** \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (revision ) @@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.jcr.namespace.NamespaceRegistryImpl; import org.apache.jackrabbit.oak.jcr.value.ValueFactoryImpl; import org.apache.jackrabbit.oak.namepath.AbstractNameMapper; +import org.apache.jackrabbit.oak.namepath.InvalidNamePathException; import org.apache.jackrabbit.oak.namepath.NameMapper; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.namepath.NamePathMapperImpl; @@ -149,13 +150,8 @@ * @return * @throws RepositoryException */ - public String getOakPath(String jcrPath) throws RepositoryException { - try { + public String getOakPath(String jcrPath) throws InvalidNamePathException { - return getNamePathMapper().getOakPath(jcrPath); + return getNamePathMapper().getOakPath(jcrPath); - } catch (IllegalArgumentException ex) { - // TODO we shouldn't have to catch this one - throw new RepositoryException(ex); - } } //------------------------------------------------------------< Workspace >--- Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/InvalidNamePathException.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/InvalidNamePathException.java (revision ) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/InvalidNamePathException.java (revision ) @@ -0,0 +1,15 @@ +package org.apache.jackrabbit.oak.namepath; + +public class InvalidNamePathException extends Exception { + public InvalidNamePathException(String message, Exception cause) { + super(message, cause); + } + + public InvalidNamePathException(String message) { + super(message); + } + + public InvalidNamePathException(Exception cause) { + super(cause); + } +} Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/MembershipManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/MembershipManager.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/security/user/MembershipManager.java (revision ) @@ -29,6 +29,7 @@ import org.apache.jackrabbit.commons.flat.TreeManager; import org.apache.jackrabbit.commons.iterator.RangeIteratorAdapter; import org.apache.jackrabbit.oak.jcr.SessionDelegate; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,12 +57,17 @@ private final String repMembers; - MembershipManager(UserManagerImpl userManager, int memberSplitSize, SessionDelegate sessionDelegate) { + MembershipManager(UserManagerImpl userManager, int memberSplitSize, SessionDelegate sessionDelegate) throws RepositoryException { this.userManager = userManager; this.sessionDelegate = sessionDelegate; this.memberSplitSize = memberSplitSize; + try { - repMembers = sessionDelegate.getNamePathMapper().getJcrName(AuthorizableImpl.REP_MEMBERS); + repMembers = sessionDelegate.getNamePathMapper().getJcrName(AuthorizableImpl.REP_MEMBERS); + } + catch (NoSuchNameException e) { + throw new RepositoryException(e); + } } Iterator getMembership(AuthorizableImpl authorizable, boolean includeInherited) throws RepositoryException { \ No newline at end of file Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeDefinitionImpl.java (revision ) @@ -16,13 +16,14 @@ */ package org.apache.jackrabbit.oak.jcr.nodetype; +import org.apache.jackrabbit.oak.namepath.NoSuchNameException; +import org.apache.jackrabbit.oak.namepath.NameMapper; + import javax.jcr.RepositoryException; import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.NodeTypeManager; -import org.apache.jackrabbit.oak.namepath.NameMapper; - class NodeDefinitionImpl extends ItemDefinitionImpl implements NodeDefinition { private final NodeTypeManager manager; @@ -60,12 +61,18 @@ @Override public String[] getRequiredPrimaryTypeNames() { + try { - String[] names = new String[requiredPrimaryTypeNames.length]; - for (int i = 0; i < names.length; i++) { - names[i] = mapper.getJcrName(requiredPrimaryTypeNames[i]); - } - return names; - } + String[] names = new String[requiredPrimaryTypeNames.length]; + for (int i = 0; i < names.length; i++) { + names[i] = mapper.getJcrName(requiredPrimaryTypeNames[i]); + } + return names; + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); + } + } @Override public NodeType getDefaultPrimaryType() { @@ -79,7 +86,13 @@ @Override public String getDefaultPrimaryTypeName() { + try { - return defaultPrimaryTypeName == null ? null : mapper.getJcrName(defaultPrimaryTypeName); + return defaultPrimaryTypeName == null ? null : mapper.getJcrName(defaultPrimaryTypeName); + } + catch (NoSuchNameException e) { + // todo log + throw new IllegalStateException(e); + } } @Override Index: oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NoSuchNameException.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NoSuchNameException.java (revision ) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/namepath/NoSuchNameException.java (revision ) @@ -0,0 +1,10 @@ +package org.apache.jackrabbit.oak.namepath; + +/** +* +*/ +public class NoSuchNameException extends Exception { + public NoSuchNameException(String message) { + super(message); + } +} Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (revision 1335404) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (revision ) @@ -387,9 +387,15 @@ new Predicate() { @Override public boolean evaluate(NodeDelegate state) { + try { - return ItemNameMatcher.matches( - toJcrPath(state.getName()), namePattern); - } + return ItemNameMatcher.matches( + toJcrPath(state.getName()), namePattern); + } + catch (RepositoryException e) { + // michid log + return false; + } + } }); return new NodeIteratorAdapter(nodeIterator(children)); @@ -403,8 +409,14 @@ new Predicate() { @Override public boolean evaluate(NodeDelegate state) { + try { - return ItemNameMatcher.matches(toJcrPath(state.getName()), nameGlobs); - } + return ItemNameMatcher.matches(toJcrPath(state.getName()), nameGlobs); + } + catch (RepositoryException e) { + // michid log + return false; + } + } }); return new NodeIteratorAdapter(nodeIterator(children)); @@ -438,9 +450,15 @@ new Predicate() { @Override public boolean evaluate(PropertyDelegate entry) { + try { - return ItemNameMatcher.matches( - toJcrPath(entry.getName()), namePattern); - } + return ItemNameMatcher.matches( + toJcrPath(entry.getName()), namePattern); + } + catch (RepositoryException e) { + // michid log + return false; + } + } }); return new PropertyIteratorAdapter(propertyIterator(properties)); @@ -454,8 +472,14 @@ new Predicate() { @Override public boolean evaluate(PropertyDelegate entry) { + try { - return ItemNameMatcher.matches( - toJcrPath(entry.getName()), nameGlobs); + return ItemNameMatcher.matches( + toJcrPath(entry.getName()), nameGlobs); + } + catch (RepositoryException e) { + // michid log + return false; + } } }); \ No newline at end of file