Jérôme,

 

I suppose I could specialize the Router—it hadn’t occurred to me.  For
better or worse it seemed logical to me to use the standard router, and have
a Resource dynamically binding the behaviors.  The key is that the behaviors
come in a handful of flavors, so I have a behavior interface and factory.
You are right that I could move the abstraction up a level, I suppose.  Note
that some URIs are bound in a fixed “standard” way to the Router.

 

The other advantage to the current approach is that there is just a very
lightweight “controller” (a Resource), between the standard Router, and my
standard behaviors.  You can completely change the way the router works, or
I can completely change the way the behaviors work, and maintenance on the
controller is minimal.  If I get to dynamically binding the URIs
(user-specified routes), I will keep in mind if subclassing the Router is
better or not.  Frankly, the current controller would work just fine, the
only “issue” is attaching/detaching the router on the fly, which on the
surface doesn’t really seem problematic.

 

Cliff Binstock
Coyote Reporting

  _____  

From: Jerome Louvel [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, October 22, 2008 12:47 AM
To: [email protected]
Subject: RE: uriPattern exactness

 

Hi Cliff,

 

Aren't you trying to develop a specialized Router? Router can be dynamically
modified by adding/removing routes at runtime. If your routers (pattern +
target resource) are externalized in an XML file, you could regularly look
for changes and either:

*       update the existing router to match the changes
*       create a new router, configure it and plug it as a replacement of
the previous one

In the first case, you could simply write a Router subclass that would be
very reusable.

 

Best regards,
Jérôme Louvel
--
Restlet ~ Founder and Lead developer ~  <http://www.restlet.org/>
http://www.restlet.org
Noelios Technologies ~ Co-founder ~  <http://www.noelios.com/>
http://www.noelios.com

 

  _____  

De : Erik Beeson [mailto:[EMAIL PROTECTED] 
Envoyé : mardi 21 octobre 2008 00:23
À : [email protected]
Objet : Re: uriPattern exactness

In what scenario (other than maybe development) do your routes change at
runtime? 

 

--Erik

 

On Mon, Oct 20, 2008 at 2:44 PM, Cliff Binstock
<[EMAIL PROTECTED]> wrote:

Jérôme,

I thought of another reason why it would be *really nice* to know the
matching URI pattern:  I would like to be able to dynamically determine how
to handle a resource request from a configuration.  To simplify my actual
use case, suppose for example that I implemented a default resource, and the
default resource could look at, say, an external XML configuration file to
determine which class to really call (dynamically).  This external
configuration might look like:

<entry>
  <matching-uri-pattern>/foo/{foos}/bar</matching-uri-pattern>
  <invoke>com.coyotereporting.foo.Bar</invoke>
</entry>

Right now, I can see how to use the above to dynamically define *resources*
once on startup, but not how to "abstract" this one level to have the
default resource call different handlers on the fly.

So, if I can add to the long term request list:
  1) Get back the original URI (e.g., /foo/{foos}/bar)
  2) Get back the "as-matched" URI (e.g., /foo/myFoo/bar).

Note that #1 above (original URI Pattern), would enable a very flexible
default handler.


Cliff Binstock
Coyote Reporting



> -----Original Message-----

> From: Jerome Louvel [mailto:[EMAIL PROTECTED]
> Sent: Friday, October 17, 2008 4:02 AM
> To: [email protected]
> Subject: RE: uriPattern exactness
>
>
> Hi Cliff,
>
> In combination with MODE_EQUALS, you could also add a variable for your
> extensions like: "/foos/{foo}/bar.{ext}". That could reduce the number of
> alternative routes you would have to attach.
>
> Best regards,
> Jerome Louvel
> --
> Restlet ~ Founder and Lead developer ~ http://www.restlet.org
> Noelios Technologies ~ Co-founder ~ http://www.noelios.com
>
>
> -----Message d'origine-----
> De : Cliff Binstock [mailto:[EMAIL PROTECTED]
> Envoye : vendredi 17 octobre 2008 01:28
> A : [email protected]
> Objet : RE: uriPattern exactness
>
> Aron,
>
> Thanks, I didn't realize this was here.  This would potentially work, and
> I
> may end up using it.
>
> Frankly, I want to be able to "have my cake and eat it too".  An exact
> match
> using this construct would work, but would also force me to itemize every
> possible variation of a path via router.attach().  I was hoping to do some
> "fuzzy" enforcement in a base "Resource" class.
>
> Cliff Binstock
> Coyote Reporting
>
>
>
>
> > -----Original Message-----
> > From: Aron Roberts [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, October 16, 2008 11:37 AM
> > To: [email protected]
> > Subject: RE: uriPattern exactness
> >
> > In the message "Re: uriPattern exactness", dated 2008-10-16, Cliff
> > Binstock wrote:
> >
> > >P.S.  What is worse (maybe very confusing) is that this might match
> too:
> > >/foo/myFoo/bar/baz/bletch/fred.xml
> > >Again, I would like to forcefully ensure that this doesn't end up
> > matching.
> >
> >    From memory - by default, the mode for matching incoming URIs to
> > your URI templates is 'starts with' rather than 'equals'.
> >
> > As Jerome wrote back in February 2008:
> > >In some cases, you might want to change this default mode, and this
> > >is easy to do via the "defaultMatchingMode" property on Router, or by
> > >modifying the "matchingMode" property of the template associated with
> > >the route created by the Router.attach() methods. For the modes, you
> can
> > >use the Template.MODE_EQUALS or Template.MODE_STARTS_WITH constants."
> >
> >    Here's one example of the latter:
> >
> > router.getTemplate().setMatchingMode(Template.MODE_EQUALS)
> >
> >    Hope this is germane to your needs.
> >
> > Aron

 

Reply via email to