Re: Avoid building against Head of Commons Httpclient

2003-07-29 Thread Christopher Lenz
Ingo,

this will not work. You will need to add a

  work nested=lib/commons-httpclient.jar/

or something similar. Gump only uses the system classpath, so any classpath 
additions defined in the Ant file are ignored.

It would be nice if there was a separate project for the 2.0 branch of 
Commons-HttpClient, given that the community has decided to follow the path 
of revolutionary change. [EMAIL PROTECTED] should provide answers to 
any questions (philosophical as well as technical ;-) ).

-chris

PS: Why is slide now keeping all those JARs in CVS? It is a practice that 
wasn't followed before, only for rare circumstances when e.g. JDOM broke 
their API in HEAD (similar to the current situation with HttpClient). 
Personally, I consider it bad practice, but I'm no longer actively involved 
with Slide, so...

Ingo Brunberg wrote:
Hi,

I have modified Gump's project definition for Slide, so that it
(hopefully) builds against the included commons-httpclient.jar. This
should give us working nightly builds again.
Regards,
Ingo


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: [VOTE] Add commons-codec as an HttpClient dependency

2003-07-16 Thread Christopher Lenz
Kalnichevski, Oleg wrote:
True, but neither has HttpClient 2.1:)  We will most likely have to put 
some effort into getting a final codec release that contains this code.

I agree, adding a jar could be considered an API break, but it was part 
of our plan for 2.1.  The only real API changes that this requires is 
removing the already deprecated Base64 code.  The EncodingUtil class 
will not be changed.
Right, but the problem is those folks who use CVS snapshots while insisting on complete (maximum) API compatibility with 2.0 branch. They have not been quite receptive to 'but it was part of our plan for 2.1' kind of arguments up to now. 
Chill out, dude. Personally, I was not insisting on complete (maximum) 
API compatibility, but was just offended/scared by your tone. I didn't 
expect to hear we guarantee 100% backwards compatibility, just a we'll 
try to preserve backwards compatibility as much as possible.

I have read the 2.1 release plan when it was posted, and if I (as a user) 
would not have been in agreement, I'd have voiced my concerns. I also think 
that migrating to Commons-Codec is a good idea, and it should be a very 
managable change for all API clients (for example, there's no problem adding 
Commons-Codec to the classpath of HttpClient 2.0.x).

Of course, I can put up the same 'Evil Comrade' act as always, but I have a feeling that some of them did not quite appreciate my sarcasm. 
You could also work on choosing your words more carefully sometimes, put a 
little smiley behind sarcastic statements, and fix your caps lock ;-)

-chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: cvscommit: jakarta-commons/httpclient/src/test/org/apache/commons/httpclientTestAuthenticator.javaTestHttpState.javaTestHttps.javaTestMethodsExternalHost.javaTestWebappBasicAuth.java

2003-07-07 Thread Christopher Lenz
Hi Oleg,

this thread has gotten a bit out of hand now... I personally trust the 
HttpClient team to make the right decisions about the future of the 
code, and I even agree with the wording of the 2.1 release plan. 
Breaking 2.0 API compatibility where absolutely unavoidable is 
acceptable, as long as that sentence cannot interpreted as a free ticket 
to change the API all over the place.

Now, what started this discussion was just me pointing out that you 
removed a technically non-deprecated method. Your response sounded a bit 
offensive, implying that we're doing something weird by using CVS HEAD 
of HttpClient (which is totally normal at Jakarta). And your comment 
about API compatibility sounded like you don't care very much about 
preserving compatibility.

There is a *huge* difference between we should make all possible 
efforts to keep API compatibility (Michael) and we will no longer be 
able to provide API compatibility (Oleg). And the difference might not 
even be technical ;-)

Cheers,
-chris
--
Christopher Lenz
/=/ cmlenz at gmx.de
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: Test Coverage

2003-06-20 Thread Christopher Lenz
Adrian Sutton wrote:
Howdy all,
We now have a license for clover to analyze our test cases and am now 
just starting to work through adding test cases to improve our code 
coverage.  I've very quickly come to the realization that 100% code 
coverage may actually be a bad thing.  I've gotten AuthChallengeParser 
to 100% coverage now so let me use it as an example:

There are four test cases that I consider pedantic and 1 of those that I 
really don't like.  The pedantic ones are:

* test that AuthChallengeParser.extractScheme(null) throws an illegal 
argument exception instead of a null pointer exception.  What difference 
does this really make?  The only reason I can think of to keep the test 
is so that the implied interface for the method is kept the same (it 
never throws a NPE but throws an illegal argument exception instead).

* Test that AuthChallengeParser.extractParams(null) throws an illegal 
argument exception not a NPE.  Same as above really.

* testParamsWithNoName().  Check that 
AuthChallengeParser.extractParams(Basic realm=\test\,=\invalid\); 
throws a MalformedChallengeException because there is no name part to 
the name/value pair.  This is good if we're in strict mode but if not 
wouldn't it be better to be lenient and just ignore that param (with a 
logged warning)?
I wouldn't call these tests pedantic. They verify the contract of the 
class. The contract is either defined explicitly by being documented, or 
implicitly defined by the current behaviour, which someone may depend on 
(some other class inside HttpClient, or an external API client).

The one I really don't like is:

* Test that AuthChallengeParser.extractScheme( Basic realm=\realm\); 
throws a MalformedChallengeException because there's a leading space.  
Now in strict mode that's fine and within HttpClient the leading space 
is stripped before being passed in but it seems overly strict to me.
Again, if the contract of that method says that a leading white space -- or 
some other irregularity -- causes a specific exception to be thrown, it is 
good that there are test cases to verify the contract.

Maybe it is not the test that you dislike, but rather the behaviour of the 
method? In that case the contract should be changed to say any leading or 
trailing white space will be trimmed or something like that. But that has 
nothing to do with the test being invalid IMHO.

Now, I don't mind what happens with any of these decisions to be honest 
as none affect the actual behaviour of HttpClient - they are very much 
edge cases.  I would however like to set up a policy on the types of 
test cases I should create (do we want to avoid testing things like the 
pedantic things above) as well as the best way to keep track of 
questionable or overly pedantic test cases.  Currently I'm just adding a 
// pedantic  above any test case that seems pedantic and a todo comment 
over anything that I think may require a change to the code but isn't 
clearly a bug.

I figure from time to time I can provide a list of issues that need to 
be considered as I work my way through the codebase.

Personally, I'm hoping to achieve 100% test coverage firstly because 
I've discovered how dependent I am on having good test cases while 
working on HttpClient (most people don't have the detailed level of 
knowledge that Mike and Oleg do and thus aren't aware that a change will 
break some other section of code - NTLM is a regular victim of this).  
Also, aiming for 100% coverage makes a very clear-cut decision on when 
the job is done which make life easier as well and makes it much more 
noticeable when new test cases need to be added.

Any thoughts?
Achieving 100% (or any other hard number) of code coverage is a lot of work, 
and almost never guarantees that the code is free of errors. Making some 
percentage of code coverage a hard requirement is usually missing the point. 
Of course, more coverage is usually good, but there's a point of diminishing 
return

Anyway, while tests like the pedantic ones you outlined are probably not 
critical, I see no reason to throw them away if they're already present. 
They serve the very good purpose of testing error conditions and asserting 
the contract of the class under test.

Just my two cents.

-chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: URI URIUtil as a separate Commons project?

2003-06-17 Thread Christopher Lenz
Kalnichevski, Oleg wrote:
Sung-Gu and all,

I must confess I have had a change of heart on this issue. I am no more convinced that URI  URIUtil classes should be spun off into a Commons project of its own.

1) URL encoding logic that constitutes almost a half of the reusable code in URI related classes clearly belongs to Commons-Codec package. URL encoding  decoding functions should be merged with Commons-Codec rather than spun off. HttpClient will introduce Commons-Codec as a dependency in the future. So, we should rather extend the existing frameworks, not create competing ones. 

2) URI specification by itself is just one class. It hardly makes any sense in my opinion to make a package out of it, even though URI class is clearly useful beyond HttpClient.

Thoughts, objections, counter-arguments?
I agree 100%. Actually I was planning to post the same thoughts in response 
to the proposal :-)

-chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: call for projects using httpclient

2003-01-26 Thread Christopher Lenz
Jeffrey Dever wrote:

If you have an application that uses HttpClient, and would like to see 
it on our applications page, please send an email to:
[EMAIL PROTECTED]

http://jakarta.apache.org/commons/httpclient/applications.html

Jakarta Cactus (http://jakarta.apache.org/cactus/)
A framework for unit testing server-side java code.

--
Christopher Lenz
/=/ cmlenz at gmx.de


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




Re: [Digester] Re: DO NOT REPLY [Bug 12756] - [Patch] CallMethodRule/CallParamRule

2002-09-25 Thread Christopher Lenz

Hi John,

I'd also like to see the functionality you describe in Digester. I 
needed to do equivalent changes in my local workspace to meet the 
requirements of my use cases, but my personal patch queue against 
Digester is still not cleared so ... :-P

Just to add a bit of pressure behind this issue ;-P

John Yu wrote:
 
 I haven't got any response/comment on this patch I submitted a week ago.
 Some feedback please. :-)
 
 At 09:56 am 25-09-2002, you wrote:
 
 DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
 RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12756.
 ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
 INSERTED IN THE BUG DATABASE.

 http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12756

 [Patch] CallMethodRule/CallParamRule

 [EMAIL PROTECTED] changed:

What|Removed |Added
  

 Summary|[Patch] |[Patch]

 |CallMethodRule/CallParamRule|CallMethodRule/CallParamRule



 --- Additional Comments From [EMAIL PROTECTED]  2002-09-25 01:55 
 ---
 It seems the fix from Bug#11693 has addressed (partly?) the last issue 
 that
 CallMethodRule didn't work correctly in nested situation.

-- 
Christopher Lenz
/=/ cmlenz at gmx.de


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




Re: [Digester] XML Pull

2002-09-18 Thread Christopher Lenz

The architecture of Digester is very close to the SAX push parse model. 
SAX events are simply dispatched to matching rules. Using a lower-level 
API like XMLPULL would just complicate the code, because Digester would 
have to translate between the pull and the push model. Not to speak 
about API compatibility ;-)

BTW, I *highly* doubt that the SAX parsing is a performance bottleneck 
in Digester. I assume that performance is most affected by the 
relection/introspection routines that are used to create objects, set 
properties, call methods, etc.

Tal Lev-Ami wrote:
 Performance. Parsers like XPP are much faster than any available SAX parser
 (at least that I know of). 
 See http://www-106.ibm.com/developerworks/xml/library/x-injava.
 The performance comes at the expense of full standard compliance but for
 most documents that isn't really important. I don't think that XML Pull
 should replace SAX, just be another usage option.
 I haven't done a benchmark of the Digester it self, maybe the XML parsing
 part is not the main problem, but I have a feeling it is.
 
 Tal Lev-Ami
 Trivnet Ltd.
 
 -Original Message-
 From: Scott Sanders [mailto:[EMAIL PROTECTED]]
 Sent: Wed, September 18, 2002 1:27 AM
 To: Jakarta Commons Developers List
 Subject: RE: [Digester] XML Pull
 
 
 Would there be a good reason for it, other than because we can?
 
 Scott
 
 
-Original Message-
From: Tal Lev-Ami [mailto:[EMAIL PROTECTED]] 
Sent: Tuesday, September 17, 2002 5:13 AM
To: Jakarta Commons Developers List (E-mail)
Subject: [Digester] XML Pull


Anybody tried to adapt the Digester to work with XML Pull 
(http://www.xmlpull.org)? 
It should be fairly easy to do and there are pretty fast 
parsers out there.

Tal Lev-Ami
Trivnet Ltd.

-- 
Christopher Lenz
/=/ cmlenz at gmx.de


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]




Re: [Proposal] Scamp: Source Control Abstraction

2002-09-17 Thread Christopher Lenz

Hi Lance,

I think this JSR is quite related to your proposal:

   http://www.webdav.org/deltav/wvcm/

Albeit inspired by WebDAV/DeltaV, I believe it is supposed to be 
generic. Also, AFAIK, it is initiated by an Eclipse team member, so its 
implementation is heading open-source.

Weber, Lance wrote:
 Following some interesting discussions on the Maven list, I'd like to
 propose starting an SCM abstraction project, tentatively named Scamp. 
 
 Proposed Goal:
 Scamp is a Source Control Manager abstraction layer. It provides a standard
 interface to SCM systems allowing common source control operations such as
 checkin/checkout, labelling/tagging, reading changelogs and diffs.
 
 Initial design goals:
 -- expose a stable SCM interface contract for consuming applications (Maven,
 Ant, etc).
 -- provide extensible infrastructure for specific SCM implementations.
 -- configuration driven implementations
 -- file system independent
 -- supports multiple projects, multiple/distributed source providers
 
 Architecture:
 My initial thoughts are to utilize a combination of AbstractSCMFactory and a
 SourceControlManager interface with concrete implementations of both. We
 might possible need some secondary classes representing projects,
 connections, and filesystems, but I'm not sure on those yet.
 
 0.1 Release Goals/Requirements:
 -- First version of SCM Interface, focused on primary/core SCM operations
 -- AbstractSCMFactory
 -- Stubbed concrete factories for cvs/vss/vfs?
 -- exception infrastructure
 
 Any thoughts, feedback, requirements, design, existing code pointers, etc
 very welcome. Potential participants more than welcome!!
 
 Thanks, Lance

-- 
Christopher Lenz
/=/ cmlenz at gmx.de


--
To unsubscribe, e-mail:   mailto:[EMAIL PROTECTED]
For additional commands, e-mail: mailto:[EMAIL PROTECTED]