blob: a2e0976173fe449deff817b9e17c4f78faa25dd7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ptp.internal.rdt.core.model;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import org.eclipse.core.runtime.IPath;
/**
* A serializable wrapper for an IPath.
*/
public class Path implements IPath, Serializable {
private static final long serialVersionUID = 1L;
String fPath;
transient IPath fDelegate;
public Path(String path) {
fPath = path;
}
private void writeObject(ObjectOutputStream out) throws IOException {
// We can't serialize IPaths in general so just before
// serialization, convert it to its serializable String form.
if (fDelegate != null) {
fPath = fDelegate.toPortableString();
}
out.defaultWriteObject();
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
}
void checkDelegate() {
if (fDelegate == null) {
fDelegate = new org.eclipse.core.runtime.Path(fPath);
}
}
@Override
public Object clone() {
checkDelegate();
return new Path(fDelegate.toPortableString());
}
public IPath addFileExtension(String extension) {
checkDelegate();
return fDelegate.addFileExtension(extension);
}
public IPath addTrailingSeparator() {
checkDelegate();
return fDelegate.addTrailingSeparator();
}
public IPath append(String path) {
checkDelegate();
return fDelegate.append(path);
}
public IPath append(IPath path) {
checkDelegate();
return fDelegate.append(path);
}
public String getDevice() {
checkDelegate();
return fDelegate.getDevice();
}
public String getFileExtension() {
checkDelegate();
return fDelegate.getFileExtension();
}
public boolean hasTrailingSeparator() {
checkDelegate();
return fDelegate.hasTrailingSeparator();
}
public boolean isAbsolute() {
checkDelegate();
return fDelegate.isAbsolute();
}
public boolean isEmpty() {
checkDelegate();
return fDelegate.isEmpty();
}
public boolean isPrefixOf(IPath anotherPath) {
checkDelegate();
return fDelegate.isPrefixOf(anotherPath);
}
public boolean isRoot() {
checkDelegate();
return fDelegate.isRoot();
}
public boolean isUNC() {
checkDelegate();
return fDelegate.isUNC();
}
public boolean isValidPath(String path) {
checkDelegate();
return fDelegate.isValidPath(path);
}
public boolean isValidSegment(String segment) {
checkDelegate();
return fDelegate.isValidSegment(segment);
}
public String lastSegment() {
checkDelegate();
return fDelegate.lastSegment();
}
public IPath makeAbsolute() {
checkDelegate();
return fDelegate.makeAbsolute();
}
public IPath makeRelative() {
checkDelegate();
return fDelegate.makeRelative();
}
public IPath makeUNC(boolean toUNC) {
checkDelegate();
return fDelegate.makeUNC(toUNC);
}
public int matchingFirstSegments(IPath anotherPath) {
checkDelegate();
return fDelegate.matchingFirstSegments(anotherPath);
}
public IPath removeFileExtension() {
checkDelegate();
return fDelegate.removeFileExtension();
}
public IPath removeFirstSegments(int count) {
checkDelegate();
return fDelegate.removeFirstSegments(count);
}
public IPath removeLastSegments(int count) {
checkDelegate();
return fDelegate.removeLastSegments(count);
}
public IPath removeTrailingSeparator() {
checkDelegate();
return fDelegate.removeTrailingSeparator();
}
public String segment(int index) {
checkDelegate();
return fDelegate.segment(index);
}
public int segmentCount() {
checkDelegate();
return fDelegate.segmentCount();
}
public String[] segments() {
checkDelegate();
return fDelegate.segments();
}
public IPath setDevice(String device) {
checkDelegate();
return fDelegate.setDevice(device);
}
public File toFile() {
checkDelegate();
return fDelegate.toFile();
}
public String toOSString() {
checkDelegate();
return fDelegate.toOSString();
}
public String toPortableString() {
checkDelegate();
return fDelegate.toPortableString();
}
public IPath uptoSegment(int count) {
checkDelegate();
return fDelegate.uptoSegment(count);
}
@Override
public String toString() {
checkDelegate();
return fDelegate.toString();
}
public IPath makeRelativeTo(IPath base) {
checkDelegate();
return fDelegate.makeRelativeTo(base);
}
}