You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2005/07/03 13:58:39 UTC
svn commit: r208906 [1/5] - in /incubator/jackrabbit/trunk/contrib/phpcr: ./
PHPCR/ PHPCR/lock/ PHPCR/nodetype/ PHPCR/observation/ PHPCR/query/
PHPCR/util/ PHPCR/version/
Author: jukka
Date: Sun Jul 3 04:58:33 2005
New Revision: 208906
URL: http://svn.apache.org/viewcvs?rev=208906&view=rev
Log:
PHPCR: PHP port of JSR 170 contributed by Markus Nix
Added:
incubator/jackrabbit/trunk/contrib/phpcr/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/AccessDeniedException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Credentials.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IOException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalArgumentException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalStateException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidItemStateException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidSerializedDataException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Item.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemExistsException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemNotFoundException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemVisitor.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/LoginException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/MergeException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceRegistry.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchElementException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchWorkspaceException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Node.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NodeIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NumberFormatException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/PathNotFoundException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Property.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/PropertyIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/PropertyType.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/RangeIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ReferentialIntegrityException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Repository.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/RepositoryException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/SAXException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Session.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/SimpleCredentials.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/UnsupportedRepositoryOperationException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Value.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ValueFactory.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ValueFormatException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Workspace.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/lock/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/lock/Lock.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/lock/LockException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/ConstraintViolationException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/ItemDefinition.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/NoSuchNodeTypeException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/NodeDefinition.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/NodeType.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/NodeTypeIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/NodeTypeManager.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/nodetype/PropertyDefinition.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/Event.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/EventIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/EventListener.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/EventListenerIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/observation/ObservationManager.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/InvalidQueryException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/Query.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/QueryManager.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/QueryResult.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/Row.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/query/RowIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/util/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/util/ISO8601.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/util/TraversingItemVisitor.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/OnParentVersionAction.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/Version.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/VersionException.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/VersionHistory.php
incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/version/VersionIterator.php
incubator/jackrabbit/trunk/contrib/phpcr/package.xml (with props)
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/AccessDeniedException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/AccessDeniedException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/AccessDeniedException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/AccessDeniedException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * Exception thrown by access-related methods.
+ * <p>
+ * <b>Level 2 only</b>
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package PHPCR
+ */
+class AccessDeniedException extends RepositoryException
+{
+}
+
+?>
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Credentials.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Credentials.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Credentials.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Credentials.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+/**
+ * Interface for all credentials that may be passed to the
+ * {@link Repository#login(Credentials credentials, String workspaceName)} method.
+ * Serves as a marker interface that all repositories must implement when
+ * providing a credentials class. See {@link SimpleCredentials} for one example
+ * of such a class.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+interface Credentials
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IOException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IOException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IOException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IOException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,29 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+/**
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class IOException extends Exception
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalArgumentException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalArgumentException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalArgumentException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalArgumentException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+/**
+ * Exception thrown by access-related methods.
+ * <p>
+ * <b>Level 2 only</b>
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class IllegalArgumentException extends Exception
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalStateException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalStateException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalStateException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/IllegalStateException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+/**
+ * Exception thrown by access-related methods.
+ * <p>
+ * <b>Level 2 only</b>
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class IllegalStateException extends Exception
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidItemStateException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidItemStateException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidItemStateException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidItemStateException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class InvalidItemStateException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidSerializedDataException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidSerializedDataException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidSerializedDataException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/InvalidSerializedDataException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class InvalidSerializedDataException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Item.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Item.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Item.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/Item.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,385 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/Item.php';
+require_once 'PHPCR/Node.php';
+require_once 'PHPCR/Session.php';
+require_once 'PHPCR/RepositoryException.php';
+require_once 'PHPCR/AccessDeniedException.php';
+require_once 'PHPCR/ItemNotFoundException.php';
+require_once 'PHPCR/ReferentialIntegrityException.php';
+require_once 'PHPCR/nodetype/ConstraintViolationException.php';
+require_once 'PHPCR/InvalidItemStateException.php';
+require_once 'PHPCR/version/VersionException.php';
+require_once 'PHPCR/lock/LockException.php';
+require_once 'PHPCR/ItemVisitor.php';
+
+
+/**
+ * The <code>Item</code> is the base interface of <code>Node</code>
+ * and <code>Property</code>.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+interface Item
+{
+ /**
+ * Returns the absolute path to this item.
+ * If the path includes items that are same-name sibling nodes properties
+ * then those elements in the path will include the appropriate
+ * "square bracket" index notation (for example, <code>/a/b[3]/c</code>).
+ *
+ * @return the path of this <code>Item</code>.
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getPath();
+
+ /**
+ * Returns the name of this <code>Item</code>. The name of an item is the
+ * last element in its path, minus any square-bracket index that may exist.
+ * If this <code>Item</code> is the root node of the workspace (i.e., if
+ * <code>this.getDepth() == 0</code>), an empty string will be returned.
+ * <p>
+ *
+ * @return the (or a) name of this <code>Item</code> or an empty string
+ * if this <code>Item</code> is the root node.
+ *
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getName();
+
+ /**
+ * Returns the ancestor of the specified depth.
+ * An ancestor of depth <i>x</i> is the <code>Item</code> that is <i>x</i>
+ * levels down along the path from the root node to <i>this</i>
+ * <code>Item</code>.
+ * <ul>
+ * <li><i>depth</i> = 0 returns the root node.
+ * <li><i>depth</i> = 1 returns the child of the root node along the path
+ * to <i>this</i> <code>Item</code>.
+ * <li><i>depth</i> = 2 returns the grandchild of the root node along the
+ * path to <i>this</i> <code>Item</code>.
+ * <li>And so on to <i>depth</i> = <i>n</i>, where <i>n</i> is the depth
+ * of <i>this</i> <code>Item</code>, which returns <i>this</i>
+ * <code>Item</code> itself.
+ * </ul>
+ * If <i>depth</i> > <i>n</i> is specified then a
+ * <code>ItemNotFoundException</code> is thrown.
+ * <p>
+ *
+ * @param depth An integer, 0 <= <i>depth</i> <= <i>n</i> where <i>n</i> is the depth
+ * of <i>this</i> <code>Item</code>.
+ *
+ * @return The ancestor of this
+ * <code>Item</code> at the specified <code>depth</code>.
+ *
+ * @throws ItemNotFoundException if <i>depth</i> < 0 or
+ * <i>depth</i> > <i>n</i> where <i>n</i> is the is the depth of
+ * this item.
+ *
+ * @throws AccessDeniedException if the current session does not have
+ * sufficient access rights to retrieve the specified node.
+ *
+ * @throws RepositoryException if another error occurs.
+ */
+ public function getAncestor( $depth );
+
+ /**
+ * Returns the parent of this <code>Item</code>.
+ *
+ * @return The parent of this <code>Item</code>.
+ *
+ * @throws ItemNotFoundException if there is no parent. This only happens
+ * if this item is the root node of a workspace.
+ *
+ * @throws AccessDeniedException if the current session does not have
+ * sufficient access rights to retrieve the parent of this item.
+ *
+ * @throws RepositoryException if another error occurs.
+ */
+ public function getParent();
+
+ /**
+ * Returns the depth of this <code>Item</code> in the workspace tree.
+ * Returns the depth below the root node of <i>this</i> <code>Item</code>
+ * (counting <i>this</i> <code>Item</code> itself).
+ * <ul>
+ * <li>The root node returns 0.
+ * <li>A property or child node of the root node returns 1.
+ * <li>A property or child node of a child node of the root returns 2.
+ * <li>And so on to <i>this</i> <code>Item</code>.
+ * </ul>
+ *
+ * @return The depth of this <code>Item</code> in the workspace hierarchy.
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getDepth();
+
+ /**
+ * Returns the <code>Session</code> through which this <code>Item</code>
+ * was acquired.
+ * Every <code>Item</code> can ultimately be traced back through a series
+ * of method calls to the call <code>{@link Session#getRootNode}</code>,
+ * <code>{@link Session#getItem}</code> or
+ * <code>{@link Session#getNodeByUUID}</code>. This method returns that
+ * <code>Session</code> object.
+ *
+ * @return the <code>Session</code> through which this <code>Item</code> was
+ * acquired.
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getSession();
+
+ /**
+ * Indicates whether this <code>Item</code> is a <code>Node</code> or a
+ * <code>Property</code>.
+ * Returns <code>true</code> if this <code>Item</code> is a <code>Node</code>;
+ * Returns <code>false</code> if this <code>Item</code> is a <code>Property</code>.
+ *
+ * @return <code>true</code> if this <code>Item</code> is a
+ * <code>Node</code>, <code>false</code> if it is a <code>Property</code>.
+ */
+ public function isNode();
+
+ /**
+ * Returns <code>true</code> if this is a new item, meaning that it exists only in transient
+ * storage on the <code>Session</code> and has not yet been saved. Within a transaction,
+ * <code>isNew</code> on an <code>Item</code> may return <code>false</code> (because the item
+ * has been saved) even if that <code>Item</code> is not in persistent storage (because the
+ * transaction has not yet been committed).
+ * <p>
+ * Note that if an item returns <code>true</code> on <code>isNew</code>,
+ * then by definition is parent will return <code>true</code> on <code>isModified</code>.
+ * <p>
+ * Note that in level 1 (that is, read-only) implementations,
+ * this method will always return <code>false</code>.
+ *
+ * @return <code>true</code> if this item is new; <code>false</code> otherwise.
+ */
+ public function isNew();
+
+ /**
+ * Returns <code>true</code> if this <code>Item</code> has been saved but has subsequently
+ * been modified through the current session and therefore the state of this item as recorded
+ * in the session differs from the state of this item as saved. Within a transaction,
+ * <code>isModified</code> on an <code>Item</code> may return <code>false</code> (because the
+ * <code>Item</code> has been saved since the modification) even if the modification in question
+ * is not in persistent storage (because the transaction has not yet been committed).
+ * <p>
+ * Note that in level 1 (that is, read-only) implementations,
+ * this method will always return <code>false</code>.
+ *
+ * @return <code>true</code> if this item is modified; <code>false</code> otherwise.
+ */
+ public function isModified();
+
+ /**
+ * Returns <code>true</code> if this <code>Item</code> object
+ * (the Java object instance) represents the same actual repository item as the
+ * object <code>otherItem</code>.
+ * <p>
+ * This method does not compare the <i>states</i> of the two items. For example,
+ * if two <code>Item</code> objects representing the same actual repository item
+ * have been retrieved through two different sessions and one has been modified,
+ * then this method will still return <code>true</code> for these two objects.
+ * Note that if two <code>Item</code> objects representing the same repository item
+ * are retrieved through the <i>same</i> session they will always reflect the
+ * same state (see section 6.3.1 <i>Reflecting Item State</i> in the specification
+ * document) so comparing state is not an issue.
+ *
+ * @param otherItem the <code>Item</code> object to be tested for identity with this <code>Item</code>.
+ *
+ * @return <code>true</code> if this <code>Item</code> object and <code>otherItem</code> represent the same actual repository
+ * item; <code>false</code> otherwise.
+ */
+ public function isSame( $otherItem );
+
+ /**
+ * Accepts an <code>ItemVistor</code>.
+ * Calls the appropriate <code>ItemVistor</code>
+ * <code>visit</code> method of the according to whether <i>this</i>
+ * <code>Item</code> is a <code>Node</code> or a <code>Property</code>.
+ *
+ * @param visitor The ItemVisitor to be accepted.
+ *
+ * @throws RepositoryException if an error occurs.
+ */
+ public function accept( ItemVisitor $visitor );
+
+ /**
+ * Validates all pending changes currently recorded in this <code>Session</code> that apply to this <code>Item</code>
+ * or any of its descendants (that is, the subtree rooted at this Item). If validation of <i>all</i>
+ * pending changes succeeds, then this change information is cleared from the <code>Session</code>.
+ * If the <code>save</code> occurs outside a transaction, the changes are persisted and thus
+ * made visible to other <code>Sessions</code>. If the <code>save</code> occurs within a transaction,
+ * the changes are not persisted until the transaction is committed.
+ * <p>
+ * If validation fails, then no pending changes are saved and they remain recorded on the <code>Session</code>.
+ * There is no best-effort or partial save.
+ * <p>
+ * When an item is saved the item in persistent storage to which pending changes are written is
+ * determined as follows:
+ * <ul>
+ * <li>
+ * If the transient item has a UUID, then the changes are written to the persistent item with the same UUID.
+ * </li>
+ * <li>
+ * If the transient item does not have a UUID then its nearest ancestor with a UUID, or the root node
+ * (whichever occurs first) is found, and the relative path from the node in persistent node with that UUID is
+ * used to determine the item in persistent storage to which the changes are to be written.
+ * </li>
+ * </ul>
+ * As a result of these rules, a <code>save</code> of an item that has a UUID will succeed even if that item has,
+ * in the meantime, been moved in persistent storage to a new location (that is, its path has changed). However, a
+ * <code>save</code> of a non-UUID item will fail (throwing an <code>InvalidItemStateException</code>) if it has,
+ * in the meantime, been moved in persistent storage to a new location. A <code>save</code> of a non-UUID item will
+ * also fail if it has, in addition to being moved, been replaced in its original position by a UUID-bearing item.
+ * <p>
+ * Note that <code>save</code> uses the same rules to match items between transient storage and persistent storage
+ * as {@link Node#update} does to match nodes between two workspaces.
+ * <p>
+ * An <code>AccessDeniedException</code> will be thrown if any of the changes
+ * to be persisted would violate the access privileges of this
+ * <code>Session</code> or if. Also thrown if any of the
+ * changes to be persisted would cause the removal of a node that is currently
+ * referenced by a <code>REFERENCE</code> property that this Session
+ * <i>does not</i> have read access to.
+ * <p>
+ * A <code>ConstraintViolationException</code> will be thrown if any of the
+ * changes to be persisted would violate a node type restriction.
+ * Additionally, a repository may use this exception to enforce
+ * implementation- or configuration-dependant restrictions.
+ * <p>
+ * An <code>InvalidItemStateException</code> is thrown if any of the
+ * changes to be persisted conflicts with a change already persisted
+ * through another session and the implementation is such that this
+ * conflict can only be detected at save-time and therefore was not
+ * detected earlier, at change-time.
+ * <p>
+ * A <code>ReferentialIntegrityException</code> is thrown if any of the
+ * changes to be persisted would cause the removal of a node that is currently
+ * referenced by a <code>REFERENCE</code> property that this <code>Session</code>
+ * has read access to.
+ * <p>
+ * A <code>VersionException</code> is thrown if the <code>save</code> would make a result in
+ * a change to persistent storage that would violate the read-only status of a
+ * checked-in node.
+ * <p>
+ * A <code>LockException</code> is thrown if the <code>save</code> would result in a
+ * change to persistent storage that would violate a lock.
+ * <p>
+ * A <code>RepositoryException</code> will be thrown if another error
+ * occurs.
+ *
+ * @throws AccessDeniedException if any of the changes to be persisted would violate
+ * the access privileges of the this <code>Session</code>. Also thrown if any of the
+ * changes to be persisted would cause the removal of a node that is currently
+ * referenced by a <code>REFERENCE</code> property that this Session
+ * <i>does not</i> have read access to.
+ * @throws ConstraintViolationException if any of the changes to be persisted would
+ * violate a node type or restriction. Additionally, a repository may use this
+ * exception to enforce implementation- or configuration-dependent restrictions.
+ * @throws InvalidItemStateException if any of the
+ * changes to be persisted conflicts with a change already persisted
+ * through another session and the implementation is such that this
+ * conflict can only be detected at save-time and therefore was not
+ * detected earlier, at change-time.
+ * @throws ReferentialIntegrityException if any of the
+ * changes to be persisted would cause the removal of a node that is currently
+ * referenced by a <code>REFERENCE</code> property that this <code>Session</code>
+ * has read access to.
+ * @throws VersionException if the <code>save</code> would make a result in
+ * a change to persistent storage that would violate the read-only status of a
+ * checked-in node.
+ * @throws LockException if the <code>save</code> would result in a
+ * change to persistent storage that would violate a lock.
+ * @throws RepositoryException if another error occurs.
+ */
+ public function save();
+
+ /**
+ * If <code>keepChanges</code> is <code>false</code>, this method discards all pending changes
+ * currently recorded in this <code>Session</code> that apply to this Item or any of its descendants
+ * (that is, the subtree rooted at this Item)and returns all items to reflect the current
+ * saved state. Outside a transaction this state is simple the current state of persistent storage.
+ * Within a transaction, this state will reflect persistent storage as modified by changes that have
+ * been saved but not yet committed.
+ * <p>
+ * If <code>keepChanges</code> is true then pending change are not discarded but items that do not
+ * have changes pending have their state refreshed to reflect the current saved state, thus revealing
+ * changes made by other sessions.
+ * <p>
+ * An <code>InvalidItemStateException</code> is thrown if this <code>Item</code> object represents a
+ * workspace item that has been removed (either by this session or another).
+ *
+ * @throws InvalidItemStateException if this
+ * <code>Item</code> object represents a workspace item that has been
+ * removed (either by this session or another).
+ *
+ * @throws RepositoryException if another error occurs.
+ */
+ public function refresh( $keepChanges );
+
+ /**
+ * Removes <code>this</code> item (and its subtree).
+ * <p/>
+ * To persist a removal, a <code>save</code> must be
+ * performed that includes the (former) parent of the
+ * removed item within its scope.
+ * <p/>
+ * A <code>ConstraintViolationException</code> will be thrown immediately if
+ * removing the specified item would violate a node type or implementation-specific
+ * constraint and that violation can be detected at the time that the <code>remove</code>
+ * method is called. Otherwise, a <code>ConstraintViolationException</code> will be
+ * thrown on <code>save</code> if the violation can only be detected later, at the time that
+ * the <code>save</code> method is called. Note that implementations may differ as to which
+ * constraints are enforced immediately and which on <code>save</code>.
+ * <p/>
+ * A <code>ReferentialIntegrityException</code> will be thrown on <code>save</code>
+ * if the item in question is currently the target of a <code>REFERENCE</code>
+ * property elsewhere in the workspace and the current <code>Session</code>
+ * has read access to that <code>REFERENCE</code> property.
+ * <p/>
+ * An <code>AccessDeniedException</code> will be thrown on <code>save</code>
+ * if the item in question is currently the target of a <code>REFERENCE</code>
+ * property elsewhere in the workspace and the current <code>Session</code>
+ * <i>does not</i> have read access to that REFERENCE property.
+ * <p/>
+ * A <code>VersionException</code> is thrown immediately (not on <code>save</code>)
+ * if the parent node of this item is versionable and
+ * currently checked-in or is non-versionable and its nearest versionable ancestor is checked in.
+ * Note that if this item itself is checked-in
+ * (but not its parent) then it can be removed.
+ * <p/>
+ * A <code>LockException</code> is thrown if a lock prevents the removal of this item.
+ *
+ * @throws VersionException if the parent of this node is versionable and
+ * currently checked-in (and therefore read-only).
+ * @throws LockException if a lock prevents the removal of this item.
+ * @throws ConstraintViolationException if removing the specified item would violate a node type or
+ * implementation-specific constraint and that violation is detected at the
+ * time of calling the <code>remove</code> method.
+ * @throws RepositoryException if an error occurs.
+ */
+ public function remove();
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemExistsException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemExistsException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemExistsException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemExistsException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * An exception thrown when an attempt is made to place an item in a position
+ * where another item already exists.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class ItemExistsException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemNotFoundException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemNotFoundException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemNotFoundException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemNotFoundException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * Exception thrown by methods of <code>Item</code>, <code>Node</code>
+ * and <code>Workspace</code> when an item is not found.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class ItemNotFoundException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemVisitor.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemVisitor.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemVisitor.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/ItemVisitor.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/Property.php';
+require_once 'PHPCR/Node.php';
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * The <code>ItemVisitor</code> defines an interface for the
+ * <i>Visitor</i> design pattern (see, for example, <i>Design Patterns</i>,
+ * Gamma <i>et al.</i>, 1995).
+ * This interface defines two signatures of the
+ * <code>visit</code> method; one taking a <code>Node</code>, the other a
+ * <code>Property</code>. When an object implementing this interface is passed
+ * to <code>Item#accept(ItemVisitor visitor)</code> the appropriate
+ * <code>visit</code> method is automatically called, depending on whether the
+ * <code>Item</code> in question is a <code>Node</code> or a
+ * <code>Property</code>. Different implementations of this interface can be
+ * written for different purposes. It is, for example, possible for the
+ * <code>visit(Node node)</code> method to call <code>accept</code> on the
+ * children of the passed node and thus recurse through the tree performing some
+ * operation on each <code>Item</code>.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+interface ItemVisitor
+{
+ /**
+ * This method is called when the <code>ItemVisitor</code> is
+ * passed to the <code>accept</code> method of a <code>Property</code>.
+ * If this method throws an exception the visiting process is aborted.
+ *
+ * @param property The <code>Property</code> or <code>Node</code> that is accepting this visitor.
+ *
+ * @throws RepositoryException if an error occurrs
+ */
+ public function visit( $entry );
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/LoginException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/LoginException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/LoginException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/LoginException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class LoginException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/MergeException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/MergeException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/MergeException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/MergeException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * Exception thrown by Node#merge(String srcWorksapce, boolean shallow).
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class MergeException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class NamespaceException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceRegistry.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceRegistry.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceRegistry.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NamespaceRegistry.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,144 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+require_once 'PHPCR/NamespaceException.php';
+require_once 'PHPCR/UnsupportedRepositoryOperationException.php';
+
+
+/**
+ * The <code>Item</code> is the base interface of <code>Node</code>
+ * and <code>Property</code>.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+interface NamespaceRegistry
+{
+ /**
+ * Sets a one-to-one mapping between prefix and URI in the global namespace registry of this repository.
+ * Assigning a new prefix to a URI that already exists in the namespace registry erases the old prefix.
+ * In general this can almost always be done, though an implementation is free to prevent particular
+ * remappings by throwing a <code>NamespaceException</code>.
+ * <p>
+ * On the other hand, taking a prefix that is already assigned to a URI and re-assigning it to a new URI
+ * in effect unregisters that URI. Therefore, the same restrictions apply to this operation as to
+ * <code>NamespaceRegistry.unregisterNamespace</code>:
+ * <ul>
+ * <li>
+ * Attempting to re-assign a built-in prefix (<code>jcr</code>, <code>nt</code>, <code>mix</code>,
+ * <code>sv</code>) to a new URI will throw a <code>NamespaceException</code>.
+ * </li>
+ * <li>
+ * Attempting to re-assign a prefix that is currently assigned to a URI that is present in content
+ * (either within an item name or within the value of a <code>NAME</code> or <code>PATH</code> property)
+ * will throw a <code>NamespaceException</code>. This includes prefixes in use within in-content node type definitions.
+ * </li>
+ * <li>
+ * Attempting to assign any prefix beginning with "<code>xml</code>". These prefixes are reserved by the
+ * XML specification.
+ * </li>
+ * <li>
+ * An implementation may prevent the re-assignment of any other namespace prefixes for
+ * implementation-specific reasons by throwing a <code>NamespaceException</code>.
+ * </li>
+ * </ul>
+ * In a level 1 implementation, this method always throws an
+ * <code>UnsupportedRepositoryOperationException</code>.
+ * <p/>
+ * A <code>RepositoryException</code> is thrown if another error occurs.
+ *
+ * @param prefix The prefix to be mapped.
+ * @param uri The URI to be mapped.
+ * @throws NamespaceException if an illegal attempt is made to register a mapping.
+ * @throws UnsupportedRepositoryOperationException in a level 1 implementation
+ * @throws RepositoryException if another error occurs.
+ */
+ public function registerNamespace( $prefix, $uri );
+
+ /**
+ * Removes a namespace mapping from the registry. The following restriction apply:
+ * <ul>
+ * <li>
+ * Attempting to unregister a built-in namespace (<code>jcr</code>, <code>nt</code>,
+ * <code>mix</code>, <code>sv</code>) will throw a <code>NamespaceException</code>.
+ * </li>
+ * <li>
+ * Attempting to unregister a namespace that is currently present in content (either within an
+ * item name or within the value of a <code>NAME</code> or <code>PATH</code> property)
+ * will throw a <code>NamespaceException</code>. This includes prefixes in use within in-content node type
+ * definitions.
+ * </li>
+ * <li>
+ * An attempt to unregister a namespace that is not currently registered will throw a
+ * <code>NamespaceException</code>.
+ * </li>
+ * <li>
+ * An implementation may prevent the unregistering of any other namespace for
+ * implementation-specific reasons by throwing a <code>NamespaceException</code>.
+ * </li>
+ * </ul>
+ * In a level 1 implementation, this method always throws an
+ * <code>UnsupportedRepositoryOperationException</code>.
+ * <p/>
+ * A <code>RepositoryException</code> is thrown if another error occurs.
+ *
+ * @param prefix The prefix of the mapping to be removed.
+ * @throws NamespaceException if an illegal attempt is made to remove a mapping.
+ * @throws UnsupportedRepositoryOperationException in a level 1 implementation
+ * @throws RepositoryException if another error occurs.
+ */
+ public function unregisterNamespace( $prefix );
+
+ /**
+ * Returns an array holding all currently registered prefixes.
+ * @return a string array
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getPrefixes();
+
+ /**
+ * Returns an array holding all currently registered URIs.
+ * @return a string array
+ * @throws RepositoryException if an error occurs.
+ */
+ public function getURIs();
+
+ /**
+ * Returns the URI to which the given prefix is mapped.
+ * @param prefix a string
+ * @return a string
+ * @throws NamespaceException if the prefix is unknown.
+ * @throws RepositoryException is another error occurs
+ */
+ public function getURI( $prefix );
+
+ /**
+ * Returns the prefix to which the given URI is mapped
+ *
+ * @param uri a string
+ * @return a string
+ * @throws NamespaceException if the URI is unknown.
+ * @throws RepositoryException is another error occurs
+ */
+ public function getPrefix( $uri );
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchElementException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchElementException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchElementException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchElementException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+/**
+ * Exception thrown by access-related methods.
+ * <p>
+ * <b>Level 2 only</b>
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class NoSuchElementException extends Exception
+{
+}
+
+?>
\ No newline at end of file
Added: incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchWorkspaceException.php
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchWorkspaceException.php?rev=208906&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchWorkspaceException.php (added)
+++ incubator/jackrabbit/trunk/contrib/phpcr/PHPCR/NoSuchWorkspaceException.php Sun Jul 3 04:58:33 2005
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ */
+
+
+require_once 'PHPCR/RepositoryException.php';
+
+
+/**
+ * Exception thrown by <code>Repository#login(Credentials, String)</code>
+ * when a specific workspace is not found.
+ *
+ * @author Markus Nix <mn...@mayflower.de>
+ * @package phpcr
+ */
+class NoSuchWorkspaceException extends RepositoryException
+{
+}
+
+?>
\ No newline at end of file