KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > archive > net > rsync > Handler


1 /* RsyncProtocolHandler.java
2  *
3  * $Id: Handler.java,v 1.3 2005/08/17 23:36:53 stack-sf Exp $
4  *
5  * Created Jul 15, 2005
6  *
7  * Copyright (C) 2005 Internet Archive.
8  *
9  * This file is part of the Heritrix web crawler (crawler.archive.org).
10  *
11  * Heritrix is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser Public License as published by
13  * the Free Software Foundation; either version 2.1 of the License, or
14  * any later version.
15  *
16  * Heritrix is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser Public License
22  * along with Heritrix; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24  */

25 package org.archive.net.rsync;
26
27 import java.io.IOException JavaDoc;
28 import java.io.InputStream JavaDoc;
29 import java.net.URL JavaDoc;
30 import java.net.URLConnection JavaDoc;
31 import java.net.URLStreamHandler JavaDoc;
32
33 /**
34  * A protocol handler that uses native rsync client to do copy.
35  * You need to define the system property
36  * <code>-Djava.protocol.handler.pkgs=org.archive.net</code> to add this handler
37  * to the java.net.URL set. Assumes rsync is in path. Define
38  * system property
39  * <code>-Dorg.archive.net.rsync.RsyncUrlConnection.path=PATH_TO_RSYNC</code> to
40  * pass path to rsync. Downloads to <code>java.io.tmpdir</code>.
41  * @author stack
42  */

43 public class Handler extends URLStreamHandler JavaDoc {
44     protected URLConnection JavaDoc openConnection(URL JavaDoc u) {
45         return new RsyncURLConnection(u);
46     }
47
48     /**
49      * Main dumps rsync file to STDOUT.
50      * @param args
51      * @throws IOException
52      */

53     public static void main(String JavaDoc[] args)
54     throws IOException JavaDoc {
55         if (args.length != 1) {
56             System.out.println("Usage: java java " +
57                 "-Djava.protocol.handler.pkgs=org.archive.net " +
58                 "org.archive.net.rsync.Handler RSYNC_URL");
59             System.exit(1);
60         }
61         URL JavaDoc u = new URL JavaDoc(args[0]);
62         URLConnection JavaDoc connect = u.openConnection();
63         // Write download to stdout.
64
final int bufferlength = 4096;
65         byte [] buffer = new byte [bufferlength];
66         InputStream JavaDoc is = connect.getInputStream();
67         try {
68             for (int count = is.read(buffer, 0, bufferlength);
69                     (count = is.read(buffer, 0, bufferlength)) != -1;) {
70                 System.out.write(buffer, 0, count);
71             }
72             System.out.flush();
73         } finally {
74             is.close();
75         }
76     }
77 }
Popular Tags