Hello Mike,
I have considered deprecation as well. But the problem is that folks will
get deprecation warnings although their code is perfectly ok. They don't
have to change a bit, as soon as the deprecated constructor is removed,
the very same code will compile without a warning. Consider this:
SecureProtocolSocketFactory spsf = ...;
... = new Protocol("myscheme", spsf, 666);
When the constructor is deprecated, you will get a warning. To get
rid of that warning, you have to use the other constructor explicitly:
... = new Protocol("myscheme", (ProtocolSocketFactory)spsf, 666);
Once the deprecated constructor is removed, nobody is
going to understand why the argument was ever casted...
Breaking binary compatibility isn't nice, but I don't think people
should have to screw up their code like this to get rid of
deprecation warnings.
regards,
Roland
Michael Becke <[EMAIL PROTECTED]>
10.11.2003 14:26
Please respond to "Commons HttpClient Project"
To: Commons HttpClient Project
<[EMAIL PROTECTED]>
cc:
Subject: Re: cvs commit:
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/protocol
Protocol.java
I think the addition of an instanceof test is good, but I think we
should deprecate here instead of removing the constructor. This
removal causes a binary compatibility problem that I think we can
easily avoid.
Mike
>
> On Nov 7, 2003, at 2:34 AM, [EMAIL PROTECTED] wrote:
>
>> oglueck 2003/11/06 23:34:34
>>
>> Modified: httpclient API_CHANGES_2_1.txt
>>
>> httpclient/src/java/org/apache/commons/httpclient/protocol
>> Protocol.java
>> Log:
>> fixed design error: uniform Protocol constructor for all factories
>>
>> Revision Changes Path
>> 1.4 +2 -0 jakarta-commons/httpclient/API_CHANGES_2_1.txt
>>
>> Index: API_CHANGES_2_1.txt
>> ===================================================================
>> RCS file: /home/cvs/jakarta-commons/httpclient/API_CHANGES_2_1.txt,v
>> retrieving revision 1.3
>> retrieving revision 1.4
>> diff -u -r1.3 -r1.4
>> --- API_CHANGES_2_1.txt 18 Sep 2003 13:56:21 -0000 1.3
>> +++ API_CHANGES_2_1.txt 7 Nov 2003 07:34:34 -0000 1.4
>> @@ -31,3 +31,5 @@
>> state of DigestScheme:
>> - createDigest(String, String)
>> - createDigestHeader(String, String)
>> +
>> +* There is only one Protocol constructor for both secure and
>> insecure socket factories.
>>
>>
>>
>> 1.6 +6 -32
>> jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/
>> protocol/Protocol.java
>>
>> Index: Protocol.java
>> ===================================================================
>> RCS file:
>> /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/
>> httpclient/protocol/Protocol.java,v
>> retrieving revision 1.5
>> retrieving revision 1.6
>> diff -u -r1.5 -r1.6
>> --- Protocol.java 31 Jan 2003 00:33:36 -0000 1.5
>> +++ Protocol.java 7 Nov 2003 07:34:34 -0000 1.6
>> @@ -194,7 +194,8 @@
>> private boolean secure;
>>
>> /**
>> - * Constructs a new Protocol. The created protcol is insecure.
>> + * Constructs a new Protocol. If the created protocol is
>> secure depends on
>> + * the class of <code>factory</code>.
>> *
>> * @param scheme the scheme (e.g. http, https)
>> * @param factory the factory for creating sockets for
>> communication using
>> @@ -216,36 +217,9 @@
>> this.scheme = scheme;
>> this.socketFactory = factory;
>> this.defaultPort = defaultPort;
>> - this.secure = false;
>> + this.secure = (factory instanceof
>> SecureProtocolSocketFactory);
>> }
>>
>> - /**
>> - * Constructs a new Protocol. The created protcol is secure.
>> - *
>> - * @param scheme the scheme (e.g. http, https)
>> - * @param factory the factory for creating sockets for
>> communication using
>> - * this protocol
>> - * @param defaultPort the port this protocol defaults to
>> - */
>> - public Protocol(String scheme,
>> - SecureProtocolSocketFactory factory, int defaultPort) {
>> -
>> - if (scheme == null) {
>> - throw new IllegalArgumentException("scheme is null");
>> - }
>> - if (factory == null) {
>> - throw new IllegalArgumentException("socketFactory is
>> null");
>> - }
>> - if (defaultPort <= 0) {
>> - throw new IllegalArgumentException("port is invalid: "
>> + defaultPort);
>> - }
>> -
>> - this.scheme = scheme;
>> - this.socketFactory = factory;
>> - this.defaultPort = defaultPort;
>> - this.secure = true;
>> - }
>> -
>> /**
>> * Returns the defaultPort.
>> * @return int
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]