-/*
- * 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;
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;
* @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) {
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);
}
/**