X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api%2Fsrc%2Forg%2Fargeo%2Fapi%2FNodeUtils.java;h=0370511384317a3f6d4dc200171b79c67ca2c7ca;hb=1a0d5ca243bc86a5f54448186178e5fb04c623e9;hp=e156e1f172646f683aa11ebc5957dbd3737b6cca;hpb=e7dc62c485696931a3e048d9102a7c86f9323b92;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.api/src/org/argeo/api/NodeUtils.java b/org.argeo.api/src/org/argeo/api/NodeUtils.java index e156e1f17..037051138 100644 --- a/org.argeo.api/src/org/argeo/api/NodeUtils.java +++ b/org.argeo.api/src/org/argeo/api/NodeUtils.java @@ -1,18 +1,3 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.argeo.api; import java.security.PrivilegedAction; @@ -21,13 +6,11 @@ import java.util.Map; import javax.jcr.NoSuchWorkspaceException; import javax.jcr.Node; -import javax.jcr.NodeIterator; +import javax.jcr.Property; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.RepositoryFactory; import javax.jcr.Session; -import javax.jcr.query.Query; -import javax.jcr.query.QueryResult; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; import javax.security.auth.AuthPermission; @@ -192,24 +175,24 @@ public class NodeUtils { * @return one single node or null if none was found * @throws ArgeoJcrException if more than one node was found */ - private static Node querySingleNode(Query query) { - NodeIterator nodeIterator; - try { - QueryResult queryResult = query.execute(); - nodeIterator = queryResult.getNodes(); - } catch (RepositoryException e) { - throw new RuntimeException("Cannot execute query " + query, e); - } - Node node; - if (nodeIterator.hasNext()) - node = nodeIterator.nextNode(); - else - return null; - - if (nodeIterator.hasNext()) - throw new RuntimeException("Query returned more than one node."); - return node; - } +// private static Node querySingleNode(Query query) { +// NodeIterator nodeIterator; +// try { +// QueryResult queryResult = query.execute(); +// nodeIterator = queryResult.getNodes(); +// } catch (RepositoryException e) { +// throw new RuntimeException("Cannot execute query " + query, e); +// } +// Node node; +// if (nodeIterator.hasNext()) +// node = nodeIterator.nextNode(); +// else +// return null; +// +// if (nodeIterator.hasNext()) +// throw new RuntimeException("Query returned more than one node."); +// return node; +// } /** Returns the home node of the session user or null if none was found. */ public static Node getUserHome(Session session) { @@ -217,15 +200,37 @@ public class NodeUtils { return getUserHome(session, userID); } + /** Whether this node is the home of the user of the underlying session. */ + public static boolean isUserHome(Node node) { + try { + String userID = node.getSession().getUserID(); + return node.hasProperty(Property.JCR_ID) && node.getProperty(Property.JCR_ID).getString().equals(userID); + } catch (RepositoryException e) { + throw new IllegalStateException(e); + } + } + /** * Translate the path to this node into a path containing the name of the * repository and the name of the workspace. */ - public static String getDataPath(String cn, Node node) throws RepositoryException { + public static String getDataPath(String cn, Node node) { assert node != null; StringBuilder buf = new StringBuilder(NodeConstants.PATH_DATA); - return buf.append('/').append(cn).append('/').append(node.getSession().getWorkspace().getName()) - .append(node.getPath()).toString(); + try { + return buf.append('/').append(cn).append('/').append(node.getSession().getWorkspace().getName()) + .append(node.getPath()).toString(); + } catch (RepositoryException e) { + throw new IllegalStateException("Cannot get data path for " + node + " in repository " + cn, e); + } + } + + /** + * Translate the path to this node into a path containing the name of the + * repository and the name of the workspace. + */ + public static String getDataPath(Node node) { + return getDataPath(NodeConstants.NODE, node); } /**