⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plainremoteresource.java

📁 很棒的web服务器源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	    ex.printStackTrace();	    throw new RemoteAccessException("http "+ex.getMessage());	}    }    /**     * @exception RemoteAccessException If somenetwork failure occured.     */    public RemoteResource loadResource(String identifier)	throws RemoteAccessException    {	try {	    // Prepare the request:	    Request req = createRequest();	    req.setMethod("LOAD-RESOURCE");	    req.setURL(new URL(url.toString()+			       URLEncoder.encode(identifier)));	    // Run it:	    Reply rep = admin.runRequest(req);	    // Decode the reply:	    InputStream in = getInputStream(rep);	    RemoteResource  ret = 		admin.reader.readResource(url,identifier,in);	    in.close();	    return ret;	} catch (RemoteAccessException rae) {	    throw rae;	} catch (Exception ex) {	    ex.printStackTrace();	    throw new RemoteAccessException(ex.getMessage());	}    }    /**     * Register a new resource within this container.     * @param id The identifier of the resource to be created.     * @param classname The name of the class of the resource to be added.     * @exception RemoteAccessException If somenetwork failure occured.     */    public RemoteResource registerResource(String id, String classname) 	throws RemoteAccessException    {	ResourceDescription   rd   = new EmptyDescription(classname, id);	try {	    Request req = createRequest();	    // Prepare the request:	    req.setMethod("REGISTER-RESOURCE");	    req.setContentType(admin.conftype);	    req.setURL(url);	    ByteArrayOutputStream bout = new ByteArrayOutputStream();	    OutputStream out;	    if (debug) {		out = bout;	    } else { 		out = new GZIPOutputStream(bout);	    }	    admin.writer.writeResourceDescription(rd, out);	    byte bits[] = bout.toByteArray();	    req.setContentLength(bits.length);	    if (!debug) {		req.addTransferEncoding("gzip");	    }	    req.setOutputStream(new ByteArrayInputStream(bits));	    // Run it:	    Reply rep = admin.runRequest(req);	    // Decode the result:	    rd = admin.reader.readResourceDescription(getInputStream(rep));	    RemoteResource ret = 		new PlainRemoteResource(admin, url, rd.getIdentifier(), rd);	    	    return ret;	} catch (RemoteAccessException rae) {	    throw rae;	} catch (Exception ex) {	    ex.printStackTrace();	    throw new RemoteAccessException(ex.getMessage());	}    }    /**     * Is this resource a framed resource ?     * @return A boolean, <strong>true</strong> if the resource is framed     * and it currently has some frames attached, <strong>false</strong>     * otherwise.     * @exception RemoteAccessException If somenetwork failure occured.     */    public boolean isFramed() 	throws RemoteAccessException    {	return isframed;    }    /**     * Get the frames attached to that resource.     * Each frame is itself a resource, so it is returned as an instance of     * a remote resource.     * @return A (posssibly <strong>null</strong>) array of frames attached     * to that resource.     * @exception RemoteAccessException If somenetwork failure occured.     */    public RemoteResource[] getFrames()	throws RemoteAccessException    {	if ( ! isframed )	    throw new RuntimeException("not a framed resource");	return frames;    }    /**     * Unregister a given frame from that resource.     * @param frame The frame to unregister.     * @exception RemoteAccessException If somenetwork failure occured.     */    public void unregisterFrame(RemoteResource frame)	throws RemoteAccessException    {	if ( ! isframed )	    throw new RuntimeException("not a framed resource");	if ( frames == null )	    throw new RuntimeException("this resource has no frames");	// Remove it:	String id = null;	try {	    id = ((PlainRemoteResource)frame).identifier;	    Request req = createRequest();	    // Prepare the request:	    req.setMethod("UNREGISTER-FRAME");	    req.setContentType(admin.conftype);	    req.setURL(url);	    ResourceDescription dframe = new EmptyDescription("", id);	    ByteArrayOutputStream bout = new ByteArrayOutputStream();	    OutputStream out;	    if (debug) {		out = bout;	    } else {		out = new GZIPOutputStream(bout);	    }	    admin.writer.writeResourceDescription(dframe, out);	    byte bits[] = bout.toByteArray();	    req.setContentLength(bits.length);	    if (!debug) {		req.addTransferEncoding("gzip");	    }	    req.setOutputStream(new ByteArrayInputStream(bits));	    // Run it:	    Reply rep = admin.runRequest(req);		} catch (RemoteAccessException rae) {	    throw rae;	} catch (Exception ex) {	    ex.printStackTrace();	    throw new RemoteAccessException(ex.getMessage());	}	RemoteResource f[] = new RemoteResource[frames.length-1];	int j = 0;	for (int i = 0; i < frames.length ; i++) {	    if ( ((PlainRemoteResource)frames[i]).identifier.equals(id)) {		// got it, copy the end of the array		System.arraycopy(frames, i+1, f, j, frames.length-i-1);		frames = f;		return;	    } else {		try {		    f[j++] = frames[i];		} catch (ArrayIndexOutOfBoundsException ex) {		    return; // no modifications, return		}	    }	}    }    public boolean isFrame() {	return isFrameURL(url);    }    protected boolean isFrameURL(URL furl) {	return (furl.toString().lastIndexOf('?') != -1);    }    /**     * Attach a new frame to that resource.     * @param identifier The name for this frame (if any).     * @param clsname The name of the frame's class.     * @return A remote handle to the (remotely) created frame instance.     * @exception RemoteAccessException If somenetwork failure occured.     */    public RemoteResource registerFrame(String id, String classname)	throws RemoteAccessException    {	// Can we add new resources ?	if ( ! isframed )	    throw new RuntimeException("not a framed resource");	try {	    Request req = createRequest();	    // Prepare the request:	    req.setMethod("REGISTER-FRAME");	    req.setContentType(admin.conftype);	    ResourceDescription dframe = new EmptyDescription(classname, id);	    ByteArrayOutputStream bout = new ByteArrayOutputStream();	    OutputStream out;	    if (debug) {		out = bout;	    } else {		out = new GZIPOutputStream(bout);	    }	    admin.writer.writeResourceDescription(dframe, out);	    byte bits[] = bout.toByteArray();	    req.setContentLength(bits.length);	    if (!debug) {		req.addTransferEncoding("gzip");	    }	    req.setOutputStream(new ByteArrayInputStream(bits));	    // Run it:	    Reply rep = admin.runRequest(req);	    dframe = 		admin.reader.readResourceDescription(getInputStream(rep));	    id = dframe.getIdentifier();	    URL url = null;	    if (isFrame()) {		url = new URL(this.url, this.url.getFile()+"?" + id);	    } else {		url = new URL(parent.toString() + 			      identifier+"?"+id);	    }	    PlainRemoteResource frame  = 		new PlainRemoteResource(admin, parent, url, id, dframe);	    //insert it in the frame array	    if ( frames != null ) {		RemoteResource nf[] = new RemoteResource[frames.length+1];		System.arraycopy(frames, 0, nf, 0, frames.length);		nf[frames.length] = frame;		frames = nf;	    } else {		frames    = new RemoteResource[1];		frames[0] = frame;	    }	    return frame;	} catch (RemoteAccessException rae) {	    throw rae;	} catch (Exception ex) {	    ex.printStackTrace();	    throw new RemoteAccessException(ex.getMessage());	}    }    protected void createRemoteFrames() {	ResourceDescription dframes[] = description.getFrameDescriptions();	int                 len       = dframes.length;	this.frames                   = new RemoteResource[len];	for (int i = 0 ; i < len ; i++) {	    ResourceDescription dframe     = dframes[i];	    String              frameid    = dframe.getIdentifier();	    URL url = null;	    try {		if (isFrame()) {		    url = new URL(this.url, this.url.getFile()+"?" + frameid);		} else {		    url = new URL(parent.toString() + 				  identifier+"?"+frameid);		}	    } catch (MalformedURLException ex) {		ex.printStackTrace();		url = null;	    }	    PlainRemoteResource frame  = 		new PlainRemoteResource(admin, parent, url, frameid, dframe);	    frames[i] = frame;	}    }    /**     * Dump that resource to the given output stream.     * @param prt A print stream to dump to.     * @exception RemoteAccessException If somenetwork failure occured.     */    public void dump(PrintStream prt)	throws RemoteAccessException    {	// Dump the class hierarchy:	System.out.println("+ classes: ");	String classes[] = getClassHierarchy();	for (int i = 0 ; i < classes.length ; i++) 	    System.out.println("\t"+classes[i]);	// Any frames available ?	if ( isframed && (frames != null) ) {	    System.out.println("+ "+frames.length+" frames.");	    for (int i = 0 ; i < frames.length ; i++) {		prt.println("\t"+((PlainRemoteResource)frames[i]).identifier);		((PlainRemoteResource) frames[i]).dump(prt);	    }	}	// Run the query, and display results:	System.out.println("+ attributes: ");	AttributeDescription attrs[]   = getAttributes();	for (int i = 0 ; i < attrs.length ; i++) {	    Attribute att = attrs[i].getAttribute();	    if (att.checkFlag(Attribute.EDITABLE)) {		Object value = attrs[i].getValue();		if (value != null) {		    if (att instanceof SimpleAttribute) {			SimpleAttribute sa = (SimpleAttribute) att;			prt.println("\t"+att.getName()+"="+				    sa.pickle(attrs[i].getValue()));		    } else if (att instanceof ArrayAttribute) {			ArrayAttribute aa = (ArrayAttribute) att;			String values[] = aa.pickle(attrs[i].getValue());			prt.print("\t"+att.getName()+"=");			for (int j = 0 ; j < values.length ; j++) {			    if (j != 0)				prt.print(" | ");			    prt.print(values[j]);			}		    }		}		else		    prt.println("\t"+att.getName()+" <undef>");	    }	}    }    /**     * reload the RemoteResource.     */    protected void update() 	throws RemoteAccessException    {	try {	    Request req = createRequest();	    // Prepare the request:	    req.setMethod("LOAD-RESOURCE");	    // Run it:	    Reply rep = admin.runRequest(req);	    InputStream in = getInputStream(rep);	    this.description = 		admin.reader.readResourceDescription(in);	    createRemoteFrames();	} catch (RemoteAccessException rae) {	    throw rae;	} catch (Exception ex) {	    throw new RemoteAccessException(ex.getMessage());	}    }    PlainRemoteResource(AdminContext admin, 			URL parent, 			String identifier,			ResourceDescription description)    {	this(admin, parent, null, identifier, description);    }    PlainRemoteResource(AdminContext admin, 			URL parent,			URL url,			String identifier,			ResourceDescription description)    {	this.admin       = admin;	this.parent      = parent;	this.identifier  = identifier;	this.description = description;	String classes[] = description.getClassesAndInterfaces();	for (int i = 0 ; i < classes.length ; i++) {	    if (classes[i].equals(			       "org.w3c.tools.resources.ContainerInterface")) 		iscontainer = true;	    if (classes[i].equals("org.w3c.tools.resources.FramedResource"))		isframed = true;	    if (classes[i].equals("org.w3c.tools.resources.DirectoryResource"))		isDirectoryResource = true;	    if (classes[i].equals(			    "org.w3c.tools.resources.indexer.IndexersCatalog"))		isindexerscatalog = true;	}	if (url == null) {	    if (parent != null) {		String encoded = ((identifier == null) ? identifier :				  URLEncoder.encode(identifier));		String urlpart = iscontainer ? encoded+"/" : encoded;		try {		    this.url = ((identifier != null)				? new URL(parent.toString() + urlpart)				: parent);		} catch (MalformedURLException ex) {		    ex.printStackTrace();		    this.url = null;		}	    } else {		this.url = null;	    }	} else {	    this.url = url;	}	createRemoteFrames();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -