mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Java
		
	
	
	
// Connection.java - Implementation of URLConnection for gcjlib
 | 
						|
// protocol.
 | 
						|
 | 
						|
/* Copyright (C) 2003  Free Software Foundation
 | 
						|
 | 
						|
   This file is part of libgcj.
 | 
						|
 | 
						|
This software is copyrighted work licensed under the terms of the
 | 
						|
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | 
						|
details.  */
 | 
						|
 | 
						|
package gnu.java.net.protocol.gcjlib;
 | 
						|
 | 
						|
import java.io.InputStream;
 | 
						|
import java.io.IOException;
 | 
						|
import java.net.MalformedURLException;
 | 
						|
import java.net.URL;
 | 
						|
import java.net.URLConnection;
 | 
						|
import gnu.gcj.Core;
 | 
						|
import gnu.gcj.runtime.SharedLibHelper;
 | 
						|
import gnu.java.net.protocol.core.CoreInputStream;
 | 
						|
 | 
						|
/**
 | 
						|
 * @author Tom Tromey <tromey@redhat.com>
 | 
						|
 * @date January 10, 2003
 | 
						|
 */
 | 
						|
class Connection extends URLConnection
 | 
						|
{
 | 
						|
  String solib;
 | 
						|
  String name;
 | 
						|
  Core core;
 | 
						|
 | 
						|
  public Connection (URL url) throws MalformedURLException
 | 
						|
  {
 | 
						|
    super (url);
 | 
						|
    int index = url.getFile().indexOf ("!/");
 | 
						|
    
 | 
						|
    if (index == -1)
 | 
						|
      throw new MalformedURLException ("couldn't find !/ in gcjlib URL");
 | 
						|
 | 
						|
    name = url.getFile().substring (index + 2);
 | 
						|
    solib = url.getFile().substring (0, index);
 | 
						|
  }
 | 
						|
 | 
						|
  public void connect() throws IOException
 | 
						|
  {
 | 
						|
    if (core != null)
 | 
						|
      return;
 | 
						|
    // We can't create a new SharedLibHelper here, since we don't know
 | 
						|
    // what parent class loader to use.
 | 
						|
    SharedLibHelper helper = SharedLibHelper.findHelper(solib);
 | 
						|
    if (helper == null)
 | 
						|
      throw new IOException("library not loaded: " + solib);
 | 
						|
    core = helper.findCore(name);
 | 
						|
    if (core == null)
 | 
						|
      throw new IOException("couldn't find core object: " + name);
 | 
						|
  }
 | 
						|
 | 
						|
  public InputStream getInputStream() throws IOException
 | 
						|
  {
 | 
						|
    connect();
 | 
						|
    return new CoreInputStream(core);
 | 
						|
  }
 | 
						|
  
 | 
						|
  public String getHeaderField(String field)
 | 
						|
  {
 | 
						|
    try
 | 
						|
      {
 | 
						|
	if (!connected)
 | 
						|
	  connect();
 | 
						|
 | 
						|
	if (field.equals("content-type"))
 | 
						|
          return guessContentTypeFromName(name);
 | 
						|
	else if (field.equals("content-length"))
 | 
						|
          return Long.toString(core.length);
 | 
						|
      }
 | 
						|
    catch (IOException e)
 | 
						|
      {
 | 
						|
        // Fall through.
 | 
						|
      }
 | 
						|
    return null;
 | 
						|
  }  
 | 
						|
}
 |