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 358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static Hashtable<String, File> cache = new Hashtable<String, File>(20); 36e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static File getLocalFile(String url) throws IOException, 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MalformedURLException { 398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath url = Support_Resources.RESOURCE_PACKAGE + url; 408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath File temp = cache.get(url); 418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (temp == null) { 428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream in = Support_GetLocal.class.getResourceAsStream(url); 438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath temp = File.createTempFile("hyts_local", ".tmp", null); 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath temp.deleteOnExit(); 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath FileOutputStream out = new FileOutputStream(temp); 468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int result; 478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath byte[] buf = new byte[4096]; 488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while ((result = in.read(buf)) != -1) { 49e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 50e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath in.close(); 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath out.close(); 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath cache.put(url, temp); 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return temp; 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 57e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static File getExternalLocalFile(String url) throws IOException, 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MalformedURLException { 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath File temp = cache.get(url); 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (temp == null) { 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream in = new URL(url).openStream(); 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath temp = File.createTempFile("hyts_local", ".tmp", null); 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath temp.deleteOnExit(); 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath FileOutputStream out = new FileOutputStream(temp); 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int result; 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath byte[] buf = new byte[4096]; 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while ((result = in.read(buf)) != -1) { 69e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 70e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath in.close(); 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath out.close(); 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath cache.put(url, temp); 748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return temp; 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 77e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath static ByteArrayInputStream getStream(String url) throws IOException, 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath MalformedURLException { 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath InputStream in = new URL(url).openStream(); 818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ByteArrayOutputStream out = new ByteArrayOutputStream(256); 828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath int result; 838d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath byte[] buf = new byte[256]; 848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath while ((result = in.read(buf)) != -1) { 85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes out.write(buf, 0, result); 86e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return new ByteArrayInputStream(out.toByteArray()); 888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 89e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static File createTempFile(String suffix) throws IOException { 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return File.createTempFile("hyts_", suffix, null); 928d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 93e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath public static JarURLConnection getJarURLConnection() throws IOException { 958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath JarURLConnection con1 = null; 968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath File file = getLocalFile("hyts_att.jar"); 978d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath URL fUrl1 = new URL("jar:file:" + file.getPath() + "!/"); 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath con1 = (JarURLConnection) fUrl1.openConnection(); 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return con1; 1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 101e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes}