Hi guys.  Sorry for being late in joining this conversation :)

I think we are definitely talking about different things here.  My 2c worth...

Configuration Model
In terms of Smooks configurations, the latest version of Smooks (v1.1) is 
backward compatible (BC) with versions back to v0.9 (and probably before).  So 
you can throw the v0.9 DTD, the v1.0 XSD or the v1.1 XSD at it and it will be 
able to generate it's internal config model from it.

As far as v1.0 and v1.1 are concerned, what was added here in v1.1 was the 
ability to define extended namespaces i.e. to extend the Smooks base 
configuration in order to define a configuration namespace for specific 
features e.g. for java binding configurations, for applying freemarker 
templates to a fragment of the input data, for triggering a read on a DB in 
order to enrich the source message etc etc.  

My understand is that this extended config namespace approach should help with 
tooling because it allows for the creation of stricter/tighter configs.  I 
might be wrong there.

In v1.0, all of these configuration "resources" had to be defined in the base 
config model, which made the  configs very verbose... poor XSD based help from 
your IDE etc.  In Smooks v1.1, all of these resource types have a namespace of 
their own so they are far more strongly typed, less verbose etc etc.  That 
said... Smooks v1.1 would still be able to read a v1.0 style config no problem. 
 We made a lot of effort to try and ensure this, so I'd be very p*ssed off if 
we found somewhere here that we broken BC.

I think this was the subject of Max's thoughts, right?

Data Source Model
Then you have the source data that Smooks is going to process in some way e.g. 
XML, EDI, JSON, CSV, Java etc.  To process these, Smooks needs to be configured 
with a "Reader", whose responsibility is to generate a stream of SAX events 
from the source data model, no matter what it's format is i.e. anything that's 
structured/hierarchical - not just XML.  The smooks runtime processes this 
stream of events and, at the appropriate times, fires the resources configured 
in the smooks config.

So the source data may be an EDI/JSON/CSV message, but the data model "seen" by 
the smooks runtime is a stream of SAX events generated by the EDI reader that 
was plugged into Smooks for reading the source.  The reader is defined in the 
smooks config.  If not defined, it defaults to whatever is configured in the 
JAXP environment e.g. Xerces.

The supplied Reader must implement org.xml.sax.XMLReader (JDK).

I think this was the subject of Maurice's thoughts, right?

Smooks API
The Smooks "API" is actually very simple and hasn't changed in a few versions 
and I don't see any reason to change it in the future.

In terms of the configuration API... Smooks receives the XML config as a 
InputStream via it's constructor.  I don't think there's any need to discuss 
programmatic configuration since the editor will not be using that, right?

In terms of the execution API... there are 2 methods on the Smooks class that 
are of interest:
- createExecutionContext()
- filter()

The filter method takes 3 params:
- javax.xml.transform.Source (JDK).
- javax.xml.transform.Result (JDK).
- ExecutionContext (Smooks core/runtime).  This interface would be stable/BC 
(v1.0, v1.1).

So going forward, I'd be confident we can maintain backward compatibility on at 
an API level.

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4217739#4217739

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4217739
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to