Re: [vote] Name the release after 1.3

2007-04-19 Thread Johan Compagner

[] Apache Wicket Omega


i see most are voting for wicket 2.0 are we sure about that?
i think it won't even be that big api break (i really think it will be much
less then 1.2 - 1.3)
and it will be still very close to what we call now 2.0.. so it could be
confusing in the short term.
so mostly it will be java 5, so maybe

[x] Apache Wicket 1.5


johan
(but i don't mind Wicket 2.0)

On 4/19/07, Martijn Dashorst [EMAIL PROTECTED] wrote:


There is a vote already in place for switching the development
branches around. Now it is time to name the release after 1.3 (and not
1.3.1 :).

Apache Wicket 1.3 will be followed by:
[ ] Apache Wicket 1.4
[ ] Apache Wicket 1.5 (after the JDK)
[ ] Apache Wicket 5 (similar, but more accurate)
[ ] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor change)
[ ] Apache Wicket 2007
[ ] Apache Wicket r59332 (just use the damned revision number)

Other proposals are permitted.

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org



Re: [Wicket-user] [announce] wicket 1.x development has moved to trunk in svn

2007-04-19 Thread Vincent Demay

OK, so I think it will be fine if we also switch
- wicketstuff/trunk to wicketstuff/branches/wicket-2-DISCONTINUED 
- wicketstuff/branches/wicket1.x to wicketstuff/trunk



--
Vincent


Martijn Dashorst a écrit :

We have now switched trunk and wicket 1.x in subversion. We have been
getting reports of confused users about the status of Wicket and where
to get the code from.

We appologize for the inconvenience this will cause.

From now on trunk is again our main development branch.

The previous Wicket 2 *with* constructor change has now been moved to
branches/wicket-2-DISCONTINUED and is in maintenance mode (i.e. only
bug fixes on a case-by-case basis).


* Switching Wicket 1.3

  If you depended on branches/wicket-1.x do the following in your
checked out working
  copy:
  svn switch http://svn.apache.org/repos/asf/incubator/wicket/trunk

  (if you are a Wicket committer, substitute http with https)

* Switching Wicket 2

  If you were working on trunk and want to stay with the latest in
that branch you will
  need to do the following in your working copy:
  svn switch
http://svn.apache.org/repos/asf/incubator/wicket/branches/wicket-2-DISCONTINUED

  (if you are a Wicket committer, substitute http with https)

We will switch the svn branches in wicket-stuff too.

Best regards,

Martijn

  




Re: [Wicket-user] [announce] wicket 1.x development has moved to trunk in svn

2007-04-19 Thread Martijn Dashorst

On 4/19/07, Vincent Demay [EMAIL PROTECTED] wrote:

OK, so I think it will be fine if we also switch
 - wicketstuff/trunk to wicketstuff/branches/wicket-2-DISCONTINUED
 - wicketstuff/branches/wicket1.x to wicketstuff/trunk


I think it is best to coordinate this with contributors to
wicketstuff. If anyone has outstanding changes.

I'm willing to do the switch, but don't want to upset people too much :)

If anyone else is willing to do it, fine by me, as long as we coordinate.

I propose we do the switch for wicketstuff at (or around) 6pm CET (for
us euros: 18:00 central european time).

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: [Wicket-user] [announce] wicket 1.x development has moved to trunk in svn

2007-04-19 Thread Bart Molenkamp

Martijn Dashorst wrote:


I propose we do the switch for wicketstuff at (or around) 6pm CET (for
us euros: 18:00 central european time).



OK.

Bart.


Re: [Wicket-user] [announce] wicket 1.x development has moved to trunk in svn

2007-04-19 Thread Martijn Dashorst

On 4/19/07, Vincent Demay [EMAIL PROTECTED] wrote:

 If anyone else is willing to do it, fine by me, as long as we coordinate.
As you want, you can do it, but if you are bored with svn mv, I can do it


I don't mind doing it.


 I propose we do the switch for wicketstuff at (or around) 6pm CET (for
 us euros: 18:00 central european time).
Why 18:00? is it your favorite time in the day ;) ?


It is because then the west coast of the US is awake for a couple of
hours, so they also have the opportunity to perform their last
commits. And for us euro boys a whole working day.

Martijn
--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: [Wicket-user] [announce] wicket 1.x development has moved to trunk in svn

2007-04-19 Thread Vincent Demay

Martijn Dashorst a écrit :

On 4/19/07, Vincent Demay [EMAIL PROTECTED] wrote:
 If anyone else is willing to do it, fine by me, as long as we 
coordinate.
As you want, you can do it, but if you are bored with svn mv, I can 
do it


I don't mind doing it.

Ok, do it ;)



 I propose we do the switch for wicketstuff at (or around) 6pm CET (for
 us euros: 18:00 central european time).
Why 18:00? is it your favorite time in the day ;) ?


It is because then the west coast of the US is awake for a couple of
hours, so they also have the opportunity to perform their last
commits. And for us euro boys a whole working day.

Martijn




Re: [vote] Move trunk to branches, promote wicket-1.x to trunk

2007-04-19 Thread Jean-Baptiste Quenot
* Martijn Dashorst:
 This is a vote to promote 1.x to trunk and demote trunk to branches
 with an appropiate label, and do it soon (as in now)
 
 [x] yes, switch them
 [ ] no, don't switch them
-- 
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/


Re: [vote] Name the release after 1.3

2007-04-19 Thread Jean-Baptiste Quenot
* Martijn Dashorst:
 
 Apache Wicket 1.3 will be followed by:
 [x] Apache Wicket 1.4
 [ ] Apache Wicket 1.5 (after the JDK)
 [ ] Apache Wicket 5 (similar, but more accurate)
 [ ] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor change)
 [ ] Apache Wicket 2007
 [ ] Apache Wicket r59332 (just use the damned revision number)

No major new API will justify the change to 2.0, and 2.0 might be a
confusing name as we just discontinued it.  2.0 makes me think of
a child prematurely born dead.

If we consider that an API break justifies bumping the major
version number, we should already have renamed 1.3 to 2.0.
As it seems API break doesn't imply major version number change,
why would you do it for 1.4 and not for 1.3?

Furthermore bumping a major version number often means we're
providing brand new features, not just introducing Java 1.5
syntax, as there is no real added value to that except increased
comfort.
-- 
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/


Re: [vote] Name the release after 1.3

2007-04-19 Thread Gwyn Evans
Wednesday, April 18, 2007, 11:04:12 PM, Martijn wrote:

 There is a vote already in place for switching the development
 branches around. Now it is time to name the release after 1.3 (and not
 1.3.1 :).

 Apache Wicket 1.3 will be followed by:
 [+1] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor change)

I think there /will/ be a certain amount of confusion, but I do think
that the jump to Java 2/JDK1.5, justifies the major version increment.

I do however wonder if the following would be better...

[ ] Apache Wicket 2.1 (one step beyond)

/Gwyn



Re: About the votes

2007-04-19 Thread Gwyn Evans
Thursday, April 19, 2007, 10:51:15 AM, Jean-Baptiste wrote:
 Can you please wait at least  24 or 48 hours before taking action,
 and wait for more developers to express their opinion?

 For European  people like  me the  vote started  yesterday evening
 when leaving the office, and the switch from 1.x to trunk has been
 checked in in the morning,  when the workday begins.  That doesn't
 leave a lot of time to raise any concern.

Got to agree here - if there was a security issue, then maybe the rush
would be justified, but if not, then I'd have expected 48 hrs minimum.

 Were you so confident about the result of the vote?

To my mind, the vote isn't to gather enough agreement, it's to ensure
that there's not a disagreement/better alternative option  overnight
votes won't help with that...

/Gwyn



Re: [vote] Name the release after 1.3

2007-04-19 Thread Charlie Dobbie

[x] Apache Wicket 1.4  (Non-binding vote)

Having declared 2.0 a dead-end, you shouldn't release anything with
the same version number within six months at least - there's too much
potential for confusion IMHO.  Not to mention tutorials and code
snippets that are floating around labelled for Wicket 2.0.  Yikes.

Charlie.



On 4/19/07, Gwyn Evans [EMAIL PROTECTED] wrote:

Wednesday, April 18, 2007, 11:04:12 PM, Martijn wrote:

 There is a vote already in place for switching the development
 branches around. Now it is time to name the release after 1.3 (and not
 1.3.1 :).

 Apache Wicket 1.3 will be followed by:
 [+1] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor change)

I think there /will/ be a certain amount of confusion, but I do think
that the jump to Java 2/JDK1.5, justifies the major version increment.

I do however wonder if the following would be better...

[ ] Apache Wicket 2.1 (one step beyond)

/Gwyn




Error logging

2007-04-19 Thread Ivo van Dongen

Hi list,

I have a problem with error logging strategies. In our application, we use a
log4j SMTP  appender, that sends out alarming emails in case of error logs.
However, we cannot properly control our wicket application as far as logging
is concerned. The problem is that this causes us to receive emails, for
instance, when a user  enters an incorrect URL - which is hardly alarming,
I'd say.

We override the application's getDefaultRequestCycleFactory to return a
factory that constructs  WebRequestCycle instances that override the
onRuntimeException method - we assumed that that way we could control
logging in case of runtime exceptions. However, in **private** methods of
RequestCycle, Exceptions are logged on the error level, most notably
RuntimeException. In the step() method for example, the following snippet
causes our problems:

catch (RuntimeException e)
{
   // set step manually to handle exception
   currentStep = HANDLE_EXCEPTION;

   // probably our last chance the exception can be logged
   log.error(e.getMessage(), e);

   // try to play nicely and let the request processor handle the
   // exception response. If that doesn't work, any runtime exception
   // will automatically be bubbled up
   if (processor != null)
   {
   processor.respond(e, this);
   }
}


I'd say one should allow more control: why not call a  protected method that
has a default implementation of log.error(e.getMessage, e) ? This way,  one
can easily adjust the logging level by overriding this method in a subclass.


Your thoughts?

Regards,

--
Ivo van Dongen
Func. Internet Integration
W http://www.func.nl
T +31 20 423
F +31 20 4223500


[warn] wicketstuff subversion reshuffle imminent

2007-04-19 Thread Martijn Dashorst

All,

Following the recent shuffle in the Apache Wicket repository, we will
also restructure the Wicket Stuff repo in the same manner.

new trunk will become wicket 1.x
existing trunk will move to branches/wicket-2-DISCONTINUED

I'll take care of the new project that was added to trunk, so it will
stay there. Any other stuff I need to know about?

For committers, please check your Wicket Stuff in before 6pm CET
(about less than 1.5 hours from now).

When the shuffle is completed, you can switch your local working copy
using the svn switch command.

For a couple of dormant projects this means that they will move with
trunk to the discontinued branch.

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: About the votes

2007-04-19 Thread Martijn Dashorst

On 4/19/07, Jean-Baptiste Quenot [EMAIL PROTECTED] wrote:

Can you please wait at least  24 or 48 hours before taking action,
and wait for more developers to express their opinion?

For European  people like  me the  vote started  yesterday evening
when leaving the office, and the switch from 1.x to trunk has been
checked in in the morning,  when the workday begins.  That doesn't
leave a lot of time to raise any concern.

Were you so confident about the result of the vote?


6 binding +1's from active committers, including 4 from the euro
continent, so I felt confident, and eager: the number of queries when
2.0 is coming out is quite annoying.

Apologies for being too enthousiastic with mv-ing the svn repo. I'll
add durations and types of vote counting (majority or veto-able) next
time.

In this case I think it is an inconvenience that the shuffle took
place, svn switch should not result in problems with uncommitted
changes (at least I haven't seen them to date).

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: Error logging

2007-04-19 Thread Jean-Baptiste Quenot
* Ivo van Dongen:

 I  have   a  problem  with  error   logging  strategies. In  our
 application,  we  use a  log4j  SMTP  appender, that  sends  out
 alarming  emails in  case  of error  logs.   However, we  cannot
 properly control  our wicket  application as  far as  logging is
 concerned. The problem is that this causes us to receive emails,
 for instance,  when a user  enters an  incorrect URL -  which is
 hardly alarming, I'd say.

You may be interested in this bug report:

PackageRequestTargetUrlCodingStrategy should  interrupts the cycle
and sends a 404 when a page/class cannot be found

http://issues.apache.org/jira/browse/WICKET-293

If there is massive user feedback about this one, it may gain more
attention ;-)

 I'd  say  one  should  allow   more  control:  why  not  call  a
 protected   method  that   has  a   default  implementation   of
 log.error(e.getMessage, e) ? This way, one can easily adjust the
 logging level by overriding this method in a subclass.

Check out the  latest code, a new protected method  has been added
just for that.
-- 
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/


Building a release of Wicket 1.3.0-incubating-beta (?) this weekend?

2007-04-19 Thread Martijn Dashorst

All,

Since we did the package rename, and now that biggest API breakers of
the backports are in, shall we now build a new release for 1.3? This
release would be made available to the larger community. The IPMC
would be much more willing to check it in this case.

Questions:
- should we create a release this weekend?
- how do we label it? [alpha, beta, general availability, ...]

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Updating the examples on wicketstuff.org

2007-04-19 Thread Jean-Baptiste Quenot
Hi there,

What is the procedure to update the examples on wicketstuff.org?

http://wicketstuff.org/wicket13/

Also, it would be great to have Javadocs deployed online at each
build.
-- 
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/


Re: Updating the examples on wicketstuff.org

2007-04-19 Thread Martijn Dashorst

To my best knowledge these get autodeployed by bamboo.

Martijn

On 4/19/07, Jean-Baptiste Quenot [EMAIL PROTECTED] wrote:

Hi there,

What is the procedure to update the examples on wicketstuff.org?

http://wicketstuff.org/wicket13/

Also, it would be great to have Javadocs deployed online at each
build.
--
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/




--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


[announce] wicket-stuff for 1.x has moved to trunk in svn

2007-04-19 Thread Martijn Dashorst

We will switch the svn branches in wicket-stuff too.


This is also completed as of now. Wicket Stuff svn now mirrors Wicket
svn in structure.

* Trunk of wicket stuff has been moved to branches/wicket-2-DISCONTINUED
* Branch wicket-1.x has been moved to trunk

If you have code checked out for wicket 1.x you can switch using

 svn switch 
http://wicket-stuff.svn.sourceforge.net/svnroot/wicket-stuff/trunk/project

If you have old trunk code checked out, you can switch using

 svn switch 
http://wicket-stuff.svn.sourceforge.net/svnroot/wicket-stuff/branches/wicket-2-DISCONTINUED/project

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: Building a release of Wicket 1.3.0-incubating-beta (?) this weekend?

2007-04-19 Thread Eelco Hillenius

Questions:
 - should we create a release this weekend?


Yes, please.


 - how do we label it? [alpha, beta, general availability, ...]


Beta.

You want schedule some time in to go through JIRA as well?

Eelco


Re: Building a release of Wicket 1.3.0-incubating-beta (?) this weekend?

2007-04-19 Thread Martijn Dashorst

On 4/19/07, Eelco Hillenius [EMAIL PROTECTED] wrote:

You want schedule some time in to go through JIRA as well?


I'll just build the release. I can schedule the cut of the code base
to a specific time, though. Especially if 1.2.6 is going out too (and
I have some writing to do as well).

Martijn

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: Error logging

2007-04-19 Thread Eelco Hillenius

 I'd  say  one  should  allow   more  control:  why  not  call  a
 protected   method  that   has  a   default  implementation   of
 log.error(e.getMessage, e) ? This way, one can easily adjust the
 logging level by overriding this method in a subclass.

Check out the  latest code, a new protected method  has been added
just for that.


Yep. If you create a custom request cycle now, you can override
logRuntimeException(RuntimeException). Don't call super in there when
you don't want it to be logged without interference. Also
onRuntimeException(Page, RuntimeException) is always called if you
want more control over what is displayed to users.

Eelco


[discussion] Name the release after 1.3 WAS Re: [vote] Name the release after 1.3

2007-04-19 Thread Igor Vaynberg

its not just an api break. it is also the fact that we changed the
underlying technology. ive seen a lot of projects jump a major version when
they switched to jdk 1.5 without adding too many features.

it will also make it easier for martijn and eelco to continue with their
book as they dont have to rebrand it with their publisher

-igor


On 4/19/07, Jean-Baptiste Quenot [EMAIL PROTECTED] wrote:


* Martijn Dashorst:

 Apache Wicket 1.3 will be followed by:
 [x] Apache Wicket 1.4
 [ ] Apache Wicket 1.5 (after the JDK)
 [ ] Apache Wicket 5 (similar, but more accurate)
 [ ] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor change)
 [ ] Apache Wicket 2007
 [ ] Apache Wicket r59332 (just use the damned revision number)

No major new API will justify the change to 2.0, and 2.0 might be a
confusing name as we just discontinued it.  2.0 makes me think of
a child prematurely born dead.

If we consider that an API break justifies bumping the major
version number, we should already have renamed 1.3 to 2.0.
As it seems API break doesn't imply major version number change,
why would you do it for 1.4 and not for 1.3?

Furthermore bumping a major version number often means we're
providing brand new features, not just introducing Java 1.5
syntax, as there is no real added value to that except increased
comfort.
--
 Jean-Baptiste Quenot
aka  John Banana   Qwerty
http://caraldi.com/jbq/



Re: Updating the examples on wicketstuff.org

2007-04-19 Thread Igor Vaynberg

but i wonder if the symlink points to 1.3-snap or 1.3.0-snap?

-igor


On 4/19/07, Martijn Dashorst [EMAIL PROTECTED] wrote:


To my best knowledge these get autodeployed by bamboo.

Martijn

On 4/19/07, Jean-Baptiste Quenot [EMAIL PROTECTED] wrote:
 Hi there,

 What is the procedure to update the examples on wicketstuff.org?

 http://wicketstuff.org/wicket13/

 Also, it would be great to have Javadocs deployed online at each
 build.
 --
  Jean-Baptiste Quenot
 aka  John Banana   Qwerty
 http://caraldi.com/jbq/



--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org



Re: Updating the examples on wicketstuff.org

2007-04-19 Thread Igor Vaynberg

hrm, we used to have a symlink in tomcat's webapps dir that pointed to where
maven installed the jars, so it would all work automagically. but now i see
there is a copywicket13.sh that copies manually and the symlink is gone. any
reason johan?

-igor


On 4/19/07, Igor Vaynberg [EMAIL PROTECTED] wrote:


but i wonder if the symlink points to 1.3-snap or 1.3.0-snap?

-igor


On 4/19/07, Martijn Dashorst  [EMAIL PROTECTED] wrote:

 To my best knowledge these get autodeployed by bamboo.

 Martijn

 On 4/19/07, Jean-Baptiste Quenot [EMAIL PROTECTED] wrote:
  Hi there,
 
  What is the procedure to update the examples on wicketstuff.org?
 
  http://wicketstuff.org/wicket13/
 
  Also, it would be great to have Javadocs deployed online at each
  build.
  --
   Jean-Baptiste Quenot
  aka  John Banana   Qwerty
  http://caraldi.com/jbq/
 


 --
 Learn Wicket at ApacheCon Europe: http://apachecon.com
 Join the wicket community at irc.freenode.net: ##wicket
 Wicket 1.2.5 will keep your server alive. Download Wicket now!
 http://wicketframework.org





Re: Building a release of Wicket 1.3.0-incubating-beta (?) this weekend?

2007-04-19 Thread Igor Vaynberg

On 4/19/07, Martijn Dashorst [EMAIL PROTECTED] wrote:


All,

Since we did the package rename, and now that biggest API breakers of
the backports are in, shall we now build a new release for 1.3? This
release would be made available to the larger community. The IPMC
would be much more willing to check it in this case.

Questions:
- should we create a release this weekend?



you mean a public release?

that depens on whether or not johan can get the attach/beginrender refactor
in before then. that will break clients, so we should get it in before doing
any soft of public release.

- how do we label it? [alpha, beta, general availability, ...]


if johan gets the refactor in call it a beta because they all major tweaks
are in. if not, and you still want to make a release, call it alpha. and
whatever you do, no matter how desperate you are, do not call it general
availability.

-igor


Martijn


--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org



Re: [vote] Name the release after 1.3

2007-04-19 Thread Al Maw

Charlie Dobbie wrote:

[x] Apache Wicket 1.4  (Non-binding vote)

Having declared 2.0 a dead-end, you shouldn't release anything with
the same version number within six months at least - there's too much
potential for confusion IMHO.  Not to mention tutorials and code
snippets that are floating around labelled for Wicket 2.0.  Yikes.


I have to agree with this, much as it may be a pain for the book. :-/

I'm inclined to adopt the full-on Apache versioning scheme, which means:

 - Non-backwards compatible updates are x.0.0
 - Backwards compatible updates are x.y.0
 - Forwards/backwards interchangable patch versions are x.y.z

What about 3.0.0 with a move to this versioning scheme thereafter?

Regards,

Al


Re: [vote] Name the release after 1.3

2007-04-19 Thread Janne Hietamäki


On 19.4.2007, at 1.04, Martijn Dashorst wrote:

Apache Wicket 1.3 will be followed by:

[x] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor  
change)


Re: [vote] Name the release after 1.3

2007-04-19 Thread Bruno Borges

[x] Apache Wicket 7.05 - I'm an Ubuntu user... :D

On 4/19/07, Janne Hietamäki [EMAIL PROTECTED] wrote:



On 19.4.2007, at 1.04, Martijn Dashorst wrote:
 Apache Wicket 1.3 will be followed by:

 [x] Apache Wicket 2.0 (i.e. becomes our old 2.0 minus the c'tor
 change)





--
Bruno Borges
Summa Technologies Inc.
www.summa-tech.com
(48) 8404-1300
(11) 3055-2060


[vote] Release Wicket 1.2.6

2007-04-19 Thread Martijn Dashorst

This is a vote to release Wicket 1.2.6 this weekend.

There are still some issues open, but I hope they can be solved either
for we release, or we should just postpone them to 1.2.7

Open issues:

WICKET-268  NPE in ListView.renderItem(ListItem)
WICKET-349  ListView can't undo changes to model
WICKET-475  NPE in WebClientInfo when user-agent header is not sent
WICKET-438  File handles are leaked when loading images from a jar
file, Tomcat crashes

The list of fixes is quite long, and contains a security related
issue. Therefore I issue this vote to release Wicket 1.2.6 this
weekend (build will be done on sunday).

[ ] Release wicket 1.2.6 regardless if these four issues are resolved
[ ] Release wicket 1.2.6 but I'll make sure these get fixed
[ ] Don't release wicket 1.2.6 until these four issues are resolved

Wicket 1.2.6 will be released on our old SF.net hardware, and will not
be endorsed by the ASF, just as 1.2.4 and 1.2.5 were released.

This is a vote by majority, and lasts until sunday noon CET (for Euros: 12:00).

Martijn

ps. I hope I still remember how to build a 1.2 style release.

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org


Re: [vote] Release Wicket 1.2.6

2007-04-19 Thread Igor Vaynberg

[x] Release wicket 1.2.6 regardless if these four issues are resolved

-igor

On 4/19/07, Martijn Dashorst [EMAIL PROTECTED] wrote:


This is a vote to release Wicket 1.2.6 this weekend.

There are still some issues open, but I hope they can be solved either
for we release, or we should just postpone them to 1.2.7

Open issues:

WICKET-268  NPE in ListView.renderItem(ListItem)
WICKET-349  ListView can't undo changes to model
WICKET-475  NPE in WebClientInfo when user-agent header is not sent
WICKET-438  File handles are leaked when loading images from a jar
file, Tomcat crashes

The list of fixes is quite long, and contains a security related
issue. Therefore I issue this vote to release Wicket 1.2.6 this
weekend (build will be done on sunday).

[ ] Release wicket 1.2.6 regardless if these four issues are resolved
[ ] Release wicket 1.2.6 but I'll make sure these get fixed
[ ] Don't release wicket 1.2.6 until these four issues are resolved

Wicket 1.2.6 will be released on our old SF.net hardware, and will not
be endorsed by the ASF, just as 1.2.4 and 1.2.5 were released.

This is a vote by majority, and lasts until sunday noon CET (for Euros:
12:00).

Martijn

ps. I hope I still remember how to build a 1.2 style release.

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org



Re: [vote] Release Wicket 1.2.6

2007-04-19 Thread Eelco Hillenius

[ x ] Release wicket 1.2.6 regardless if these four issues are resolved
[ ] Release wicket 1.2.6 but I'll make sure these get fixed
[ ] Don't release wicket 1.2.6 until these four issues are resolved

Eelco


Re: [vote] Release Wicket 1.2.6

2007-04-19 Thread Johan Compagner

Release it but i think igor can fix them all first tonight.


On 4/20/07, Martijn Dashorst [EMAIL PROTECTED] wrote:


This is a vote to release Wicket 1.2.6 this weekend.

There are still some issues open, but I hope they can be solved either
for we release, or we should just postpone them to 1.2.7

Open issues:

WICKET-268  NPE in ListView.renderItem(ListItem)
WICKET-349  ListView can't undo changes to model
WICKET-475  NPE in WebClientInfo when user-agent header is not sent
WICKET-438  File handles are leaked when loading images from a jar
file, Tomcat crashes

The list of fixes is quite long, and contains a security related
issue. Therefore I issue this vote to release Wicket 1.2.6 this
weekend (build will be done on sunday).

[ ] Release wicket 1.2.6 regardless if these four issues are resolved
[ ] Release wicket 1.2.6 but I'll make sure these get fixed
[ ] Don't release wicket 1.2.6 until these four issues are resolved

Wicket 1.2.6 will be released on our old SF.net hardware, and will not
be endorsed by the ASF, just as 1.2.4 and 1.2.5 were released.

This is a vote by majority, and lasts until sunday noon CET (for Euros:
12:00).

Martijn

ps. I hope I still remember how to build a 1.2 style release.

--
Learn Wicket at ApacheCon Europe: http://apachecon.com
Join the wicket community at irc.freenode.net: ##wicket
Wicket 1.2.5 will keep your server alive. Download Wicket now!
http://wicketframework.org



JavaScript object

2007-04-19 Thread Jonathan Locke

Something like class below (although perhaps more efficient) could help us to
decorate and merge javascript in our AJAX code.  Because code merges only
occur one layer at a time, it's as good as an AST for our simple purposes
(we don't need to globally refactor JavaScript, for example, only combine it
neatly), but much easier to use.  I personally would have no problem
breaking the API to make this better, but we could also do this with 100%
backwards compat by simply having things that need JavaScript make a call to
a getWhateverJavaScript() method first and if that returns null (in the
default impl), it could proceed to do what it does now.  So basically if you
wanted to assemble your script this new way, you could override these new
methods and the old stuff would be bypassed.  Feedback?

Jonathan

---

package thoof.util.javascript;

import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

import org.apache.wicket.util.io.Streams;
import org.apache.wicket.util.string.interpolator.MapVariableInterpolator;

public class JavaScript {

private final String script;

private static final Pattern UNINTERPOLATED_VARIABLES = Pattern
.compile(\\s*\\$\\{\\w+\\}\\s*);

public JavaScript(final String script) {
this.script = script;
}

public static JavaScript load(final Class? type, final String
resourceName) {
return load(type.getResourceAsStream(resourceName));
}

public static JavaScript load(final InputStream in) {
try {
return new JavaScript(Streams.readString(in));
} catch (final IOException e) {
throw new IllegalStateException(Cannot load email template,
e);
}
}

public final JavaScript merge(final MapString, Object map) {
final String mergedScript = new MapVariableInterpolator(this.script,
map).toString();
return new JavaScript(UNINTERPOLATED_VARIABLES.matcher(mergedScript)
.replaceAll( ));
}

public final JavaScript merge(final Object... args) {
if (args.length % 2 != 0) {
throw new IllegalArgumentException(
Invalid interpolation arguments);
}
final MapString, Object map = new HashMapString, Object();
for (int i = 0; i  args.length; i += 2) {
if (args[i] instanceof String) {
map.put((String) args[i], args[i + 1]);
} else {
throw new IllegalArgumentException(
Invalid interpolation arguments);
}
}
return merge(map);
}

public final JavaScript prepend(final JavaScript script) {
return new JavaScript(script + ; + this.script);
}

public final JavaScript append(final JavaScript script) {
return new JavaScript(this.script + ; + script);
}

public final JavaScript function(final String functionName) {
return new JavaScript(var  + functionName +  = function {  +
script
+ };);
}

@Override
public String toString() {
return MapVariableInterpolator.interpolate(script,
Collections.EMPTY_MAP);
}

public static void main(final String arguments[]) {
JavaScript code = new JavaScript(var x = 10 + 3);
System.out.println( + code.toString());
code = code.prepend(new JavaScript(a + b));
System.out.println( + code.toString());
code = code.append(new JavaScript(c + d));
System.out.println( + code.toString());
code = code.function(callback);
System.out.println( + code.toString());
JavaScript ajax = new JavaScript(
var wcall; ${beforeCallback} wcall =
wicketAjaxGet('${url}', function() { ${success} }, function() { ${failure}
}); ${afterCallback} return !wcall;););
code = ajax.merge(url, /abc/def, beforeCallback, code,
afterCallback, a = b + c + d);
System.out.println( + code.toString());
}
}

-- 
View this message in context: 
http://www.nabble.com/JavaScript-object-tf3610605.html#a10089745
Sent from the Wicket - Dev mailing list archive at Nabble.com.



Re: JavaScript object

2007-04-19 Thread Jonathan Locke


yeah, it's a little tricky, but i think the inheritance hierarchy can
provide the levels you're looking for (sort of as it does now) with
overrides and calls to super.  i'm not sure exactly what you are asking me
to do, but the code might look like this (if i understand you right):

class QueryGoogle
{
JavaScript getScript() 
{ 
final JavaScript script = new JavaScript(function
wget(http://www.google.com/q=${query},function(){${success}},function(){${failure}});
 
return script.merge(query, getQuery(), success, getSuccess(),
failure, getFailure());
}

protected abstract JavaScript getQuery();
protected JavaScript getSuccess() { return JavaScript.EMPTY; }
protected JavaScript getFailure() { return JavaScript.EMPTY; }
}

class CucumberQuery
{
JavaScript getQuery() { return new JavaScript(cucumbers); }
}

class ThrottlingCucumberQuery extends CucumberQuery
{
JavaScript getQuery() { return new
ThrottlingDecorator(super.getQuery()); }
}

class NoTomatoAndAlertCucumberQuery extends CucumberQuery
{
JavaScript noTomatoes = new JavaScript(...);
JavaScript alert = new JavaScript(...);
JavaScript getQuery() { return
super.getQuery().append(noTomatoes).append(alert); }
}

Of course, if the cucumber script supports some kind of merging, it would
have to provide insertion points, like:

class CucumberQuery
{
JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
moreCucumbers); }
}


igor.vaynberg wrote:
 
 so you got single level layering
 
 but what about multi level?
 
 lets say our default ajax behavior returns this:
 
 JavaScript code = new JavaScript(
 function
 wget(http://www.google.com/q=${query},function(){${success}},function(){${failure}});
 
 now something down the road wants to search google for cucumbers
 
 so it does
 
 return code.merge(query,cucumbers);
 
 something later down the road wants to exclude tomatoes from the search
 results, and also add an alert on failure, but since the previous script
 lost all the placeholders how would that work? i mean its really use it or
 lose it.
 
 unless the previous script that added cucumbers now provides its own
 placeholders for all the previous placeholders, but these need to be
 factored into functions or some such.
 
 could you show me what that would look like with your code?
 
 so...
 
 JavaScript code = new JavaScript(
 function
 wget(http://www.google.com/q=${query},function(){${success}},function(){${failure}});
 
 one layer adds cucumbers to the query
 
 the next layer excludes tomatoes and adds an alert on failure
 
 -igor
 
 
 On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:



 A throttling decorator would look like this:

 public static class ThrottlingDecorator extends JavaScript {

 private static final JavaScript THROTTLER = new JavaScript(
 wicketThrottler.throttle('${id}', ${milliseconds},
 ${function}););

 public ThrottlingDecorator(final String id,
 final Duration maxFrequency, final JavaScript script) {
 super(THROTTLER.merge(id, id, milliseconds, maxFrequency
 .getMilliseconds(), function, script.function()));
 }
 }

 and usage of that would be:

 code = new ThrottlingDecorator(id, Duration.ONE_SECOND, code);


 Jonathan Locke wrote:
 
  Something like class below (although perhaps more efficient) could help
 us
  to decorate and merge javascript in our AJAX code.  Because code merges
  only occur one layer at a time, it's as good as an AST for our simple
  purposes (we don't need to globally refactor JavaScript, for example,
 only
  combine it neatly), but much easier to use.  I personally would have no
  problem breaking the API to make this better, but we could also do this
  with 100% backwards compat by simply having things that need JavaScript
  make a call to a getWhateverJavaScript() method first and if that
 returns
  null (in the default impl), it could proceed to do what it does now. 
 So
  basically if you wanted to assemble your script this new way, you could
  override these new methods and the old stuff would be
 bypassed.  Feedback?
 
  Jonathan
 
  ---
 
  package thoof.util.javascript;
 
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Map;
  import java.util.regex.Pattern;
 
  import org.apache.wicket.util.io.Streams;
  import
 org.apache.wicket.util.string.interpolator.MapVariableInterpolator;
 
  public class JavaScript {
 
  private final String script;
 
  private static final Pattern UNINTERPOLATED_VARIABLES = Pattern
  .compile(\\s*\\$\\{\\w+\\}\\s*);
 
  public JavaScript(final String script) {
  this.script = script;
  }
 
  public static JavaScript load(final Class? type, final String
  resourceName) {
  return 

Re: JavaScript object

2007-04-19 Thread Igor Vaynberg

im not getting the warm and fuzzy about this. i want to, but im not.

take our base query which has the similar success and failure points as my
example. in order to facilitate those you still need the generic
ajaxcalldecorator design because those placeholders are inherited across
all layers, and JavaScript doesnt support this.

further what you have done is design a hierarchy where each layer builds on
the previous. but that means each layer has to know the previous layers'
class so it can override the proper places. this is not true in our ajax
support. we need to be able to decorate things generically.

like what you have done today - add a parameter to the back of the url.
well, maybe someone after you wants to do the same. and maybe someone after
that as well. so it somehow needs to be generic, and i think something like

charsequence buildurl() {
  return super.buildurl()+myparam=foo;
}

is the only way to do that unfortunately. i dont see how JavaScript will
make that easier.

maybe im just entirely missing the point.

-igor


On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:




oops i forgot the new virtual:

class abstract CucumberQuery
{
JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
moreCucumbers).merge(getMiddle()); }

protected abstract Javascript getMiddle();
}


Jonathan Locke wrote:


 yeah, it's a little tricky, but i think the inheritance hierarchy can
 provide the levels you're looking for (sort of as it does now) with
 overrides and calls to super.  i'm not sure exactly what you are asking
me
 to do, but the code might look like this (if i understand you right):

 class QueryGoogle
 {
 JavaScript getScript()
 {
 final JavaScript script = new JavaScript(function
 wget(
http://www.google.com/q=${query},function(){${success}},function(){${failure}}
);
 return script.merge(query, getQuery(), success,
getSuccess(),
 failure, getFailure());
 }

 protected abstract JavaScript getQuery();
 protected JavaScript getSuccess() { return JavaScript.EMPTY; }
 protected JavaScript getFailure() { return JavaScript.EMPTY; }
 }

 class CucumberQuery
 {
 JavaScript getQuery() { return new JavaScript(cucumbers); }
 }

 class ThrottlingCucumberQuery extends CucumberQuery
 {
 JavaScript getQuery() { return new
 ThrottlingDecorator(super.getQuery()); }
 }

 class NoTomatoAndAlertCucumberQuery extends CucumberQuery
 {
 JavaScript noTomatoes = new JavaScript(...);
 JavaScript alert = new JavaScript(...);
 JavaScript getQuery() { return
 super.getQuery().append(noTomatoes).append(alert); }
 }

 Of course, if the cucumber script supports some kind of merging, it
would
 have to provide insertion points, like:

 class CucumberQuery
 {
 JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
 moreCucumbers); }
 }


 igor.vaynberg wrote:

 so you got single level layering

 but what about multi level?

 lets say our default ajax behavior returns this:

 JavaScript code = new JavaScript(
 function
 wget(
http://www.google.com/q=${query},function(){${success}},function(){${failure}}
);

 now something down the road wants to search google for cucumbers

 so it does

 return code.merge(query,cucumbers);

 something later down the road wants to exclude tomatoes from the search
 results, and also add an alert on failure, but since the previous
script
 lost all the placeholders how would that work? i mean its really use it
 or
 lose it.

 unless the previous script that added cucumbers now provides its own
 placeholders for all the previous placeholders, but these need to be
 factored into functions or some such.

 could you show me what that would look like with your code?

 so...

 JavaScript code = new JavaScript(
 function
 wget(
http://www.google.com/q=${query},function(){${success}},function(){${failure}}
);

 one layer adds cucumbers to the query

 the next layer excludes tomatoes and adds an alert on failure

 -igor


 On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:



 A throttling decorator would look like this:

 public static class ThrottlingDecorator extends JavaScript {

 private static final JavaScript THROTTLER = new JavaScript(
 wicketThrottler.throttle('${id}', ${milliseconds},
 ${function}););

 public ThrottlingDecorator(final String id,
 final Duration maxFrequency, final JavaScript script)
{
 super(THROTTLER.merge(id, id, milliseconds,
maxFrequency
 .getMilliseconds(), function, script.function
()));
 }
 }

 and usage of that would be:

 code = new ThrottlingDecorator(id, Duration.ONE_SECOND,
code);


 Jonathan Locke wrote:
 
  Something like class below (although perhaps more efficient) could
 help
 us
  to decorate and merge javascript in our AJAX code.  Because code
 merges
  only occur one layer at a time, it's as good as an AST for our

Re: JavaScript object

2007-04-19 Thread Jonathan Locke


it could be that i don't understand what we're doing well enough.  
i certainly don't understand your specific concern.  the throttling 
decorator i showed you is completely generic and can decorate any
javascript code.


igor.vaynberg wrote:
 
 im not getting the warm and fuzzy about this. i want to, but im not.
 
 take our base query which has the similar success and failure points as my
 example. in order to facilitate those you still need the generic
 ajaxcalldecorator design because those placeholders are inherited across
 all layers, and JavaScript doesnt support this.
 
 further what you have done is design a hierarchy where each layer builds
 on
 the previous. but that means each layer has to know the previous layers'
 class so it can override the proper places. this is not true in our ajax
 support. we need to be able to decorate things generically.
 
 like what you have done today - add a parameter to the back of the url.
 well, maybe someone after you wants to do the same. and maybe someone
 after
 that as well. so it somehow needs to be generic, and i think something
 like
 
 charsequence buildurl() {
return super.buildurl()+myparam=foo;
 }
 
 is the only way to do that unfortunately. i dont see how JavaScript will
 make that easier.
 
 maybe im just entirely missing the point.
 
 -igor
 
 
 On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:



 oops i forgot the new virtual:

 class abstract CucumberQuery
 {
 JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
 moreCucumbers).merge(getMiddle()); }

 protected abstract Javascript getMiddle();
 }


 Jonathan Locke wrote:
 
 
  yeah, it's a little tricky, but i think the inheritance hierarchy can
  provide the levels you're looking for (sort of as it does now) with
  overrides and calls to super.  i'm not sure exactly what you are asking
 me
  to do, but the code might look like this (if i understand you right):
 
  class QueryGoogle
  {
  JavaScript getScript()
  {
  final JavaScript script = new JavaScript(function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
  return script.merge(query, getQuery(), success,
 getSuccess(),
  failure, getFailure());
  }
 
  protected abstract JavaScript getQuery();
  protected JavaScript getSuccess() { return JavaScript.EMPTY; }
  protected JavaScript getFailure() { return JavaScript.EMPTY; }
  }
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers); }
  }
 
  class ThrottlingCucumberQuery extends CucumberQuery
  {
  JavaScript getQuery() { return new
  ThrottlingDecorator(super.getQuery()); }
  }
 
  class NoTomatoAndAlertCucumberQuery extends CucumberQuery
  {
  JavaScript noTomatoes = new JavaScript(...);
  JavaScript alert = new JavaScript(...);
  JavaScript getQuery() { return
  super.getQuery().append(noTomatoes).append(alert); }
  }
 
  Of course, if the cucumber script supports some kind of merging, it
 would
  have to provide insertion points, like:
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers;
 ${middle};
  moreCucumbers); }
  }
 
 
  igor.vaynberg wrote:
 
  so you got single level layering
 
  but what about multi level?
 
  lets say our default ajax behavior returns this:
 
  JavaScript code = new JavaScript(
  function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
 
  now something down the road wants to search google for cucumbers
 
  so it does
 
  return code.merge(query,cucumbers);
 
  something later down the road wants to exclude tomatoes from the
 search
  results, and also add an alert on failure, but since the previous
 script
  lost all the placeholders how would that work? i mean its really use
 it
  or
  lose it.
 
  unless the previous script that added cucumbers now provides its own
  placeholders for all the previous placeholders, but these need to be
  factored into functions or some such.
 
  could you show me what that would look like with your code?
 
  so...
 
  JavaScript code = new JavaScript(
  function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
 
  one layer adds cucumbers to the query
 
  the next layer excludes tomatoes and adds an alert on failure
 
  -igor
 
 
  On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:
 
 
 
  A throttling decorator would look like this:
 
  public static class ThrottlingDecorator extends JavaScript {
 
  private static final JavaScript THROTTLER = new JavaScript(
  wicketThrottler.throttle('${id}', ${milliseconds},
  ${function}););
 
  public ThrottlingDecorator(final String id,
  final Duration maxFrequency, final JavaScript script)
 {
  super(THROTTLER.merge(id, id, milliseconds,
 maxFrequency
  

Re: JavaScript object

2007-04-19 Thread Jonathan Locke


don't forget that a javascript decorator isa JavaScript, so you can nest
them arbitrarily:

public static class ThrottlingDecorator extends JavaScript {  
}

JavaScript code = new WhateverDecorator(new ThrottlingDecorator(script));

i'm still not getting what you think is missing from this solution.  it
could be that i don't
understand the requirements fully, but this solution i'm proposing
definitely decorates
to any number of levels you want.


igor.vaynberg wrote:
 
 im not getting the warm and fuzzy about this. i want to, but im not.
 
 take our base query which has the similar success and failure points as my
 example. in order to facilitate those you still need the generic
 ajaxcalldecorator design because those placeholders are inherited across
 all layers, and JavaScript doesnt support this.
 
 further what you have done is design a hierarchy where each layer builds
 on
 the previous. but that means each layer has to know the previous layers'
 class so it can override the proper places. this is not true in our ajax
 support. we need to be able to decorate things generically.
 
 like what you have done today - add a parameter to the back of the url.
 well, maybe someone after you wants to do the same. and maybe someone
 after
 that as well. so it somehow needs to be generic, and i think something
 like
 
 charsequence buildurl() {
return super.buildurl()+myparam=foo;
 }
 
 is the only way to do that unfortunately. i dont see how JavaScript will
 make that easier.
 
 maybe im just entirely missing the point.
 
 -igor
 
 
 On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:



 oops i forgot the new virtual:

 class abstract CucumberQuery
 {
 JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
 moreCucumbers).merge(getMiddle()); }

 protected abstract Javascript getMiddle();
 }


 Jonathan Locke wrote:
 
 
  yeah, it's a little tricky, but i think the inheritance hierarchy can
  provide the levels you're looking for (sort of as it does now) with
  overrides and calls to super.  i'm not sure exactly what you are asking
 me
  to do, but the code might look like this (if i understand you right):
 
  class QueryGoogle
  {
  JavaScript getScript()
  {
  final JavaScript script = new JavaScript(function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
  return script.merge(query, getQuery(), success,
 getSuccess(),
  failure, getFailure());
  }
 
  protected abstract JavaScript getQuery();
  protected JavaScript getSuccess() { return JavaScript.EMPTY; }
  protected JavaScript getFailure() { return JavaScript.EMPTY; }
  }
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers); }
  }
 
  class ThrottlingCucumberQuery extends CucumberQuery
  {
  JavaScript getQuery() { return new
  ThrottlingDecorator(super.getQuery()); }
  }
 
  class NoTomatoAndAlertCucumberQuery extends CucumberQuery
  {
  JavaScript noTomatoes = new JavaScript(...);
  JavaScript alert = new JavaScript(...);
  JavaScript getQuery() { return
  super.getQuery().append(noTomatoes).append(alert); }
  }
 
  Of course, if the cucumber script supports some kind of merging, it
 would
  have to provide insertion points, like:
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers;
 ${middle};
  moreCucumbers); }
  }
 
 
  igor.vaynberg wrote:
 
  so you got single level layering
 
  but what about multi level?
 
  lets say our default ajax behavior returns this:
 
  JavaScript code = new JavaScript(
  function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
 
  now something down the road wants to search google for cucumbers
 
  so it does
 
  return code.merge(query,cucumbers);
 
  something later down the road wants to exclude tomatoes from the
 search
  results, and also add an alert on failure, but since the previous
 script
  lost all the placeholders how would that work? i mean its really use
 it
  or
  lose it.
 
  unless the previous script that added cucumbers now provides its own
  placeholders for all the previous placeholders, but these need to be
  factored into functions or some such.
 
  could you show me what that would look like with your code?
 
  so...
 
  JavaScript code = new JavaScript(
  function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
 
  one layer adds cucumbers to the query
 
  the next layer excludes tomatoes and adds an alert on failure
 
  -igor
 
 
  On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:
 
 
 
  A throttling decorator would look like this:
 
  public static class ThrottlingDecorator extends JavaScript {
 
  private static final JavaScript THROTTLER = new JavaScript(
  wicketThrottler.throttle('${id}', ${milliseconds},
  

Re: JavaScript object

2007-04-19 Thread Jonathan Locke


your buildurl example cannot benefit from JavaScript because it is not
constructing code.  it is constructing something to be merged into code, and
the way you've coded it below is exactly right.  you'd just merge that in
with getUrl() overrides and super exactly the way you'd think.  but for
cases where it's code, you give users a bunch of nice extensible OO tools
for constructing scripts.  that's certainly better than String, imo.


Jonathan Locke wrote:
 
 
 don't forget that a javascript decorator isa JavaScript, so you can nest
 them arbitrarily:
 
 public static class ThrottlingDecorator extends JavaScript {  
 }
 
 JavaScript code = new WhateverDecorator(new ThrottlingDecorator(script));
 
 i'm still not getting what you think is missing from this solution.  it
 could be that i don't
 understand the requirements fully, but this solution i'm proposing
 definitely decorates
 to any number of levels you want.
 
 
 igor.vaynberg wrote:
 
 im not getting the warm and fuzzy about this. i want to, but im not.
 
 take our base query which has the similar success and failure points as
 my
 example. in order to facilitate those you still need the generic
 ajaxcalldecorator design because those placeholders are inherited
 across
 all layers, and JavaScript doesnt support this.
 
 further what you have done is design a hierarchy where each layer builds
 on
 the previous. but that means each layer has to know the previous layers'
 class so it can override the proper places. this is not true in our ajax
 support. we need to be able to decorate things generically.
 
 like what you have done today - add a parameter to the back of the url.
 well, maybe someone after you wants to do the same. and maybe someone
 after
 that as well. so it somehow needs to be generic, and i think something
 like
 
 charsequence buildurl() {
return super.buildurl()+myparam=foo;
 }
 
 is the only way to do that unfortunately. i dont see how JavaScript will
 make that easier.
 
 maybe im just entirely missing the point.
 
 -igor
 
 
 On 4/19/07, Jonathan Locke [EMAIL PROTECTED] wrote:



 oops i forgot the new virtual:

 class abstract CucumberQuery
 {
 JavaScript getQuery() { return new JavaScript(cucumbers; ${middle};
 moreCucumbers).merge(getMiddle()); }

 protected abstract Javascript getMiddle();
 }


 Jonathan Locke wrote:
 
 
  yeah, it's a little tricky, but i think the inheritance hierarchy can
  provide the levels you're looking for (sort of as it does now) with
  overrides and calls to super.  i'm not sure exactly what you are
 asking
 me
  to do, but the code might look like this (if i understand you right):
 
  class QueryGoogle
  {
  JavaScript getScript()
  {
  final JavaScript script = new JavaScript(function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
  return script.merge(query, getQuery(), success,
 getSuccess(),
  failure, getFailure());
  }
 
  protected abstract JavaScript getQuery();
  protected JavaScript getSuccess() { return JavaScript.EMPTY; }
  protected JavaScript getFailure() { return JavaScript.EMPTY; }
  }
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers); }
  }
 
  class ThrottlingCucumberQuery extends CucumberQuery
  {
  JavaScript getQuery() { return new
  ThrottlingDecorator(super.getQuery()); }
  }
 
  class NoTomatoAndAlertCucumberQuery extends CucumberQuery
  {
  JavaScript noTomatoes = new JavaScript(...);
  JavaScript alert = new JavaScript(...);
  JavaScript getQuery() { return
  super.getQuery().append(noTomatoes).append(alert); }
  }
 
  Of course, if the cucumber script supports some kind of merging, it
 would
  have to provide insertion points, like:
 
  class CucumberQuery
  {
  JavaScript getQuery() { return new JavaScript(cucumbers;
 ${middle};
  moreCucumbers); }
  }
 
 
  igor.vaynberg wrote:
 
  so you got single level layering
 
  but what about multi level?
 
  lets say our default ajax behavior returns this:
 
  JavaScript code = new JavaScript(
  function
  wget(
 http://www.google.com/q=${query},function(){${success}},function(){${failure}}
 );
 
  now something down the road wants to search google for cucumbers
 
  so it does
 
  return code.merge(query,cucumbers);
 
  something later down the road wants to exclude tomatoes from the
 search
  results, and also add an alert on failure, but since the previous
 script
  lost all the placeholders how would that work? i mean its really use
 it
  or
  lose it.
 
  unless the previous script that added cucumbers now provides its own
  placeholders for all the previous placeholders, but these need to be
  factored into functions or some such.
 
  could you show me what that would look like with your code?
 
  so...
 
  JavaScript code = new JavaScript(
  function
  wget(
 

Re: [vote] Release Wicket 1.2.6

2007-04-19 Thread Janne Hietamäki


On 20.4.2007, at 1.52, Martijn Dashorst wrote:



[x] Release wicket 1.2.6 regardless if these four issues are resolved
[ ] Release wicket 1.2.6 but I'll make sure these get fixed
[ ] Don't release wicket 1.2.6 until these four issues are resolved