Hai,
Yeah..I edited Custom_nodetypes.xml and put that configuration.
Ok..I learned from jackrabbit.apache.org that we need to create some cnd
file for custom node type
and register using CompactNodeTypeDefReader.
Now I am facing the following proble. Pls help me to get rid off this. I
am
struggling with this problem for past couple of weeks. It will be better,
If
we post proper document with comple example.
I am trying to create a node like nt:resource with one more property
called
jcr:user
I saved the following configuration in myappResource.cnd file.
[myapp:resource] > mix:referencable
- jcr:encoding
- jcr:mimeType mandatory
- jcr:data (binary) mandatory
- jcr:lastModified (date) mandatory ignore
- jcr:user
I am using the following code to register the custom node.(Got it from
apache site).
import javax.jcr.Workspace;
import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
import
org.apache.jackrabbit.core.nodetype.compact.CompactNodeTypeDefReader;
import java.io.FileReader;
import java.util.List;
import java.util.Iterator
public class CustomNodeTypeExample {
public static void RegisterCustomNodeTypes(Workspace ws, String
cndFileName){
// Read in the CND file
FileReader fileReader = new FileReader(cndFileName);
// Create a CompactNodeTypeDefReader
CompactNodeTypeDefReader cndReader = new
CompactNodeTypeDefReader(fileReader, cndFileName);
// Get the List of NodeTypeDef objects
List ntdList = cndReader.getNodeTypeDefs;
// Get the NodeTypeManager from the Workspace.
// Note that it must be cast from the generic JCR NodeTypeManager
to
the
// Jackrabbit-specific implementation.
NodeTypeManagerImpl ntmgr
=(NodeTypeManagerImpl)ws.getNodeTypeManager();
// Acquire the NodeTypeRegistry
NodeTypeRegistry ntreg = ntmgr.getNodeTypeRegistry();
// Loop through the prepared NodeTypeDefs
for (Iterator i = ntdList.iterator(); i.hasNext();) {
// Get the NodeTypeDef...
NodeTypeDef ntd = (NodeTypeDef)i.next();
// ...and register it
ntreg.registerNodeType(ntd);
}
}
}
But I am getting the following exception:
org.apache.jackrabbit.core.nodetype.compact.ParseException: Error while
parsing 'myapp:resource' (D:\customNode\customNode.cnd, line 1)
at
org.apache.jackrabbit.core.nodetype.compact.Lexer.fail(Lexer.java:146)
If I use the following XML format
<?xml version="1.0" encoding="iso-8859-1"?>
< nodeTypes xmlns:my="http://www.mycompany/my/1.0";>
<nodeType name="my:resource"
isMixin="false"
hasOrderableChildNodes="false"
primaryItemName="jcr:data">
<supertypes>
<supertype>nt:base</supertype>
<supertype>mix:referenceable</supertype>
</supertypes>
<propertyDefinition name="jcr:encoding"
requiredType="String"
autoCreated="false"
mandatory="false"
onParentVersion="COPY"
protected="false"
multiple="false"/>
<propertyDefinition name="jcr:mimeType"
requiredType="String"
autoCreated="false"
mandatory="true"
onParentVersion="COPY"
protected="false"
multiple="false"/>
<propertyDefinition name="jcr:data"
requiredType="Binary"
autoCreated="false"
mandatory="true"
onParentVersion="COPY"
protected="false"
multiple="false"/>
<propertyDefinition name="jcr:lastModified"
requiredType="Date"
autoCreated="false"
mandatory="true"
onParentVersion="IGNORE"
protected="false"
multiple="false"/>
<propertyDefinition name="jcr:user"
requiredType="String"
autoCreated="false"
mandatory="true"
onParentVersion="IGNORE"
protected="false"
multiple="false"/>
</nodeType>
</nodeTypes>
I am getting the following exception
org.apache.jackrabbit.core.nodetype.compact.ParseException: Missing = in
namespace decl. (D:\customNode\customNode.xml, line 1)
>From: "Stefan Guggisberg" <[EMAIL PROTECTED]>
>Reply-To: [email protected]
>To: [email protected]
>Subject: Re: FW: Custom Node Types XML
>Date: Thu, 24 Aug 2006 15:39:58 +0200
>
>On 8/24/06, Shanmugam Gopal <[EMAIL PROTECTED]> wrote:
>>Hi,
>>
>>I am trying to create a custom node by extending nt:resource so that I
can
>>add some custom properties to that node.
>>
>>Following is the Custom_nodetypes.xml configuration.
>
>did you edit custom_nodetypes.xml manually?
>
>custom_nodetypes.xml is used internally for persisting node types
>registered through the api. it's *not* meant to be
>user-provided/manipulated
>and therefore *not* supported.
>
>you should use the approproate api (e.g.
>org.apache.jackrabbit.api.JackrabbitNodeTypeManager) for registering
>custom node types.
>
>cheers
>stefan
>
>>
>><?xml version="1.0" encoding="UTF-8"?>
>>
>><nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
>>xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
>>xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
>>xmlns:plateau="http://www.apache.org/jackrabbit/plateau"
>>xmlns:mix="http://www.jcp.org/jcr/mix/1.0">
>><nodeType name="plateau:resource" isMixin="false"
>>hasOrderableChildNodes="false" primaryItemName="jcr:data">
>>
>> <supertypes>
>>
>> <supertype>nt:resource</supertype>
>>
>> </supertypes>
>>
>> <propertyDefinition name="plateau:username" requiredType="String"
>>autoCreated="false" mandatory="false" onParentVersion="COPY"
>>protected="false" multiple="false"/>
>>
>> <propertyDefinition name="plateau:Author" requiredType="String"
>>autoCreated="false" mandatory="false" onParentVersion="COPY"
>>protected="false" multiple="false"/>
>>
>></nodeType>
>></nodeTypes>
>>
>>But I am getting the Following ClassCastException while registering
this
>>custom node.
>>
>>
>> >java.lang.ClassCastException
>> >
>> > at
>>
>org.apache.jackrabbit.core.util.DOMWalker.iterateElements(DOMWalker.java
>> >:219)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader.getNodeTypeDefs(N
>> >odeTypeReader.java:118)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader.read(NodeTypeRead
>> >er.java:64)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.NodeTypeDefStore.load(NodeTypeDefSto
>> >re.java:54)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.loadCustomNodeTypeD
>> >efs(NodeTypeRegistry.java:1681)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.<init>(NodeTypeRegi
>> >stry.java:210)
>> >
>> > at
>>
>org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.create(NodeTypeRegi
>> >stry.java:123)
>> >
>> > at
>>
>org.apache.jackrabbit.core.RepositoryImpl.createNodeTypeRegistry(Reposit
>> >oryImpl.java:501)
>> >
>> > at
>>
>org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:238
>> >)
>> >
>> > at
>>
>org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:514
>> >)
>> >
>> > at
>>
>org.apache.jackrabbit.j2ee.RepositoryStartupServlet.createRepository(Rep
>> >ositoryStartupServlet.java:301)
>> >
>> > at
>>
>org.apache.jackrabbit.j2ee.RepositoryStartupServlet.initRepository(Repos
>> >itoryStartupServlet.java:272)
>> >
>> > at
>>
>org.apache.jackrabbit.j2ee.RepositoryStartupServlet.init(RepositoryStart
>> >upServlet.java:189)
>> >
>> > at
javax.servlet.GenericServlet.init(GenericServlet.java:211)
>>
>>
>>
>>Is there any wrong with the custom node definition ??
>>
>>Regards,
>>Shanmugam G
>>
>>_________________________________________________________________
>>Shah Rukh fan? Know all about the Baadshah of Bollywood. On MSN Search
>>http://server1.msn.co.in/profile/shahrukh.asp
>>
>>
_________________________________________________________________
Spice up your IM conversations. New, colorful and animated emoticons. Get
chatting! http://server1.msn.co.in/SP05/emoticons/