Date: 2004-04-26T16:22:30
Editor: HowardLewisShip <[EMAIL PROTECTED]>
Wiki: Jakarta HiveMind Wiki
Page: NotXMLProposal
URL: http://wiki.apache.org/jakarta-hivemind/NotXMLProposal
no comment
Change Log:
------------------------------------------------------------------------------
@@ -19,46 +19,45 @@
Here's some examples along the lines of thinking:
{{{
-module myapp.ui.toolbar, version 1.0.1
-
-configuration-point ToolbarActions
+module (id=myapp.ui.toolbar version="1.0.1")
{
- element item
+ configuration-point(id=ToolbarActions)
{
- required attribute label;
- required attribute icon;
- attribute action-class;
- attribute service-id;
-
- conversion (class=myapp.ui.toolbar.ToolbarAction)
+ element(name=item)
{
- map (attribute=action-class property=action translator=object)
- map (attribute=service-id property=action translator=service)
+ attribute(name=label required=true);
+ attribute(name=icon required=true);
+ attribute(name=action-class);
+ attribute(name=service-id);
+
+ conversion (class=myapp.ui.toolbar.ToolbarAction)
+ {
+ map (attribute=action-class property=action translator=object);
+ map (attribute=service-id property=action translator=service);
+ }
}
}
-}
-
-contribution ToolbarAction
-{
- item(label=Open icon=Open.gif service-id=OpenService)
-}
-service-point OpenService interface=myapp.ui.toolbar.ToolbarAction
-{
- invoke hivemind.BuilderFactory
- {
- construct(class=myapp.ui.toolbar.impl.OpenActionImpl log-property=log
messages-property=messages)
- {
- set(name=frob value=grognard)
- set-service(name=dialogViewer service-id=myapp.ui.DialogViewer)
- set-configuration(name=pipeline
configuration-id=myapp.ui.FileOpenPipeline)
- }
- }
+ contribution(configuration-id=ToolbarAction)
+ {
+ item(label=Open icon=Open.gif service-id=OpenService);
+ }
+
+ service-point(id=OpenService interface=myapp.ui.toolbar.ToolbarAction)
+ {
+ invoke-factory(service-id=hivemind.BuilderFactory)
+ {
+ construct(class=myapp.ui.toolbar.impl.OpenActionImpl log-property=log
messages-property=messages)
+ {
+ set(name=frob value=grognard);
+ set-service(name=dialogViewer service-id=myapp.ui.DialogViewer);
+ set-configuration(name=pipeline
configuration-id=myapp.ui.FileOpenPipeline);
+ }
+ }
- add-interceptor service-id=hivemind.LoggingFactory;
+ add-interceptor(service-id=hivemind.LoggingFactory);
+ }
}
-
-
}}}
This is pretty obviouslly darn isomorphic to the existing XML format.
Remember, XML started as a document format, where using punctuation for
blocking delimiters
@@ -73,4 +72,11 @@
JoeDuffy, April 26 2004
-What about using something like Groovy to configure and wire everything up?
This has the obvious downside that you're working at an imperetive vs.
declarative level, probably interacting with the HiveMind object model in some
fashion, but has the benefit of being a familiar syntax, very lightweight, and
is reusing an existing technology (rather than inventing a proprietary grammar).
+What about using something like Groovy to configure and wire everything up?
This has the obvious downside that you're working at an imperetive vs.
declarative level, probably interacting with the !HiveMind object model in some
fashion, but has the benefit of being a familiar syntax, very lightweight, and
is reusing an existing technology (rather than inventing a proprietary grammar).
+
+HowardLewisShip: Groovy may not be fully stable for months and represents a
significant new dependency at a time when I'd like to remove dependencies. I'm
also not sure how we could get
+the desired level of (line precise) exception reporting. However, I'd like
folks to noodle some more on the ideas of using scripting languages to perform
some of the work (especially
+with respect to the conversion of XML objects). Maybe that is the right
approach to removing XML from !HiveMind ... that's thiking outside the box.
+
+In the meantime, I've updated the example above to reflect a slightly more
verbose but significantly more consistent approach (based on additional
thoughts I had composing
[http://howardlewisship.com/blog/2004_04_01_archive.html#108300769165342372
this blog entry]). Keeping the design isomorphic to a subset of XML had
advantages ... I can just make my parser spew out SAX events, maybe even feed
it into a SDL (Simple Data Language) to XML to HTML pipeline.
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]