summaryrefslogtreecommitdiffstatsabout
diff options
context:
space:
mode:
authorLaura Le Padellec2012-06-04 11:05:44 (EDT)
committer Anton Leherbauer2012-06-04 11:10:15 (EDT)
commitca319ba4361556c9306e167b0d5b722b76964498 (patch)
tree656b5e90ca5568f029654017ba57e622ae20b6bc
parent6ea150577255932f591d3a267dfe04e690b8458c (diff)
downloadorg.eclipse.tcf-ca319ba4361556c9306e167b0d5b722b76964498.zip
org.eclipse.tcf-ca319ba4361556c9306e167b0d5b722b76964498.tar.gz
org.eclipse.tcf-ca319ba4361556c9306e167b0d5b722b76964498.tar.bz2
TCF Python: Bug 381578 - mkdir missing path
-rw-r--r--python/src/tcf/services/remote/FileSystemProxy.py143
1 files changed, 108 insertions, 35 deletions
diff --git a/python/src/tcf/services/remote/FileSystemProxy.py b/python/src/tcf/services/remote/FileSystemProxy.py
index 4194783..37adccc 100644
--- a/python/src/tcf/services/remote/FileSystemProxy.py
+++ b/python/src/tcf/services/remote/FileSystemProxy.py
@@ -1,4 +1,4 @@
-# *******************************************************************************
+# *****************************************************************************
# * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
@@ -7,12 +7,13 @@
# *
# * Contributors:
# * Wind River Systems - initial API and implementation
-# *******************************************************************************
+# *****************************************************************************
from tcf import errors, channel
from tcf.services import filesystem
from tcf.channel.Command import Command
+
class Status(filesystem.FileSystemException):
def __init__(self, status_or_exception, message=None, attrs=None):
if isinstance(status_or_exception, int):
@@ -39,9 +40,11 @@ class Status(filesystem.FileSystemException):
def getAttributes(self):
return self.attrs
+
class FileSystemCommand(Command):
def __init__(self, service, command, args):
- super(FileSystemCommand, self).__init__(service.channel, service, command, args)
+ super(FileSystemCommand, self).__init__(service.channel, service,
+ command, args)
def _toSFError(self, data):
if data is None:
@@ -60,6 +63,7 @@ class FileSystemCommand(Command):
s.initCause(self.toError(caused_by, False))
return s
+
class FileSystemProxy(filesystem.FileSystemService):
def __init__(self, channel):
self.channel = channel
@@ -67,11 +71,13 @@ class FileSystemProxy(filesystem.FileSystemService):
def close(self, handle, done):
assert handle.getService() is self
done = self._makeCallback(done)
- id = handle.id
+ _id = handle.id
service = self
+
class CloseCommand(FileSystemCommand):
def __init__(self):
- super(CloseCommand, self).__init__(service, "close", (id,))
+ super(CloseCommand, self).__init__(service, "close", (_id,))
+
def done(self, error, args):
s = None
if error:
@@ -86,9 +92,12 @@ class FileSystemProxy(filesystem.FileSystemService):
done = self._makeCallback(done)
dt = _toObject(attrs)
service = self
+
class SetStatCommand(FileSystemCommand):
def __init__(self):
- super(SetStatCommand, self).__init__(service, "setstat", (path, dt))
+ super(SetStatCommand, self).__init__(service, "setstat",
+ (path, dt))
+
def done(self, error, args):
s = None
if error:
@@ -102,12 +111,15 @@ class FileSystemProxy(filesystem.FileSystemService):
def fsetstat(self, handle, attrs, done):
done = self._makeCallback(done)
assert handle.getService() is self
- id = handle.id
+ _id = handle.id
dt = _toObject(attrs)
service = self
+
class FSetStatCommand(FileSystemCommand):
def __init__(self):
- super(FSetStatCommand, self).__init__(service, "fsetstat", (id, dt))
+ super(FSetStatCommand, self).__init__(service, "fsetstat",
+ (_id, dt))
+
def done(self, error, args):
s = None
if error:
@@ -121,9 +133,11 @@ class FileSystemProxy(filesystem.FileSystemService):
def stat(self, path, done):
done = self._makeCallback(done)
service = self
+
class StatCommand(FileSystemCommand):
def __init__(self):
super(StatCommand, self).__init__(service, "stat", (path,))
+
def done(self, error, args):
s = None
a = None
@@ -132,18 +146,21 @@ class FileSystemProxy(filesystem.FileSystemService):
else:
assert len(args) == 2
s = self._toSFError(args[0])
- if not s: a = _toFileAttrs(args[1])
+ if not s:
+ a = _toFileAttrs(args[1])
done.doneStat(self.token, s, a)
return StatCommand().token
def fstat(self, handle, done):
done = self._makeCallback(done)
assert handle.getService() is self
- id = handle.id
+ _id = handle.id
service = self
+
class FStatCommand(FileSystemCommand):
def __init__(self):
- super(FStatCommand, self).__init__(service, "fstat", (id,))
+ super(FStatCommand, self).__init__(service, "fstat", (_id,))
+
def done(self, error, args):
s = None
a = None
@@ -152,16 +169,19 @@ class FileSystemProxy(filesystem.FileSystemService):
else:
assert len(args) == 2
s = self._toSFError(args[0])
- if not s: a = _toFileAttrs(args[1])
+ if not s:
+ a = _toFileAttrs(args[1])
done.doneStat(self.token, s, a)
return FStatCommand().token
def lstat(self, path, done):
done = self._makeCallback(done)
service = self
+
class LStatCommand(FileSystemCommand):
def __init__(self):
super(LStatCommand, self).__init__(service, "lstat", (path,))
+
def done(self, error, args):
s = None
a = None
@@ -170,7 +190,8 @@ class FileSystemProxy(filesystem.FileSystemService):
else:
assert len(args) == 2
s = self._toSFError(args[0])
- if not s: a = _toFileAttrs(args[1])
+ if not s:
+ a = _toFileAttrs(args[1])
done.doneStat(self.token, s, a)
return LStatCommand().token
@@ -178,9 +199,12 @@ class FileSystemProxy(filesystem.FileSystemService):
done = self._makeCallback(done)
dt = _toObject(attrs)
service = self
+
class MkDirCommand(FileSystemCommand):
def __init__(self):
- super(MkDirCommand, self).__init__(service, "mkdir", (dt,))
+ super(MkDirCommand, self).__init__(service, "mkdir",
+ (path, dt,))
+
def done(self, error, args):
s = None
if error:
@@ -195,9 +219,12 @@ class FileSystemProxy(filesystem.FileSystemService):
done = self._makeCallback(done)
dt = _toObject(attrs)
service = self
+
class OpenCommand(FileSystemCommand):
def __init__(self):
- super(OpenCommand, self).__init__(service, "open", (file_name, flags, dt))
+ super(OpenCommand, self).__init__(service, "open",
+ (file_name, flags, dt))
+
def done(self, error, args):
s = None
h = None
@@ -206,16 +233,20 @@ class FileSystemProxy(filesystem.FileSystemService):
else:
assert len(args) == 2
s = self._toSFError(args[0])
- if not s: h = service._toFileHandle(args[1])
+ if not s:
+ h = service._toFileHandle(args[1])
done.doneOpen(self.token, s, h)
return OpenCommand().token
def opendir(self, path, done):
done = self._makeCallback(done)
service = self
+
class OpenDirCommand(FileSystemCommand):
def __init__(self):
- super(OpenDirCommand, self).__init__(service, "opendir", (path,))
+ super(OpenDirCommand, self).__init__(service, "opendir",
+ (path,))
+
def done(self, error, args):
s = None
h = None
@@ -224,7 +255,8 @@ class FileSystemProxy(filesystem.FileSystemService):
else:
assert len(args) == 2
s = self._toSFError(args[0])
- if not s: h = service._toFileHandle(args[1])
+ if not s:
+ h = service._toFileHandle(args[1])
done.doneOpen(self.token, s, h)
return OpenDirCommand().token
@@ -233,10 +265,12 @@ class FileSystemProxy(filesystem.FileSystemService):
done = self._makeCallback(done)
handleID = handle.id
service = self
+
class ReadCommand(FileSystemCommand):
def __init__(self):
super(ReadCommand, self).__init__(service, "read",
(handleID, offset, length))
+
def done(self, error, args):
s = None
b = None
@@ -255,11 +289,14 @@ class FileSystemProxy(filesystem.FileSystemService):
def readdir(self, handle, done):
assert handle.getService() is self
done = self._makeCallback(done)
- id = handle.id
+ _id = handle.id
service = self
+
class ReadDirCommand(FileSystemCommand):
def __init__(self):
- super(ReadDirCommand, self).__init__(service, "readdir", (id,))
+ super(ReadDirCommand, self).__init__(service, "readdir",
+ (_id,))
+
def done(self, error, args):
s = None
b = None
@@ -278,9 +315,11 @@ class FileSystemProxy(filesystem.FileSystemService):
def roots(self, done):
done = self._makeCallback(done)
service = self
+
class RootCommand(FileSystemCommand):
def __init__(self):
super(RootCommand, self).__init__(service, "roots", None)
+
def done(self, error, args):
s = None
b = None
@@ -297,9 +336,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def readlink(self, path, done):
done = self._makeCallback(done)
service = self
+
class ReadLinkCommand(FileSystemCommand):
def __init__(self):
- super(ReadLinkCommand, self).__init__(service, "readlink", (path,))
+ super(ReadLinkCommand, self).__init__(service, "readlink",
+ (path,))
+
def done(self, error, args):
s = None
p = None
@@ -316,9 +358,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def realpath(self, path, done):
done = self._makeCallback(done)
service = self
+
class RealPathCommand(FileSystemCommand):
def __init__(self):
- super(RealPathCommand, self).__init__(service, "realpath", (path,))
+ super(RealPathCommand, self).__init__(service, "realpath",
+ (path,))
+
def done(self, error, args):
s = None
p = None
@@ -335,9 +380,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def remove(self, file_name, done):
done = self._makeCallback(done)
service = self
+
class RemoveCommand(FileSystemCommand):
def __init__(self):
- super(RemoveCommand, self).__init__(service, "remove", (file_name,))
+ super(RemoveCommand, self).__init__(service, "remove",
+ (file_name,))
+
def done(self, error, args):
s = None
if error:
@@ -351,9 +399,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def rename(self, old_path, new_path, done):
done = self._makeCallback(done)
service = self
+
class RenameCommand(FileSystemCommand):
def __init__(self):
- super(RenameCommand, self).__init__(service, "rename", (old_path, new_path))
+ super(RenameCommand, self).__init__(service, "rename",
+ (old_path, new_path))
+
def done(self, error, args):
s = None
if error:
@@ -367,9 +418,11 @@ class FileSystemProxy(filesystem.FileSystemService):
def rmdir(self, path, done):
done = self._makeCallback(done)
service = self
+
class RmDirCommand(FileSystemCommand):
def __init__(self):
super(RmDirCommand, self).__init__(service, "rmdir", (path,))
+
def done(self, error, args):
s = None
if error:
@@ -383,9 +436,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def symlink(self, link_path, target_path, done):
done = self._makeCallback(done)
service = self
+
class SymLinkCommand(FileSystemCommand):
def __init__(self):
- super(SymLinkCommand, self).__init__(service, "symlink", (link_path, target_path))
+ super(SymLinkCommand, self).__init__(service, "symlink",
+ (link_path, target_path))
+
def done(self, error, args):
s = None
if error:
@@ -399,12 +455,15 @@ class FileSystemProxy(filesystem.FileSystemService):
def write(self, handle, offset, data, data_pos, data_size, done):
assert handle.getService() is self
done = self._makeCallback(done)
- id = handle.id
+ _id = handle.id
binary = bytearray(data[data_pos:data_pos + data_size])
service = self
+
class WriteCommand(FileSystemCommand):
def __init__(self):
- super(WriteCommand, self).__init__(service, "write", (id, offset, binary))
+ super(WriteCommand, self).__init__(service, "write",
+ (_id, offset, binary))
+
def done(self, error, args):
s = None
if error:
@@ -418,10 +477,12 @@ class FileSystemProxy(filesystem.FileSystemService):
def copy(self, src_path, dst_path, copy_permissions, copy_uidgid, done):
done = self._makeCallback(done)
service = self
+
class CopyCommand(FileSystemCommand):
def __init__(self):
super(CopyCommand, self).__init__(service, "copy",
- (id, src_path, dst_path, copy_permissions, copy_uidgid))
+ (id, src_path, dst_path, copy_permissions, copy_uidgid))
+
def done(self, error, args):
s = None
if error:
@@ -435,9 +496,11 @@ class FileSystemProxy(filesystem.FileSystemService):
def user(self, done):
done = self._makeCallback(done)
service = self
+
class UserCommand(FileSystemCommand):
def __init__(self):
super(UserCommand, self).__init__(service, "user", None)
+
def done(self, error, args):
s = None
r_uid = 0
@@ -454,13 +517,17 @@ class FileSystemProxy(filesystem.FileSystemService):
return UserCommand().token
def _toFileHandle(self, o):
- if o is None: return None
+ if o is None:
+ return None
return filesystem.FileHandle(self, o)
+
def _toObject(attrs):
- if attrs is None: return None
+ if attrs is None:
+ return None
m = {}
- if attrs.attributes is not None: m.update(attrs.attributes)
+ if attrs.attributes is not None:
+ m.update(attrs.attributes)
if (attrs.flags & filesystem.ATTR_SIZE) != 0:
m["Size"] = attrs.size
if (attrs.flags & filesystem.ATTR_UIDGID) != 0:
@@ -473,8 +540,10 @@ def _toObject(attrs):
m["MTime"] = attrs.mtime
return m
+
def _toFileAttrs(m):
- if m is None: return None
+ if m is None:
+ return None
flags = 0
size = 0
uid = 0
@@ -502,12 +571,16 @@ def _toFileAttrs(m):
atime = n1
mtime = n2
flags |= filesystem.ATTR_ACMODTIME
- return filesystem.FileAttrs(flags, size, uid, gid, permissions, atime, mtime, m)
+ return filesystem.FileAttrs(flags, size, uid, gid,
+ permissions, atime, mtime, m)
+
def _toDirEntryArray(o):
- if o is None: return None
+ if o is None:
+ return None
res = []
for m in o:
- entry = filesystem.DirEntry(m.get("FileName"), m.get("LongName"), _toFileAttrs(m.get("Attrs")))
+ entry = filesystem.DirEntry(m.get("FileName"), m.get("LongName"),
+ _toFileAttrs(m.get("Attrs")))
res.append(entry)
return res