[aerogear-dev] Aerogear Forge Plugin
Sebastien Blanc
scm.blanc at gmail.com
Tue Feb 26 16:15:14 EST 2013
Ok , could you try to run Maven with jdk 1.7 ?
On Tue, Feb 26, 2013 at 10:09 PM, Corinne Krych <corinnekrych at gmail.com>wrote:
> Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
> Java version: 1.6.0_37, vendor: Apple Inc.
>
>
> On 26 February 2013 22:03, Sebastien Blanc <scm.blanc at gmail.com> wrote:
>
>> And also openJDK or Oracle JDK ?
>> Just asking because I'm out of ideas :)
>> Seb
>>
>>
>> On Tue, Feb 26, 2013 at 9:53 PM, Sebastien Blanc <scm.blanc at gmail.com>wrote:
>>
>>> Your Forge version is okay ...
>>> What about your maven version ?
>>>
>>> Seb
>>>
>>>
>>>
>>> On Tue, Feb 26, 2013 at 9:07 PM, Corinne Krych <corinnekrych at gmail.com>wrote:
>>>
>>>> Hi Seb
>>>>
>>>> Same error on Fedora with jdk1.7.0_09.
>>>> Running with forge 1.2.0.Final
>>>>
>>>> Could it be the forge version?
>>>>
>>>> ++
>>>> Corinne
>>>>
>>>>
>>>> On 26 February 2013 10:48, Sebastien Blanc <scm.blanc at gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Tue, Feb 26, 2013 at 10:40 AM, Richard Kennard <
>>>>> richard at kennardconsulting.com> wrote:
>>>>>
>>>>>> Seb,
>>>>>>
>>>>>> It sounds like there may be some convergence here. Your 'macros'
>>>>>> library may end up looking very similar to Metawidget's existing HTML5
>>>>>> WidgetBuilder. And
>>>>>> your 'composition plugins' may end up similar to Metawidget's
>>>>>> LayoutDecorators and Layouts.
>>>>>>
>>>>>> I'd like to make sure you're not re-inventing the wheel here? Is your
>>>>>> main driver that you prefer writing templates in Freemarker to Java code?
>>>>>>
>>>>>
>>>>> Absolutely :) ! A user should be able to read and understand a
>>>>> template / overload them and not forced to write a Java class, a mid-term
>>>>> vision is to be more and more polyglot.
>>>>> Seb
>>>>>
>>>>>
>>>>>> Regards.
>>>>>>
>>>>>> Richard.
>>>>>>
>>>>>> On 26/02/2013 8:31 PM, Sebastien Blanc wrote:
>>>>>> > Hi Richard,
>>>>>> > Thanks for your remarks and questions, see my comments inline.
>>>>>> >
>>>>>> > On Tue, Feb 26, 2013 at 10:06 AM, Richard Kennard <
>>>>>> richard at kennardconsulting.com <mailto:richard at kennardconsulting.com>>
>>>>>> wrote:
>>>>>> >
>>>>>> > Hi Vineet,
>>>>>> >
>>>>>> > Thanks for your detailed response.
>>>>>> >
>>>>>> > I'm not opposed to the idea of a FreemarkerWidget (or
>>>>>> VelocityWidget, or StringTemplateWidget). Indeed, the early versions of
>>>>>> Metawidget looked much like
>>>>>> > you describe: a separate, pluggable inspection layer, then a
>>>>>> Metawidget to render it.
>>>>>> >
>>>>>> > However, we subsequently got a lot of feedback and did many
>>>>>> interviews, adoption studies and case studies. This ultimately led to the
>>>>>> architecture of
>>>>>> > pluggable WidgetBuilders, WidgetProcessors and Layouts. Let me
>>>>>> give you 3 examples of the feedback we got:
>>>>>> >
>>>>>> > 1. Widget choice needs to be orthogonal to layout. If you look
>>>>>> at your 'master.html.ftl' and 'detail.html.ftl' you have a lot of
>>>>>> duplicated code between
>>>>>> > them. Both templates contain <#if... #else to choose between a
>>>>>> 'select' box and a 'text' box. This code is going to inflate rapidly once
>>>>>> you add your
>>>>>> > date
>>>>>> > pickers, telephone numbers, URLs etc. to the mix. Worse, such
>>>>>> code will need to be duplicated across both templates.
>>>>>> >
>>>>>> >
>>>>>> > Vineet is currently factorizing all the duplicated code into
>>>>>> Freemarker's Macros, this Macros library will be shared along the different
>>>>>> plugins.
>>>>>> >
>>>>>> >
>>>>>> > 2. Equally, layout needs to be orthogonal to the wider page.
>>>>>> Say I decide I want to use tables with rows and columns, instead of a
>>>>>> div-based layout.
>>>>>> > Or say
>>>>>> > I want to use different CSS classes to your 'control-group' and
>>>>>> 'controls'. I will have to do it in both templates. But what is *actually*
>>>>>> different
>>>>>> > about
>>>>>> > the templates is the choice of search buttons/results versus
>>>>>> save/cancel buttons. So the 'middle bit' of each page needs to be
>>>>>> orthogonal. This will get
>>>>>> > worse as you add more templates, such as separate 'search',
>>>>>> 'view' and 'edit' templates (see the JSF scaffold).
>>>>>> >
>>>>>> > With Forge 2.0 in mind, where Plugins/addons will be able to be
>>>>>> dependent from each other, inherit from each other, we plan to end up with
>>>>>> some basic
>>>>>> > plugins which will offer a lot of flexibility to deliver
>>>>>> "Composition plugins". We are also going to introduce a lot of convention
>>>>>> over configuration but
>>>>>> > with keeping in mind that the user can always override the
>>>>>> conventions.
>>>>>> >
>>>>>> >
>>>>>> > 3. Developers like to use third-party widget libraries, and
>>>>>> also in-house custom widget libraries. If I want to add RichFaces, or
>>>>>> PrimeFaces, or a
>>>>>> > mixture
>>>>>> > of both, I want to be able to do so in a way that is orthogonal
>>>>>> to all of the above
>>>>>> >
>>>>>> > So my concern would be that a FreemarkerWidget would tightly
>>>>>> couple widget choice (WidgetBuilders) and layout, and not allow widget
>>>>>> processing (which is
>>>>>> > important for other reasons I haven't touched upon). Freemarker
>>>>>> does, I agree, offer an attractive level of immedicay and ease-of-editing
>>>>>> templates.
>>>>>> > But I
>>>>>> > wonder what your thoughts are on how it scales for some of the
>>>>>> points above?
>>>>>> >
>>>>>> >
>>>>>> > "Scaling" will be partly solved by the new architecture explained
>>>>>> above. For sure, there will always be situations where the user wants to
>>>>>> introduce his
>>>>>> > supra cool custom widget that don't fits without a lot of hacking
>>>>>> but IMO that's beyond the scope of scaffolding. Scaffolding is just to
>>>>>> "boost up" a new
>>>>>> > project, it's a one time action, for sure, we can offer entry
>>>>>> points for customization but we can't (or don't want to) cover all the
>>>>>> specific situations.
>>>>>> >
>>>>>> > Regards,
>>>>>> > Seb
>>>>>> >
>>>>>> >
>>>>>> > Regards,
>>>>>> >
>>>>>> > Richard.
>>>>>> >
>>>>>> > > On 22 February 2013 13:56, Vineet Reynolds Pereira <
>>>>>> vpereira at redhat.com <mailto:vpereira at redhat.com> <mailto:
>>>>>> vpereira at redhat.com
>>>>>> > <mailto:vpereira at redhat.com>>> wrote:
>>>>>> > >
>>>>>> > > Hi Richard,
>>>>>> > >
>>>>>> > > I'm glad you brought this up, since we've been looking
>>>>>> to provide feedback once we've finalized on our usage of the Metawidget
>>>>>> APIs. By the way,
>>>>>> > > I'm the one responsible for the use (or abuse) of
>>>>>> Metawidget in this manner.
>>>>>> > >
>>>>>> > > The rationale behind the use of Metawidget inspectors
>>>>>> alone, is mostly because we want to allow users to modify the generated
>>>>>> scaffold. One
>>>>>> > of the
>>>>>> > > examples thrown around was to enable users to generate
>>>>>> master-detail views instead of the plain CRUD forms generated by Forge.
>>>>>> Another driving
>>>>>> > factor
>>>>>> > > was the need to create or enable creation of scaffold
>>>>>> generators for several JS frameworks including but not restricted to
>>>>>> AngularJS, Backbone.js,
>>>>>> > > Aerogear etc. Furthermore, there is also a possibility of
>>>>>> users needing to bring in plugins and extensions to these frameworks, like
>>>>>> Angular-UI or
>>>>>> > > Backbone.Forms, since the base frameworks may not satisfy
>>>>>> all needs. From my understanding of the Metawidget pipeline and it's use in
>>>>>> the Forge
>>>>>> > Faces
>>>>>> > > and (the earlier) Aerogear scaffold plugins, this would
>>>>>> have been possible if a metawidget were created for every use case (one per
>>>>>> framework, per
>>>>>> > > widget-type). We attempted to bring in the use of
>>>>>> templates written in a familiar templating langu!
>>>>>> > > age (like Freemarker/Velocity/StringTemplate) into the
>>>>>> scaffold generation phase to make it easier for users to modify the
>>>>>> generated scaffold.
>>>>>> > This
>>>>>> > > is somewhat on the lines of what the Yeoman generators do.
>>>>>> > >
>>>>>> > > Thanks to the APIs you've made available for the
>>>>>> Metawidget pipeline, the inspection results could be processed before
>>>>>> feeding them to the
>>>>>> > > templates. Every scaffold plugin that could potentially
>>>>>> be written, would more or less use this approach, with the sole difference
>>>>>> being in the
>>>>>> > > contents of the templates themselves. I hope this
>>>>>> explains why I used the Inspectors alone, and not the
>>>>>> InspectionResultProcessors and the rest of
>>>>>> > > the pipeline. The inspectors just fit in naturally into
>>>>>> the Forge scaffold generation pipeline.
>>>>>> > >
>>>>>> > > Based on the above, I personally think that a
>>>>>> FreemarkerWidget (or VelocityWidget, or StringTemplateWidget) would be
>>>>>> something to investigate.
>>>>>> > > This is of course a raw idea of mine, and I would like to
>>>>>> see if it is possible to use such a metawidget in a type-safe manner with
>>>>>> the ability to
>>>>>> > > configure the templates that it would consume. I'm not
>>>>>> sure if creating such a widget would deviate from the intention behind the
>>>>>> Metawidget
>>>>>> > project.
>>>>>> > >
>>>>>> > > As a side note, I'd also like to point out that there
>>>>>> has been interest in supporting various additional HTML5 form input types
>>>>>> (telephone
>>>>>> > > numbers, URLs etc.) in the generated scaffold, and this
>>>>>> would require extending the JPA/Bean Validation Inspectors in Metawidget.
>>>>>> > >
>>>>>> > > Best regards,
>>>>>> > > Vineet
>>>>>> > >
>>>>>> > > PS: CC'ing the forge-dev list.
>>>>>> > >
>>>>>> > > ----- Original Message -----
>>>>>> > > > From: "Richard Kennard" <richard at kennardconsulting.com<mailto:
>>>>>> richard at kennardconsulting.com> <mailto:richard at kennardconsulting.com
>>>>>> > <mailto:richard at kennardconsulting.com>>>
>>>>>> > > > To: aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org> <mailto:aerogear-dev at lists.jboss.org
>>>>>> > <mailto:aerogear-dev at lists.jboss.org>>
>>>>>> > > > Sent: Thursday, February 21, 2013 5:17:29 AM
>>>>>> > > > Subject: Re: [aerogear-dev] Aerogear Forge Plugin
>>>>>> > > >
>>>>>> > > > Seb,
>>>>>> > > >
>>>>>> > > > This looks very cool. I see you have used parts of
>>>>>> Metawidget for
>>>>>> > > > some of the implementation? I'd love to hear your
>>>>>> thoughts on how it
>>>>>> > > > went and/or any
>>>>>> > > > changes you'd like me to make to Metawidget. For
>>>>>> example:
>>>>>> > > >
>>>>>> > > > 1. You have some code in Html5Scaffold that processes
>>>>>> the inspection
>>>>>> > > > result returned by CompositeInspector. It does things
>>>>>> like
>>>>>> > > > 'Canonicalize all numerical
>>>>>> > > > types in Java to "number" for HTML5 form input type
>>>>>> support' and
>>>>>> > > > 'Extract simple type name of the relationship types'.
>>>>>> Was there a
>>>>>> > > > reason you didn't factor
>>>>>> > > > this into a Metawidget InspectionResultProcessor
>>>>>> > > > (
>>>>>> http://metawidget.org/doc/reference/en/html/ch02s03.html)?
>>>>>> > > > Specifically BaseInspectionResultProcessor has
>>>>>> > > > some methods to help?
>>>>>> > > >
>>>>>> > > > 2. You appear to be using FreeMarker templates rather
>>>>>> than
>>>>>> > > > Metawidget's WidgetBuilders, WidgetProcessors and
>>>>>> Layouts (see the
>>>>>> > > > existing Forge JSF scaffold,
>>>>>> > > > Forge GWT scaffold, and Forge Spring scaffold). Could I
>>>>>> ask what the
>>>>>> > > > reasons were behind this?
>>>>>> > > >
>>>>>> > > > 3. I have recently implemented a pure client-side, pure
>>>>>> run-time,
>>>>>> > > > AngularJS version of Metawidget. If you were interested
>>>>>> in a
>>>>>> > > > non-static version of your
>>>>>> > > > scaffold, perhaps you could give it a try?
>>>>>> > > >
>>>>>> http://blog.kennardconsulting.com/2013/01/metawidget-meets-jquery-ui-and-angularjs.html
>>>>>> > > >
>>>>>> > > > Regards,
>>>>>> > > >
>>>>>> > > > Richard.
>>>>>> > > >
>>>>>> > > > On 20/02/2013 11:49 PM, Jay Balunas wrote:
>>>>>> > > > > Wow!!! Really awesome work guys!!!
>>>>>> > > > >
>>>>>> > > > > On Feb 15, 2013, at 11:15 AM, Sebastien Blanc wrote:
>>>>>> > > > >
>>>>>> > > > >> Hi all !
>>>>>> > > > >> I'm pleased to announce that the first version of
>>>>>> the Aerogear
>>>>>> > > > >> Scaffold Plugin for forge is available !
>>>>>> > > > >> It's still an alpha but thanks to the excellent work
>>>>>> and help from
>>>>>> > > > >> Vineet we have a working plugin :
>>>>>> > > > >>
>>>>>> > > > >> - CRUD Scaffolding based on your entities.
>>>>>> > > > >> - One-to-one , many-to-one relation supported.
>>>>>> > > > >> - AngularJS and bootstrap responsive based.
>>>>>> > > > >> - Aerogear Pipe and Store used.
>>>>>> > > > >>
>>>>>> > > > >> There is still a lot to do but you can already play
>>>>>> with it, a
>>>>>> > > > >> quickstart is available here and you should be able
>>>>>> to create
>>>>>> > > > >> your first Aerogear App in
>>>>>> > > > >> 5 minutes ;)
>>>>>> https://gist.github.com/sebastienblanc/4961324
>>>>>> > > > >>
>>>>>> > > > >> An example of a generated application can also be
>>>>>> found here :
>>>>>> > > > >> https://github.com/sebastienblanc/scaffoldtester ,
>>>>>> please review
>>>>>> > > > >> the generated code (at
>>>>>> > > > >> least the JS and HTML) and report it to me and I
>>>>>> will update the
>>>>>> > > > >> templates accordingly.
>>>>>> > > > >>
>>>>>> > > > >> Next steps are :
>>>>>> > > > >> - Integrate Search feature (using the DataStore
>>>>>> filter facilities)
>>>>>> > > > >> - Integrate Aerogear Pagination (although generic
>>>>>> pagination is
>>>>>> > > > >> present now)
>>>>>> > > > >> - Integrate jQueryMobile (will probably be another
>>>>>> plugin)
>>>>>> > > > >>
>>>>>> > > > >> Enjoy !
>>>>>> > > > >>
>>>>>> > > > >> Seb
>>>>>> > > > >>
>>>>>> > > > >> _______________________________________________
>>>>>> > > > >> aerogear-dev mailing list
>>>>>> > > > >> aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org> <mailto:aerogear-dev at lists.jboss.org
>>>>>> > <mailto:aerogear-dev at lists.jboss.org>> <mailto:
>>>>>> aerogear-dev at lists.jboss.org <mailto:aerogear-dev at lists.jboss.org>
>>>>>> > <mailto:aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org>>>
>>>>>> > > > >>
>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> > > > >
>>>>>> > > > >
>>>>>> > > > >
>>>>>> > > > > _______________________________________________
>>>>>> > > > > aerogear-dev mailing list
>>>>>> > > > > aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org> <mailto:aerogear-dev at lists.jboss.org<mailto:
>>>>>> aerogear-dev at lists.jboss.org>>
>>>>>> > > > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> > > >
>>>>>> > > > _______________________________________________
>>>>>> > > > aerogear-dev mailing list
>>>>>> > > > aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org> <mailto:aerogear-dev at lists.jboss.org<mailto:
>>>>>> aerogear-dev at lists.jboss.org>>
>>>>>> > > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> > > >
>>>>>> > >
>>>>>> > > _______________________________________________
>>>>>> > > aerogear-dev mailing list
>>>>>> > > aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org> <mailto:aerogear-dev at lists.jboss.org<mailto:
>>>>>> aerogear-dev at lists.jboss.org>>
>>>>>> > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> > >
>>>>>> > >
>>>>>> > >
>>>>>> > >
>>>>>> > > _______________________________________________
>>>>>> > > aerogear-dev mailing list
>>>>>> > > aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org>
>>>>>> > > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> >
>>>>>> > _______________________________________________
>>>>>> > aerogear-dev mailing list
>>>>>> > aerogear-dev at lists.jboss.org <mailto:
>>>>>> aerogear-dev at lists.jboss.org>
>>>>>> > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > _______________________________________________
>>>>>> > aerogear-dev mailing list
>>>>>> > aerogear-dev at lists.jboss.org
>>>>>> > https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>
>>>>>> _______________________________________________
>>>>>> aerogear-dev mailing list
>>>>>> aerogear-dev at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> aerogear-dev mailing list
>>>>> aerogear-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> aerogear-dev mailing list
>>>> aerogear-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>>>
>>>
>>>
>>
>> _______________________________________________
>> aerogear-dev mailing list
>> aerogear-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>>
>
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20130226/3496fb28/attachment-0001.html
More information about the aerogear-dev
mailing list