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