cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: svn commit: r1406958 - /cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
Date Thu, 08 Nov 2012 15:23:50 GMT

On Nov 8, 2012, at 8:16 AM, Freeman Fang <freeman.fang@gmail.com> wrote:

> Thanks for the suggestion, but I don't think the
> if (!loadedCatalogs.contains(catalogURL.toURI())
> could work.
> 
> Take a close look at URL.toURI() method, it's
>    public URI toURI() throws URISyntaxException {
>        return new URI (toString());  ///line 1
>    }
> 
> Also take a look at URI.create() method, it's 
> public static URI create(String str) {
>        try {
>            return new URI(str);   ///line 2
>        } catch (URISyntaxException x) {
>            throw new IllegalArgumentException(x.getMessage(), x);
>        }
>    }
> 
> so line1 and line2 are exactly same method with same input argument, so using catalogURL.toURI()
actually same effect with  URI.create(catalogURL.toString()). So we need explicitly  manipulate
catalogURL.toString() anyway to replace/encode whitespace there.

Wow.   That really sucks.   I more or less would expect a "toURI" method to actually produce
a usable URI if the URL is valid.     Oh well.     Good investigation.

You MIGHT be able to try something like:

new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), null);

to avoid the toString/parse combo, but that probably has similar issues.  :-(


Dan


> 
> Best Regards
> Freeman
> -------------
> Freeman(Yue) Fang
> 
> Red Hat, Inc. 
> FuseSource is now part of Red Hat
> Web: http://fusesource.com | http://www.redhat.com/
> Twitter: freemanfang
> Blog: http://freemanfang.blogspot.com
> http://blog.sina.com.cn/u/1473905042
> weibo: http://weibo.com/u/1473905042
> 
> On 2012-11-8, at 下午8:36, Daniel Kulp wrote:
> 
>> 
>> Freeman,
>> 
>> Since we have URL objects, instead of calling toString on them and doing:
>> 
>>> if (!loadedCatalogs.contains(URI.create(replaceWhitespace(catalogURL.toString()))))
{
>> 
>> 
>> can we just do something like
>> 
>> if (!loadedCatalogs.contains(catalogURL.toURI())
>> 
>> 
>> or similar?   Would avoid some issues converting the URL to string, encoding it,
etc…  If there are other characters in the URL that need encoding, that may handle that
as well.
>> 
>> Dan
>> 
>> 
>> On Nov 8, 2012, at 3:48 AM, ffang@apache.org wrote:
>> 
>>> Author: ffang
>>> Date: Thu Nov  8 08:48:30 2012
>>> New Revision: 1406958
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1406958&view=rev
>>> Log:
>>> [CXF-4620]Exception at compilation when a 'space' character is present in maven
local repository path
>>> 
>>> Modified:
>>>  cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
>>> 
>>> Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
>>> URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java?rev=1406958&r1=1406957&r2=1406958&view=diff
>>> ==============================================================================
>>> --- cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
(original)
>>> +++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/catalog/OASISCatalogManager.java
Thu Nov  8 08:48:30 2012
>>> @@ -144,15 +144,15 @@ public class OASISCatalogManager {
>>>       Enumeration<URL> catalogs = classLoader.getResources(name);
>>>       while (catalogs.hasMoreElements()) {
>>>           URL catalogURL = catalogs.nextElement();
>>> -            if (!loadedCatalogs.contains(URI.create(catalogURL.toString())))
{
>>> +            if (!loadedCatalogs.contains(URI.create(replaceWhitespace(catalogURL.toString()))))
{
>>>               ((Catalog)catalog).parseCatalog(catalogURL);
>>> -                loadedCatalogs.add(URI.create(catalogURL.toString()));
>>> +                loadedCatalogs.add(URI.create(replaceWhitespace(catalogURL.toString())));
>>>           }
>>>       }
>>>   }
>>> 
>>>   public final void loadCatalog(URL catalogURL) throws IOException {
>>> -        if (!loadedCatalogs.contains(URI.create(catalogURL.toString())) &&
catalog != null) {
>>> +        if (!loadedCatalogs.contains(URI.create(replaceWhitespace(catalogURL.toString())))
&& catalog != null) {
>>>           if ("file".equals(catalogURL.getProtocol())) {
>>>               try {
>>>                   File file = new File(catalogURL.toURI());
>>> @@ -166,9 +166,16 @@ public class OASISCatalogManager {
>>> 
>>>           ((Catalog)catalog).parseCatalog(catalogURL);
>>> 
>>> -            loadedCatalogs.add(URI.create(catalogURL.toString()));
>>> +            loadedCatalogs.add(URI.create(replaceWhitespace(catalogURL.toString())));
>>>       }
>>>   }
>>> +    
>>> +    private String replaceWhitespace(String str) {
>>> +        if (str.contains(" ")) {
>>> +            str = str.replace(" ", "%20");
>>> +        }
>>> +        return str;
>>> +    }
>>> 
>>>   private static OASISCatalogManager getContextCatalog() {
>>>       try {
>>> 
>>> 
>> 
>> -- 
>> Daniel Kulp
>> dkulp@apache.org - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>> 
> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message