products/Sources/formale Sprachen/Java/openjdk-20-36_src/test/jdk/java/net/ResponseCache image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: EmojiData.java.template   Sprache: Unknown

Spracherkennung für: .1 vermutete Sprache: Scala {Scala[67] Pl1[118] Latech[120]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

/* @test @(#)file2.1 1.1 03/08/09
 * @summary Unit test for java.net.ResponseCacheHandler
 * @bug 4837267
 * @author Yingxian Wang
 */


import java.net.*;
import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.channels.ReadableByteChannel;
import sun.net.www.ParseUtil;

/**
 * Request should get serviced by the cache handler. Response get
 * saved through the cache handler.
 */

public class ResponseCacheHandlerTest implements Runnable {
    ServerSocket ss;
    static URL url1;
    static URL url2;
    static boolean flag = false;
    /* 
     * Our "http" server to return a 404 */

    public void run() {
 try {
     Socket s = ss.accept();

     // check request contains "Cookie"
     InputStream is = s.getInputStream ();
     BufferedReader r = new BufferedReader(new InputStreamReader(is));
     boolean flag = false;
     String x;
     while ((x=r.readLine()) != null) {
  if (x.length() ==0) {
      break;
  }
     }
     PrintStream out = new PrintStream( 
     new BufferedOutputStream(
        s.getOutputStream() ));
     
     /* send file2.1 */
     File file2 = new File("file2.1");
     out.print("HTTP/1.1 200 OK\r\n");
     out.print("Content-Type: text/html; charset=iso-8859-1\r\n");
     out.print("Content-Length: "+file2.length()+"\r\n");
     out.print("Connection: close\r\n");
     out.print("\r\n");
     FileInputStream fis = new FileInputStream(file2);
     byte[] buf = new byte[(int)file2.length()];
     int len;
     while ((len = fis.read(buf)) != -1) {
  out.print(new String(buf));
     }

     out.flush();

     s.close();
     ss.close();
 } catch (Exception e) { 
     e.printStackTrace();
 }
    }

    ResponseCacheHandlerTest() throws Exception {
 /* start the server */
 ss = new ServerSocket(0);
 (new Thread(this)).start();

 /* establish http connection to server */
 url1 = new URL("http://localhost/file1.cache");
 HttpURLConnection http = (HttpURLConnection)url1.openConnection();
 InputStream is = null;
 System.out.println("headers1:"+http.getHeaderFields());
 try {
     is = http.getInputStream();
 } catch (IOException ioex) {
     throw new RuntimeException(ioex.getMessage());
 }
 BufferedReader r = new BufferedReader(new InputStreamReader(is));
 String x;
 File fileout = new File("file1");
 PrintStream out = new PrintStream( 
     new BufferedOutputStream(
        new FileOutputStream(fileout)));
 while ((x=r.readLine()) != null) {
     out.print(x+"\n");
 }
 out.flush();
 out.close();

 // if !(file1.out == file1.cache)
 // throw new RuntimeException("testing ResponseCacheHandler.get() failed");
 http.disconnect();

 // testing ResponseCacheHandler.put()
 url2 = new URL("http://localhost:" + 
         Integer.toString(ss.getLocalPort())+"/file2.1");
 http = (HttpURLConnection)url2.openConnection();
 System.out.println("headers2:"+http.getHeaderFields());

 try {
     is = http.getInputStream();
 } catch (IOException ioex) {
     throw new RuntimeException(ioex.getMessage());
 }
 DataInputStream dis = new DataInputStream(is);
 fileout = new File("file2.2");
 byte[] buf = new byte[(int)new File("file2.1").length()];
 DataOutputStream dos =  new DataOutputStream(new FileOutputStream(fileout));
 int len;
 while ((len=dis.read(buf)) != -1) {
     dos.write(buf, 0, len);
 }
 dos.flush();
 dos.close();

 // if !(file2.1 == file2.2 == file2.cache)
 // throw new RuntimeException("testing ResponseCacheHandler.put() failed");
    }
    public static void main(String args[]) throws Exception {
 ResponseCacheHandler.setDefault(new MyResponseCacheHandler());

 new ResponseCacheHandlerTest();
    }

    static class MyResponseCacheHandler extends ResponseCacheHandler {
 public Response 
 get(URI uri, Map requestHeaders)
     throws IOException {
     if (uri.equals(ParseUtil.toURI(url1))) {
  return new MyResponse("file1.cache");
     } if (uri.equals(ParseUtil.toURI(url2)) && !flag) {
  flag = true;
  return null;
     } else {
  return new MyResponse("file2.cache");
     }
 }
 public boolean put(URI uri, Response response)  throws IOException {
     // save cache to file2.cache
     // 1. serialize headers into file2.cache
     // 2. write data to file2.cache
     File file = new File("file2.cache");
     FileOutputStream fos = new FileOutputStream(file);
     ObjectOutputStream oos = new ObjectOutputStream(fos);
     oos.writeObject(response.getHeaders());

     ReadableByteChannel rbc = response.getBody();
     int len = (int)new File("file2.1").length();
     ByteBuffer buf = ByteBuffer.allocate(len);
     byte[] b = new byte[len];
     while ((len = rbc.read(buf)) != -1) {
  buf.flip();
  buf.get(b, 0, len);
  buf.compact();
  oos.write(b, 0, len);
     }
     oos.close();
     return true;
 }
    }

    static class MyResponse extends Response {
 FileInputStream fis;
 Map headers;
 public MyResponse(String filename) {
     try {
  fis = new FileInputStream(new File(filename));
  headers = (Map)new ObjectInputStream(fis).readObject();
     } catch (Exception ex) {
  throw new RuntimeException(ex.getMessage());
     }
 }
 public ReadableByteChannel getBody() throws IOException {
     return fis.getChannel();
 }

 public Map getHeaders() throws IOException {
     return headers;
 }
    }
}

[ Dauer der Verarbeitung: 0.237 Sekunden  ]