Java 类org.apache.hadoop.hdfs.server.namenode.StreamFile 实例源码

项目:hadoop-on-lustre    文件:ByteRangeInputStream.java   
private InputStream getInputStream() throws IOException {
  if (status != StreamStatus.NORMAL) {

    if (in != null) {
      in.close();
      in = null;
    }

    // Use the original url if no resolved url exists, eg. if
    // it's the first time a request is made.
    final boolean resolved = resolvedURL.getURL() != null; 
    final URLOpener opener = resolved? resolvedURL: originalURL;

    final HttpURLConnection connection = opener.connect(startPos, resolved);
    final String cl = connection.getHeaderField(StreamFile.CONTENT_LENGTH);
    filelength = (cl == null) ? -1 : Long.parseLong(cl);
    in = connection.getInputStream();

    resolvedURL.setURL(getResolvedUrl(connection));
    status = StreamStatus.NORMAL;
  }

  return in;
}
项目:hortonworks-extension    文件:ByteRangeInputStream.java   
private InputStream getInputStream() throws IOException {
  if (status != StreamStatus.NORMAL) {

    if (in != null) {
      in.close();
      in = null;
    }

    // Use the original url if no resolved url exists, eg. if
    // it's the first time a request is made.
    final boolean resolved = resolvedURL.getURL() != null; 
    final URLOpener opener = resolved? resolvedURL: originalURL;

    final HttpURLConnection connection = opener.connect(startPos, resolved);
    final String cl = connection.getHeaderField(StreamFile.CONTENT_LENGTH);
    filelength = (cl == null) ? -1 : Long.parseLong(cl);
    in = connection.getInputStream();

    resolvedURL.setURL(getResolvedUrl(connection));
    status = StreamStatus.NORMAL;
  }

  return in;
}
项目:hortonworks-extension    文件:ByteRangeInputStream.java   
private InputStream getInputStream() throws IOException {
  if (status != StreamStatus.NORMAL) {

    if (in != null) {
      in.close();
      in = null;
    }

    // Use the original url if no resolved url exists, eg. if
    // it's the first time a request is made.
    final boolean resolved = resolvedURL.getURL() != null; 
    final URLOpener opener = resolved? resolvedURL: originalURL;

    final HttpURLConnection connection = opener.connect(startPos, resolved);
    final String cl = connection.getHeaderField(StreamFile.CONTENT_LENGTH);
    filelength = (cl == null) ? -1 : Long.parseLong(cl);
    in = connection.getInputStream();

    resolvedURL.setURL(getResolvedUrl(connection));
    status = StreamStatus.NORMAL;
  }

  return in;
}
项目:hadoop-EAR    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  String infoAddr = 
    NetUtils.getServerAddress(conf, 
                            "dfs.datanode.info.bindAddress", 
                            "dfs.datanode.info.port",
                            "dfs.datanode.http.address");
  InetSocketAddress infoSocAddr = NetUtils.createSocketAddr(infoAddr);
  String infoHostIp = infoSocAddr.getAddress().getHostAddress();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = new HttpServer("datanode", infoHostIp, tmpInfoPort, tmpInfoPort == 0, conf);
  if (conf.getBoolean("dfs.https.enable", false)) {
    boolean needClientAuth = conf.getBoolean("dfs.https.need.client.auth", false);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        "dfs.datanode.https.address", infoHostIp + ":" + 0));
    Configuration sslConf = new Configuration(false);
    sslConf.addResource(conf.get("dfs.https.server.keystore.resource",
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    // assume same ssl port for all datanodes
    InetSocketAddress datanodeSslPort = NetUtils.createSocketAddr(conf.get(
        "dfs.datanode.https.address", infoHostIp + ":" + 50475));
    this.infoServer.setAttribute("datanode.https.port", datanodeSslPort
        .getPort());
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);
  this.infoServer.setAttribute("datanode", this);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScannerSet.Servlet.class);

  this.infoServer.setAttribute(ReconfigurationServlet.CONF_SERVLET_RECONFIGURABLE_PREFIX +
  CONF_SERVLET_PATH, DataNode.this);
  this.infoServer.addServlet("dnConf", CONF_SERVLET_PATH, ReconfigurationServlet.class);
  this.infoServer.start();
}
项目:RDFS    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  String infoAddr = 
    NetUtils.getServerAddress(conf, 
                            "dfs.datanode.info.bindAddress", 
                            "dfs.datanode.info.port",
                            "dfs.datanode.http.address");
  InetSocketAddress infoSocAddr = NetUtils.createSocketAddr(infoAddr);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = new HttpServer("datanode", infoHost, tmpInfoPort,
      tmpInfoPort == 0, conf);
  if (conf.getBoolean("dfs.https.enable", false)) {
    boolean needClientAuth = conf.getBoolean("dfs.https.need.client.auth", false);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        "dfs.datanode.https.address", infoHost + ":" + 0));
    Configuration sslConf = new Configuration(false);
    sslConf.addResource(conf.get("dfs.https.server.keystore.resource",
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    // assume same ssl port for all datanodes
    InetSocketAddress datanodeSslPort = NetUtils.createSocketAddr(conf.get(
        "dfs.datanode.https.address", infoHost + ":" + 50475));
    this.infoServer.setAttribute("datanode.https.port", datanodeSslPort
        .getPort());
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);
  this.infoServer.setAttribute("datanode", this);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScannerSet.Servlet.class);

  this.infoServer.setAttribute(ReconfigurationServlet.CONF_SERVLET_RECONFIGURABLE_PREFIX +
  CONF_SERVLET_PATH, DataNode.this);
  this.infoServer.addServlet("dnConf", CONF_SERVLET_PATH, ReconfigurationServlet.class);
  this.infoServer.start();
}
项目:hadoop-plus    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = DataNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) 
     ? new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0, 
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")))
     : new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")),
         secureResources.getListener());
  LOG.info("Opened info server at " + infoHost + ":" + tmpInfoPort);
  if (conf.getBoolean(DFS_HTTPS_ENABLE_KEY, false)) {
    boolean needClientAuth = conf.getBoolean(DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
                                             DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        DFS_DATANODE_HTTPS_ADDRESS_KEY, infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(conf.get(DFSConfigKeys.DFS_SERVER_HTTPS_KEYSTORE_RESOURCE_KEY,
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if(LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);

  this.infoServer.setAttribute("datanode", this);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScanner.Servlet.class);

  if (WebHdfsFileSystem.isEnabled(conf, LOG)) {
    infoServer.addJerseyResourcePackage(DatanodeWebHdfsMethods.class
        .getPackage().getName() + ";" + Param.class.getPackage().getName(),
        WebHdfsFileSystem.PATH_PREFIX + "/*");
  }
  this.infoServer.start();
}
项目:hadoop-plus    文件:TestByteRangeInputStream.java   
@Override
public String getHeaderField(String field) {
  return (field.equalsIgnoreCase(StreamFile.CONTENT_LENGTH)) ? "65535" : null;
}
项目:PDHC    文件:CheckerNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = CheckerNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) 
     ? new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0, 
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")))
     : new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")),
         secureResources.getListener());
  LOG.info("Opened info server at " + infoHost + ":" + tmpInfoPort);
  if (conf.getBoolean(DFS_HTTPS_ENABLE_KEY, false)) {
    boolean needClientAuth = conf.getBoolean(DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
                                             DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        DFS_DATANODE_HTTPS_ADDRESS_KEY, infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(conf.get(DFSConfigKeys.DFS_SERVER_HTTPS_KEYSTORE_RESOURCE_KEY,
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if(LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);

  this.infoServer.setAttribute("datanode", this);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScanner.Servlet.class);

  if (WebHdfsFileSystem.isEnabled(conf, LOG)) {
    infoServer.addJerseyResourcePackage(DatanodeWebHdfsMethods.class
        .getPackage().getName() + ";" + Param.class.getPackage().getName(),
        WebHdfsFileSystem.PATH_PREFIX + "/*");
  }
  this.infoServer.start();
}
项目:hops    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = DataNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) ?
      new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
          conf, new AccessControlList(conf.get(DFS_ADMIN, " "))) :
      new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
          conf, new AccessControlList(conf.get(DFS_ADMIN, " ")),
          secureResources.getListener());
  LOG.info("Opened info server at " + infoHost + ":" + tmpInfoPort);
  if (conf.getBoolean(DFS_HTTPS_ENABLE_KEY, false)) {
    boolean needClientAuth = conf.getBoolean(DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
        DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(
        conf.get(DFS_DATANODE_HTTPS_ADDRESS_KEY, infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(
        conf.get("dfs.https.server.keystore.resource", "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if (LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);

  this.infoServer.setAttribute("datanode", this);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport",
      DataBlockScanner.Servlet.class);

  if (WebHdfsFileSystem.isEnabled(conf, LOG)) {
    infoServer.addJerseyResourcePackage(
        DatanodeWebHdfsMethods.class.getPackage().getName() + ";" +
            Param.class.getPackage().getName(),
        WebHdfsFileSystem.PATH_PREFIX + "/*");
  }
  this.infoServer.start();
}
项目:hops    文件:TestByteRangeInputStream.java   
@Override
public String getHeaderField(String field) {
  return (field.equalsIgnoreCase(StreamFile.CONTENT_LENGTH)) ? "65535" :
      null;
}
项目:hadoop-TCP    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = DataNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) 
     ? new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0, 
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")))
     : new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")),
         secureResources.getListener());

  LOG.info("Opened info server at " + infoHost + ":" + tmpInfoPort);
  if (conf.getBoolean(DFS_HTTPS_ENABLE_KEY, false)) {
    boolean needClientAuth = conf.getBoolean(DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
                                             DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        DFS_DATANODE_HTTPS_ADDRESS_KEY, infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(conf.get(DFSConfigKeys.DFS_SERVER_HTTPS_KEYSTORE_RESOURCE_KEY,
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if(LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
    infoSecurePort = secInfoSocAddr.getPort();
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);

  this.infoServer.setAttribute("datanode", this);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScanner.Servlet.class);

  if (WebHdfsFileSystem.isEnabled(conf, LOG)) {
    infoServer.addJerseyResourcePackage(DatanodeWebHdfsMethods.class
        .getPackage().getName() + ";" + Param.class.getPackage().getName(),
        WebHdfsFileSystem.PATH_PREFIX + "/*");
  }
  this.infoServer.start();
}
项目:hadoop-TCP    文件:TestByteRangeInputStream.java   
@Override
public String getHeaderField(String field) {
  return (field.equalsIgnoreCase(StreamFile.CONTENT_LENGTH)) ? "65535" : null;
}
项目:hardfs    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = DataNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) 
     ? new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0, 
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")))
     : new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
         conf, new AccessControlList(conf.get(DFS_ADMIN, " ")),
         secureResources.getListener());

  LOG.info("Opened info server at " + infoHost + ":" + tmpInfoPort);
  if (conf.getBoolean(DFS_HTTPS_ENABLE_KEY, false)) {
    boolean needClientAuth = conf.getBoolean(DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
                                             DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        DFS_DATANODE_HTTPS_ADDRESS_KEY, infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(conf.get(DFSConfigKeys.DFS_SERVER_HTTPS_KEYSTORE_RESOURCE_KEY,
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if(LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
    infoSecurePort = secInfoSocAddr.getPort();
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);

  this.infoServer.setAttribute("datanode", this);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScanner.Servlet.class);

  if (WebHdfsFileSystem.isEnabled(conf, LOG)) {
    infoServer.addJerseyResourcePackage(DatanodeWebHdfsMethods.class
        .getPackage().getName() + ";" + Param.class.getPackage().getName(),
        WebHdfsFileSystem.PATH_PREFIX + "/*");
  }
  this.infoServer.start();
}
项目:hardfs    文件:TestByteRangeInputStream.java   
@Override
public String getHeaderField(String field) {
  return (field.equalsIgnoreCase(StreamFile.CONTENT_LENGTH)) ? "65535" : null;
}
项目:hadoop-on-lustre2    文件:TestByteRangeInputStream.java   
@Override
public String getHeaderField(String field) {
  return (field.equalsIgnoreCase(StreamFile.CONTENT_LENGTH)) ? "65535" : null;
}
项目:cumulus    文件:DataNode.java   
private void startInfoServer(Configuration conf) throws IOException {
  // create a servlet to serve full-file content
  InetSocketAddress infoSocAddr = DataNode.getInfoAddr(conf);
  String infoHost = infoSocAddr.getHostName();
  int tmpInfoPort = infoSocAddr.getPort();
  this.infoServer = (secureResources == null) 
     ? new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0, 
         conf, new AccessControlList(conf.get(DFSConfigKeys.DFS_ADMIN, " ")))
     : new HttpServer("datanode", infoHost, tmpInfoPort, tmpInfoPort == 0,
         conf, new AccessControlList(conf.get(DFSConfigKeys.DFS_ADMIN, " ")),
         secureResources.getListener());
  if(LOG.isDebugEnabled()) {
    LOG.debug("Datanode listening on " + infoHost + ":" + tmpInfoPort);
  }
  if (conf.getBoolean("dfs.https.enable", false)) {
    boolean needClientAuth = conf.getBoolean(DFSConfigKeys.DFS_CLIENT_HTTPS_NEED_AUTH_KEY,
                                             DFSConfigKeys.DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT);
    InetSocketAddress secInfoSocAddr = NetUtils.createSocketAddr(conf.get(
        "dfs.datanode.https.address", infoHost + ":" + 0));
    Configuration sslConf = new HdfsConfiguration(false);
    sslConf.addResource(conf.get("dfs.https.server.keystore.resource",
        "ssl-server.xml"));
    this.infoServer.addSslListener(secInfoSocAddr, sslConf, needClientAuth);
    if(LOG.isDebugEnabled()) {
      LOG.debug("Datanode listening for SSL on " + secInfoSocAddr);
    }
  }
  this.infoServer.addInternalServlet(null, "/streamFile/*", StreamFile.class);
  this.infoServer.addInternalServlet(null, "/getFileChecksum/*",
      FileChecksumServlets.GetServlet.class);
  this.infoServer.setAttribute("datanode.blockScanner", blockScanner);
  this.infoServer.setAttribute(JspHelper.CURRENT_CONF, conf);
  this.infoServer.addServlet(null, "/blockScannerReport", 
                             DataBlockScanner.Servlet.class);

  //add by xianyu
  this.infoServer.addInternalServlet("monitor", "/monitor", 
  //        MonitorServlet.GetDatanodeLogServlet.class, false);
        DatanodeMonitorServlet.class, false);

  this.infoServer.start();
  // adjust info port
  this.dnRegistration.setInfoPort(this.infoServer.getPort());
}
项目:cumulus    文件:ByteRangeInputStream.java   
private InputStream getInputStream() throws IOException {
  if (status != STATUS_NORMAL) {

    if (in != null) {
      in.close();
      in = null;
    }

    // use the original url  if no resolved url exists (e.g., if it's 
    // the first time a request is made)
    final URLOpener o = resolvedURL.getURL() == null? originalURL: resolvedURL;

    final HttpURLConnection connection = o.openConnection();
    try {
      connection.setRequestMethod("GET");
      if (startPos != 0) {
        connection.setRequestProperty("Range", "bytes="+startPos+"-");
      }
      connection.connect();
      final String cl = connection.getHeaderField(StreamFile.CONTENT_LENGTH);
      filelength = cl == null? -1: Long.parseLong(cl);
      if (HftpFileSystem.LOG.isDebugEnabled()) {
        HftpFileSystem.LOG.debug("filelength = " + filelength);
      }
      in = connection.getInputStream();
    } catch(IOException ioe) {
      HftpFileSystem.throwIOExceptionFromConnection(connection, ioe);
    }

    if (startPos != 0 && connection.getResponseCode() != 206) {
      // we asked for a byte range but did not receive a partial content
      // response...
      throw new IOException("206 expected, but received "
                            + connection.getResponseCode());
    } else if(startPos == 0 && connection.getResponseCode() != 200) {
      // we asked for all bytes from the beginning but didn't receive a 200
      // response (none of the other 2xx codes are valid here)
      throw new IOException("200 expected, but received "
                            + connection.getResponseCode());
    }

    resolvedURL.setURL(connection.getURL());
    status = STATUS_NORMAL;
  }

  return in;
}