| @@ -57,10 +57,14 @@ Other changes: | |||||
| Bugzilla Report 62424 | Bugzilla Report 62424 | ||||
| * properties used or set by BuildFileTask/BuildFileRule are documented | * properties used or set by BuildFileTask/BuildFileRule are documented | ||||
| in MagicNames. A new magic property, ant.test.basedir.ignore, is | |||||
| in MagicTestNames. A new magic property, ant.test.basedir.ignore, is | |||||
| introduced for cases where Ant projects set up for test purposes | introduced for cases where Ant projects set up for test purposes | ||||
| must ignore basedir set externally by test harness. | must ignore basedir set externally by test harness. | ||||
| * a new CharSet type is provided for encoding or charset attributes in | |||||
| tasks that must deal with different character encodings in files, | |||||
| file names and other string resources. | |||||
| Changes from Ant 1.10.4 TO Ant 1.10.5 | Changes from Ant 1.10.4 TO Ant 1.10.5 | ||||
| ===================================== | ===================================== | ||||
| @@ -0,0 +1,78 @@ | |||||
| /* | |||||
| * 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.tools.ant.types; | |||||
| import java.nio.charset.Charset; | |||||
| import java.util.ArrayList; | |||||
| import java.util.List; | |||||
| import java.util.Map; | |||||
| /** | |||||
| * EnumeratedAttribute implementation for Charset to use with encoding/charset attributes. | |||||
| * @since Ant 1.10.6 | |||||
| */ | |||||
| public class CharSet extends EnumeratedAttribute { | |||||
| private static final List<String> VALUES = new ArrayList<>(); | |||||
| static { | |||||
| for (Map.Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) { | |||||
| VALUES.add(entry.getKey()); | |||||
| VALUES.addAll(entry.getValue().aliases()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Default constructor. | |||||
| */ | |||||
| public CharSet() { | |||||
| } | |||||
| /** | |||||
| * Construct a new CharSet with the specified value. | |||||
| * @param value the EnumeratedAttribute value. | |||||
| */ | |||||
| public CharSet(String value) { | |||||
| setValue(value); | |||||
| } | |||||
| /** | |||||
| * Get the default value as provided by Charset. | |||||
| * @return the default value. | |||||
| */ | |||||
| public static CharSet getDefault() { | |||||
| return new CharSet(Charset.defaultCharset().name()); | |||||
| } | |||||
| /** | |||||
| * Convert this enumerated type to a <code>Charset</code>. | |||||
| * @return a <code>Charset</code> object. | |||||
| */ | |||||
| public Charset getCharset() { | |||||
| return Charset.forName(getValue()); | |||||
| } | |||||
| /** | |||||
| * Return the possible values. | |||||
| * @return String[] of Charset names. | |||||
| */ | |||||
| @Override | |||||
| public String[] getValues() { | |||||
| return VALUES.toArray(new String[0]); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,70 @@ | |||||
| /* | |||||
| * 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.tools.ant.types; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.junit.Test; | |||||
| import org.junit.experimental.runners.Enclosed; | |||||
| import org.junit.runner.RunWith; | |||||
| import org.junit.runners.Parameterized; | |||||
| import java.util.Arrays; | |||||
| import java.util.Collection; | |||||
| import static org.hamcrest.Matchers.equalTo; | |||||
| import static org.junit.Assert.assertThat; | |||||
| @RunWith(Enclosed.class) | |||||
| public class CharSetTest { | |||||
| @RunWith(Parameterized.class) | |||||
| public static class LegalArgumentTest { | |||||
| // requires JUnit 4.12 | |||||
| @Parameterized.Parameters(name = "legal argument: |{0}|") | |||||
| public static Collection<String> data() { | |||||
| return Arrays.asList("UTF-8", "ISO-8859-1", "037", "us", "IBM500"); | |||||
| } | |||||
| @Parameterized.Parameter | |||||
| public String argument; | |||||
| @Test | |||||
| public void testCorrectNames() { | |||||
| CharSet cs = new CharSet(argument); | |||||
| assertThat(argument, equalTo(cs.getValue())); | |||||
| } | |||||
| } | |||||
| @RunWith(Parameterized.class) | |||||
| public static class IllegalArgumentTest { | |||||
| // requires JUnit 4.12 | |||||
| @Parameterized.Parameters(name = "illegal argument: |{0}|") | |||||
| public static Collection<String> data() { | |||||
| return Arrays.asList("mojibake", "dummy"); | |||||
| } | |||||
| @Parameterized.Parameter | |||||
| public String argument; | |||||
| @Test(expected = BuildException.class) | |||||
| public void testNonExistentNames() { | |||||
| new CharSet().setValue(argument); | |||||
| } | |||||
| } | |||||
| } | |||||