Hi Dan,
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.
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, [email protected] 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
> [email protected] - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>