You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Daniel Kulp <da...@iona.com> on 2006/11/15 13:40:13 UTC

ListUtils? WAS: svn commit: r475168 - in /incubator/cxf/trunk: common/common/src/main/java/org/apache/cxf/common/util/ common/common/src/test/java/org/apache/cxf/common/util/ tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/

I'm -1 on this commit unless someone can come up with a very good reason 
why we cannot just use:
void Collections.sort(List<T>, Comparator<? super T> c) 

We shouldn't be duplicating stuff that's available in the JDK.

Dan


On Wednesday November 15 2006 4:21 am, mmao@apache.org wrote:
> Author: mmao
> Date: Wed Nov 15 01:21:08 2006
> New Revision: 475168
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=475168
> Log:
> Fixed a potential bug in schema validator.
> schema validator failed on same specific platform due to the jar entry
> order. the work around solution is sort the jar entry of the
> common/schema
>
> Added:
>    
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java   (with props)
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java   (with props) Modified:
>    
> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>validator/internal/WSDL11Validator.java
>
> Added:
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main
>/java/org/apache/cxf/common/util/ListUtils.java?view=auto&rev=475168
> =======================================================================
>======= ---
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java (added) +++
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java Wed Nov 15 01:21:08 2006 @@ -0,0 +1,37 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements. See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership. The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied. See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.cxf.common.util;
> +
> +import java.util.*;
> +
> +public final class ListUtils {
> +
> +    private ListUtils() {
> +    }
> +
> +    public static <T> List<T> sort(List<T> list, Comparator<? super T>
> c) { +        if (c == null) {
> +            return list;
> +        }
> +        T[] listArray = (T[]) list.toArray();
> +        Arrays.sort(listArray, c);
> +        return Arrays.asList(listArray);
> +    }
> +}
>
> Propchange:
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java
> -----------------------------------------------------------------------
>------- svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>til/ListUtils.java
> -----------------------------------------------------------------------
>------- svn:keywords = Rev Date
>
> Added:
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/test
>/java/org/apache/cxf/common/util/ListUtilsTest.java?view=auto&rev=475168
> =======================================================================
>======= ---
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java (added) +++
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java Wed Nov 15 01:21:08 2006 @@ -0,0 +1,39 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements. See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership. The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied. See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.cxf.common.util;
> +
> +import java.util.*;
> +
> +import junit.framework.TestCase;
> +
> +public class ListUtilsTest extends TestCase {
> +    public void testSort() throws Exception {
> +        List<String> aList = Arrays.asList(new String[]{"soap", "xml",
> "apache"}); +        assertEquals("soap", aList.get(0));
> +        assertEquals("apache", aList.get(2));
> +        aList = ListUtils.sort(aList, new Comparator<String>() {
> +            public int compare(String o1, String o2) {
> +                return o1.compareTo(o2);
> +            }
> +        });
> +        assertEquals("apache", aList.get(0));
> +        assertEquals("xml", aList.get(2));
> +    }
> +}
>
> Propchange:
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java
> -----------------------------------------------------------------------
>------- svn:eol-style = native
>
> Propchange:
> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>til/ListUtilsTest.java
> -----------------------------------------------------------------------
>------- svn:keywords = Rev Date
>
> Modified:
> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>validator/internal/WSDL11Validator.java URL:
> http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/ma
>in/java/org/apache/cxf/tools/validator/internal/WSDL11Validator.java?vie
>w=diff&rev=475168&r1=475167&r2=475168
> =======================================================================
>======= ---
> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>validator/internal/WSDL11Validator.java (original) +++
> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>validator/internal/WSDL11Validator.java Wed Nov 15 01:21:08 2006 @@
> -22,9 +22,7 @@
>  import java.io.IOException;
>  import java.net.JarURLConnection;
>  import java.net.URL;
> -import java.util.ArrayList;
> -import java.util.Enumeration;
> -import java.util.List;
> +import java.util.*;
>  import java.util.jar.JarEntry;
>  import java.util.jar.JarFile;
>
> @@ -32,14 +30,13 @@
>
>  import org.xml.sax.InputSource;
>
> +import org.apache.cxf.common.util.ListUtils;
>  import org.apache.cxf.common.util.StringUtils;
>  import org.apache.cxf.resource.URIResolver;
>  import org.apache.cxf.tools.common.ToolConstants;
>  import org.apache.cxf.tools.common.ToolContext;
>  import org.apache.cxf.tools.common.ToolException;
>
> -
> -
>  public class WSDL11Validator extends AbstractValidator {
>
>      private final List<AbstractValidator> validators = new
> ArrayList<AbstractValidator>(); @@ -63,7 +60,6 @@
>          //3.If 1 and 2 is null , then load these schema files from jar
> file
>
>          if (!StringUtils.isEmpty(schemaDir)) {
> -
>              schemaValidator = new SchemaValidator(schemaDir,
> (String)env.get(ToolConstants.CFG_WSDLURL), schemas);
>          } else {
> @@ -115,7 +111,6 @@
>          List<InputSource> xsdList = new ArrayList<InputSource>();
>          ClassLoader clzLoader =
> Thread.currentThread().getContextClassLoader(); URL url =
> clzLoader.getResource(ToolConstants.CXF_SCHEMAS_DIR_INJAR); -
>          JarURLConnection jarConnection =
> (JarURLConnection)url.openConnection();
>
>          JarFile jarFile = jarConnection.getJarFile();
> @@ -126,15 +121,27 @@
>              JarEntry ele =  (JarEntry)entry.nextElement();
>              if (ele.getName().endsWith(".xsd")
>                  &&
> ele.getName().indexOf(ToolConstants.CXF_SCHEMAS_DIR_INJAR) > -1) { +
>                  URIResolver resolver =  new
> URIResolver(ele.getName()); if (resolver.isResolved()) {
>                      InputSource is = new
> InputSource(resolver.getInputStream()); is.setSystemId(ele.getName());
> -                    xsdList.add(new
> InputSource(resolver.getInputStream())); +                   
> xsdList.add(is);
>                  }
>              }
>          }
>
> -        return xsdList;
> -    }
> +        return sort(xsdList);
> +    }
> +
> +    private List<InputSource> sort(List<InputSource> list) {
> +        return ListUtils.sort(list, new Comparator<InputSource>() {
> +            public int compare(InputSource i1, InputSource i2) {
> +                if (i1 == null && i2 == null) {
> +                    return -1;
> +                }
> +                return i1.getSystemId().compareTo(i2.getSystemId());
> +            }
> +        });
> +    }
>  }

-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194   F:781-902-8001
daniel.kulp@iona.com

Re: ListUtils? WAS: svn commit: r475168 - in /incubator/cxf/trunk: common/common/src/main/java/org/apache/cxf/common/util/ common/common/src/test/java/org/apache/cxf/common/util/ tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/

Posted by James Mao <ja...@iona.com>.
Will change soon.

Thanks,
James.

Daniel Kulp 写道:
> I'm -1 on this commit unless someone can come up with a very good reason 
> why we cannot just use:
> void Collections.sort(List<T>, Comparator<? super T> c) 
>
> We shouldn't be duplicating stuff that's available in the JDK.
>
> Dan
>
>
> On Wednesday November 15 2006 4:21 am, mmao@apache.org wrote:
>   
>> Author: mmao
>> Date: Wed Nov 15 01:21:08 2006
>> New Revision: 475168
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=475168
>> Log:
>> Fixed a potential bug in schema validator.
>> schema validator failed on same specific platform due to the jar entry
>> order. the work around solution is sort the jar entry of the
>> common/schema
>>
>> Added:
>>    
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java   (with props)
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java   (with props) Modified:
>>    
>> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>> validator/internal/WSDL11Validator.java
>>
>> Added:
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java URL:
>> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/main
>> /java/org/apache/cxf/common/util/ListUtils.java?view=auto&rev=475168
>> =======================================================================
>> ======= ---
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java (added) +++
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java Wed Nov 15 01:21:08 2006 @@ -0,0 +1,37 @@
>> +/**
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements. See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership. The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License. You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied. See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + */
>> +
>> +package org.apache.cxf.common.util;
>> +
>> +import java.util.*;
>> +
>> +public final class ListUtils {
>> +
>> +    private ListUtils() {
>> +    }
>> +
>> +    public static <T> List<T> sort(List<T> list, Comparator<? super T>
>> c) { +        if (c == null) {
>> +            return list;
>> +        }
>> +        T[] listArray = (T[]) list.toArray();
>> +        Arrays.sort(listArray, c);
>> +        return Arrays.asList(listArray);
>> +    }
>> +}
>>
>> Propchange:
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java
>> -----------------------------------------------------------------------
>> ------- svn:eol-style = native
>>
>> Propchange:
>> incubator/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/u
>> til/ListUtils.java
>> -----------------------------------------------------------------------
>> ------- svn:keywords = Rev Date
>>
>> Added:
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java URL:
>> http://svn.apache.org/viewvc/incubator/cxf/trunk/common/common/src/test
>> /java/org/apache/cxf/common/util/ListUtilsTest.java?view=auto&rev=475168
>> =======================================================================
>> ======= ---
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java (added) +++
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java Wed Nov 15 01:21:08 2006 @@ -0,0 +1,39 @@
>> +/**
>> + * Licensed to the Apache Software Foundation (ASF) under one
>> + * or more contributor license agreements. See the NOTICE file
>> + * distributed with this work for additional information
>> + * regarding copyright ownership. The ASF licenses this file
>> + * to you under the Apache License, Version 2.0 (the
>> + * "License"); you may not use this file except in compliance
>> + * with the License. You may obtain a copy of the License at
>> + *
>> + * http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing,
>> + * software distributed under the License is distributed on an
>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>> + * KIND, either express or implied. See the License for the
>> + * specific language governing permissions and limitations
>> + * under the License.
>> + */
>> +
>> +package org.apache.cxf.common.util;
>> +
>> +import java.util.*;
>> +
>> +import junit.framework.TestCase;
>> +
>> +public class ListUtilsTest extends TestCase {
>> +    public void testSort() throws Exception {
>> +        List<String> aList = Arrays.asList(new String[]{"soap", "xml",
>> "apache"}); +        assertEquals("soap", aList.get(0));
>> +        assertEquals("apache", aList.get(2));
>> +        aList = ListUtils.sort(aList, new Comparator<String>() {
>> +            public int compare(String o1, String o2) {
>> +                return o1.compareTo(o2);
>> +            }
>> +        });
>> +        assertEquals("apache", aList.get(0));
>> +        assertEquals("xml", aList.get(2));
>> +    }
>> +}
>>
>> Propchange:
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java
>> -----------------------------------------------------------------------
>> ------- svn:eol-style = native
>>
>> Propchange:
>> incubator/cxf/trunk/common/common/src/test/java/org/apache/cxf/common/u
>> til/ListUtilsTest.java
>> -----------------------------------------------------------------------
>> ------- svn:keywords = Rev Date
>>
>> Modified:
>> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>> validator/internal/WSDL11Validator.java URL:
>> http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/ma
>> in/java/org/apache/cxf/tools/validator/internal/WSDL11Validator.java?vie
>> w=diff&rev=475168&r1=475167&r2=475168
>> =======================================================================
>> ======= ---
>> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>> validator/internal/WSDL11Validator.java (original) +++
>> incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/
>> validator/internal/WSDL11Validator.java Wed Nov 15 01:21:08 2006 @@
>> -22,9 +22,7 @@
>>  import java.io.IOException;
>>  import java.net.JarURLConnection;
>>  import java.net.URL;
>> -import java.util.ArrayList;
>> -import java.util.Enumeration;
>> -import java.util.List;
>> +import java.util.*;
>>  import java.util.jar.JarEntry;
>>  import java.util.jar.JarFile;
>>
>> @@ -32,14 +30,13 @@
>>
>>  import org.xml.sax.InputSource;
>>
>> +import org.apache.cxf.common.util.ListUtils;
>>  import org.apache.cxf.common.util.StringUtils;
>>  import org.apache.cxf.resource.URIResolver;
>>  import org.apache.cxf.tools.common.ToolConstants;
>>  import org.apache.cxf.tools.common.ToolContext;
>>  import org.apache.cxf.tools.common.ToolException;
>>
>> -
>> -
>>  public class WSDL11Validator extends AbstractValidator {
>>
>>      private final List<AbstractValidator> validators = new
>> ArrayList<AbstractValidator>(); @@ -63,7 +60,6 @@
>>          //3.If 1 and 2 is null , then load these schema files from jar
>> file
>>
>>          if (!StringUtils.isEmpty(schemaDir)) {
>> -
>>              schemaValidator = new SchemaValidator(schemaDir,
>> (String)env.get(ToolConstants.CFG_WSDLURL), schemas);
>>          } else {
>> @@ -115,7 +111,6 @@
>>          List<InputSource> xsdList = new ArrayList<InputSource>();
>>          ClassLoader clzLoader =
>> Thread.currentThread().getContextClassLoader(); URL url =
>> clzLoader.getResource(ToolConstants.CXF_SCHEMAS_DIR_INJAR); -
>>          JarURLConnection jarConnection =
>> (JarURLConnection)url.openConnection();
>>
>>          JarFile jarFile = jarConnection.getJarFile();
>> @@ -126,15 +121,27 @@
>>              JarEntry ele =  (JarEntry)entry.nextElement();
>>              if (ele.getName().endsWith(".xsd")
>>                  &&
>> ele.getName().indexOf(ToolConstants.CXF_SCHEMAS_DIR_INJAR) > -1) { +
>>                  URIResolver resolver =  new
>> URIResolver(ele.getName()); if (resolver.isResolved()) {
>>                      InputSource is = new
>> InputSource(resolver.getInputStream()); is.setSystemId(ele.getName());
>> -                    xsdList.add(new
>> InputSource(resolver.getInputStream())); +                   
>> xsdList.add(is);
>>                  }
>>              }
>>          }
>>
>> -        return xsdList;
>> -    }
>> +        return sort(xsdList);
>> +    }
>> +
>> +    private List<InputSource> sort(List<InputSource> list) {
>> +        return ListUtils.sort(list, new Comparator<InputSource>() {
>> +            public int compare(InputSource i1, InputSource i2) {
>> +                if (i1 == null && i2 == null) {
>> +                    return -1;
>> +                }
>> +                return i1.getSystemId().compareTo(i2.getSystemId());
>> +            }
>> +        });
>> +    }
>>  }
>>     
>
>