You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/11/05 04:28:09 UTC

[17/66] [abbrv] ignite git commit: IGNITE-950 - Renaming.

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/BinarySerializer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinarySerializer.java b/modules/core/src/main/java/org/apache/ignite/binary/BinarySerializer.java
new file mode 100644
index 0000000..45ea923
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinarySerializer.java
@@ -0,0 +1,49 @@
+/*
+ * 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.binary;
+
+import org.apache.ignite.marshaller.portable.PortableMarshaller;
+
+/**
+ * Interface that allows to implement custom serialization logic for portable objects.
+ * Can be used instead of {@link Binarylizable} in case if the class
+ * cannot be changed directly.
+ * <p>
+ * Portable serializer can be configured for all portable objects via
+ * {@link PortableMarshaller#getSerializer()} method, or for a specific
+ * portable type via {@link BinaryTypeConfiguration#getSerializer()} method.
+ */
+public interface BinarySerializer {
+    /**
+     * Writes fields to provided writer.
+     *
+     * @param obj Empty object.
+     * @param writer Portable object writer.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeBinary(Object obj, BinaryWriter writer) throws BinaryObjectException;
+
+    /**
+     * Reads fields from provided reader.
+     *
+     * @param obj Empty object
+     * @param reader Portable object reader.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void readBinary(Object obj, BinaryReader reader) throws BinaryObjectException;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
new file mode 100644
index 0000000..1df2c98
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeConfiguration.java
@@ -0,0 +1,155 @@
+/*
+ * 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.binary;
+
+import java.util.Collection;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.marshaller.portable.PortableMarshaller;
+
+/**
+ * Defines configuration properties for a specific portable type. Providing per-type
+ * configuration is optional, as it is generally enough, and also optional, to provide global portable
+ * configuration using {@link PortableMarshaller#setClassNames(Collection)}.
+ * However, this class allows you to change configuration properties for a specific
+ * portable type without affecting configuration for other portable types.
+ * <p>
+ * Per-type portable configuration can be specified in {@link PortableMarshaller#getTypeConfigurations()} method.
+ */
+public class BinaryTypeConfiguration {
+    /** Class name. */
+    private String clsName;
+
+    /** ID mapper. */
+    private BinaryTypeIdMapper idMapper;
+
+    /** Serializer. */
+    private BinarySerializer serializer;
+
+    /** Meta data enabled flag. */
+    private Boolean metaDataEnabled;
+
+    /** Keep deserialized flag. */
+    private Boolean keepDeserialized;
+
+    /**
+     */
+    public BinaryTypeConfiguration() {
+        // No-op.
+    }
+
+    /**
+     * @param clsName Class name.
+     */
+    public BinaryTypeConfiguration(String clsName) {
+        this.clsName = clsName;
+    }
+
+    /**
+     * Gets type name.
+     *
+     * @return Type name.
+     */
+    public String getClassName() {
+        return clsName;
+    }
+
+    /**
+     * Sets type name.
+     *
+     * @param clsName Type name.
+     */
+    public void setClassName(String clsName) {
+        this.clsName = clsName;
+    }
+
+    /**
+     * Gets ID mapper.
+     *
+     * @return ID mapper.
+     */
+    public BinaryTypeIdMapper getIdMapper() {
+        return idMapper;
+    }
+
+    /**
+     * Sets ID mapper.
+     *
+     * @param idMapper ID mapper.
+     */
+    public void setIdMapper(BinaryTypeIdMapper idMapper) {
+        this.idMapper = idMapper;
+    }
+
+    /**
+     * Gets serializer.
+     *
+     * @return Serializer.
+     */
+    public BinarySerializer getSerializer() {
+        return serializer;
+    }
+
+    /**
+     * Sets serializer.
+     *
+     * @param serializer Serializer.
+     */
+    public void setSerializer(BinarySerializer serializer) {
+        this.serializer = serializer;
+    }
+
+    /**
+     * Defines whether meta data is collected for this type. If provided, this value will override
+     * {@link PortableMarshaller#isMetaDataEnabled()} property.
+     *
+     * @return Whether meta data is collected.
+     */
+    public Boolean isMetaDataEnabled() {
+        return metaDataEnabled;
+    }
+
+    /**
+     * @param metaDataEnabled Whether meta data is collected.
+     */
+    public void setMetaDataEnabled(Boolean metaDataEnabled) {
+        this.metaDataEnabled = metaDataEnabled;
+    }
+
+    /**
+     * Defines whether {@link BinaryObject} should cache deserialized instance. If provided,
+     * this value will override {@link PortableMarshaller#isKeepDeserialized()}
+     * property.
+     *
+     * @return Whether deserialized value is kept.
+     */
+    public Boolean isKeepDeserialized() {
+        return keepDeserialized;
+    }
+
+    /**
+     * @param keepDeserialized Whether deserialized value is kept.
+     */
+    public void setKeepDeserialized(Boolean keepDeserialized) {
+        this.keepDeserialized = keepDeserialized;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(BinaryTypeConfiguration.class, this, super.toString());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeIdMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeIdMapper.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeIdMapper.java
new file mode 100644
index 0000000..8995f79
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeIdMapper.java
@@ -0,0 +1,56 @@
+/*
+ * 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.binary;
+
+import org.apache.ignite.marshaller.portable.PortableMarshaller;
+
+/**
+ * Type and field ID mapper for portable objects. Ignite never writes full
+ * strings for field or type names. Instead, for performance reasons, Ignite
+ * writes integer hash codes for type and field names. It has been tested that
+ * hash code conflicts for the type names or the field names
+ * within the same type are virtually non-existent and, to gain performance, it is safe
+ * to work with hash codes. For the cases when hash codes for different types or fields
+ * actually do collide {@code PortableIdMapper} allows to override the automatically
+ * generated hash code IDs for the type and field names.
+ * <p>
+ * Portable ID mapper can be configured for all portable objects via {@link PortableMarshaller#getIdMapper()} method,
+ * or for a specific portable type via {@link BinaryTypeConfiguration#getIdMapper()} method.
+ */
+public interface BinaryTypeIdMapper {
+    /**
+     * Gets type ID for provided class name.
+     * <p>
+     * If {@code 0} is returned, hash code of class simple name will be used.
+     *
+     * @param clsName Class name.
+     * @return Type ID.
+     */
+    public int typeId(String clsName);
+
+    /**
+     * Gets ID for provided field.
+     * <p>
+     * If {@code 0} is returned, hash code of field name will be used.
+     *
+     * @param typeId Type ID.
+     * @param fieldName Field name.
+     * @return Field ID.
+     */
+    public int fieldId(int typeId, String fieldName);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeMetadata.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeMetadata.java
new file mode 100644
index 0000000..4a1749b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryTypeMetadata.java
@@ -0,0 +1,60 @@
+/*
+ * 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.binary;
+
+import java.util.Collection;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Portable type meta data. Metadata for portable types can be accessed from any of the
+ * {@link org.apache.ignite.IgniteObjects#metadata(String)} methods.
+ * Having metadata also allows for proper formatting of {@code PortableObject#toString()} method,
+ * even when portable objects are kept in binary format only, which may be necessary for audit reasons.
+ */
+public interface BinaryTypeMetadata {
+    /**
+     * Gets portable type name.
+     *
+     * @return Portable type name.
+     */
+    public String typeName();
+
+    /**
+     * Gets collection of all field names for this portable type.
+     *
+     * @return Collection of all field names for this portable type.
+     */
+    public Collection<String> fields();
+
+    /**
+     * Gets name of the field type for a given field.
+     *
+     * @param fieldName Field name.
+     * @return Field type name.
+     */
+    @Nullable public String fieldTypeName(String fieldName);
+
+    /**
+     * Portable objects can optionally specify custom key-affinity mapping in the
+     * configuration. This method returns the name of the field which should be
+     * used for the key-affinity mapping.
+     *
+     * @return Affinity key field name.
+     */
+    @Nullable public String affinityKeyFieldName();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/BinaryWriter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/BinaryWriter.java b/modules/core/src/main/java/org/apache/ignite/binary/BinaryWriter.java
new file mode 100644
index 0000000..20217e3
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/BinaryWriter.java
@@ -0,0 +1,273 @@
+/*
+ * 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.binary;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Map;
+import java.util.UUID;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Writer for portable object used in {@link Binarylizable} implementations.
+ * Useful for the cases when user wants a fine-grained control over serialization.
+ * <p>
+ * Note that Ignite never writes full strings for field or type names. Instead,
+ * for performance reasons, Ignite writes integer hash codes for type and field names.
+ * It has been tested that hash code conflicts for the type names or the field names
+ * within the same type are virtually non-existent and, to gain performance, it is safe
+ * to work with hash codes. For the cases when hash codes for different types or fields
+ * actually do collide, Ignite provides {@link BinaryTypeIdMapper} which
+ * allows to override the automatically generated hash code IDs for the type and field names.
+ */
+public interface BinaryWriter {
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeByte(String fieldName, byte val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeShort(String fieldName, short val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeInt(String fieldName, int val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeLong(String fieldName, long val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeFloat(String fieldName, float val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDouble(String fieldName, double val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeChar(String fieldName, char val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeBoolean(String fieldName, boolean val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDecimal(String fieldName, @Nullable BigDecimal val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeString(String fieldName, @Nullable String val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val UUID to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeUuid(String fieldName, @Nullable UUID val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Date to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDate(String fieldName, @Nullable Date val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Timestamp to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeTimestamp(String fieldName, @Nullable Timestamp val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param obj Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeObject(String fieldName, @Nullable Object obj) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeByteArray(String fieldName, @Nullable byte[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeShortArray(String fieldName, @Nullable short[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeIntArray(String fieldName, @Nullable int[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeLongArray(String fieldName, @Nullable long[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeFloatArray(String fieldName, @Nullable float[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDoubleArray(String fieldName, @Nullable double[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeCharArray(String fieldName, @Nullable char[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeBooleanArray(String fieldName, @Nullable boolean[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDecimalArray(String fieldName, @Nullable BigDecimal[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeStringArray(String fieldName, @Nullable String[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeUuidArray(String fieldName, @Nullable UUID[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeDateArray(String fieldName, @Nullable Date[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeTimestampArray(String fieldName, @Nullable Timestamp[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeObjectArray(String fieldName, @Nullable Object[] val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param col Collection to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public <T> void writeCollection(String fieldName, @Nullable Collection<T> col) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param map Map to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public <K, V> void writeMap(String fieldName, @Nullable Map<K, V> map) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public <T extends Enum<?>> void writeEnum(String fieldName, T val) throws BinaryObjectException;
+
+    /**
+     * @param fieldName Field name.
+     * @param val Value to write.
+     * @throws BinaryObjectException In case of error.
+     */
+    public <T extends Enum<?>> void writeEnumArray(String fieldName, T[] val) throws BinaryObjectException;
+
+    /**
+     * Gets raw writer. Raw writer does not write field name hash codes, therefore,
+     * making the format even more compact. However, if the raw writer is used,
+     * dynamic structure changes to the portable objects are not supported.
+     *
+     * @return Raw writer.
+     */
+    public BinaryRawWriter rawWriter();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/Binarylizable.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/Binarylizable.java b/modules/core/src/main/java/org/apache/ignite/binary/Binarylizable.java
new file mode 100644
index 0000000..b1a511e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/Binarylizable.java
@@ -0,0 +1,48 @@
+/*
+ * 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.binary;
+
+/**
+ * Interface that allows to implement custom serialization
+ * logic for portable objects. IgniteObject is not required
+ * to implement this interface, in which case Ignite will automatically
+ * serialize portable objects using reflection.
+ * <p>
+ * This interface, in a way, is analogous to {@link java.io.Externalizable}
+ * interface, which allows users to override default serialization logic,
+ * usually for performance reasons. The only difference here is that portable
+ * serialization is already very fast and implementing custom serialization
+ * logic for portables does not provide significant performance gains.
+ */
+public interface Binarylizable {
+    /**
+     * Writes fields to provided writer.
+     *
+     * @param writer Portable object writer.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void writeBinary(BinaryWriter writer) throws BinaryObjectException;
+
+    /**
+     * Reads fields from provided reader.
+     *
+     * @param reader Portable object reader.
+     * @throws BinaryObjectException In case of error.
+     */
+    public void readBinary(BinaryReader reader) throws BinaryObjectException;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/binary/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/binary/package-info.java b/modules/core/src/main/java/org/apache/ignite/binary/package-info.java
new file mode 100644
index 0000000..5ebf9d8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/binary/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * 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 description. -->
+ * Contains Ignite Binary Objects API classes.
+ */
+package org.apache.ignite.binary;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObject.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObject.java
deleted file mode 100644
index 494bcbc..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObject.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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.igniteobject;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.TreeMap;
-import org.apache.ignite.marshaller.portable.PortableMarshaller;
-import org.apache.ignite.portable.PortableField;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Wrapper for portable object in portable binary format. Once an object is defined as portable,
- * Ignite will always store it in memory in the portable (i.e. binary) format.
- * User can choose to work either with the portable format or with the deserialized form
- * (assuming that class definitions are present in the classpath).
- * <p>
- * <b>NOTE:</b> user does not need to (and should not) implement this interface directly.
- * <p>
- * To work with the portable format directly, user should create a cache projection
- * over {@code PortableObject} class and then retrieve individual fields as needed:
- * <pre name=code class=java>
- * IgniteCache&lt;PortableObject, PortableObject&gt; prj = cache.withKeepBinary();
- *
- * // Convert instance of MyKey to portable format.
- * // We could also use GridPortableBuilder to create the key in portable format directly.
- * PortableObject key = grid.portables().toPortable(new MyKey());
- *
- * PortableObject val = prj.get(key);
- *
- * String field = val.field("myFieldName");
- * </pre>
- * Alternatively, if we have class definitions in the classpath, we may choose to work with deserialized
- * typed objects at all times. In this case we do incur the deserialization cost. However, if
- * {@link PortableMarshaller#isKeepDeserialized()} is {@code true} then Ignite will only deserialize on the first access
- * and will cache the deserialized object, so it does not have to be deserialized again:
- * <pre name=code class=java>
- * IgniteCache&lt;MyKey.class, MyValue.class&gt; cache = grid.cache(null);
- *
- * MyValue val = cache.get(new MyKey());
- *
- * // Normal java getter.
- * String fieldVal = val.getMyFieldName();
- * </pre>
- * <h1 class="header">Working With Maps and Collections</h1>
- * All maps and collections in the portable objects are serialized automatically. When working
- * with different platforms, e.g. C++ or .NET, Ignite will automatically pick the most
- * adequate collection or map in either language. For example, {@link ArrayList} in Java will become
- * {@code List} in C#, {@link LinkedList} in Java is {@link LinkedList} in C#, {@link HashMap}
- * in Java is {@code Dictionary} in C#, and {@link TreeMap} in Java becomes {@code SortedDictionary}
- * in C#, etc.
- * <h1 class="header">Dynamic Structure Changes</h1>
- * Since objects are always cached in the portable binary format, server does not need to
- * be aware of the class definitions. Moreover, if class definitions are not present or not
- * used on the server, then clients can continuously change the structure of the portable
- * objects without having to restart the cluster. For example, if one client stores a
- * certain class with fields A and B, and another client stores the same class with
- * fields B and C, then the server-side portable object will have the fields A, B, and C.
- * As the structure of a portable object changes, the new fields become available for SQL queries
- * automatically.
- * <h1 class="header">Building Portable Objects</h1>
- * Ignite comes with {@link IgniteObjectBuilder} which allows to build portable objects dynamically:
- * <pre name=code class=java>
- * PortableBuilder builder = Ignition.ignite().portables().builder("org.project.MyObject");
- *
- * builder.setField("fieldA", "A");
- * builder.setField("fieldB", "B");
- *
- * PortableObject portableObj = builder.build();
- * </pre>
- * For the cases when class definition is present
- * in the class path, it is also possible to populate a standard POJO and then
- * convert it to portable format, like so:
- * <pre name=code class=java>
- * MyObject obj = new MyObject();
- *
- * obj.setFieldA("A");
- * obj.setFieldB(123);
- *
- * PortableObject portableObj = Ignition.ignite().portables().toPortable(obj);
- * </pre>
- * <h1 class="header">Portable Metadata</h1>
- * Even though Ignite portable protocol only works with hash codes for type and field names
- * to achieve better performance, Ignite provides metadata for all portable types which
- * can be queried ar runtime via any of the {@link org.apache.ignite.IgniteObjects#metadata(Class)}
- * methods. Having metadata also allows for proper formatting of {@code PortableObject.toString()} method,
- * even when portable objects are kept in binary format only, which may be necessary for audit reasons.
- */
-public interface IgniteObject extends Serializable, Cloneable {
-    /**
-     * Gets portable object type ID.
-     *
-     * @return Type ID.
-     */
-    public int typeId();
-
-    /**
-     * Gets meta data for this portable object.
-     *
-     * @return Meta data.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public IgniteObjectMetadata metaData() throws IgniteObjectException;
-
-    /**
-     * Gets field value.
-     *
-     * @param fieldName Field name.
-     * @return Field value.
-     * @throws IgniteObjectException In case of any other error.
-     */
-    @Nullable public <F> F field(String fieldName) throws IgniteObjectException;
-
-    /**
-     * Checks whether field is set.
-     *
-     * @param fieldName Field name.
-     * @return {@code true} if field is set.
-     */
-    public boolean hasField(String fieldName);
-
-    /**
-     * Gets field descriptor.
-     *
-     * @param fieldName Field name.
-     * @return Field descriptor.
-     * @throws IgniteObjectException If failed.
-     */
-    public PortableField fieldDescriptor(String fieldName) throws IgniteObjectException;
-
-    /**
-     * Gets fully deserialized instance of portable object.
-     *
-     * @return Fully deserialized instance of portable object.
-     * @throws IgniteObjectInvalidClassException If class doesn't exist.
-     * @throws IgniteObjectException In case of any other error.
-     */
-    @Nullable public <T> T deserialize() throws IgniteObjectException;
-
-    /**
-     * Copies this portable object.
-     *
-     * @return Copy of this portable object.
-     */
-    public IgniteObject clone() throws CloneNotSupportedException;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectBuilder.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectBuilder.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectBuilder.java
deleted file mode 100644
index 08e1c2a..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectBuilder.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.igniteobject;
-
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Portable object builder. Provides ability to build portable objects dynamically without having class definitions.
- * <p>
- * Here is an example of how a portable object can be built dynamically:
- * <pre name=code class=java>
- * PortableBuilder builder = Ignition.ignite().portables().builder("org.project.MyObject");
- *
- * builder.setField("fieldA", "A");
- * builder.setField("fieldB", "B");
- *
- * PortableObject portableObj = builder.build();
- * </pre>
- *
- * <p>
- * Also builder can be initialized by existing portable object. This allows changing some fields without affecting
- * other fields.
- * <pre name=code class=java>
- * PortableBuilder builder = Ignition.ignite().portables().builder(person);
- *
- * builder.setField("name", "John");
- *
- * person = builder.build();
- * </pre>
- * </p>
- *
- * If you need to modify nested portable object you can get builder for nested object using
- * {@link #getField(String)}, changes made on nested builder will affect parent object,
- * for example:
- *
- * <pre name=code class=java>
- * PortableBuilder personBuilder = grid.portables().createBuilder(personPortableObj);
- * PortableBuilder addressBuilder = personBuilder.setField("address");
- *
- * addressBuilder.setField("city", "New York");
- *
- * personPortableObj = personBuilder.build();
- *
- * // Should be "New York".
- * String city = personPortableObj.getField("address").getField("city");
- * </pre>
- *
- * @see org.apache.ignite.IgniteObjects#builder(int)
- * @see org.apache.ignite.IgniteObjects#builder(String)
- * @see org.apache.ignite.IgniteObjects#builder(IgniteObject)
- */
-public interface IgniteObjectBuilder {
-    /**
-     * Returns value assigned to the specified field.
-     * If the value is a portable object instance of {@code GridPortableBuilder} will be returned,
-     * which can be modified.
-     * <p>
-     * Collections and maps returned from this method are modifiable.
-     *
-     * @param name Field name.
-     * @return Filed value.
-     */
-    public <T> T getField(String name);
-
-    /**
-     * Sets field value.
-     *
-     * @param name Field name.
-     * @param val Field value (cannot be {@code null}).
-     * @see IgniteObject#metaData()
-     */
-    public IgniteObjectBuilder setField(String name, Object val);
-
-    /**
-     * Sets field value with value type specification.
-     * <p>
-     * Field type is needed for proper metadata update.
-     *
-     * @param name Field name.
-     * @param val Field value.
-     * @param type Field type.
-     * @see IgniteObject#metaData()
-     */
-    public <T> IgniteObjectBuilder setField(String name, @Nullable T val, Class<? super T> type);
-
-    /**
-     * Sets field value.
-     * <p>
-     * This method should be used if field is portable object.
-     *
-     * @param name Field name.
-     * @param builder Builder for object field.
-     */
-    public IgniteObjectBuilder setField(String name, @Nullable IgniteObjectBuilder builder);
-
-    /**
-     * Removes field from this builder.
-     *
-     * @param fieldName Field name.
-     * @return {@code this} instance for chaining.
-     */
-    public IgniteObjectBuilder removeField(String fieldName);
-
-    /**
-     * Sets hash code for resulting portable object returned by {@link #build()} method.
-     * <p>
-     * If not set {@code 0} is used.
-     *
-     * @param hashCode Hash code.
-     * @return {@code this} instance for chaining.
-     */
-    public IgniteObjectBuilder hashCode(int hashCode);
-
-    /**
-     * Builds portable object.
-     *
-     * @return Portable object.
-     * @throws IgniteObjectException In case of error.
-     */
-    public IgniteObject build() throws IgniteObjectException;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectConfiguration.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectConfiguration.java
deleted file mode 100644
index 20a4dec..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectConfiguration.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.igniteobject;
-
-import java.util.Collection;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.marshaller.portable.PortableMarshaller;
-
-/**
- * Defines configuration properties for a specific portable type. Providing per-type
- * configuration is optional, as it is generally enough, and also optional, to provide global portable
- * configuration using {@link PortableMarshaller#setClassNames(Collection)}.
- * However, this class allows you to change configuration properties for a specific
- * portable type without affecting configuration for other portable types.
- * <p>
- * Per-type portable configuration can be specified in {@link PortableMarshaller#getTypeConfigurations()} method.
- */
-public class IgniteObjectConfiguration {
-    /** Class name. */
-    private String clsName;
-
-    /** ID mapper. */
-    private IgniteObjectIdMapper idMapper;
-
-    /** Serializer. */
-    private IgniteObjectSerializer serializer;
-
-    /** Meta data enabled flag. */
-    private Boolean metaDataEnabled;
-
-    /** Keep deserialized flag. */
-    private Boolean keepDeserialized;
-
-    /**
-     */
-    public IgniteObjectConfiguration() {
-        // No-op.
-    }
-
-    /**
-     * @param clsName Class name.
-     */
-    public IgniteObjectConfiguration(String clsName) {
-        this.clsName = clsName;
-    }
-
-    /**
-     * Gets type name.
-     *
-     * @return Type name.
-     */
-    public String getClassName() {
-        return clsName;
-    }
-
-    /**
-     * Sets type name.
-     *
-     * @param clsName Type name.
-     */
-    public void setClassName(String clsName) {
-        this.clsName = clsName;
-    }
-
-    /**
-     * Gets ID mapper.
-     *
-     * @return ID mapper.
-     */
-    public IgniteObjectIdMapper getIdMapper() {
-        return idMapper;
-    }
-
-    /**
-     * Sets ID mapper.
-     *
-     * @param idMapper ID mapper.
-     */
-    public void setIdMapper(IgniteObjectIdMapper idMapper) {
-        this.idMapper = idMapper;
-    }
-
-    /**
-     * Gets serializer.
-     *
-     * @return Serializer.
-     */
-    public IgniteObjectSerializer getSerializer() {
-        return serializer;
-    }
-
-    /**
-     * Sets serializer.
-     *
-     * @param serializer Serializer.
-     */
-    public void setSerializer(IgniteObjectSerializer serializer) {
-        this.serializer = serializer;
-    }
-
-    /**
-     * Defines whether meta data is collected for this type. If provided, this value will override
-     * {@link PortableMarshaller#isMetaDataEnabled()} property.
-     *
-     * @return Whether meta data is collected.
-     */
-    public Boolean isMetaDataEnabled() {
-        return metaDataEnabled;
-    }
-
-    /**
-     * @param metaDataEnabled Whether meta data is collected.
-     */
-    public void setMetaDataEnabled(Boolean metaDataEnabled) {
-        this.metaDataEnabled = metaDataEnabled;
-    }
-
-    /**
-     * Defines whether {@link IgniteObject} should cache deserialized instance. If provided,
-     * this value will override {@link PortableMarshaller#isKeepDeserialized()}
-     * property.
-     *
-     * @return Whether deserialized value is kept.
-     */
-    public Boolean isKeepDeserialized() {
-        return keepDeserialized;
-    }
-
-    /**
-     * @param keepDeserialized Whether deserialized value is kept.
-     */
-    public void setKeepDeserialized(Boolean keepDeserialized) {
-        this.keepDeserialized = keepDeserialized;
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(IgniteObjectConfiguration.class, this, super.toString());
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectException.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectException.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectException.java
deleted file mode 100644
index c86c17f..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.igniteobject;
-
-import org.apache.ignite.IgniteException;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Exception indicating portable object serialization error.
- */
-public class IgniteObjectException extends IgniteException {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /**
-     * Creates portable exception with error message.
-     *
-     * @param msg Error message.
-     */
-    public IgniteObjectException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * Creates portable exception with {@link Throwable} as a cause.
-     *
-     * @param cause Cause.
-     */
-    public IgniteObjectException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Creates portable exception with error message and {@link Throwable} as a cause.
-     *
-     * @param msg Error message.
-     * @param cause Cause.
-     */
-    public IgniteObjectException(String msg, @Nullable Throwable cause) {
-        super(msg, cause);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectIdMapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectIdMapper.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectIdMapper.java
deleted file mode 100644
index ea11824..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectIdMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.igniteobject;
-
-import org.apache.ignite.marshaller.portable.PortableMarshaller;
-
-/**
- * Type and field ID mapper for portable objects. Ignite never writes full
- * strings for field or type names. Instead, for performance reasons, Ignite
- * writes integer hash codes for type and field names. It has been tested that
- * hash code conflicts for the type names or the field names
- * within the same type are virtually non-existent and, to gain performance, it is safe
- * to work with hash codes. For the cases when hash codes for different types or fields
- * actually do collide {@code PortableIdMapper} allows to override the automatically
- * generated hash code IDs for the type and field names.
- * <p>
- * Portable ID mapper can be configured for all portable objects via {@link PortableMarshaller#getIdMapper()} method,
- * or for a specific portable type via {@link IgniteObjectConfiguration#getIdMapper()} method.
- */
-public interface IgniteObjectIdMapper {
-    /**
-     * Gets type ID for provided class name.
-     * <p>
-     * If {@code 0} is returned, hash code of class simple name will be used.
-     *
-     * @param clsName Class name.
-     * @return Type ID.
-     */
-    public int typeId(String clsName);
-
-    /**
-     * Gets ID for provided field.
-     * <p>
-     * If {@code 0} is returned, hash code of field name will be used.
-     *
-     * @param typeId Type ID.
-     * @param fieldName Field name.
-     * @return Field ID.
-     */
-    public int fieldId(int typeId, String fieldName);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectInvalidClassException.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectInvalidClassException.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectInvalidClassException.java
deleted file mode 100644
index 8b2b223..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectInvalidClassException.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.igniteobject;
-
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Exception indicating that class needed for deserialization of portable object does not exist.
- * <p>
- * Thrown from {@link IgniteObject#deserialize()} method.
- */
-public class IgniteObjectInvalidClassException extends IgniteObjectException {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /**
-     * Creates invalid class exception with error message.
-     *
-     * @param msg Error message.
-     */
-    public IgniteObjectInvalidClassException(String msg) {
-        super(msg);
-    }
-
-    /**
-     * Creates invalid class exception with {@link Throwable} as a cause.
-     *
-     * @param cause Cause.
-     */
-    public IgniteObjectInvalidClassException(Throwable cause) {
-        super(cause);
-    }
-
-    /**
-     * Creates invalid class exception with error message and {@link Throwable} as a cause.
-     *
-     * @param msg Error message.
-     * @param cause Cause.
-     */
-    public IgniteObjectInvalidClassException(String msg, @Nullable Throwable cause) {
-        super(msg, cause);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMarshalAware.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMarshalAware.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMarshalAware.java
deleted file mode 100644
index 6670431..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMarshalAware.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.igniteobject;
-
-/**
- * Interface that allows to implement custom serialization
- * logic for portable objects. IgniteObject is not required
- * to implement this interface, in which case Ignite will automatically
- * serialize portable objects using reflection.
- * <p>
- * This interface, in a way, is analogous to {@link java.io.Externalizable}
- * interface, which allows users to override default serialization logic,
- * usually for performance reasons. The only difference here is that portable
- * serialization is already very fast and implementing custom serialization
- * logic for portables does not provide significant performance gains.
- */
-public interface IgniteObjectMarshalAware {
-    /**
-     * Writes fields to provided writer.
-     *
-     * @param writer Portable object writer.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writePortable(IgniteObjectWriter writer) throws IgniteObjectException;
-
-    /**
-     * Reads fields from provided reader.
-     *
-     * @param reader Portable object reader.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void readPortable(IgniteObjectReader reader) throws IgniteObjectException;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMetadata.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMetadata.java
deleted file mode 100644
index 943d774..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectMetadata.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.igniteobject;
-
-import java.util.Collection;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Portable type meta data. Metadata for portable types can be accessed from any of the
- * {@link org.apache.ignite.IgniteObjects#metadata(String)} methods.
- * Having metadata also allows for proper formatting of {@code PortableObject#toString()} method,
- * even when portable objects are kept in binary format only, which may be necessary for audit reasons.
- */
-public interface IgniteObjectMetadata {
-    /**
-     * Gets portable type name.
-     *
-     * @return Portable type name.
-     */
-    public String typeName();
-
-    /**
-     * Gets collection of all field names for this portable type.
-     *
-     * @return Collection of all field names for this portable type.
-     */
-    public Collection<String> fields();
-
-    /**
-     * Gets name of the field type for a given field.
-     *
-     * @param fieldName Field name.
-     * @return Field type name.
-     */
-    @Nullable public String fieldTypeName(String fieldName);
-
-    /**
-     * Portable objects can optionally specify custom key-affinity mapping in the
-     * configuration. This method returns the name of the field which should be
-     * used for the key-affinity mapping.
-     *
-     * @return Affinity key field name.
-     */
-    @Nullable public String affinityKeyFieldName();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectReader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectReader.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectReader.java
deleted file mode 100644
index bad4473..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectReader.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * 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.igniteobject;
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Map;
-import java.util.UUID;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Reader for portable objects used in {@link IgniteObjectMarshalAware} implementations.
- * Useful for the cases when user wants a fine-grained control over serialization.
- * <p>
- * Note that Ignite never writes full strings for field or type names. Instead,
- * for performance reasons, Ignite writes integer hash codes for type and field names.
- * It has been tested that hash code conflicts for the type names or the field names
- * within the same type are virtually non-existent and, to gain performance, it is safe
- * to work with hash codes. For the cases when hash codes for different types or fields
- * actually do collide, Ignite provides {@link IgniteObjectIdMapper} which
- * allows to override the automatically generated hash code IDs for the type and field names.
- */
-public interface IgniteObjectReader {
-    /**
-     * @param fieldName Field name.
-     * @return Byte value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public byte readByte(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Short value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public short readShort(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Integer value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public int readInt(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Long value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public long readLong(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @throws IgniteObjectException In case of error.
-     * @return Float value.
-     */
-    public float readFloat(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Double value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public double readDouble(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Char value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public char readChar(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Boolean value.
-     * @throws IgniteObjectException In case of error.
-     */
-    public boolean readBoolean(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Decimal value.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public BigDecimal readDecimal(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return String value.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public String readString(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return UUID.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public UUID readUuid(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Date.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public Date readDate(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Timestamp.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public Timestamp readTimestamp(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Object.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <T> T readObject(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Byte array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public byte[] readByteArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Short array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public short[] readShortArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Integer array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public int[] readIntArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Long array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public long[] readLongArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Float array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public float[] readFloatArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Byte array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public double[] readDoubleArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Char array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public char[] readCharArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Boolean array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public boolean[] readBooleanArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Decimal array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public BigDecimal[] readDecimalArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return String array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public String[] readStringArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return UUID array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public UUID[] readUuidArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Date array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public Date[] readDateArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Timestamp array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public Timestamp[] readTimestampArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Object array.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public Object[] readObjectArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Collection.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <T> Collection<T> readCollection(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param colCls Collection class.
-     * @return Collection.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <T> Collection<T> readCollection(String fieldName, Class<? extends Collection<T>> colCls)
-        throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Map.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <K, V> Map<K, V> readMap(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param mapCls Map class.
-     * @return Map.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <K, V> Map<K, V> readMap(String fieldName, Class<? extends Map<K, V>> mapCls)
-        throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Value.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <T extends Enum<?>> T readEnum(String fieldName) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @return Value.
-     * @throws IgniteObjectException In case of error.
-     */
-    @Nullable public <T extends Enum<?>> T[] readEnumArray(String fieldName) throws IgniteObjectException;
-
-    /**
-     * Gets raw reader. Raw reader does not use field name hash codes, therefore,
-     * making the format even more compact. However, if the raw reader is used,
-     * dynamic structure changes to the portable objects are not supported.
-     *
-     * @return Raw reader.
-     */
-    public IgniteObjectRawReader rawReader();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectSerializer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectSerializer.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectSerializer.java
deleted file mode 100644
index 2ac3d0e..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectSerializer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.igniteobject;
-
-import org.apache.ignite.marshaller.portable.PortableMarshaller;
-
-/**
- * Interface that allows to implement custom serialization logic for portable objects.
- * Can be used instead of {@link IgniteObjectMarshalAware} in case if the class
- * cannot be changed directly.
- * <p>
- * Portable serializer can be configured for all portable objects via
- * {@link PortableMarshaller#getSerializer()} method, or for a specific
- * portable type via {@link IgniteObjectConfiguration#getSerializer()} method.
- */
-public interface IgniteObjectSerializer {
-    /**
-     * Writes fields to provided writer.
-     *
-     * @param obj Empty object.
-     * @param writer Portable object writer.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writePortable(Object obj, IgniteObjectWriter writer) throws IgniteObjectException;
-
-    /**
-     * Reads fields from provided reader.
-     *
-     * @param obj Empty object
-     * @param reader Portable object reader.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void readPortable(Object obj, IgniteObjectReader reader) throws IgniteObjectException;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectWriter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectWriter.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectWriter.java
deleted file mode 100644
index 3409f07..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/IgniteObjectWriter.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * 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.igniteobject;
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Map;
-import java.util.UUID;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Writer for portable object used in {@link IgniteObjectMarshalAware} implementations.
- * Useful for the cases when user wants a fine-grained control over serialization.
- * <p>
- * Note that Ignite never writes full strings for field or type names. Instead,
- * for performance reasons, Ignite writes integer hash codes for type and field names.
- * It has been tested that hash code conflicts for the type names or the field names
- * within the same type are virtually non-existent and, to gain performance, it is safe
- * to work with hash codes. For the cases when hash codes for different types or fields
- * actually do collide, Ignite provides {@link IgniteObjectIdMapper} which
- * allows to override the automatically generated hash code IDs for the type and field names.
- */
-public interface IgniteObjectWriter {
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeByte(String fieldName, byte val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeShort(String fieldName, short val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeInt(String fieldName, int val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeLong(String fieldName, long val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeFloat(String fieldName, float val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDouble(String fieldName, double val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeChar(String fieldName, char val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeBoolean(String fieldName, boolean val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDecimal(String fieldName, @Nullable BigDecimal val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeString(String fieldName, @Nullable String val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val UUID to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeUuid(String fieldName, @Nullable UUID val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Date to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDate(String fieldName, @Nullable Date val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Timestamp to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeTimestamp(String fieldName, @Nullable Timestamp val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param obj Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeObject(String fieldName, @Nullable Object obj) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeByteArray(String fieldName, @Nullable byte[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeShortArray(String fieldName, @Nullable short[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeIntArray(String fieldName, @Nullable int[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeLongArray(String fieldName, @Nullable long[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeFloatArray(String fieldName, @Nullable float[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDoubleArray(String fieldName, @Nullable double[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeCharArray(String fieldName, @Nullable char[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeBooleanArray(String fieldName, @Nullable boolean[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDecimalArray(String fieldName, @Nullable BigDecimal[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeStringArray(String fieldName, @Nullable String[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeUuidArray(String fieldName, @Nullable UUID[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeDateArray(String fieldName, @Nullable Date[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeTimestampArray(String fieldName, @Nullable Timestamp[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public void writeObjectArray(String fieldName, @Nullable Object[] val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param col Collection to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public <T> void writeCollection(String fieldName, @Nullable Collection<T> col) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param map Map to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public <K, V> void writeMap(String fieldName, @Nullable Map<K, V> map) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public <T extends Enum<?>> void writeEnum(String fieldName, T val) throws IgniteObjectException;
-
-    /**
-     * @param fieldName Field name.
-     * @param val Value to write.
-     * @throws IgniteObjectException In case of error.
-     */
-    public <T extends Enum<?>> void writeEnumArray(String fieldName, T[] val) throws IgniteObjectException;
-
-    /**
-     * Gets raw writer. Raw writer does not write field name hash codes, therefore,
-     * making the format even more compact. However, if the raw writer is used,
-     * dynamic structure changes to the portable objects are not supported.
-     *
-     * @return Raw writer.
-     */
-    public IgniteObjectRawWriter rawWriter();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/igniteobject/package-info.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igniteobject/package-info.java b/modules/core/src/main/java/org/apache/ignite/igniteobject/package-info.java
deleted file mode 100644
index 7615b52..0000000
--- a/modules/core/src/main/java/org/apache/ignite/igniteobject/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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 description. -->
- * Contains Ignite Objects API classes.
- */
-package org.apache.ignite.igniteobject;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/20f5b9cd/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 61fa93a..623da66 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -31,7 +31,7 @@ import org.apache.ignite.internal.managers.deployment.GridDeploymentInfoBean;
 import org.apache.ignite.internal.managers.deployment.GridDeploymentRequest;
 import org.apache.ignite.internal.managers.deployment.GridDeploymentResponse;
 import org.apache.ignite.internal.managers.eventstorage.GridEventStorageMessage;
-import org.apache.ignite.internal.portable.IgniteObjectImpl;
+import org.apache.ignite.internal.portable.BinaryObjectImpl;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
 import org.apache.ignite.internal.processors.cache.CacheEntryInfoCollection;
 import org.apache.ignite.internal.processors.cache.CacheEntryPredicateContainsValue;
@@ -680,7 +680,7 @@ public class GridIoMessageFactory implements MessageFactory {
                 break;
 
             case 113:
-                msg = new IgniteObjectImpl();
+                msg = new BinaryObjectImpl();
 
                 break;