1 26 27 28 package org.objectweb.mobilitools.smi.lib.bytearray; 29 30 31 import org.objectweb.mobilitools.smi.lib.SMIClassLoader; 32 import java.io.*; 33 import java.net.*; 34 35 36 public class ByteArrayURLConnection extends URLConnection 37 { 38 String codebase, name; 39 SMIClassLoader loader; 40 byte[] bytes; 41 42 43 public ByteArrayURLConnection(URL url, SMIClassLoader classloader) 44 { 45 super(url); 46 name = url.getRef(); 47 loader = classloader; 48 connected = false; 49 } 50 51 52 public void connect() 53 { 54 if (! connected) 55 { 56 bytes = loader.getBytes(name); 57 connected = true; 58 } 59 } 60 61 62 public int getContentLength() 63 { 64 if (! connected) 65 { 66 connect(); 67 } 68 return bytes.length; 69 } 70 71 72 public String getContentType() 73 { 74 String type = guessContentTypeFromName(name); 75 if (type == null) 76 { 77 if (! connected) 78 { 79 connect(); 80 } 81 try 82 { 83 type = guessContentTypeFromStream(new ByteArrayInputStream(bytes)); 84 } 85 catch (IOException ex) 86 { 87 } 88 } 89 return type; 90 } 91 92 93 public Object getContent() 94 throws IOException 95 { 96 if (! connected) 97 { 98 connect(); 99 } 100 return bytes; 101 } 102 103 104 public InputStream getInputStream() 105 throws IOException 106 { 107 if (! connected) 108 { 109 connect(); 110 } 111 return new ByteArrayInputStream(bytes); 112 } 113 114 115 public OutputStream getOutputStream() 116 throws IOException 117 { 118 throw new IOException("bytearray URLs cannot by written to"); 119 } 120 121 122 public String toString() 123 { 124 return "ByteArrayURLConnection for " + loader + ", URL " + getURL(); 125 } 126 } 127 | Popular Tags |