summaryrefslogtreecommitdiff
path: root/java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2014-11-07 21:28:00 +0100
committerJose <jose@zeroc.com>2014-11-07 21:28:00 +0100
commitf99742d525f519996a6d321afb323a67fd9be4f9 (patch)
treef7b4454611d64d1a28bf9609aa64234fe78d3f53 /java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java
parentSome IceJS linting fixes (diff)
downloadice-f99742d525f519996a6d321afb323a67fd9be4f9.tar.bz2
ice-f99742d525f519996a6d321afb323a67fd9be4f9.tar.xz
ice-f99742d525f519996a6d321afb323a67fd9be4f9.zip
Fix for (ICE-5832) Versioning of Jar files
Renaming JAR files
Diffstat (limited to 'java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java')
-rw-r--r--java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java189
1 files changed, 189 insertions, 0 deletions
diff --git a/java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java b/java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java
new file mode 100644
index 00000000000..005871ed897
--- /dev/null
+++ b/java/demo/Manual/lifecycle/FilesystemI/DirectoryI.java
@@ -0,0 +1,189 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+package FilesystemI;
+
+import Ice.*;
+import Filesystem.*;
+
+public class DirectoryI extends _DirectoryDisp implements NodeI
+{
+
+ // Slice name() operation.
+
+ public synchronized String
+ name(Current c)
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+ return _name;
+ }
+
+ // Return the object identity for this node.
+
+ public Identity
+ id()
+ {
+ return _id;
+ }
+
+ // Slice list() operation.
+
+ public synchronized NodeDesc[]
+ list(Current c)
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+
+ NodeDesc[] ret = new NodeDesc[_contents.size()];
+ java.util.Iterator<java.util.Map.Entry<String, NodeI> > pos = _contents.entrySet().iterator();
+ for(int i = 0; i < _contents.size(); ++i)
+ {
+ java.util.Map.Entry<String, NodeI> e = pos.next();
+ NodeI p = e.getValue();
+ ret[i] = new NodeDesc();
+ ret[i].name = e.getKey();
+ ret[i].type = p instanceof FileI ? NodeType.FileType : NodeType.DirType;
+ ret[i].proxy = NodePrxHelper.uncheckedCast(c.adapter.createProxy(p.id()));
+ }
+ return ret;
+ }
+
+ // Slice find() operation.
+
+ public synchronized NodeDesc
+ find(String name, Current c) throws NoSuchName
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+
+ NodeI p = _contents.get(name);
+ if(p == null)
+ {
+ throw new NoSuchName(name);
+ }
+
+ NodeDesc d = new NodeDesc();
+ d.name = name;
+ d.type = p instanceof FileI ? NodeType.FileType : NodeType.DirType;
+ d.proxy = NodePrxHelper.uncheckedCast(c.adapter.createProxy(p.id()));
+ return d;
+ }
+
+ // Slice createFile() operation.
+
+ public synchronized FilePrx
+ createFile(String name, Current c) throws NameInUse
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+
+ if(name.length() == 0 || _contents.containsKey(name))
+ {
+ throw new NameInUse(name);
+ }
+
+ FileI f = new FileI(name, this);
+ ObjectPrx node = c.adapter.add(f, f.id());
+ _contents.put(name, f);
+ return FilePrxHelper.uncheckedCast(node);
+ }
+
+ // Slice createDirectory() operation.
+
+ public synchronized DirectoryPrx
+ createDirectory(String name, Current c) throws NameInUse
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+
+ if(name.length() == 0 || _contents.containsKey(name))
+ {
+ throw new NameInUse(name);
+ }
+
+ DirectoryI d = new DirectoryI(name, this);
+ ObjectPrx node = c.adapter.add(d, d.id());
+ _contents.put(name, d);
+ return DirectoryPrxHelper.uncheckedCast(node);
+ }
+
+ // Slice destroy() operation.
+
+ public void
+ destroy(Current c) throws PermissionDenied
+ {
+ if(_parent == null)
+ {
+ throw new PermissionDenied("Cannot destroy root directory");
+ }
+
+ synchronized(this)
+ {
+ if(_destroyed)
+ {
+ throw new ObjectNotExistException();
+ }
+
+ if(_contents.size() != 0)
+ {
+ throw new PermissionDenied("Cannot destroy non-empty directory");
+ }
+
+ c.adapter.remove(id());
+ _destroyed = true;
+ }
+
+ _parent.removeEntry(_name);
+ }
+
+ // DirectoryI constructor for root directory.
+
+ public DirectoryI()
+ {
+ this("/", null);
+ }
+
+ // DirectoryI constructor. parent == null indicates root directory.
+
+ public DirectoryI(String name, DirectoryI parent)
+ {
+ _name = name;
+ _parent = parent;
+ _id = new Identity();
+ _destroyed = false;
+ _contents = new java.util.HashMap<String, NodeI>();
+
+ _id.name = parent == null ? "RootDir" : java.util.UUID.randomUUID().toString();
+ }
+
+ // Remove the entry from the _contents map.
+
+ public synchronized void
+ removeEntry(String name)
+ {
+ _contents.remove(name);
+ }
+
+ private String _name; // Immutable
+ private DirectoryI _parent; // Immutable
+ private Identity _id; // Immutable
+ private boolean _destroyed;
+ private java.util.Map<String, NodeI> _contents;
+}