1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/* 2e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * contributor license agreements. See the NOTICE file distributed with 4e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * this work for additional information regarding copyright ownership. 5e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * (the "License"); you may not use this file except in compliance with 7e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the License. You may obtain a copy of the License at 8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 9e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 11e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Unless required by applicable law or agreed to in writing, software 12e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * See the License for the specific language governing permissions and 15e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * limitations under the License. 16e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 17e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 18e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespackage tests.support; 19e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 20e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ByteArrayInputStream; 21e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.ByteArrayOutputStream; 22e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.File; 23e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.FileOutputStream; 24e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.IOException; 25e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.io.InputStream; 26e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.net.JarURLConnection; 27e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.net.MalformedURLException; 28e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.net.URL; 29e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.Hashtable; 30e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 31e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport tests.support.resource.Support_Resources; 32e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 33e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespublic class Support_GetLocal { 34e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 35e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes static Hashtable<String, File> cache = new Hashtable<String, File>(20); 36e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 37e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static File getLocalFile(String url) throws IOException, 38e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes MalformedURLException { 39e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes url = Support_Resources.RESOURCE_PACKAGE + url; 40e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes File temp = cache.get(url); 41e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (temp == null) { 42e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes InputStream in = Support_GetLocal.class.getResourceAsStream(url); 43e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes temp = File.createTempFile("hyts_local", ".tmp", null); 44e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes temp.deleteOnExit(); 45e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes FileOutputStream out = new FileOutputStream(temp); 46e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes int result; 47e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes byte[] buf = new byte[4096]; 48e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes while ((result = in.read(buf)) != -1) { 49e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 50e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 51e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes in.close(); 52e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.close(); 53e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes cache.put(url, temp); 54e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 55e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return temp; 56e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 57e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 58e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static File getExternalLocalFile(String url) throws IOException, 59e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes MalformedURLException { 60e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes File temp = cache.get(url); 61e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (temp == null) { 62e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes InputStream in = new URL(url).openStream(); 63e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes temp = File.createTempFile("hyts_local", ".tmp", null); 64e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes temp.deleteOnExit(); 65e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes FileOutputStream out = new FileOutputStream(temp); 66e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes int result; 67e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes byte[] buf = new byte[4096]; 68e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes while ((result = in.read(buf)) != -1) { 69e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 70e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 71e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes in.close(); 72e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.close(); 73e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes cache.put(url, temp); 74e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 75e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return temp; 76e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 77e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 78e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes static ByteArrayInputStream getStream(String url) throws IOException, 79e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes MalformedURLException { 80e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes InputStream in = new URL(url).openStream(); 81e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes ByteArrayOutputStream out = new ByteArrayOutputStream(256); 82e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes int result; 83e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes byte[] buf = new byte[256]; 84e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes while ((result = in.read(buf)) != -1) { 85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 86e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 87e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return new ByteArrayInputStream(out.toByteArray()); 88e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 89e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 90e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static File createTempFile(String suffix) throws IOException { 91e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return File.createTempFile("hyts_", suffix, null); 92e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 93e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 94e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static JarURLConnection getJarURLConnection() throws IOException { 95e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes JarURLConnection con1 = null; 96e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes File file = getLocalFile("hyts_att.jar"); 97e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes URL fUrl1 = new URL("jar:file:" + file.getPath() + "!/"); 98e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes con1 = (JarURLConnection) fUrl1.openConnection(); 99e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return con1; 100e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 101e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes}