[dna-dev] java-source artifact CND

Randall Hauch rhauch at redhat.com
Tue May 27 14:10:09 EDT 2008


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.)

As for these node type definitions, I have a few comments/suggestions:
- Overall, this looks very good!  It's pretty simple, and it mirrors  
the domain pretty well.
- The "java:metadata" type is actually a node type definition, not a  
mixin (as the comment implies).
- Would "java:metadata" be more aptly named "java:type"?  It should  
also be explicitly recursive to allow a type to have nested types.
- As Michael suggested, all of the node types should either extend  
from "nt:unstructured" or explicitly allow for any properties or  
children.
- Supporting annotations would be pretty great capability, as that  
would lend itself to a lot of useful analysis.

Have you given any thought to how to represent the packages?

Randall


On May 26, 2008, at 6:52 PM, Michael Neale wrote:

> The only problem I see with CND which is so granular is that it is
> currently jackrabbit specific (I think? I could be wrong, am a bit out
> of date) - also a side issue is how to handle migrations if a new
> field of data is needed.
>
> On Tue, May 27, 2008 at 6:54 AM, Serge Emmanuel Pagop
> <serge.pagop at innoq.com> wrote:
>> Hi Randall,
>> sorry for the long weeks without my response of your last post.  
>> That was
>> because of stress in my current project.
>> But this weekend I have taken a little time for the refactory of the
>> java-source-artifact CND and also taken a look at the Eclipse JDT  
>> library to
>> see how we can smoothly and sequently get informations from a java  
>> source
>> file and I'm also thereby to see how to use the Abstract Syntax  
>> Tree (AST)
>> framework to parse the java source. What do you thing about AST as  
>> a parser?
>> Here is the refactory CND schema and lets me know if something have  
>> to be
>> enhanced or if we miss some important elements for the first Java  
>> sequencer
>> release . Next week I will start with the implementation of the Java
>> Sequencer.
>> /*
>> * JBoss, Home of Professional Open Source.
>> * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> * as indicated by the @author tags. See the copyright.txt file in the
>> * distribution for a full listing of individual contributors.
>> *
>> * This is free software; you can redistribute it and/or modify it
>> * under the terms of the GNU Lesser General Public License as
>> * published by the Free Software Foundation; either version 2.1 of
>> * the License, or (at your option) any later version.
>> *
>> * This software is distributed in the hope that it will be useful,
>> * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> * Lesser General Public License for more details.
>> *
>> * You should have received a copy of the GNU Lesser General Public
>> * License along with this software; if not, write to the Free
>> * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> */
>> /**
>> * @author Serge Pagop (serge.pagop at innoq.com)
>> */
>> //------------------------------------------------------------------------------
>> // N A M E S P A C E S
>> //------------------------------------------------------------------------------
>> <java='http://www.jboss.org/dna/java/1.0'>
>> <nt='http://www.jcp.org/jcr/nt/1.0'>
>> <mix='http://www.jcp.org/jcr/mix/1.0'>
>> //------------------------------------------------------------------------------
>> // B A S E  T Y P E S
>> //------------------------------------------------------------------------------
>>
>> //------------------------------------------------------------------------------
>> // V E R S I O N I N G
>> //------------------------------------------------------------------------------
>>
>> //------------------------------------------------------------------------------
>> // N O D E T Y P E S
>> //------------------------------------------------------------------------------
>> /**
>> *  Formal paramter
>> */
>> [java:formalParameter] > nt:unstructured mixin
>> - java:name (string)
>> + java:type (java:primitiveType, java:referenceType) mandatory  
>> multiple
>> /**
>> * No Return type
>> */
>> [java:noReturnType]
>> - java:noReturn (string)
>>   < 'void'
>> /**
>> * Integral type
>> */
>> [java:integralType]
>> - java:predefinedIntegralType (string) mandatory
>>   < 'byte', 'short', 'int', 'long', 'char'
>> /**
>> * Floating point type
>> */
>> [java:floatingPointType]
>> - java:predefinedFloatingType (string) mandatory
>>  < 'float', 'double'
>> /**
>> * Primitive type
>> */
>> [java:primitiveType]
>> - java:booleanType (string)
>>   < 'boolean'
>> + java:numericType (java:integralType, java:floatingPointType)
>>
>>
>>
>> /**
>> * Reference type  (TODO needs some enhancements)
>> */
>> [java:referenceType]
>> /**
>> * Field type
>> */
>> [java:fieldType]
>> - java:description (string)
>> - java:modifier (string)
>>   < 'public', 'protected', 'private'
>> - java:declaredAs (string) multiple
>>   < 'static','final', 'transient', 'volatile'
>> - java:name (string) mandatory
>> + java:type (java:primitiveType, java:referenceType) mandatory  
>> multiple
>>
>>
>>
>> /**
>>  * Method declaration
>>  */
>> [java:methodType]
>> - java:description (string)
>> - java:modifier (string)
>>   < 'public', 'protected', 'private'
>> + java:resultType (java:noReturnType, java:primitiveType,
>> java:referenceType) mandatory
>> - java:name (string) mandatory
>> - java:declaredAs (string) multiple
>>   < 'static','final', 'native', 'strictfp', 'synchronized'
>> + java:parameter (java:formalParameter) multiple
>> /**
>> * Constructor declaration
>> */
>> [java:constructorType]
>> - java:description (string)
>> - java:modifier (string)
>>  < 'public', 'protected', 'private'
>> - java:name (string) mandatory
>> + java:parameter (java:formalParameter)
>> /**
>> * Mixin that defines the java source metadata
>> */
>> [java:metadata] > nt:unstructured mixin
>> - java:description (string)
>> - java:modifier = 'public'
>> - java:declaredAs (string)
>>  < 'abstract', 'final'
>> - java:name (string) mandatory
>> + java:field (java:fieldType)  = java:fieldType multiple
>> + java:method (java:methodType) = java:methodType multiple
>> + java:constructor (java:constructorType) = java:constructorType  
>> multiple
>>
>> P.S. Annatation is also one open issue
>> -------
>> |||| Serge Pagop
>> |||| Senior Consultant
>> ||||
>> |||| JBUG Munich Founder
>> ||||
>> |||| innoQ Deutschland GmbH, Halskestr. 17, D-40880 Ratingen, Germany
>> |||| Phone: +49 2102 77162-100, Mobile: +49 178 4049592, Fax: +49  
>> 2102
>> 77160-1
>> |||| Mail: serge.pagop at innoq.com, Web: http://www.innoq.com,
>> |||| Weblog: http://www.innoq.com/blog/sp, JBug-munich:
>> http://www.jbug-munich.org
>>
>> _______________________________________________
>> dna-dev mailing list
>> dna-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/dna-dev
>>
>>
>
>
>
> -- 
> Michael D Neale
> home: www.michaelneale.net
> blog: michaelneale.blogspot.com
> _______________________________________________
> dna-dev mailing list
> dna-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/dna-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/dna-dev/attachments/20080527/cda6b0eb/attachment.html 


More information about the dna-dev mailing list