<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Yes, CND is specific to Jackrabbit for JCR 1.0. Unfortunately, there is no standard data-centric way to define custom node types; all JCR implementations do it differently. The JSR-283 draft includes the CND format and an XML format in Appendices B & C, although I can't find any reference in the non-appendices to using either of those for defining custom node types. (JSR-283 defines a NodeTypeManager that doesn't appear to support importing from CND or XML.)</div><div><br></div><div>As for these node type definitions, I have a few comments/suggestions:</div><div>- Overall, this looks very good! It's pretty simple, and it mirrors the domain pretty well.</div><div>- The "java:metadata" type is actually a node type definition, not a mixin (as the comment implies).</div><div>- Would "java:metadata" be more aptly named "java:type"? It should also be explicitly recursive to allow a type to have nested types.</div><div>- As Michael suggested, all of the node types should either extend from "nt:unstructured" or explicitly allow for any properties or children.</div><div>- Supporting annotations would be pretty great capability, as that would lend itself to a lot of useful analysis.</div><div><br></div><div>Have you given any thought to how to represent the packages?</div><div><br></div><div>Randall</div><div><br></div><br><div><div>On May 26, 2008, at 6:52 PM, Michael Neale wrote:</div><br><blockquote type="cite">The only problem I see with CND which is so granular is that it is<br>currently jackrabbit specific (I think? I could be wrong, am a bit out<br>of date) - also a side issue is how to handle migrations if a new<br>field of data is needed.<br><br>On Tue, May 27, 2008 at 6:54 AM, Serge Emmanuel Pagop<br><<a href="mailto:serge.pagop@innoq.com">serge.pagop@innoq.com</a>> wrote:<br><blockquote type="cite">Hi Randall,<br></blockquote><blockquote type="cite">sorry for the long weeks without my response of your last post. That was<br></blockquote><blockquote type="cite">because of stress in my current project.<br></blockquote><blockquote type="cite">But this weekend I have taken a little time for the refactory of the<br></blockquote><blockquote type="cite">java-source-artifact CND and also taken a look at the Eclipse JDT library to<br></blockquote><blockquote type="cite">see how we can smoothly and sequently get informations from a java source<br></blockquote><blockquote type="cite">file and I'm also thereby to see how to use the Abstract Syntax Tree (AST)<br></blockquote><blockquote type="cite">framework to parse the java source. What do you thing about AST as a parser?<br></blockquote><blockquote type="cite">Here is the refactory CND schema and lets me know if something have to be<br></blockquote><blockquote type="cite">enhanced or if we miss some important elements for the first Java sequencer<br></blockquote><blockquote type="cite">release . Next week I will start with the implementation of the Java<br></blockquote><blockquote type="cite">Sequencer.<br></blockquote><blockquote type="cite">/*<br></blockquote><blockquote type="cite"> * JBoss, Home of Professional Open Source.<br></blockquote><blockquote type="cite"> * Copyright 2008, Red Hat Middleware LLC, and individual contributors<br></blockquote><blockquote type="cite"> * as indicated by the @author tags. See the copyright.txt file in the<br></blockquote><blockquote type="cite"> * distribution for a full listing of individual contributors.<br></blockquote><blockquote type="cite"> *<br></blockquote><blockquote type="cite"> * This is free software; you can redistribute it and/or modify it<br></blockquote><blockquote type="cite"> * under the terms of the GNU Lesser General Public License as<br></blockquote><blockquote type="cite"> * published by the Free Software Foundation; either version 2.1 of<br></blockquote><blockquote type="cite"> * the License, or (at your option) any later version.<br></blockquote><blockquote type="cite"> *<br></blockquote><blockquote type="cite"> * This software is distributed in the hope that it will be useful,<br></blockquote><blockquote type="cite"> * but WITHOUT ANY WARRANTY; without even the implied warranty of<br></blockquote><blockquote type="cite"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br></blockquote><blockquote type="cite"> * Lesser General Public License for more details.<br></blockquote><blockquote type="cite"> *<br></blockquote><blockquote type="cite"> * You should have received a copy of the GNU Lesser General Public<br></blockquote><blockquote type="cite"> * License along with this software; if not, write to the Free<br></blockquote><blockquote type="cite"> * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA<br></blockquote><blockquote type="cite"> * 02110-1301 USA, or see the FSF site: <a href="http://www.fsf.org">http://www.fsf.org</a>.<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * @author Serge Pagop (<a href="mailto:serge.pagop@innoq.com">serge.pagop@innoq.com</a>)<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite">// N A M E S P A C E S<br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite"><java='<a href="http://www.jboss.org/dna/java/1.0'">http://www.jboss.org/dna/java/1.0'</a>><br></blockquote><blockquote type="cite"><nt='<a href="http://www.jcp.org/jcr/nt/1.0'">http://www.jcp.org/jcr/nt/1.0'</a>><br></blockquote><blockquote type="cite"><mix='<a href="http://www.jcp.org/jcr/mix/1.0'">http://www.jcp.org/jcr/mix/1.0'</a>><br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite">// B A S E T Y P E S<br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite">// V E R S I O N I N G<br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite">// N O D E T Y P E S<br></blockquote><blockquote type="cite">//------------------------------------------------------------------------------<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Formal paramter<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:formalParameter] > nt:unstructured mixin<br></blockquote><blockquote type="cite"> - java:name (string)<br></blockquote><blockquote type="cite"> + java:type (java:primitiveType, java:referenceType) mandatory multiple<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * No Return type<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:noReturnType]<br></blockquote><blockquote type="cite"> - java:noReturn (string)<br></blockquote><blockquote type="cite"> < 'void'<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Integral type<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:integralType]<br></blockquote><blockquote type="cite"> - java:predefinedIntegralType (string) mandatory<br></blockquote><blockquote type="cite"> < 'byte', 'short', 'int', 'long', 'char'<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Floating point type<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:floatingPointType]<br></blockquote><blockquote type="cite"> - java:predefinedFloatingType (string) mandatory<br></blockquote><blockquote type="cite"> < 'float', 'double'<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Primitive type<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:primitiveType]<br></blockquote><blockquote type="cite"> - java:booleanType (string)<br></blockquote><blockquote type="cite"> < 'boolean'<br></blockquote><blockquote type="cite"> + java:numericType (java:integralType, java:floatingPointType)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Reference type (TODO needs some enhancements)<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:referenceType]<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Field type<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:fieldType]<br></blockquote><blockquote type="cite"> - java:description (string)<br></blockquote><blockquote type="cite"> - java:modifier (string)<br></blockquote><blockquote type="cite"> < 'public', 'protected', 'private'<br></blockquote><blockquote type="cite"> - java:declaredAs (string) multiple<br></blockquote><blockquote type="cite"> < 'static','final', 'transient', 'volatile'<br></blockquote><blockquote type="cite"> - java:name (string) mandatory<br></blockquote><blockquote type="cite"> + java:type (java:primitiveType, java:referenceType) mandatory multiple<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"> /**<br></blockquote><blockquote type="cite"> * Method declaration<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:methodType]<br></blockquote><blockquote type="cite"> - java:description (string)<br></blockquote><blockquote type="cite"> - java:modifier (string)<br></blockquote><blockquote type="cite"> < 'public', 'protected', 'private'<br></blockquote><blockquote type="cite"> + java:resultType (java:noReturnType, java:primitiveType,<br></blockquote><blockquote type="cite">java:referenceType) mandatory<br></blockquote><blockquote type="cite"> - java:name (string) mandatory<br></blockquote><blockquote type="cite"> - java:declaredAs (string) multiple<br></blockquote><blockquote type="cite"> < 'static','final', 'native', 'strictfp', 'synchronized'<br></blockquote><blockquote type="cite"> + java:parameter (java:formalParameter) multiple<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Constructor declaration<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:constructorType]<br></blockquote><blockquote type="cite"> - java:description (string)<br></blockquote><blockquote type="cite"> - java:modifier (string)<br></blockquote><blockquote type="cite"> < 'public', 'protected', 'private'<br></blockquote><blockquote type="cite"> - java:name (string) mandatory<br></blockquote><blockquote type="cite"> + java:parameter (java:formalParameter)<br></blockquote><blockquote type="cite">/**<br></blockquote><blockquote type="cite"> * Mixin that defines the java source metadata<br></blockquote><blockquote type="cite"> */<br></blockquote><blockquote type="cite">[java:metadata] > nt:unstructured mixin<br></blockquote><blockquote type="cite"> - java:description (string)<br></blockquote><blockquote type="cite"> - java:modifier = 'public'<br></blockquote><blockquote type="cite"> - java:declaredAs (string)<br></blockquote><blockquote type="cite"> < 'abstract', 'final'<br></blockquote><blockquote type="cite"> - java:name (string) mandatory<br></blockquote><blockquote type="cite"> + java:field (java:fieldType) = java:fieldType multiple<br></blockquote><blockquote type="cite"> + java:method (java:methodType) = java:methodType multiple<br></blockquote><blockquote type="cite"> + java:constructor (java:constructorType) = java:constructorType multiple<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">P.S. Annatation is also one open issue<br></blockquote><blockquote type="cite">-------<br></blockquote><blockquote type="cite">|||| Serge Pagop<br></blockquote><blockquote type="cite">|||| Senior Consultant<br></blockquote><blockquote type="cite">||||<br></blockquote><blockquote type="cite">|||| JBUG Munich Founder<br></blockquote><blockquote type="cite">||||<br></blockquote><blockquote type="cite">|||| innoQ Deutschland GmbH, Halskestr. 17, D-40880 Ratingen, Germany<br></blockquote><blockquote type="cite">|||| Phone: +49 2102 77162-100, Mobile: +49 178 4049592, Fax: +49 2102<br></blockquote><blockquote type="cite">77160-1<br></blockquote><blockquote type="cite">|||| Mail: <a href="mailto:serge.pagop@innoq.com">serge.pagop@innoq.com</a>, Web: <a href="http://www.innoq.com">http://www.innoq.com</a>,<br></blockquote><blockquote type="cite">|||| Weblog: <a href="http://www.innoq.com/blog/sp">http://www.innoq.com/blog/sp</a>, JBug-munich:<br></blockquote><blockquote type="cite"><a href="http://www.jbug-munich.org">http://www.jbug-munich.org</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">dna-dev mailing list<br></blockquote><blockquote type="cite"><a href="mailto:dna-dev@lists.jboss.org">dna-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/dna-dev">https://lists.jboss.org/mailman/listinfo/dna-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><br><br><br>-- <br>Michael D Neale<br>home: <a href="http://www.michaelneale.net">www.michaelneale.net</a><br>blog: michaelneale.blogspot.com<br>_______________________________________________<br>dna-dev mailing list<br><a href="mailto:dna-dev@lists.jboss.org">dna-dev@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/dna-dev">https://lists.jboss.org/mailman/listinfo/dna-dev</a><br></blockquote></div><br></body></html>