Hi

duplicating code even if just a bare minimum doesn't sound good to me. Even if
option 2 means that 2 jars need to be copied for the configurator subsystem
I think they still belong there. Although probably not very
problematic it would seem
strange to me if components which are not directly related to the
configurator sub-system
would require myfaces-commons-configurator instead of myfaces-commons-utils.

So my +1 goes to option 2.

cheers

Ernst

On Fri, Mar 28, 2008 at 9:28 PM, Scott O'Bryan <[EMAIL PROTECTED]> wrote:
> Okay Okay already.. :)  I'll work on getting these in the commons
>  somewhere.   The code for the configurators (and my nifty new, much
>  nicer externalContextUtils) is done but I've been wishy washy about
>  where things should go so I haven't created the poms yet.  Maybe I can
>  work on that a bit this weekend.
>
>  That said, I suppose I could ask the group for their preference.  The
>  ExternalContextUtils is, undoubtedly, a very handy stand-alone piece of
>  code.  Seems you guys really want to use it :)..  Where is really shines
>  though (and I suspect most usecases which need this logic would
>  eventually implement this) is when used with configurators.  The
>  configurator system I've created will go into it's own module in the
>  commons package.  Configurators can be used by simply dropping the jar
>  into your classpath, but if the ExternalContextUtils was put into the
>  commons-utils package (rather then the configurators), then you would
>  need to drop in both.  So I guess here is my question for the community
>  and perhaps it will keep me from being wishy washy and actually get this
>  code checked in...
>
>  1. Keep the ExternalContextUtils in the myfaces-commons-configurator
>  jar.  Dropping this jar in your classpath gives you access to both the
>  ExternalContextUtils as well as the configurator sub-system if you want
>  to use it.
>
>  2. Put ExternalContextUtils in the myfaces-commons-util jar, thus making
>  it so that the configurator sub-system requires both jars to be copied
>  into your classpath in order to enable configurators.
>
>  3. Put ExternalContextUtils in the myfaces-commons-util jar and
>  duplicate the bare minimum amount of code needed to support the
>  configurators into the configurators package.  This way a project can
>  drop in the configurator package if they want configurators, and the
>  util package if they want ExternalContextUtils and both jars will
>  operate independently of one another.
>
>  IMO option 3 seemed kind of cool to start off with, but I was doing some
>  experimenting with the configurators and found option 1 was much cleaner
>  on some of the new API's I've been adding.  In other words, one of the
>  things I did to make configurators run more efficiently is to take
>  advantage of an enumeration provided by the ExternalContextUtils within
>  the configurator API.  In order to use these enhancements as written, 1
>  or 2 might be the best.
>
>  Any preferences?
>
>  Scott
>
>
>
>  a clem wrote:
>  > yep, it seems that ExternalContextUtils is already  the abstraction on
>  > top of servlet and portlet apis i'm talking about. ;)
>  > And it is using reflection to dispatch the call either to portlet or
>  > servlet api. Using reflection means that ExternalContextUtils has only
>  > an 'implicit' dependency on both apis meaning that  type checking is
>  > delayed to runtime (like dynamic languages do). Going further, with
>  > this mechanism we could removed explicit dependency (compile time
>  > checked) on servlet api too!! ;)
>  > So sorry for my misunderstanding and Good idea Scott!! ;)
>  >
>  > On Fri, Mar 28, 2008 at 9:53 AM, a clem <[EMAIL PROTECTED]> wrote:
>  >
>  >> On Fri, Mar 28, 2008 at 9:41 AM, Ernst Fastl <[EMAIL PROTECTED]> wrote:
>  >>  > +1 for ExternalContextUtils
>  >>  >  Good idea Scott
>  >>  >
>  >>  >  In this case I wait for those utils before doing the changes in the
>  >>  >  PPRPhaseListener
>  >>  >
>  >>  >  greez
>  >>  >
>  >>  >  E
>  >>  >
>  >>  >
>  >>  >
>  >>  >  On Fri, Mar 28, 2008 at 1:15 AM, Scott O'Bryan <[EMAIL PROTECTED]> 
> wrote:
>  >>  >  > Take a look at Trinidad's ExternalContextUtils class.  It uses
>  >>  >  >  reflection.  I'm also going to try to get something like this in 
> the
>  >>  >  >  myfaces commons, probably in the configurator package if I end up
>  >>  >  >  submitting my current code.
>  >>  >  >
>  >>  >  >  If you don't have time to find the ExternalContextUtils on your 
> own,
>  >>  >  >  I'll try to post some source tomorrow.
>  >>  >  >
>  >>  >  >  Scott
>  >>  >  >
>  >>  >  >
>  >>  >  >
>  >>  >  >  Leonardo Uribe wrote:
>  >>  >  >  > Hi
>  >>  >  >  >
>  >>  >  >  > I have seen lines like this on the attached files:
>  >>  >  >  >
>  >>  >  >  >         //Don't do the rendering twice
>  >>  >  >  >         if (request instanceof PortletRequest &&
>  >>  >  >  > ((PortletRequest)request).getAttribute(PPR_DONE_ATTR) != null) {
>  >>  >  >  >             return;
>  >>  >  >  >         }
>  >>  >  >  >
>  >>  >  >  > The problem here is that doing this makes that tomahawk requires
>  >>  >  >  > portlet api to work, in non portlet environments.
>  >>  >  >  >
>  >>  >  >  > The same problem is present on MYFACES-434 patch.
>  >>  >  >  >
>  >>  >  >  > Can anyone suggest a way to avoid this dependency? or we should 
> put
>  >>  >  >  > portlet api as compile dependency for tomahawk?
>  >>
>  >>  I don't think this is a problem to have a dependancy on a standard API
>  >>  since this an API (not an implementation) and a standard one.
>  >>  This is known as the pattern 'dependency inversion'.
>  >>  One alternative could be to develop a abstraction layer on top of the
>  >>  standard servlet and portlet apis (to hide them).
>  >>
>  >>  regards
>  >>
>  >>  >  >  >
>  >>  >  >  > regards
>  >>  >  >  >
>  >>  >  >  > Leonardo Uribe
>  >>  >  >  >
>  >>  >  >  >
>  >>  >  >
>  >>  >  >
>  >>  >
>  >>
>  >>
>
>

Reply via email to