Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/util/net
In directory sc8-pr-cvs1:/tmp/cvs-serv17634/src/java/core/org/krysalis/ruper2/util/net
Added Files:
VirtualResourceLocator.java
Log Message:
1) Moved VirtualResourceLocator ot a .util.net package
2) Fixed it up a litte, still pretty crude (but working).
--- NEW FILE: VirtualResourceLocator.java ---
/*
* Created on Aug 23, 2003
*
*/
package org.krysalis.ruper2.util.net;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;
import org.krysalis.ruper2.protocols.Protocol;
import org.krysalis.ruper2.util.RuperConstants;
/**
* @author arb_jack
*
* This class exists for two reasons:
*
* 1) So we can separate ourselves from VFS FileObjects (yet still
* leverage VFS and benefit from it's manage protocols.)
*
* 2) because java.net.URL won't allow protocols that java.net
* can't process. A shame. Not sure if the Java URI class is better
* about this, but we want to be compatible over older JDKs and also
* this is an L not an I.
*
*/
public class VirtualResourceLocator {
public static final String VRL_CLASSNAME =
VirtualResourceLocator.class.getName();
private String m_url = null;
// Parsed out..
private String m_protocol = null;
private boolean m_isDirectory = false;
public VirtualResourceLocator(String url) {
parseString(url);
}
public VirtualResourceLocator(VirtualResourceLocator context, String url) {
// :TODO: Basic right now, just concatenates
parseString(context + (context.isDirectory() ? "" : "/") + url);
}
public VirtualResourceLocator(URL url) {
parseString(url.toExternalForm());
}
public VirtualResourceLocator(File file) {
parseString(createURLForFile(file));
}
private void parseString(String url) {
m_url = url;
// Extract Protocol
int colonPosn = url.indexOf(':');
if (-1 != colonPosn)
m_protocol = url.substring(0, colonPosn);
else
m_protocol = Protocol.HTTP_PROTOCOL;
m_isDirectory = m_url.endsWith("/");
}
private String createURLForFile(File file) {
StringBuffer url = new StringBuffer("file://");
String path = file.getAbsolutePath();
for (StringTokenizer tokens = new StringTokenizer(path, "\\");
tokens.hasMoreTokens();
) {
url.append(tokens.nextToken());
if (tokens.hasMoreTokens())
url.append('/');
}
return url.toString();
}
/**
* May not be possible for all VirtualResourceLocators
*
* @return
* @throws MalformedURLException
*/
public URL getResourceLocator() throws MalformedURLException {
return new URL(m_url);
}
public String getProtocol() {
return m_protocol;
}
public String toString() {
return toExternalForm();
}
public String toExternalForm() {
return m_url;
}
private String getURLNoEndingSlash() {
String me = toExternalForm();
int length = me.length();
if (isDirectory())
me = me.substring(0, length - 1);
return me;
}
public String getBasename() {
String me = getURLNoEndingSlash();
int sepPosn = me.lastIndexOf('/');
return (-1 == sepPosn) ? me : me.substring(sepPosn + 1);
}
public VirtualResourceLocator getParent() {
String parentString = null;
String me = getURLNoEndingSlash();
int sepPosn = me.lastIndexOf('/');
if (-1 != sepPosn)
parentString = me.substring(0, sepPosn + 1);
return (null == parentString)
? null
: new VirtualResourceLocator(parentString);
}
//
// :TODO: A guess, at best
//
public boolean isDirectory() {
return m_isDirectory;
}
public boolean equals(Object obj) {
boolean isEqual = false;
if (obj instanceof VirtualResourceLocator) {
VirtualResourceLocator rhs = (VirtualResourceLocator) obj;
if (m_protocol.equals(rhs.m_protocol) && m_url.equals(rhs.m_url)) {
isEqual = true;
}
}
return isEqual;
}
public static VirtualResourceLocator getTestVRL() {
return new VirtualResourceLocator(RuperConstants.RUPER_HOME);
}
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.