Implemented "info" operation.

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/209d7d5b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/209d7d5b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/209d7d5b

Branch: refs/heads/ignite-3247
Commit: 209d7d5b27e5e2b3893e703edee493c77e4dc462
Parents: df6783d
Author: vozerov-gridgain <[email protected]>
Authored: Sun Jun 5 18:17:35 2016 +0300
Committer: vozerov-gridgain <[email protected]>
Committed: Sun Jun 5 18:17:35 2016 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/igfs/IgfsPath.java   | 26 +++++++--
 .../internal/processors/igfs/IgfsFileImpl.java  | 34 ++++++++++-
 .../internal/processors/igfs/IgfsImpl.java      |  4 ++
 .../internal/processors/igfs/IgfsUtils.java     | 34 +++++++++++
 .../igfs/client/IgfsClientAbstractCallable.java | 19 ++++++-
 .../igfs/client/IgfsClientDeleteCallable.java   |  9 +--
 .../igfs/client/IgfsClientExistsCallable.java   | 20 +------
 .../igfs/client/IgfsClientInfoCallable.java     | 59 ++++++++++++++++++++
 .../igfs/client/IgfsClientMkdirsCallable.java   |  9 ---
 9 files changed, 169 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java 
b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
index f1ceb2e..c705274 100644
--- a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
+++ b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
@@ -268,16 +268,32 @@ public final class IgfsPath implements 
Comparable<IgfsPath>, Externalizable, Bin
 
     /** {@inheritDoc} */
     @Override public void writeBinary(BinaryWriter writer) throws 
BinaryObjectException {
-        BinaryRawWriter out = writer.rawWriter();
-
-        out.writeString(path);
+        writeRawBinary(writer.rawWriter());
     }
 
     /** {@inheritDoc} */
     @Override public void readBinary(BinaryReader reader) throws 
BinaryObjectException {
-        BinaryRawReader in = reader.rawReader();
+        readRawBinary(reader.rawReader());
+    }
+
+    /**
+     * Write raw binary.
+     *
+     * @param writer Raw writer.
+     * @throws BinaryObjectException If failed.
+     */
+    public void writeRawBinary(BinaryRawWriter writer) throws 
BinaryObjectException {
+        writer.writeString(path);
+    }
 
-        path = in.readString();
+    /**
+     * Read raw binary.
+     *
+     * @param reader Raw reader.
+     * @throws BinaryObjectException If failed.
+     */
+    public void readRawBinary(BinaryRawReader reader) throws 
BinaryObjectException {
+        path = reader.readString();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
index be8d0fc..9f79f42 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
@@ -17,6 +17,12 @@
 
 package org.apache.ignite.internal.processors.igfs;
 
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryRawReader;
+import org.apache.ignite.binary.BinaryRawWriter;
+import org.apache.ignite.binary.BinaryReader;
+import org.apache.ignite.binary.BinaryWriter;
+import org.apache.ignite.binary.Binarylizable;
 import org.apache.ignite.igfs.IgfsFile;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.util.typedef.internal.A;
@@ -35,7 +41,7 @@ import java.util.Map;
 /**
  * File or directory information.
  */
-public final class IgfsFileImpl implements IgfsFile, Externalizable {
+public final class IgfsFileImpl implements IgfsFile, Externalizable, 
Binarylizable {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -229,6 +235,32 @@ public final class IgfsFileImpl implements IgfsFile, 
Externalizable {
     }
 
     /** {@inheritDoc} */
+    @Override public void writeBinary(BinaryWriter writer) throws 
BinaryObjectException {
+        BinaryRawWriter rawWriter = writer.rawWriter();
+
+        IgfsUtils.writePath(rawWriter, path);
+        rawWriter.writeInt(blockSize);
+        rawWriter.writeLong(grpBlockSize);
+        rawWriter.writeLong(len);
+        IgfsUtils.writeProperties(rawWriter, props);
+        rawWriter.writeLong(accessTime);
+        rawWriter.writeLong(modificationTime);
+    }
+
+    /** {@inheritDoc} */
+    @Override public void readBinary(BinaryReader reader) throws 
BinaryObjectException {
+        BinaryRawReader rawReader = reader.rawReader();
+
+        path = IgfsUtils.readPath(rawReader);
+        blockSize = rawReader.readInt();
+        grpBlockSize = rawReader.readLong();
+        len = rawReader.readLong();
+        props = IgfsUtils.readProperties(rawReader);
+        accessTime = rawReader.readLong();
+        modificationTime = rawReader.readLong();
+    }
+
+    /** {@inheritDoc} */
     @Override public int hashCode() {
         return path.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 19dc9fa..dfedd7d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -57,6 +57,7 @@ import 
org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
 import org.apache.ignite.internal.processors.hadoop.HadoopPayloadAware;
 import 
org.apache.ignite.internal.processors.igfs.client.IgfsClientDeleteCallable;
 import 
org.apache.ignite.internal.processors.igfs.client.IgfsClientExistsCallable;
+import 
org.apache.ignite.internal.processors.igfs.client.IgfsClientInfoCallable;
 import 
org.apache.ignite.internal.processors.igfs.client.IgfsClientMkdirsCallable;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.util.GridSpinBusyLock;
@@ -581,6 +582,9 @@ public final class IgfsImpl implements IgfsEx {
     @Override @Nullable public IgfsFile info(final IgfsPath path) {
         A.notNull(path, "path");
 
+        if (meta.isClient())
+            return meta.runClientTask(new 
IgfsClientInfoCallable(cfg.getName(), path));
+
         return safeOp(new Callable<IgfsFile>() {
             @Override public IgfsFile call() throws Exception {
                 if (log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
index e45e34e..6fa9877 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
@@ -684,6 +684,40 @@ public class IgfsUtils {
     }
 
     /**
+     * Write IGFS path.
+     *
+     * @param writer Writer.
+     * @param path Path.
+     */
+    public static void writePath(BinaryRawWriter writer, @Nullable IgfsPath 
path) {
+        if (path != null) {
+            writer.writeBoolean(true);
+
+            path.writeRawBinary(writer);
+        }
+        else
+            writer.writeBoolean(false);
+    }
+
+    /**
+     * Read IGFS path.
+     *
+     * @param reader Reader.
+     * @return Path.
+     */
+    @Nullable public static IgfsPath readPath(BinaryRawReader reader) {
+        if (reader.readBoolean()) {
+            IgfsPath path = new IgfsPath();
+
+            path.readRawBinary(reader);
+
+            return path;
+        }
+        else
+            return null;
+    }
+
+    /**
      * Check whether provided node contains IGFS with the given name.
      *
      * @param node Node.

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientAbstractCallable.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientAbstractCallable.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientAbstractCallable.java
index b83ed13..d9c3456 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientAbstractCallable.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientAbstractCallable.java
@@ -24,8 +24,10 @@ import org.apache.ignite.binary.BinaryRawWriter;
 import org.apache.ignite.binary.BinaryReader;
 import org.apache.ignite.binary.BinaryWriter;
 import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.processors.igfs.IgfsContext;
 import org.apache.ignite.internal.processors.igfs.IgfsEx;
+import org.apache.ignite.internal.processors.igfs.IgfsUtils;
 import org.apache.ignite.lang.IgniteCallable;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.jetbrains.annotations.Nullable;
@@ -40,6 +42,9 @@ public abstract class IgfsClientAbstractCallable<T> 
implements IgniteCallable<T>
     /** IGFS name. */
     protected String igfsName;
 
+    /** Path for operation. */
+    protected IgfsPath path;
+
     /** Injected instance. */
     @IgniteInstanceResource
     private transient Ignite ignite;
@@ -55,9 +60,11 @@ public abstract class IgfsClientAbstractCallable<T> 
implements IgniteCallable<T>
      * Constructor.
      *
      * @param igfsName IGFS name.
+     * @param path Path.
      */
-    protected IgfsClientAbstractCallable(@Nullable String igfsName) {
+    protected IgfsClientAbstractCallable(@Nullable String igfsName, @Nullable 
IgfsPath path) {
         this.igfsName = igfsName;
+        this.path = path;
     }
 
     /** {@inheritDoc} */
@@ -83,6 +90,7 @@ public abstract class IgfsClientAbstractCallable<T> 
implements IgniteCallable<T>
         BinaryRawWriter rawWriter = writer.rawWriter();
 
         rawWriter.writeString(igfsName);
+        IgfsUtils.writePath(rawWriter, path);
 
         writeBinary0(rawWriter);
     }
@@ -92,6 +100,7 @@ public abstract class IgfsClientAbstractCallable<T> 
implements IgniteCallable<T>
         BinaryRawReader rawReader = reader.rawReader();
 
         igfsName = rawReader.readString();
+        path = IgfsUtils.readPath(rawReader);
 
         readBinary0(rawReader);
     }
@@ -101,12 +110,16 @@ public abstract class IgfsClientAbstractCallable<T> 
implements IgniteCallable<T>
      *
      * @param rawWriter Raw writer.
      */
-    protected abstract void writeBinary0(BinaryRawWriter rawWriter);
+    protected void writeBinary0(BinaryRawWriter rawWriter) {
+        // No-op.
+    }
 
     /**
      * Read binary.
      *
      * @param rawReader Raw reader.
      */
-    protected abstract void readBinary0(BinaryRawReader rawReader);
+    protected void readBinary0(BinaryRawReader rawReader) {
+        // No-op.
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientDeleteCallable.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientDeleteCallable.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientDeleteCallable.java
index cc840b4..ef556ae 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientDeleteCallable.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientDeleteCallable.java
@@ -22,7 +22,6 @@ import org.apache.ignite.binary.BinaryRawReader;
 import org.apache.ignite.binary.BinaryRawWriter;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.processors.igfs.IgfsContext;
-import org.apache.ignite.internal.processors.igfs.IgfsUtils;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.jetbrains.annotations.Nullable;
 
@@ -33,9 +32,6 @@ public class IgfsClientDeleteCallable extends 
IgfsClientAbstractCallable<Boolean
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Path. */
-    private IgfsPath path;
-
     /** Recursion flag. */
     private boolean recursive;
 
@@ -54,9 +50,8 @@ public class IgfsClientDeleteCallable extends 
IgfsClientAbstractCallable<Boolean
      * @param recursive Recursive flag.
      */
     public IgfsClientDeleteCallable(@Nullable String igfsName, IgfsPath path, 
boolean recursive) {
-        super(igfsName);
+        super(igfsName, path);
 
-        this.path = path;
         this.recursive = recursive;
     }
 
@@ -67,13 +62,11 @@ public class IgfsClientDeleteCallable extends 
IgfsClientAbstractCallable<Boolean
 
     /** {@inheritDoc} */
     @Override public void writeBinary0(BinaryRawWriter writer) throws 
BinaryObjectException {
-        writer.writeObject(path);
         writer.writeBoolean(recursive);
     }
 
     /** {@inheritDoc} */
     @Override public void readBinary0(BinaryRawReader reader) throws 
BinaryObjectException {
-        path = reader.readObject();
         recursive = reader.readBoolean();
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientExistsCallable.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientExistsCallable.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientExistsCallable.java
index adef2db..d9e38c6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientExistsCallable.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientExistsCallable.java
@@ -17,9 +17,6 @@
 
 package org.apache.ignite.internal.processors.igfs.client;
 
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryRawReader;
-import org.apache.ignite.binary.BinaryRawWriter;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.processors.igfs.IgfsContext;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -32,9 +29,6 @@ public class IgfsClientExistsCallable extends 
IgfsClientAbstractCallable<Boolean
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Path. */
-    private IgfsPath path;
-
     /**
      * Default constructor.
      */
@@ -49,9 +43,7 @@ public class IgfsClientExistsCallable extends 
IgfsClientAbstractCallable<Boolean
      * @param path Path.
      */
     public IgfsClientExistsCallable(@Nullable String igfsName, IgfsPath path) {
-        super(igfsName);
-
-        this.path = path;
+        super(igfsName, path);
     }
 
     /** {@inheritDoc} */
@@ -60,16 +52,6 @@ public class IgfsClientExistsCallable extends 
IgfsClientAbstractCallable<Boolean
     }
 
     /** {@inheritDoc} */
-    @Override public void writeBinary0(BinaryRawWriter writer) throws 
BinaryObjectException {
-        writer.writeObject(path);
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readBinary0(BinaryRawReader reader) throws 
BinaryObjectException {
-        path = reader.readObject();
-    }
-
-    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(IgfsClientExistsCallable.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientInfoCallable.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientInfoCallable.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientInfoCallable.java
new file mode 100644
index 0000000..d954e78
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientInfoCallable.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.igfs.client;
+
+import org.apache.ignite.igfs.IgfsFile;
+import org.apache.ignite.igfs.IgfsPath;
+import org.apache.ignite.internal.processors.igfs.IgfsContext;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * IGFS client file IDs callable.
+ */
+public class IgfsClientInfoCallable extends 
IgfsClientAbstractCallable<IgfsFile> {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /**
+     * Default constructor.
+     */
+    public IgfsClientInfoCallable() {
+        // NO-op.
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param igfsName IGFS name.
+     * @param path Path.
+     */
+    public IgfsClientInfoCallable(@Nullable String igfsName, IgfsPath path) {
+        super(igfsName, path);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected IgfsFile call0(IgfsContext ctx) throws Exception {
+        return ctx.igfs().info(path);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(IgfsClientInfoCallable.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/209d7d5b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientMkdirsCallable.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientMkdirsCallable.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientMkdirsCallable.java
index 0ef6a04..530353d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientMkdirsCallable.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/client/IgfsClientMkdirsCallable.java
@@ -35,9 +35,6 @@ public class IgfsClientMkdirsCallable extends 
IgfsClientAbstractCallable<Void> {
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Path. */
-    private IgfsPath path;
-
     /** Properties. */
     private Map<String, String> props;
 
@@ -56,9 +53,7 @@ public class IgfsClientMkdirsCallable extends 
IgfsClientAbstractCallable<Void> {
      * @param props Properties.
      */
     public IgfsClientMkdirsCallable(@Nullable String igfsName, IgfsPath path, 
@Nullable Map<String, String> props) {
-        super(igfsName);
 
-        this.path = path;
         this.props = props;
     }
 
@@ -71,15 +66,11 @@ public class IgfsClientMkdirsCallable extends 
IgfsClientAbstractCallable<Void> {
 
     /** {@inheritDoc} */
     @Override public void writeBinary0(BinaryRawWriter writer) throws 
BinaryObjectException {
-        writer.writeObject(path);
-
         IgfsUtils.writeProperties(writer, props);
     }
 
     /** {@inheritDoc} */
     @Override public void readBinary0(BinaryRawReader reader) throws 
BinaryObjectException {
-        path = reader.readObject();
-
         props = IgfsUtils.readProperties(reader);
     }
 

Reply via email to