| /******************************************************************************* |
| * 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); |
| } |
| } |