DNA SPI changes
by Randall Hauch
I've merged the latest state of the 'federation' branch back onto
trunk. This consists almost entirely of additions, with most of them
pertaining to working with properties and property values.
The main reason for this was that we've gotten some feedback from
people working on new sequencers, and the SPI being developed on the
federation branch had enough benefits to warrant using them in the
sequencing framework. For example, one requested change (http://jira.jboss.com/jira/browse/DNA-77
) is to add more methods so StreamSequencer implementations can record
properties using paths and the actual data types (without having to
convert to Strings). There are also a few bugs with the
'org.jboss.dna.common.jcr.Path' class used by several of the existing
sequencers, which has been removed and replaced with an interface and
implementation in the new SPI.
Needless to say, there will be in the near future some good
improvements coming to the SequencerOutput interface, and the existing
sequencers will be changed to take advantage of these.
Randall
16 years, 9 months
java-source artifact CND
by Serge Emmanuel Pagop
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(a)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(a)innoq.com, Web: http://www.innoq.com,
|||| Weblog: http://www.innoq.com/blog/sp, JBug-munich: http://www.jbug-munich.org
16 years, 9 months
New JBoss DNA contributor: Dan Florian
by Randall Hauch
Please welcome Dan Florian as a new committer on the JBoss DNA
project. Dan works at Red Hat and comes from the MetaMatrix
acquisition, where he's worked on the Eclipse-based Designer and
metadata management suite. He spent some time with us before the
project was launched, and we're glad to have him back on a part-time
basis.
Welcome to the team, Dan!
Best regards,
Randall Hauch
16 years, 9 months
JBoss DNA contributor: John Verhaeg
by Randall Hauch
Please welcome John Verhaeg as a committer on the JBoss DNA project.
John's actually been working on the DNA project since the beginning of
the project, but I've neglected to announce him joining the team.
Apologies, John! John works at Red Hat and comes from the MetaMatrix
acquisition, where he's a team lead and will be leading the effort to
incorporate JBoss DNA into the MetaMatrix projects and products.
A very belated welcome, John!
Best regards,
Randall Hauch
16 years, 9 months
New JBoss DNA contributor: Stefano Maestri
by Randall Hauch
Please welcome Stefano Maestri as a new committer on the JBoss DNA
project. Stefano has been a contributor on the JBoss WS project, and
has already made his mark on JBoss DNA by contributing the MP3
sequencer, by reviewing/editing the Getting Started documents and
application, and by actively participating in the discussions.
Welcome to the team, Stefano!
Best regards,
Randall Hauch
16 years, 9 months
unwanted difference in .classpath and eclipse reletad files
by Stefano Maestri
Hi Randall,
I investigated a bit more about the unwanted difference I get in my last
patches.
As we suspect they don't depend on Maven version, neither Eclipse m2
plugin version. The problem is on configuration of the plugin, or better
two settings during importing maven project in eclipse. I attached a pdf
with the screenshot of importing modal panel, boxing the 2 settings that
drive to the problem. The settings captured in this screenshot are the
right ones, that isn't defaults (at least on my environment).
Maybe it would be useful to include this advice in a contributor's
readme on svn, eventually with some other suggestions or policies for
the project. Isn't it?
--
bye
Stefano
www.javalinux.it www.wibo.it
16 years, 9 months
New federation branch created
by Randall Hauch
I've created a new 'federation' branch where the development of the
federation engine, connector framework, caching system, and unified
graph will be done. If you have time, please check out the SPI for
the connector and the graph API. (This is still incomplete, but
hopefully you see where it's going.)
The RepositoryConnector interface has a single "execute" method that
takes a RepositoryCommand, and there are several types of commands.
This makes it easy for us to add new functionality without breaking
the API, and if we do it correctly, connectors can ignore commands
they don't know about. There are three existing commands
(GetPropertiesCommand, GetChildrenCommand, and GetNodeCommand, which
extends the first two), while others might include: SearchCommand,
CreateNodeCommand, DeleteNodeCommand, etc. To make things easier for
connector implementors, we'll probably want to have a visitor
framework that makes it easy to implement behavior for different types
of commands (and inherit no-op methods for behavior that a connector
doesn't care about).
The graph SPI currently has definitions for qualified names, paths,
property types, property values, and factories for some of these.
We'll eventually add nodes, graphs, and some notion of versioning.
The idea is that this SPI provides the different services with a basic
graph language with versioning support. One implementation of these
interfaces will sit on top of the cached and integrated/federated
graph, and will be used by the sequencing system, analyzer service,
reporting service, and view service. This implementation will also be
used by our implementation of the JCR API and (potentially) an
implementation of the UDDI API.
Caching should be for the most part transparent to the users of the
SPI, but we'll start with using JBoss Cache. Ideally, I'd like other
caching systems to be pluggable (as people seem to have almost a
religious preference for one caching library over the others).
As for connectors, for 0.2 we're currently planning a file system
connector that exposes the contents of a directory as nt:file and
nt:folder nodes (http://jira.jboss.org/jira/browse/DNA-34), a
connector to another JCR repository (http://jira.jboss.org/jira/browse/DNA-39
), and a connector to SVN or other SCM systems (http://jira.jboss.org/jira/browse/DNA-36
).
Please log comments or suggestions for the connector API on http://jira.jboss.org/jira/browse/DNA-68
and the generic graph API on http://jira.jboss.org/jira/browse/DNA-67.
Regards,
Randall
16 years, 9 months