Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


SSL file2.1   Sprache: unbekannt

 
/* @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;
 }
    }
}

[ Verzeichnis aufwärts0.41unsichere Verbindung  Übersetzung europäischer Sprachen durch Browser  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge