| <body> |
| General base classes for implementing the JCR interfaces. |
| <p> |
| This package contains simple base class implementations of the JCR API |
| interfaces. These classes implement the API methods either by throwing |
| Unsupported(Repository)OperationExceptions or by calling other API methods. |
| For example the BaseProperty.getString() method is implemented as |
| Property.getValue().getString(). See the javadoc comments of each method |
| for implementation details. |
| </p> |
| <p> |
| The purpose of this package is to make it easy to incrementally implement |
| the JCR API without creating a large numbers of stub methods. A JCR |
| implementation class can inherit one of these base classes and only override |
| the methods it needs. |
| </p> |
| <h2>Desing principles</h2> |
| <p> |
| The base classes in this package follow the design principles listed below. |
| The purpose of these design principles is to avoid introducing unnecessary |
| dependencies or complexities. |
| </p> |
| <ul> |
| <li> |
| <strong>No member variables.</strong> To avoid introducing any extra |
| memory overhead or complex state and object equality issues, none of |
| these base classes have <em>any</em> member variables, private or |
| otherwise. However the implemented methods are free to use as many |
| local variables as they like. |
| </li> |
| <li> |
| <strong>No extra methods.</strong> The only non-private methods defined |
| in these base classes are the public methods declared in the JCR |
| interfaces. Private utility methods are allowed to avoid duplicating code, |
| but <em>no</em> protected or public methods other than those declared by |
| the JCR API are allowed. |
| </li> |
| </ul> |
| </body> |