Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
Appendix F. Registering Custom Node Types
As described in the section on defining custom node types, the JCR 2.0 specification defines the Compact Node Definition (CND) format to easily and compactly specify node type definitions, but uses this format only within the specification. Instead, the only standard API for registering custom node types is via the standard programmatic API.
The hierarchical database fully supports this standard API, but it also defines a non-standard API for reading node type definitions from either CND files or the older Jackrabbit XML format. This non-standard API is described in this section.
The hierarchical database defines in its public API a org.modeshape.jcr.nodetype.NodeTypeManager interface that extends the standard javax.jcr.nodetype.NodeTypeManager interface:
public interface NodeTypeManager extends javax.jcr.nodetype.NodeTypeManager {
/**
* Read the supplied stream containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param stream the stream containing the node type definitions in CND format
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( InputStream stream,
boolean allowUpdate )
throws IOException, InvalidNodeTypeDefinitionException, NodeTypeExistsException, UnsupportedRepositoryOperationException,
RepositoryException;
/**
* Read the supplied file containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param file the file containing the node types
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( File file,
boolean allowUpdate ) throws IOException, RepositoryException;
/**
* Read the supplied stream containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param url the URL that can be resolved to the file containing the node type definitions in CND format
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( URL url,
boolean allowUpdate ) throws IOException, RepositoryException;
}
public interface NodeTypeManager extends javax.jcr.nodetype.NodeTypeManager {
/**
* Read the supplied stream containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param stream the stream containing the node type definitions in CND format
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( InputStream stream,
boolean allowUpdate )
throws IOException, InvalidNodeTypeDefinitionException, NodeTypeExistsException, UnsupportedRepositoryOperationException,
RepositoryException;
/**
* Read the supplied file containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param file the file containing the node types
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( File file,
boolean allowUpdate ) throws IOException, RepositoryException;
/**
* Read the supplied stream containing node type definitions in the standard JCR 2.0 Compact Node Definition (CND) format or
* non-standard Jackrabbit XML format, and register the node types with this repository.
*
* @param url the URL that can be resolved to the file containing the node type definitions in CND format
* @param allowUpdate a boolean stating whether existing node type definitions should be modified/updated
* @throws IOException if there is a problem reading from the supplied stream
* @throws InvalidNodeTypeDefinitionException if the <code>NodeTypeDefinition</code> is invalid.
* @throws NodeTypeExistsException if <code>allowUpdate</code> is <code>false</code> and the <code>NodeTypeDefinition</code>
* specifies a node type name that is already registered.
* @throws UnsupportedRepositoryOperationException if this implementation does not support node type registration.
* @throws RepositoryException if another error occurs.
*/
void registerNodeTypes( URL url,
boolean allowUpdate ) throws IOException, RepositoryException;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cast the NodeTypeManager instance obtained from the Workspace.getNodeTypeManager() method:
Session session = ...
Workspace workspace = session.getWorkspace();
org.modeshape.jcr.api.nodetype.NodeTypeManager nodeTypeMgr =
(org.modeshape.jcr.api.nodetype.NodeTypeManager) workspace.getNodeTypeManager();
// Then register the node types in one or more CND files
// using a Java File object ...
File myCndFile = ...
nodeTypeManager.registerNodeTypes(myCndFile,true);
// or a URL that is resolvable to a CND file ...
URL myCndUrl = ...
nodeTypeManager.registerNodeTypes(myCndUrl,true);
// or an InputStream to the content of a CND file ...
InputStream myCndStream = ...
nodeTypeManager.registerNodeTypes(myCndStream,true);
Session session = ...
Workspace workspace = session.getWorkspace();
org.modeshape.jcr.api.nodetype.NodeTypeManager nodeTypeMgr =
(org.modeshape.jcr.api.nodetype.NodeTypeManager) workspace.getNodeTypeManager();
// Then register the node types in one or more CND files
// using a Java File object ...
File myCndFile = ...
nodeTypeManager.registerNodeTypes(myCndFile,true);
// or a URL that is resolvable to a CND file ...
URL myCndUrl = ...
nodeTypeManager.registerNodeTypes(myCndUrl,true);
// or an InputStream to the content of a CND file ...
InputStream myCndStream = ...
nodeTypeManager.registerNodeTypes(myCndStream,true);
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Alternatively, you can cast the result of the Session.getWorkspace() method to org.modeshape.jcr.api.Workspace , which overrides the getNodeTypeManager() method to return org.modeshape.jcr.api.nodetype.NodeTypeManager :
Session session = ...
org.modeshape.jcr.api.Workspace workspace = (org.modeshape.jcr.api.Workspace) session.getWorkspace();
org.modeshape.jcr.api.nodetype.NodeTypeManager nodeTypeMgr = workspace.getNodeTypeManager();
// Then register the node types in one or more CND files ...
Session session = ...
org.modeshape.jcr.api.Workspace workspace = (org.modeshape.jcr.api.Workspace) session.getWorkspace();
org.modeshape.jcr.api.nodetype.NodeTypeManager nodeTypeMgr = workspace.getNodeTypeManager();
// Then register the node types in one or more CND files ...
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können. Entdecken Sie unsere neuesten Updates.
Mehr Inklusion in Open Source
Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.
Über Red Hat
Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.