1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.net;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FilePermission;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.FileNameMap;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.HttpURLConnection;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.JarURLConnection;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketPermission;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLConnection;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URLStreamHandler;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList;
36c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilsonimport java.util.Arrays;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.GregorianCalendar;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List;
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TimeZone;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_Configuration;
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.resource.Support_Resources;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class URLConnectionTest extends junit.framework.TestCase {
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static class MockURLConnection extends URLConnection {
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public MockURLConnection(URL url) {
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            super(url);
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        @Override
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void connect() {
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            connected = true;
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static class NewHandler extends URLStreamHandler {
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected URLConnection openConnection(URL u) throws IOException {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return new HttpURLConnection(u) {
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                @Override
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                public void connect() throws IOException {
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    connected = true;
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                @Override
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                public void disconnect() {
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // do nothing
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                @Override
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                public boolean usingProxy() {
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    return false;
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            };
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    static String getContentType(String fileName) throws IOException {
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String resourceName = "org/apache/harmony/luni/tests/" + fileName;
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url = ClassLoader.getSystemClassLoader().getResource(resourceName);
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("Cannot find test resource " + resourceName, url);
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return url.openConnection().getContentType();
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    URL url;
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    URLConnection uc;
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() throws Exception {
91c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilson        url = new URL("http://localhost/");
92c729464f50e82b7fc40cc648c06f203aeb038d27Jesse Wilson        uc = url.openConnection();
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ((HttpURLConnection) uc).disconnect();
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#addRequestProperty(String, String)
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_addRequestProperty() throws MalformedURLException,
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            IOException {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockURLConnection u = new MockURLConnection(new URL(
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "http://www.apache.org"));
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Regression for HARMONY-604
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.addRequestProperty(null, "someValue");
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected NullPointerException");
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.addRequestProperty("key", "value");
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.addRequestProperty("key", "value2");
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("value2", u.getRequestProperty("key"));
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ArrayList list = new ArrayList();
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add("value2");
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        list.add("value");
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        Map<String, List<String>> propertyMap = u.getRequestProperties();
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check this map is unmodifiable
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            propertyMap.put("test", null);
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Map returned by URLConnection.getRequestProperties() should be unmodifiable");
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List<String> valuesList = propertyMap.get("key");
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check this list is also unmodifiable
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            valuesList.add("test");
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("List entries in the map returned by URLConnection.getRequestProperties() should be unmodifiable");
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(list, valuesList);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.connect();
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // state of connection is checked first
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // so no NPE in case of null 'field' param
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.addRequestProperty(null, "someValue");
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected IllegalStateException");
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     * @tests java.net.URLConnection#addRequestProperty(java.lang.String, java.lang.String)
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_addRequestPropertyLjava_lang_StringLjava_lang_String()
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws IOException {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setRequestProperty("prop", "yo");
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setRequestProperty("prop", "yo2");
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("yo2", uc.getRequestProperty("prop"));
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map<String, List<String>> map = uc.getRequestProperties();
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List<String> props = uc.getRequestProperties().get("prop");
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, props.size());
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the map should be unmodifiable
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map.put("hi", Arrays.asList(new String[] { "bye" }));
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("could modify map");
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the list should be unmodifiable
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            props.add("hi");
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("could modify list");
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File resources = Support_Resources.createTempFolder();
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Support_Resources.copyFile(resources, null, "hyts_att.jar");
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL fUrl1 = new URL("jar:file:" + resources.getPath()
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "/hyts_att.jar!/");
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        JarURLConnection con1 = (JarURLConnection) fUrl1.openConnection();
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        map = con1.getRequestProperties();
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(map);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, map.size());
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the map should be unmodifiable
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            map.put("hi", Arrays.asList(new String[] { "bye" }));
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail();
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getAllowUserInteraction()
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAllowUserInteraction() {
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setAllowUserInteraction(false);
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("getAllowUserInteraction should have returned false", uc
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAllowUserInteraction());
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setAllowUserInteraction(true);
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("getAllowUserInteraction should have returned true", uc
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAllowUserInteraction());
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getContentEncoding()
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getContentEncoding() {
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // should not be known for a file
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("getContentEncoding failed: " + uc.getContentEncoding(), uc
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getContentEncoding());
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getContentType()
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getContentType_regression() throws IOException {
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-4699
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("application/rtf", getContentType("test.rtf"));
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/plain", getContentType("test.java"));
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // RI would return "content/unknown"
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("application/msword", getContentType("test.doc"));
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/html", getContentType("test.htx"));
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("application/xml", getContentType("test.xml"));
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/plain", getContentType("."));
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDate()
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDate() {
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // should be greater than 930000000000L which represents the past
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (uc.getDate() == 0) {
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            System.out
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .println("WARNING: server does not support 'Date', in test_getDate");
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("getDate gave wrong date: " + uc.getDate(),
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    uc.getDate() > 930000000000L);
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDefaultAllowUserInteraction()
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDefaultAllowUserInteraction() {
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean oldSetting = URLConnection.getDefaultAllowUserInteraction();
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultAllowUserInteraction(false);
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "getDefaultAllowUserInteraction should have returned false",
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                URLConnection.getDefaultAllowUserInteraction());
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultAllowUserInteraction(true);
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("getDefaultAllowUserInteraction should have returned true",
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                URLConnection.getDefaultAllowUserInteraction());
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultAllowUserInteraction(oldSetting);
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDefaultRequestProperty(java.lang.String)
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @SuppressWarnings("deprecation")
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDefaultRequestPropertyLjava_lang_String() {
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultRequestProperty("Shmoo", "Blah");
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("setDefaultRequestProperty should have returned: null",
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                URLConnection.getDefaultRequestProperty("Shmoo"));
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultRequestProperty("Shmoo", "Boom");
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("setDefaultRequestProperty should have returned: null",
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                URLConnection.getDefaultRequestProperty("Shmoo"));
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("setDefaultRequestProperty should have returned: null",
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                URLConnection.getDefaultRequestProperty("Kapow"));
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setDefaultRequestProperty("Shmoo", null);
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDefaultUseCaches()
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDefaultUseCaches() {
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean oldSetting = uc.getDefaultUseCaches();
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDefaultUseCaches(false);
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("getDefaultUseCaches should have returned false", uc
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDefaultUseCaches());
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDefaultUseCaches(true);
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("getDefaultUseCaches should have returned true", uc
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getDefaultUseCaches());
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDefaultUseCaches(oldSetting);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDoInput()
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDoInput() {
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should be set to true by default", uc.getDoInput());
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDoInput(true);
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should have been set to true", uc.getDoInput());
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDoInput(false);
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("Should have been set to false", uc.getDoInput());
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getDoOutput()
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getDoOutput() {
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("Should be set to false by default", uc.getDoOutput());
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDoOutput(true);
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Should have been set to true", uc.getDoOutput());
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setDoOutput(false);
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("Should have been set to false", uc.getDoOutput());
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getExpiration()
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getExpiration() {
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // should be unknown
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getExpiration returned wrong expiration", 0, uc
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getExpiration());
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getFileNameMap()
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getFileNameMap() {
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Tests for the standard MIME types -- users may override these
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // in their JRE
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileNameMap map = URLConnection.getFileNameMap();
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // These types are defaulted
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/html", map.getContentTypeFor(".htm"));
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/html", map.getContentTypeFor(".html"));
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/plain", map.getContentTypeFor(".text"));
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("text/plain", map.getContentTypeFor(".txt"));
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // These types come from the properties file
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("application/pdf", map.getContentTypeFor(".pdf"));
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("application/zip", map.getContentTypeFor(".zip"));
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setFileNameMap(new FileNameMap() {
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public String getContentTypeFor(String fileName) {
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return "Spam!";
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        });
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect FileNameMap returned", "Spam!",
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    URLConnection.getFileNameMap().getContentTypeFor(null));
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // unset the map so other tests don't fail
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            URLConnection.setFileNameMap(null);
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // RI fails since it does not support fileName that does not begin with
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // '.'
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("image/gif", map.getContentTypeFor("gif"));
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getHeaderFieldDate(java.lang.String, long)
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getHeaderFieldDateLjava_lang_StringJ() {
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (uc.getHeaderFieldDate("Date", 22L) == 22L) {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            System.out
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .println("WARNING: Server does not support 'Date', test_getHeaderFieldDateLjava_lang_StringJ not run");
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong value returned: "
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + uc.getHeaderFieldDate("Date", 22L), uc.getHeaderFieldDate(
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Date", 22L) > 930000000000L);
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long time = uc.getHeaderFieldDate("Last-Modified", 0);
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date: ", time,
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Support_Configuration.URLConnectionLastModified);
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getHeaderField(java.lang.String)
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getHeaderFieldLjava_lang_String() {
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String hf;
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Content-Encoding");
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Wrong value returned for header field 'Content-Encoding': "
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + hf, hf);
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Content-Length");
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Wrong value returned for header field 'Content-Length': ",
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "25", hf);
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Content-Type");
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Wrong value returned for header field 'Content-Type': "
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + hf, hf.contains("text/html"));
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("content-type");
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Wrong value returned for header field 'content-type': "
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + hf, hf.contains("text/html"));
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Date");
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Wrong value returned for header field 'Date': " + hf,
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    Integer.parseInt(hf.substring(hf.length() - 17,
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            hf.length() - 13)) >= 1999);
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Expires");
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull(
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Wrong value returned for header field 'Expires': " + hf,
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    hf);
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("SERVER");
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Wrong value returned for header field 'SERVER': " + hf
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + " (expected " + Support_Configuration.HomeAddressSoftware
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + ")", hf.equals(Support_Configuration.HomeAddressSoftware));
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("Last-Modified");
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Wrong value returned for header field 'Last-Modified': "
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + hf,
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    hf
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .equals(Support_Configuration.URLConnectionLastModifiedString));
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("accept-ranges");
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Wrong value returned for header field 'accept-ranges': "
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + hf, hf.equals("bytes"));
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hf = uc.getHeaderField("DoesNotExist");
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (hf != null) {
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull("Wrong value returned for header field 'DoesNotExist': "
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    + hf, hf);
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getIfModifiedSince()
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getIfModifiedSince() {
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setIfModifiedSince(200);
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Returned wrong ifModifiedSince value", 200, uc
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getIfModifiedSince());
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getLastModified()
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getLastModified() {
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (uc.getLastModified() == 0) {
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            System.out
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .println("WARNING: Server does not support 'Last-Modified', test_getLastModified() not run");
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return;
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "Returned wrong getLastModified value.  Wanted: "
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + Support_Configuration.URLConnectionLastModified
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + " got: " + uc.getLastModified(),
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                uc.getLastModified() == Support_Configuration.URLConnectionLastModified);
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getRequestProperties()
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getRequestProperties() {
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setRequestProperty("whatever", "you like");
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Map headers = uc.getRequestProperties();
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // content-length should always appear
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List header = (List) headers.get("whatever");
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(header);
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("you like", header.get(0));
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(headers.size() >= 1);
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the map should be unmodifiable
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            headers.put("hi", "bye");
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail();
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the list should be unmodifiable
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            header.add("hi");
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail();
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getRequestProperties()
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getRequestProperties_Exception() throws IOException {
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url = new URL("http", "test", 80, "index.html", new NewHandler());
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection urlCon = url.openConnection();
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        urlCon.connect();
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            urlCon.getRequestProperties();
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalStateException");
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getRequestProperty(java.lang.String)
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getRequestProperty_LString_Exception() throws IOException {
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url = new URL("http", "test", 80, "index.html", new NewHandler());
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection urlCon = url.openConnection();
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        urlCon.setRequestProperty("test", "testProperty");
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("testProperty", urlCon.getRequestProperty("test"));
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        urlCon.connect();
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            urlCon.getRequestProperty("test");
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalStateException");
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getRequestProperty(java.lang.String)
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getRequestPropertyLjava_lang_String() {
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setRequestProperty("Yo", "yo");
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong property returned: " + uc.getRequestProperty("Yo"),
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                uc.getRequestProperty("Yo").equals("yo"));
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Wrong property returned: " + uc.getRequestProperty("No"),
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                uc.getRequestProperty("No"));
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getURL()
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getURL() {
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect URL returned", uc.getURL().equals(url));
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#getUseCaches()
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getUseCaches() {
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setUseCaches(false);
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("getUseCaches should have returned false", !uc
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getUseCaches());
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setUseCaches(true);
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("getUseCaches should have returned true", uc.getUseCaches());
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#guessContentTypeFromStream(java.io.InputStream)
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_guessContentTypeFromStreamLjava_io_InputStream()
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws IOException {
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] headers = new String[] { "<html>", "<head>", " <head ",
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "<body", "<BODY ", "<!DOCTYPE html", "<?xml " };
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] expected = new String[] { "text/html", "text/html",
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "text/html", "text/html", "text/html", "text/html",
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "application/xml" };
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] encodings = new String[] { "ASCII", "UTF-8", "UTF-16BE",
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "UTF-16LE", "UTF-32BE", "UTF-32LE" };
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < headers.length; i++) {
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (String enc : encodings) {
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                InputStream is = new ByteArrayInputStream(toBOMBytes(
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        headers[i], enc));
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                String mime = URLConnection.guessContentTypeFromStream(is);
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("checking " + headers[i] + " with " + enc,
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        expected[i], mime);
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Try simple case
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            URLConnection.guessContentTypeFromStream(null);
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test magic bytes
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[][] bytes = new byte[][] { { 'P', 'K' }, { 'G', 'I' } };
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        expected = new String[] { "application/zip", "image/gif" };
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < bytes.length; i++) {
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            InputStream is = new ByteArrayInputStream(bytes[i]);
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(expected[i], URLConnection
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .guessContentTypeFromStream(is));
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(URLConnection.guessContentTypeFromStream(bais));
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais.close();
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setAllowUserInteraction(boolean)
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setAllowUserInteractionZ() throws MalformedURLException {
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-72
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockURLConnection u = new MockURLConnection(new URL(
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "http://www.apache.org"));
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.connect();
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.setAllowUserInteraction(false);
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Assert 0: expected an IllegalStateException");
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setConnectTimeout(int)
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setConnectTimeoutI() throws Exception {
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection uc = new URL("http://localhost").openConnection();
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getConnectTimeout());
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setConnectTimeout(0);
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getConnectTimeout());
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            uc.setConnectTimeout(-100);
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // correct
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getConnectTimeout());
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setConnectTimeout(100);
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, uc.getConnectTimeout());
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            uc.setConnectTimeout(-1);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // correct
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, uc.getConnectTimeout());
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setDefaultAllowUserInteraction(boolean)
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setDefaultAllowUserInteractionZ() {
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Used to test", true);
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setDefaultRequestProperty(java.lang.String,
6718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     *java.lang.String)
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setDefaultRequestPropertyLjava_lang_StringLjava_lang_String() {
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Used to test", true);
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setDefaultUseCaches(boolean)
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setDefaultUseCachesZ() {
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Used to test", true);
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @throws IOException
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setFileNameMap(java.net.FileNameMap)
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setFileNameMapLjava_net_FileNameMap() throws IOException {
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // nothing happens if set null
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection.setFileNameMap(null);
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // take no effect
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(URLConnection.getFileNameMap());
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setIfModifiedSince(long)
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setIfModifiedSinceJ() throws IOException {
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url = new URL("http://localhost:8080/");
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection connection = url.openConnection();
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.clear();
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        cal.set(2000, Calendar.MARCH, 5);
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long sinceTime = cal.getTime().getTime();
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        connection.setIfModifiedSince(sinceTime);
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong date set", sinceTime, connection
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getIfModifiedSince());
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setReadTimeout(int)
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setReadTimeoutI() throws Exception {
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URLConnection uc = new URL("http://localhost").openConnection();
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getReadTimeout());
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setReadTimeout(0);
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getReadTimeout());
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            uc.setReadTimeout(-100);
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // correct
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, uc.getReadTimeout());
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uc.setReadTimeout(100);
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, uc.getReadTimeout());
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            uc.setReadTimeout(-1);
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // correct
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(100, uc.getReadTimeout());
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setRequestProperty(String, String)
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setRequestProperty() throws MalformedURLException,
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            IOException {
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockURLConnection u = new MockURLConnection(new URL(
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "http://www.apache.org"));
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.setRequestProperty(null, "someValue");
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected NullPointerException");
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.connect();
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // state of connection is checked first
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // so no NPE in case of null 'field' param
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.setRequestProperty(null, "someValue");
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Expected IllegalStateException");
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setRequestProperty(java.lang.String,
7668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     *java.lang.String)
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
768fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes    public void test_setRequestPropertyLjava_lang_StringLjava_lang_String()
7698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath            throws MalformedURLException {
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockURLConnection u = new MockURLConnection(new URL(
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "http://www.apache.org"));
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.setRequestProperty("", "");
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("", u.getRequestProperty(""));
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.setRequestProperty("key", "value");
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("value", u.getRequestProperty("key"));
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#setUseCaches(boolean)
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setUseCachesZ() throws MalformedURLException {
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-71
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockURLConnection u = new MockURLConnection(new URL(
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "http://www.apache.org"));
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        u.connect();
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            u.setUseCaches(true);
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Assert 0: expected an IllegalStateException");
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalStateException e) {
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.net.URLConnection#toString()
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() {
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Wrong toString: " + uc.toString(), uc.toString().indexOf(
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "URLConnection") > 0);
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private byte[] toBOMBytes(String text, String enc) throws IOException {
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream bos = new ByteArrayOutputStream();
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (enc.equals("UTF-8")) {
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (enc.equals("UTF-16BE")) {
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(new byte[] { (byte) 0xFE, (byte) 0xFF });
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (enc.equals("UTF-16LE")) {
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(new byte[] { (byte) 0xFF, (byte) 0xFE });
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (enc.equals("UTF-32BE")) {
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0xFE,
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    (byte) 0xFF });
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (enc.equals("UTF-32LE")) {
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(new byte[] { (byte) 0xFF, (byte) 0xFE, (byte) 0x00,
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    (byte) 0x00 });
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(text.getBytes(enc));
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return bos.toByteArray();
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
829