http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java index e61cba7..8fcbc86 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java @@ -17,28 +17,6 @@ package org.apache.ignite.internal.portable; -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.internal.IgniteKernal; -import org.apache.ignite.internal.IgnitionEx; -import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl; -import org.apache.ignite.internal.util.GridConcurrentHashSet; -import org.apache.ignite.internal.util.IgniteUtils; -import org.apache.ignite.internal.util.lang.GridMapEntry; -import org.apache.ignite.internal.util.typedef.T2; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.lang.IgniteBiTuple; -import org.apache.ignite.marshaller.MarshallerContext; -import org.apache.ignite.marshaller.optimized.OptimizedMarshaller; -import org.apache.ignite.marshaller.portable.PortableMarshaller; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableIdMapper; -import org.apache.ignite.portable.PortableInvalidClassException; -import org.apache.ignite.portable.PortableMetadata; -import org.apache.ignite.portable.PortableSerializer; -import org.apache.ignite.portable.PortableTypeConfiguration; -import org.jetbrains.annotations.Nullable; -import org.jsr166.ConcurrentHashMap8; - import java.io.Externalizable; import java.io.File; import java.io.IOException; @@ -71,6 +49,30 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentSkipListSet; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.cache.CacheKeyConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.binary.BinaryTypeConfiguration; +import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.binary.BinaryTypeIdMapper; +import org.apache.ignite.binary.BinaryInvalidTypeException; +import org.apache.ignite.binary.BinaryType; +import org.apache.ignite.binary.BinarySerializer; +import org.apache.ignite.internal.IgniteKernal; +import org.apache.ignite.internal.IgnitionEx; +import org.apache.ignite.internal.processors.cache.portable.CacheObjectBinaryProcessorImpl; +import org.apache.ignite.internal.util.GridConcurrentHashSet; +import org.apache.ignite.internal.util.IgniteUtils; +import org.apache.ignite.internal.util.lang.GridMapEntry; +import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.internal.util.typedef.T2; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.lang.IgniteBiTuple; +import org.apache.ignite.marshaller.MarshallerContext; +import org.apache.ignite.marshaller.optimized.OptimizedMarshaller; +import org.apache.ignite.marshaller.portable.PortableMarshaller; +import org.jetbrains.annotations.Nullable; +import org.jsr166.ConcurrentHashMap8; /** * Portable context. @@ -83,10 +85,10 @@ public class PortableContext implements Externalizable { private static final ClassLoader dfltLdr = U.gridClassLoader(); /** */ - static final PortableIdMapper DFLT_ID_MAPPER = new IdMapperWrapper(null); + static final BinaryTypeIdMapper DFLT_ID_MAPPER = new IdMapperWrapper(null); /** */ - static final PortableIdMapper BASIC_CLS_ID_MAPPER = new BasicClassIdMapper(); + static final BinaryTypeIdMapper BASIC_CLS_ID_MAPPER = new BasicClassIdMapper(); /** */ static final char[] LOWER_CASE_CHARS; @@ -126,10 +128,10 @@ public class PortableContext implements Externalizable { private final Map<Class<? extends Map>, Byte> mapTypes = new HashMap<>(); /** */ - private final ConcurrentMap<Integer, PortableIdMapper> mappers = new ConcurrentHashMap8<>(0); + private final ConcurrentMap<Integer, BinaryTypeIdMapper> mappers = new ConcurrentHashMap8<>(0); /** */ - private final Map<String, PortableIdMapper> typeMappers = new ConcurrentHashMap8<>(0); + private final Map<String, BinaryTypeIdMapper> typeMappers = new ConcurrentHashMap8<>(0); /** */ private Map<Integer, Boolean> metaEnabled = new HashMap<>(0); @@ -144,6 +146,9 @@ public class PortableContext implements Externalizable { private String gridName; /** */ + private IgniteConfiguration igniteCfg; + + /** */ private final OptimizedMarshaller optmMarsh = new OptimizedMarshaller(); /** */ @@ -167,13 +172,15 @@ public class PortableContext implements Externalizable { /** * @param metaHnd Meta data handler. - * @param gridName Grid name. + * @param igniteCfg Ignite configuration. */ - public PortableContext(PortableMetaDataHandler metaHnd, @Nullable String gridName) { + public PortableContext(PortableMetaDataHandler metaHnd, @Nullable IgniteConfiguration igniteCfg) { assert metaHnd != null; this.metaHnd = metaHnd; - this.gridName = gridName; + this.igniteCfg = igniteCfg; + + gridName = igniteCfg.getGridName(); colTypes.put(ArrayList.class, GridPortableMarshaller.ARR_LIST); colTypes.put(LinkedList.class, GridPortableMarshaller.LINKED_LIST); @@ -240,15 +247,15 @@ public class PortableContext implements Externalizable { // IDs range [200..1000] is used by Ignite internal APIs. - registerPredefinedType(PortableObjectImpl.class, 200); - registerPredefinedType(PortableMetaDataImpl.class, 201); + registerPredefinedType(BinaryObjectImpl.class, 200); + registerPredefinedType(BinaryMetaDataImpl.class, 201); } /** * @param marsh Portable marshaller. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - public void configure(PortableMarshaller marsh) throws PortableException { + public void configure(PortableMarshaller marsh) throws BinaryObjectException { if (marsh == null) return; @@ -279,20 +286,20 @@ public class PortableContext implements Externalizable { * @param globalKeepDeserialized Keep deserialized flag. * @param clsNames Class names. * @param typeCfgs Type configurations. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ private void configure( - PortableIdMapper globalIdMapper, - PortableSerializer globalSerializer, + BinaryTypeIdMapper globalIdMapper, + BinarySerializer globalSerializer, boolean globalMetaDataEnabled, boolean globalKeepDeserialized, Collection<String> clsNames, - Collection<PortableTypeConfiguration> typeCfgs - ) throws PortableException { + Collection<BinaryTypeConfiguration> typeCfgs + ) throws BinaryObjectException { TypeDescriptors descs = new TypeDescriptors(); if (clsNames != null) { - PortableIdMapper idMapper = new IdMapperWrapper(globalIdMapper); + BinaryTypeIdMapper idMapper = new IdMapperWrapper(globalIdMapper); for (String clsName : clsNames) { if (clsName.endsWith(".*")) { // Package wildcard @@ -308,21 +315,28 @@ public class PortableContext implements Externalizable { } } + Map<String, String> affFields = new HashMap<>(); + + if (!F.isEmpty(igniteCfg.getCacheKeyConfiguration())) { + for (CacheKeyConfiguration keyCfg : igniteCfg.getCacheKeyConfiguration()) + affFields.put(keyCfg.getTypeName(), keyCfg.getAffinityKeyFieldName()); + } + if (typeCfgs != null) { - for (PortableTypeConfiguration typeCfg : typeCfgs) { + for (BinaryTypeConfiguration typeCfg : typeCfgs) { String clsName = typeCfg.getClassName(); if (clsName == null) - throw new PortableException("Class name is required for portable type configuration."); + throw new BinaryObjectException("Class name is required for portable type configuration."); - PortableIdMapper idMapper = globalIdMapper; + BinaryTypeIdMapper idMapper = globalIdMapper; if (typeCfg.getIdMapper() != null) idMapper = typeCfg.getIdMapper(); idMapper = new IdMapperWrapper(idMapper); - PortableSerializer serializer = globalSerializer; + BinarySerializer serializer = globalSerializer; if (typeCfg.getSerializer() != null) serializer = typeCfg.getSerializer(); @@ -336,11 +350,11 @@ public class PortableContext implements Externalizable { String pkgName = clsName.substring(0, clsName.length() - 2); for (String clsName0 : classesInPackage(pkgName)) - descs.add(clsName0, idMapper, serializer, typeCfg.getAffinityKeyFieldName(), + descs.add(clsName0, idMapper, serializer, affFields.get(clsName0), metaDataEnabled, keepDeserialized, true); } else - descs.add(clsName, idMapper, serializer, typeCfg.getAffinityKeyFieldName(), + descs.add(clsName, idMapper, serializer, affFields.get(clsName), metaDataEnabled, keepDeserialized, false); } } @@ -422,10 +436,10 @@ public class PortableContext implements Externalizable { /** * @param cls Class. * @return Class descriptor. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ public PortableClassDescriptor descriptorForClass(Class<?> cls) - throws PortableException { + throws BinaryObjectException { assert cls != null; PortableClassDescriptor desc = descByCls.get(cls); @@ -475,14 +489,14 @@ public class PortableContext implements Externalizable { if (userType && !ldr.equals(dfltLdr) && (desc = descriptorForTypeId(true, typeId, dfltLdr)) != null) return desc; - throw new PortableInvalidClassException(e); + throw new BinaryInvalidTypeException(e); } catch (IgniteCheckedException e) { // Class might have been loaded by default class loader. if (userType && !ldr.equals(dfltLdr) && (desc = descriptorForTypeId(true, typeId, dfltLdr)) != null) return desc; - throw new PortableException("Failed resolve class for ID: " + typeId, e); + throw new BinaryObjectException("Failed resolve class for ID: " + typeId, e); } if (desc == null) { @@ -541,7 +555,7 @@ public class PortableContext implements Externalizable { String typeName = typeName(cls.getName()); - PortableIdMapper idMapper = userTypeIdMapper(typeName); + BinaryTypeIdMapper idMapper = userTypeIdMapper(typeName); int typeId = idMapper.typeId(typeName); @@ -549,7 +563,7 @@ public class PortableContext implements Externalizable { registered = marshCtx.registerClass(typeId, cls); } catch (IgniteCheckedException e) { - throw new PortableException("Failed to register class.", e); + throw new BinaryObjectException("Failed to register class.", e); } PortableClassDescriptor desc = new PortableClassDescriptor(this, @@ -639,8 +653,8 @@ public class PortableContext implements Externalizable { * @param typeId Type ID. * @return Instance of ID mapper. */ - public PortableIdMapper userTypeIdMapper(int typeId) { - PortableIdMapper idMapper = mappers.get(typeId); + public BinaryTypeIdMapper userTypeIdMapper(int typeId) { + BinaryTypeIdMapper idMapper = mappers.get(typeId); if (idMapper != null) return idMapper; @@ -655,15 +669,15 @@ public class PortableContext implements Externalizable { * @param typeName Type name. * @return Instance of ID mapper. */ - private PortableIdMapper userTypeIdMapper(String typeName) { - PortableIdMapper idMapper = typeMappers.get(typeName); + private BinaryTypeIdMapper userTypeIdMapper(String typeName) { + BinaryTypeIdMapper idMapper = typeMappers.get(typeName); return idMapper != null ? idMapper : DFLT_ID_MAPPER; } /** {@inheritDoc} */ @Override public void writeExternal(ObjectOutput out) throws IOException { - U.writeString(out, gridName); + U.writeString(out, igniteCfg.getGridName()); } /** {@inheritDoc} */ @@ -682,7 +696,7 @@ public class PortableContext implements Externalizable { if (g == null) throw new IllegalStateException("Failed to find grid for name: " + gridName); - return ((CacheObjectPortableProcessorImpl)g.context().cacheObjects()).portableContext(); + return ((CacheObjectBinaryProcessorImpl)g.context().cacheObjects()).portableContext(); } catch (IllegalStateException e) { throw U.withCause(new InvalidObjectException(e.getMessage()), e); @@ -726,16 +740,16 @@ public class PortableContext implements Externalizable { * @param affKeyFieldName Affinity key field name. * @param metaDataEnabled Metadata enabled flag. * @param keepDeserialized Keep deserialized flag. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ @SuppressWarnings("ErrorNotRethrown") public void registerUserType(String clsName, - PortableIdMapper idMapper, - @Nullable PortableSerializer serializer, + BinaryTypeIdMapper idMapper, + @Nullable BinarySerializer serializer, @Nullable String affKeyFieldName, boolean metaDataEnabled, boolean keepDeserialized) - throws PortableException { + throws BinaryObjectException { assert idMapper != null; Class<?> cls = null; @@ -751,10 +765,10 @@ public class PortableContext implements Externalizable { //Workaround for IGNITE-1358 if (predefinedTypes.get(id) != null) - throw new PortableException("Duplicate type ID [clsName=" + clsName + ", id=" + id + ']'); + throw new BinaryObjectException("Duplicate type ID [clsName=" + clsName + ", id=" + id + ']'); if (mappers.put(id, idMapper) != null) - throw new PortableException("Duplicate type ID [clsName=" + clsName + ", id=" + id + ']'); + throw new BinaryObjectException("Duplicate type ID [clsName=" + clsName + ", id=" + id + ']'); String typeName = typeName(clsName); @@ -787,15 +801,15 @@ public class PortableContext implements Externalizable { descByCls.put(cls, desc); } - metaHnd.addMeta(id, new PortableMetaDataImpl(typeName, fieldsMeta, affKeyFieldName)); + metaHnd.addMeta(id, new BinaryMetaDataImpl(typeName, fieldsMeta, affKeyFieldName)); } /** * @param typeId Type ID. * @return Meta data. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - @Nullable public PortableMetadata metaData(int typeId) throws PortableException { + @Nullable public BinaryType metaData(int typeId) throws BinaryObjectException { return metaHnd != null ? metaHnd.metadata(typeId) : null; } @@ -834,18 +848,18 @@ public class PortableContext implements Externalizable { * @param typeId Type ID. * @param typeName Type name. * @param fields Fields map. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - public void updateMetaData(int typeId, String typeName, Map<String, String> fields) throws PortableException { - updateMetaData(typeId, new PortableMetaDataImpl(typeName, fields, null)); + public void updateMetaData(int typeId, String typeName, Map<String, String> fields) throws BinaryObjectException { + updateMetaData(typeId, new BinaryMetaDataImpl(typeName, fields, null)); } /** * @param typeId Type ID. * @param meta Meta data. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - public void updateMetaData(int typeId, PortableMetaDataImpl meta) throws PortableException { + public void updateMetaData(int typeId, BinaryMetaDataImpl meta) throws BinaryObjectException { metaHnd.addMeta(typeId, meta); } @@ -983,14 +997,14 @@ public class PortableContext implements Externalizable { /** */ - private static class IdMapperWrapper implements PortableIdMapper { + private static class IdMapperWrapper implements BinaryTypeIdMapper { /** */ - private final PortableIdMapper mapper; + private final BinaryTypeIdMapper mapper; /** * @param mapper Custom ID mapper. */ - private IdMapperWrapper(@Nullable PortableIdMapper mapper) { + private IdMapperWrapper(@Nullable BinaryTypeIdMapper mapper) { this.mapper = mapper; } @@ -1018,7 +1032,7 @@ public class PortableContext implements Externalizable { /** * Basic class ID mapper. */ - private static class BasicClassIdMapper implements PortableIdMapper { + private static class BasicClassIdMapper implements BinaryTypeIdMapper { /** {@inheritDoc} */ @Override public int typeId(String clsName) { return clsName.hashCode(); @@ -1047,16 +1061,16 @@ public class PortableContext implements Externalizable { * @param metadataEnabled Metadata enabled flag. * @param keepDeserialized Keep deserialized flag. * @param canOverride Whether this descriptor can be override. - * @throws PortableException If failed. + * @throws org.apache.ignite.binary.BinaryObjectException If failed. */ private void add(String clsName, - PortableIdMapper idMapper, - PortableSerializer serializer, + BinaryTypeIdMapper idMapper, + BinarySerializer serializer, String affKeyFieldName, boolean metadataEnabled, boolean keepDeserialized, boolean canOverride) - throws PortableException { + throws BinaryObjectException { TypeDescriptor desc = new TypeDescriptor(clsName, idMapper, serializer, @@ -1091,10 +1105,10 @@ public class PortableContext implements Externalizable { private final String clsName; /** ID mapper. */ - private PortableIdMapper idMapper; + private BinaryTypeIdMapper idMapper; /** Serializer. */ - private PortableSerializer serializer; + private BinarySerializer serializer; /** Affinity key field name. */ private String affKeyFieldName; @@ -1119,7 +1133,7 @@ public class PortableContext implements Externalizable { * @param keepDeserialized Keep deserialized flag. * @param canOverride Whether this descriptor can be override. */ - private TypeDescriptor(String clsName, PortableIdMapper idMapper, PortableSerializer serializer, + private TypeDescriptor(String clsName, BinaryTypeIdMapper idMapper, BinarySerializer serializer, String affKeyFieldName, boolean metadataEnabled, boolean keepDeserialized, boolean canOverride) { this.clsName = clsName; @@ -1135,9 +1149,9 @@ public class PortableContext implements Externalizable { * Override portable class descriptor. * * @param other Other descriptor. - * @throws PortableException If failed. + * @throws org.apache.ignite.binary.BinaryObjectException If failed. */ - private void override(TypeDescriptor other) throws PortableException { + private void override(TypeDescriptor other) throws BinaryObjectException { assert clsName.equals(other.clsName); if (canOverride) { @@ -1149,7 +1163,7 @@ public class PortableContext implements Externalizable { canOverride = other.canOverride; } else if (!other.canOverride) - throw new PortableException("Duplicate explicit class definition in configuration: " + clsName); + throw new BinaryObjectException("Duplicate explicit class definition in configuration: " + clsName); } }
http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableFieldImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableFieldImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableFieldImpl.java deleted file mode 100644 index 80b0a6d..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableFieldImpl.java +++ /dev/null @@ -1,104 +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.internal.portable; - -import org.apache.ignite.internal.util.tostring.GridToStringExclude; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.portable.PortableField; -import org.apache.ignite.portable.PortableObject; - -/** - * Implementation of portable field descriptor. - */ -public class PortableFieldImpl implements PortableField { - /** Well-known object schemas. */ - @GridToStringExclude - private final PortableSchemaRegistry schemas; - - /** Field name. */ - private final String fieldName; - - /** Pre-calculated field ID. */ - private final int fieldId; - - /** - * Constructor. - * - * @param schemas Schemas. - * @param fieldName Field name. - * @param fieldId Field ID. - */ - public PortableFieldImpl(PortableSchemaRegistry schemas, String fieldName, int fieldId) { - assert schemas != null; - assert fieldName != null; - assert fieldId != 0; - - this.schemas = schemas; - this.fieldName = fieldName; - this.fieldId = fieldId; - } - - /** {@inheritDoc} */ - @Override public String name() { - return fieldName; - } - - /** {@inheritDoc} */ - @Override public boolean exists(PortableObject obj) { - PortableObjectEx obj0 = (PortableObjectEx)obj; - - return fieldOrder(obj0) != PortableSchema.ORDER_NOT_FOUND; - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Override public <T> T value(PortableObject obj) { - PortableObjectEx obj0 = (PortableObjectEx)obj; - - int order = fieldOrder(obj0); - - return order != PortableSchema.ORDER_NOT_FOUND ? (T)obj0.fieldByOrder(order) : null; - } - - /** - * Get relative field offset. - * - * @param obj Object. - * @return Field offset. - */ - private int fieldOrder(PortableObjectEx obj) { - int schemaId = obj.schemaId(); - - PortableSchema schema = schemas.schema(schemaId); - - if (schema == null) { - schema = obj.createSchema(); - - schemas.addSchema(schemaId, schema); - } - - assert schema != null; - - return schema.order(fieldId); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PortableFieldImpl.class, this); - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataCollector.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataCollector.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataCollector.java deleted file mode 100644 index 9a88bfb..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataCollector.java +++ /dev/null @@ -1,263 +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.internal.portable; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableRawWriter; -import org.apache.ignite.portable.PortableWriter; -import org.jetbrains.annotations.Nullable; - -/** - * Writer for meta data collection. - */ -class PortableMetaDataCollector implements PortableWriter { - /** */ - private final Map<String, String> meta = new HashMap<>(); - - /** */ - private final String typeName; - - /** - * @param typeName Type name. - */ - PortableMetaDataCollector(String typeName) { - this.typeName = typeName; - } - - /** - * @return Field meta data. - */ - Map<String, String> meta() { - return meta; - } - - /** {@inheritDoc} */ - @Override public void writeByte(String fieldName, byte val) throws PortableException { - add(fieldName, byte.class); - } - - /** {@inheritDoc} */ - @Override public void writeShort(String fieldName, short val) throws PortableException { - add(fieldName, short.class); - } - - /** {@inheritDoc} */ - @Override public void writeInt(String fieldName, int val) throws PortableException { - add(fieldName, int.class); - } - - /** {@inheritDoc} */ - @Override public void writeLong(String fieldName, long val) throws PortableException { - add(fieldName, long.class); - } - - /** {@inheritDoc} */ - @Override public void writeFloat(String fieldName, float val) throws PortableException { - add(fieldName, float.class); - } - - /** {@inheritDoc} */ - @Override public void writeDouble(String fieldName, double val) throws PortableException { - add(fieldName, double.class); - } - - /** {@inheritDoc} */ - @Override public void writeChar(String fieldName, char val) throws PortableException { - add(fieldName, char.class); - } - - /** {@inheritDoc} */ - @Override public void writeBoolean(String fieldName, boolean val) throws PortableException { - add(fieldName, boolean.class); - } - - /** {@inheritDoc} */ - @Override public void writeDecimal(String fieldName, @Nullable BigDecimal val) throws PortableException { - add(fieldName, PortableClassDescriptor.Mode.DECIMAL.typeName()); - } - - /** {@inheritDoc} */ - @Override public void writeString(String fieldName, @Nullable String val) throws PortableException { - add(fieldName, String.class); - } - - /** {@inheritDoc} */ - @Override public void writeUuid(String fieldName, @Nullable UUID val) throws PortableException { - add(fieldName, UUID.class); - } - - /** {@inheritDoc} */ - @Override public void writeDate(String fieldName, @Nullable Date val) throws PortableException { - add(fieldName, Date.class); - } - - /** {@inheritDoc} */ - @Override public void writeTimestamp(String fieldName, @Nullable Timestamp val) throws PortableException { - add(fieldName, Timestamp.class); - } - - /** {@inheritDoc} */ - @Override public <T extends Enum<?>> void writeEnum(String fieldName, T val) throws PortableException { - add(fieldName, Enum.class); - } - - /** {@inheritDoc} */ - @Override public <T extends Enum<?>> void writeEnumArray(String fieldName, T[] val) throws PortableException { - add(fieldName, Enum[].class); - } - - /** {@inheritDoc} */ - @Override public void writeObject(String fieldName, @Nullable Object obj) throws PortableException { - add(fieldName, Object.class); - } - - /** {@inheritDoc} */ - @Override public void writeByteArray(String fieldName, @Nullable byte[] val) throws PortableException { - add(fieldName, byte[].class); - } - - /** {@inheritDoc} */ - @Override public void writeShortArray(String fieldName, @Nullable short[] val) throws PortableException { - add(fieldName, short[].class); - } - - /** {@inheritDoc} */ - @Override public void writeIntArray(String fieldName, @Nullable int[] val) throws PortableException { - add(fieldName, int[].class); - } - - /** {@inheritDoc} */ - @Override public void writeLongArray(String fieldName, @Nullable long[] val) throws PortableException { - add(fieldName, long[].class); - } - - /** {@inheritDoc} */ - @Override public void writeFloatArray(String fieldName, @Nullable float[] val) throws PortableException { - add(fieldName, float[].class); - } - - /** {@inheritDoc} */ - @Override public void writeDoubleArray(String fieldName, @Nullable double[] val) throws PortableException { - add(fieldName, double[].class); - } - - /** {@inheritDoc} */ - @Override public void writeCharArray(String fieldName, @Nullable char[] val) throws PortableException { - add(fieldName, char[].class); - } - - /** {@inheritDoc} */ - @Override public void writeBooleanArray(String fieldName, @Nullable boolean[] val) throws PortableException { - add(fieldName, boolean[].class); - } - - /** {@inheritDoc} */ - @Override public void writeDecimalArray(String fieldName, @Nullable BigDecimal[] val) throws PortableException { - add(fieldName, PortableClassDescriptor.Mode.DECIMAL_ARR.typeName()); - } - - /** {@inheritDoc} */ - @Override public void writeStringArray(String fieldName, @Nullable String[] val) throws PortableException { - add(fieldName, String[].class); - } - - /** {@inheritDoc} */ - @Override public void writeUuidArray(String fieldName, @Nullable UUID[] val) throws PortableException { - add(fieldName, UUID[].class); - } - - /** {@inheritDoc} */ - @Override public void writeDateArray(String fieldName, @Nullable Date[] val) throws PortableException { - add(fieldName, Date[].class); - } - - /** {@inheritDoc} */ - @Override public void writeTimestampArray(String fieldName, @Nullable Timestamp[] val) throws PortableException { - add(fieldName, Timestamp[].class); - } - - /** {@inheritDoc} */ - @Override public void writeObjectArray(String fieldName, @Nullable Object[] val) throws PortableException { - add(fieldName, Object[].class); - } - - /** {@inheritDoc} */ - @Override public <T> void writeCollection(String fieldName, @Nullable Collection<T> col) - throws PortableException { - add(fieldName, Collection.class); - } - - /** {@inheritDoc} */ - @Override public <K, V> void writeMap(String fieldName, @Nullable Map<K, V> map) throws PortableException { - add(fieldName, Map.class); - } - - /** {@inheritDoc} */ - @Override public PortableRawWriter rawWriter() { - return (PortableRawWriter)Proxy.newProxyInstance(getClass().getClassLoader(), - new Class<?>[] { PortableRawWriterEx.class }, - new InvocationHandler() { - @Override public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable { - return null; - } - }); - } - - /** - * @param name Field name. - * @param fieldType Field type. - * @throws PortableException In case of error. - */ - private void add(String name, Class<?> fieldType) throws PortableException { - assert fieldType != null; - - add(name, fieldType.getSimpleName()); - } - - /** - * @param name Field name. - * @param fieldTypeName Field type name. - * @throws PortableException In case of error. - */ - private void add(String name, String fieldTypeName) throws PortableException { - assert name != null; - - String oldFieldTypeName = meta.put(name, fieldTypeName); - - if (oldFieldTypeName != null && !oldFieldTypeName.equals(fieldTypeName)) { - throw new PortableException( - "Field is written twice with different types [" + - "typeName=" + typeName + - ", fieldName=" + name + - ", fieldTypeName1=" + oldFieldTypeName + - ", fieldTypeName2=" + fieldTypeName + - ']' - ); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataHandler.java index e03d67f..8b2eef2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataHandler.java @@ -17,8 +17,8 @@ package org.apache.ignite.internal.portable; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMetadata; +import org.apache.ignite.binary.BinaryObjectException; +import org.apache.ignite.binary.BinaryType; /** * Portable meta data handler. @@ -29,16 +29,16 @@ public interface PortableMetaDataHandler { * * @param typeId Type ID. * @param meta Meta data. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - public void addMeta(int typeId, PortableMetadata meta) throws PortableException; + public void addMeta(int typeId, BinaryType meta) throws BinaryObjectException; /** * Gets meta data for provided type ID. * * @param typeId Type ID. * @return Meta data. - * @throws PortableException In case of error. + * @throws org.apache.ignite.binary.BinaryObjectException In case of error. */ - public PortableMetadata metadata(int typeId) throws PortableException; + public BinaryType metadata(int typeId) throws BinaryObjectException; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataImpl.java deleted file mode 100644 index 1d26007..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableMetaDataImpl.java +++ /dev/null @@ -1,150 +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.internal.portable; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import org.apache.ignite.internal.util.tostring.GridToStringInclude; -import org.apache.ignite.internal.util.typedef.internal.S; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMarshalAware; -import org.apache.ignite.portable.PortableMetadata; -import org.apache.ignite.portable.PortableRawReader; -import org.apache.ignite.portable.PortableRawWriter; -import org.apache.ignite.portable.PortableReader; -import org.apache.ignite.portable.PortableWriter; -import org.jetbrains.annotations.Nullable; - -/** - * Portable meta data implementation. - */ -public class PortableMetaDataImpl implements PortableMetadata, PortableMarshalAware, Externalizable { - /** */ - private static final long serialVersionUID = 0L; - - /** */ - private String typeName; - - /** */ - @GridToStringInclude - private Map<String, String> fields; - - /** */ - private volatile Map<Integer, String> fldIdToName; - - /** */ - private String affKeyFieldName; - - /** - * For {@link Externalizable}. - */ - public PortableMetaDataImpl() { - // No-op. - } - - /** - * @param typeName Type name. - * @param fields Fields map. - * @param affKeyFieldName Affinity key field name. - */ - public PortableMetaDataImpl(String typeName, @Nullable Map<String, String> fields, - @Nullable String affKeyFieldName) { - assert typeName != null; - - this.typeName = typeName; - this.fields = fields; - this.affKeyFieldName = affKeyFieldName; - } - - /** {@inheritDoc} */ - @Override public String typeName() { - return typeName; - } - - /** {@inheritDoc} */ - @Override public Collection<String> fields() { - return fields != null ? fields.keySet() : Collections.<String>emptyList(); - } - - /** - * @return Fields. - */ - public Map<String, String> fields0() { - return fields != null ? fields : Collections.<String, String>emptyMap(); - } - - /** {@inheritDoc} */ - @Nullable @Override public String fieldTypeName(String fieldName) { - return fields != null ? fields.get(fieldName) : null; - } - - /** {@inheritDoc} */ - @Nullable @Override public String affinityKeyFieldName() { - return affKeyFieldName; - } - - /** - * @return Fields meta data. - */ - public Map<String, String> fieldsMeta() { - return fields != null ? fields : Collections.<String, String>emptyMap(); - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - U.writeString(out, typeName); - U.writeMap(out, fields); - U.writeString(out, affKeyFieldName); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - typeName = U.readString(in); - fields = U.readMap(in); - affKeyFieldName = U.readString(in); - } - - /** {@inheritDoc} */ - @Override public void writePortable(PortableWriter writer) throws PortableException { - PortableRawWriter raw = writer.rawWriter(); - - raw.writeString(typeName); - raw.writeString(affKeyFieldName); - raw.writeMap(fields); - } - - /** {@inheritDoc} */ - @Override public void readPortable(PortableReader reader) throws PortableException { - PortableRawReader raw = reader.rawReader(); - - typeName = raw.readString(); - affKeyFieldName = raw.readString(); - fields = raw.readMap(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(PortableMetaDataImpl.class, this); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectEx.java deleted file mode 100644 index d6d7f50..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectEx.java +++ /dev/null @@ -1,245 +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.internal.portable; - -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.IdentityHashMap; -import org.apache.ignite.IgniteException; -import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeMemory; -import org.apache.ignite.internal.util.typedef.internal.SB; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableMetadata; -import org.apache.ignite.portable.PortableObject; -import org.jetbrains.annotations.Nullable; - -/** - * Internal portable object interface. - */ -public abstract class PortableObjectEx implements PortableObject { - /** - * @return Length. - */ - public abstract int length(); - - /** - * @return Object start. - */ - public abstract int start(); - - /** - * @return {@code True} if object is array based. - */ - protected abstract boolean hasArray(); - - /** - * @return Object array if object is array based, otherwise {@code null}. - */ - public abstract byte[] array(); - - /** - * @return Object offheap address is object is offheap based, otherwise 0. - */ - public abstract long offheapAddress(); - - /** - * Gets field value. - * - * @param fieldId Field ID. - * @return Field value. - * @throws PortableException In case of any other error. - */ - @Nullable public abstract <F> F field(int fieldId) throws PortableException; - - /** - * Get field by offset. - * - * @param fieldOffset Field offset. - * @return Field value. - */ - @Nullable protected abstract <F> F fieldByOrder(int fieldOffset); - - /** - * @param ctx Reader context. - * @param fieldName Field name. - * @return Field value. - */ - @Nullable protected abstract <F> F field(PortableReaderContext ctx, String fieldName); - - /** - * Get schema ID. - * - * @return Schema ID. - */ - protected abstract int schemaId(); - - /** - * Create schema for object. - * - * @return Schema. - */ - protected abstract PortableSchema createSchema(); - - /** {@inheritDoc} */ - @Override public PortableObject clone() throws CloneNotSupportedException { - return (PortableObject)super.clone(); - } - - /** {@inheritDoc} */ - public boolean equals(Object other) { - if (other == this) - return true; - - if (other == null) - return false; - - if (!(other instanceof PortableObjectEx)) - return false; - - PortableObjectEx otherPo = (PortableObjectEx)other; - - if (length() != otherPo.length() || typeId() != otherPo.typeId()) - return false; - - if (hasArray()) { - if (otherPo.hasArray()) { - int len = length(); - int end = start() + len; - - byte[] arr = array(); - byte[] otherArr = otherPo.array(); - - for (int i = start(), j = otherPo.start(); i < end; i++, j++) { - if (arr[i] != otherArr[j]) - return false; - } - - return true; - } - else { - assert otherPo.offheapAddress() > 0; - - return GridUnsafeMemory.compare(otherPo.offheapAddress() + otherPo.start(), array()); - } - } - else { - assert offheapAddress() > 0; - - if (otherPo.hasArray()) - return GridUnsafeMemory.compare(offheapAddress() + start(), otherPo.array()); - else { - assert otherPo.offheapAddress() > 0; - - return GridUnsafeMemory.compare(offheapAddress() + start(), - otherPo.offheapAddress() + otherPo.start(), - length()); - } - } - } - - /** - * @param ctx Reader context. - * @param handles Handles for already traversed objects. - * @return String representation. - */ - private String toString(PortableReaderContext ctx, IdentityHashMap<PortableObject, Integer> handles) { - int idHash = System.identityHashCode(this); - - PortableMetadata meta; - - try { - meta = metaData(); - } - catch (PortableException ignore) { - meta = null; - } - - if (meta == null) - return "PortableObject [hash=" + idHash + ", typeId=" + typeId() + ']'; - - handles.put(this, idHash); - - SB buf = new SB(meta.typeName()); - - if (meta.fields() != null) { - buf.a(" [hash=").a(idHash); - - for (String name : meta.fields()) { - Object val = field(ctx, name); - - buf.a(", ").a(name).a('='); - - if (val instanceof byte[]) - buf.a(Arrays.toString((byte[]) val)); - else if (val instanceof short[]) - buf.a(Arrays.toString((short[])val)); - else if (val instanceof int[]) - buf.a(Arrays.toString((int[])val)); - else if (val instanceof long[]) - buf.a(Arrays.toString((long[])val)); - else if (val instanceof float[]) - buf.a(Arrays.toString((float[])val)); - else if (val instanceof double[]) - buf.a(Arrays.toString((double[])val)); - else if (val instanceof char[]) - buf.a(Arrays.toString((char[])val)); - else if (val instanceof boolean[]) - buf.a(Arrays.toString((boolean[]) val)); - else if (val instanceof BigDecimal[]) - buf.a(Arrays.toString((BigDecimal[])val)); - else { - if (val instanceof PortableObjectEx) { - PortableObjectEx po = (PortableObjectEx)val; - - Integer idHash0 = handles.get(val); - - if (idHash0 != null) { // Circular reference. - PortableMetadata meta0 = po.metaData(); - - assert meta0 != null; - - buf.a(meta0.typeName()).a(" [hash=").a(idHash0).a(", ...]"); - } - else - buf.a(po.toString(ctx, handles)); - } - else - buf.a(val); - } - } - - buf.a(']'); - } - - return buf.toString(); - } - - /** {@inheritDoc} */ - @Override public String toString() { - try { - PortableReaderContext ctx = new PortableReaderContext(); - - ctx.setPortableHandler(start(), this); - - return toString(ctx, new IdentityHashMap<PortableObject, Integer>()); - } - catch (PortableException e) { - throw new IgniteException("Failed to create string representation of portable object.", e); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectImpl.java deleted file mode 100644 index 1d1be2b..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectImpl.java +++ /dev/null @@ -1,586 +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.internal.portable; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.internal.GridDirectTransient; -import org.apache.ignite.internal.IgniteCodeGeneratingFail; -import org.apache.ignite.internal.portable.streams.PortableHeapInputStream; -import org.apache.ignite.internal.processors.cache.CacheObject; -import org.apache.ignite.internal.processors.cache.CacheObjectContext; -import org.apache.ignite.internal.processors.cache.KeyCacheObject; -import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl; -import org.apache.ignite.internal.util.typedef.internal.A; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.plugin.extensions.communication.Message; -import org.apache.ignite.plugin.extensions.communication.MessageReader; -import org.apache.ignite.plugin.extensions.communication.MessageWriter; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableField; -import org.apache.ignite.portable.PortableMetadata; -import org.apache.ignite.portable.PortableObject; -import org.jetbrains.annotations.Nullable; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.sql.Timestamp; -import java.util.Date; -import java.util.UUID; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.BOOLEAN; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.BYTE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.CHAR; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DATE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DECIMAL; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.INT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.LONG; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.TIMESTAMP; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.UUID; - -/** - * Portable object implementation. - */ -@IgniteCodeGeneratingFail // Fields arr and start should not be generated by MessageCodeGenerator. -public final class PortableObjectImpl extends PortableObjectEx implements Externalizable, - Message, CacheObject, KeyCacheObject { - /** */ - public static final byte TYPE_PORTABLE = 100; - - /** */ - private static final long serialVersionUID = 0L; - - /** */ - @GridDirectTransient - private PortableContext ctx; - - /** */ - private byte[] arr; - - /** */ - private int start; - - /** */ - @GridDirectTransient - private Object obj; - - /** */ - @GridDirectTransient - private boolean detachAllowed; - - /** - * For {@link Externalizable}. - */ - public PortableObjectImpl() { - // No-op. - } - - /** - * @param ctx Context. - * @param arr Array. - * @param start Start. - */ - public PortableObjectImpl(PortableContext ctx, byte[] arr, int start) { - assert ctx != null; - assert arr != null; - - this.ctx = ctx; - this.arr = arr; - this.start = start; - } - - /** {@inheritDoc} */ - @Override public byte type() { - return TYPE_PORTABLE; - } - - /** {@inheritDoc} */ - @Override public boolean internal() { - return false; - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) { - return (T)this; - } - - /** {@inheritDoc} */ - @Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException { - if (detached()) - return array(); - - int len = length(); - - byte[] arr0 = new byte[len]; - - U.arrayCopy(arr, start, arr0, 0, len); - - return arr0; - } - - /** {@inheritDoc} */ - @Override public CacheObject prepareForCache(CacheObjectContext ctx) { - if (detached()) - return this; - - return (PortableObjectImpl)detach(); - } - - /** {@inheritDoc} */ - @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException { - this.ctx = ((CacheObjectPortableProcessorImpl)ctx.processor()).portableContext(); - } - - /** {@inheritDoc} */ - @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException { - // No-op. - } - - /** {@inheritDoc} */ - @Override public int length() { - return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.TOTAL_LEN_POS); - } - - /** - * @return Detached portable object. - */ - public PortableObject detach() { - if (!detachAllowed || detached()) - return this; - - int len = length(); - - byte[] arr0 = new byte[len]; - - U.arrayCopy(arr, start, arr0, 0, len); - - return new PortableObjectImpl(ctx, arr0, 0); - } - - /** - * @return Detached or not. - */ - public boolean detached() { - return start == 0 && length() == arr.length; - } - - /** - * @param detachAllowed Detach allowed flag. - */ - public void detachAllowed(boolean detachAllowed) { - this.detachAllowed = detachAllowed; - } - - /** - * @return Context. - */ - public PortableContext context() { - return ctx; - } - - /** - * @param ctx Context. - */ - public void context(PortableContext ctx) { - this.ctx = ctx; - } - - /** {@inheritDoc} */ - @Override public byte[] array() { - return arr; - } - - /** {@inheritDoc} */ - @Override public int start() { - return start; - } - - /** {@inheritDoc} */ - @Override public long offheapAddress() { - return 0; - } - - /** {@inheritDoc} */ - @Override protected boolean hasArray() { - return true; - } - - /** {@inheritDoc} */ - @Override public int typeId() { - return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.TYPE_ID_POS); - } - - /** {@inheritDoc} */ - @Nullable @Override public PortableMetadata metaData() throws PortableException { - if (ctx == null) - throw new PortableException("PortableContext is not set for the object."); - - return ctx.metaData(typeId()); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(String fieldName) throws PortableException { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - return (F)reader.unmarshalField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(int fieldId) throws PortableException { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - return (F)reader.unmarshalField(fieldId); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F fieldByOrder(int order) { - Object val; - - // Calculate field position. - int schemaOffset = PortablePrimitives.readInt(arr, start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS); - - short flags = PortablePrimitives.readShort(arr, start + GridPortableMarshaller.FLAGS_POS); - int fieldOffsetSize = PortableUtils.fieldOffsetSize(flags); - - int fieldOffsetPos = start + schemaOffset + order * (4 + fieldOffsetSize) + 4; - - int fieldPos; - - if (fieldOffsetSize == PortableUtils.OFFSET_1) - fieldPos = start + ((int)PortablePrimitives.readByte(arr, fieldOffsetPos) & 0xFF); - else if (fieldOffsetSize == PortableUtils.OFFSET_2) - fieldPos = start + ((int)PortablePrimitives.readShort(arr, fieldOffsetPos) & 0xFFFF); - else - fieldPos = start + PortablePrimitives.readInt(arr, fieldOffsetPos); - - // Read header and try performing fast lookup for well-known types (the most common types go first). - byte hdr = PortablePrimitives.readByte(arr, fieldPos); - - switch (hdr) { - case INT: - val = PortablePrimitives.readInt(arr, fieldPos + 1); - - break; - - case LONG: - val = PortablePrimitives.readLong(arr, fieldPos + 1); - - break; - - case BOOLEAN: - val = PortablePrimitives.readBoolean(arr, fieldPos + 1); - - break; - - case SHORT: - val = PortablePrimitives.readShort(arr, fieldPos + 1); - - break; - - case BYTE: - val = PortablePrimitives.readByte(arr, fieldPos + 1); - - break; - - case CHAR: - val = PortablePrimitives.readChar(arr, fieldPos + 1); - - break; - - case FLOAT: - val = PortablePrimitives.readFloat(arr, fieldPos + 1); - - break; - - case DOUBLE: - val = PortablePrimitives.readDouble(arr, fieldPos + 1); - - break; - - case STRING: { - boolean utf = PortablePrimitives.readBoolean(arr, fieldPos + 1); - - if (utf) { - int dataLen = PortablePrimitives.readInt(arr, fieldPos + 2); - - val = new String(arr, fieldPos + 6, dataLen, UTF_8); - } - else { - int dataLen = PortablePrimitives.readInt(arr, fieldPos + 2); - char[] data = PortablePrimitives.readCharArray(arr, fieldPos + 6, dataLen); - - val = String.valueOf(data); - } - - break; - } - - case DATE: { - long time = PortablePrimitives.readLong(arr, fieldPos + 1); - - val = new Date(time); - - break; - } - - case TIMESTAMP: { - long time = PortablePrimitives.readLong(arr, fieldPos + 1); - int nanos = PortablePrimitives.readInt(arr, fieldPos + 1 + 8); - - Timestamp ts = new Timestamp(time); - - ts.setNanos(ts.getNanos() + nanos); - - val = ts; - - break; - } - - case UUID: { - long most = PortablePrimitives.readLong(arr, fieldPos + 1); - long least = PortablePrimitives.readLong(arr, fieldPos + 1 + 8); - - val = new UUID(most, least); - - break; - } - - case DECIMAL: { - int scale = PortablePrimitives.readInt(arr, fieldPos + 1); - - int dataLen = PortablePrimitives.readInt(arr, fieldPos + 5); - byte[] data = PortablePrimitives.readByteArray(arr, fieldPos + 9, dataLen); - - BigInteger intVal = new BigInteger(data); - - if (scale < 0) { - scale &= 0x7FFFFFFF; - - intVal = intVal.negate(); - } - - val = new BigDecimal(intVal, scale); - - break; - } - - case NULL: - val = null; - - break; - - default: { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - val = reader.unmarshalFieldByAbsolutePosition(fieldPos); - } - } - - return (F)val; - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F field(PortableReaderContext rCtx, String fieldName) { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableHeapInputStream(arr), - start, - null, - rCtx); - - return (F)reader.unmarshalField(fieldName); - } - - /** {@inheritDoc} */ - @Override public boolean hasField(String fieldName) { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - return reader.hasField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T deserialize() throws PortableException { - Object obj0 = obj; - - if (obj0 == null) { - // TODO: IGNITE-1272 - Deserialize with proper class loader. - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - obj0 = reader.deserialize(); - - PortableClassDescriptor desc = reader.descriptor(); - - assert desc != null; - - if (desc.keepDeserialized()) - obj = obj0; - } - - return (T)obj0; - } - - /** {@inheritDoc} */ - @Override public PortableObject clone() throws CloneNotSupportedException { - return super.clone(); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.HASH_CODE_POS); - } - - /** {@inheritDoc} */ - @Override protected int schemaId() { - return PortablePrimitives.readInt(arr, start + GridPortableMarshaller.SCHEMA_ID_POS); - } - - /** {@inheritDoc} */ - @Override protected PortableSchema createSchema() { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, arr, start, null); - - return reader.createSchema(); - } - - /** {@inheritDoc} */ - @Override public PortableField fieldDescriptor(String fieldName) throws PortableException { - A.notNull(fieldName, "fieldName"); - - int typeId = typeId(); - - PortableSchemaRegistry schemaReg = ctx.schemaRegistry(typeId); - - int fieldId = ctx.userTypeIdMapper(typeId).fieldId(typeId, fieldName); - - return new PortableFieldImpl(schemaReg, fieldName, fieldId); - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(ctx); - - if (detachAllowed) { - int len = length(); - - out.writeInt(len); - out.write(arr, start, len); - out.writeInt(0); - } - else { - out.writeInt(arr.length); - out.write(arr); - out.writeInt(start); - } - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - ctx = (PortableContext)in.readObject(); - - arr = new byte[in.readInt()]; - - in.readFully(arr); - - start = in.readInt(); - } - - /** {@inheritDoc} */ - @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { - writer.setBuffer(buf); - - if (!writer.isHeaderWritten()) { - if (!writer.writeHeader(directType(), fieldsCount())) - return false; - - writer.onHeaderWritten(); - } - - switch (writer.state()) { - case 0: - if (!writer.writeByteArray("arr", - arr, - detachAllowed ? start : 0, - detachAllowed ? length() : arr.length)) - return false; - - writer.incrementState(); - - case 1: - if (!writer.writeInt("start", detachAllowed ? 0 : start)) - return false; - - writer.incrementState(); - - } - - return true; - } - - /** {@inheritDoc} */ - @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) { - reader.setBuffer(buf); - - if (!reader.beforeMessageRead()) - return false; - - switch (reader.state()) { - case 0: - arr = reader.readByteArray("arr"); - - if (!reader.isLastRead()) - return false; - - reader.incrementState(); - - case 1: - start = reader.readInt("start"); - - if (!reader.isLastRead()) - return false; - - reader.incrementState(); - - } - - return true; - } - - /** {@inheritDoc} */ - @Override public byte directType() { - return 113; - } - - /** {@inheritDoc} */ - @Override public byte fieldsCount() { - return 3; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectOffheapImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectOffheapImpl.java deleted file mode 100644 index 3027f76..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableObjectOffheapImpl.java +++ /dev/null @@ -1,458 +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.internal.portable; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.sql.Timestamp; -import java.util.Date; -import java.util.UUID; - -import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.internal.portable.streams.PortableOffheapInputStream; -import org.apache.ignite.internal.processors.cache.CacheObject; -import org.apache.ignite.internal.processors.cache.CacheObjectContext; -import org.apache.ignite.internal.util.GridUnsafe; -import org.apache.ignite.internal.util.typedef.internal.A; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.plugin.extensions.communication.MessageReader; -import org.apache.ignite.plugin.extensions.communication.MessageWriter; -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableField; -import org.apache.ignite.portable.PortableMetadata; -import org.apache.ignite.portable.PortableObject; -import org.jetbrains.annotations.Nullable; -import sun.misc.Unsafe; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.BOOLEAN; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.BYTE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.CHAR; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DATE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DECIMAL; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.INT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.LONG; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.NULL; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.SHORT; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.STRING; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.TIMESTAMP; -import static org.apache.ignite.internal.portable.GridPortableMarshaller.UUID; - -/** - * Portable object implementation over offheap memory - */ -public class PortableObjectOffheapImpl extends PortableObjectEx implements Externalizable, CacheObject { - /** */ - private static final long serialVersionUID = 0L; - - /** */ - private static final Unsafe UNSAFE = GridUnsafe.unsafe(); - - /** */ - private final PortableContext ctx; - - /** */ - private final long ptr; - - /** */ - private final int start; - - /** */ - private final int size; - - /** - * For {@link Externalizable} (not supported). - */ - public PortableObjectOffheapImpl() { - throw new UnsupportedOperationException(); - } - - /** - * @param ctx Context. - * @param ptr Memory address. - * @param start Object start. - * @param size Memory size. - */ - public PortableObjectOffheapImpl(PortableContext ctx, long ptr, int start, int size) { - this.ctx = ctx; - this.ptr = ptr; - this.start = start; - this.size = size; - } - - /** - * @return Heap-based copy. - */ - public PortableObject heapCopy() { - return new PortableObjectImpl(ctx, U.copyMemory(ptr, size), start); - } - - /** {@inheritDoc} */ - @Override public int typeId() { - return UNSAFE.getInt(ptr + start + GridPortableMarshaller.TYPE_ID_POS); - } - - /** {@inheritDoc} */ - @Override public int length() { - return UNSAFE.getInt(ptr + start + GridPortableMarshaller.TOTAL_LEN_POS); - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return UNSAFE.getInt(ptr + start + GridPortableMarshaller.HASH_CODE_POS); - } - - /** {@inheritDoc} */ - @Override protected int schemaId() { - return UNSAFE.getInt(ptr + start + GridPortableMarshaller.SCHEMA_ID_POS); - } - - /** {@inheritDoc} */ - @Override protected PortableSchema createSchema() { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - return reader.createSchema(); - } - - /** {@inheritDoc} */ - @Override public PortableField fieldDescriptor(String fieldName) throws PortableException { - A.notNull(fieldName, "fieldName"); - - int typeId = typeId(); - - PortableSchemaRegistry schemaReg = ctx.schemaRegistry(typeId); - - int fieldId = ctx.userTypeIdMapper(typeId).fieldId(typeId, fieldName); - - return new PortableFieldImpl(schemaReg, fieldName, fieldId); - } - - /** {@inheritDoc} */ - @Override public int start() { - return start; - } - - /** {@inheritDoc} */ - @Override public byte[] array() { - return null; - } - - /** {@inheritDoc} */ - @Override public long offheapAddress() { - return ptr; - } - - /** {@inheritDoc} */ - @Override protected boolean hasArray() { - return false; - } - - /** {@inheritDoc} */ - @Nullable @Override public PortableMetadata metaData() throws PortableException { - if (ctx == null) - throw new PortableException("PortableContext is not set for the object."); - - return ctx.metaData(typeId()); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(String fieldName) throws PortableException { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - return (F)reader.unmarshalField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <F> F field(int fieldId) throws PortableException { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - return (F)reader.unmarshalField(fieldId); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F fieldByOrder(int order) { - Object val; - - // Calculate field position. - int schemaOffset = PortablePrimitives.readInt(ptr, start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS); - - short flags = PortablePrimitives.readShort(ptr, start + GridPortableMarshaller.FLAGS_POS); - int fieldOffsetSize = PortableUtils.fieldOffsetSize(flags); - - int fieldOffsetPos = start + schemaOffset + order * (4 + fieldOffsetSize) + 4; - - int fieldPos; - - if (fieldOffsetSize == PortableUtils.OFFSET_1) - fieldPos = start + ((int)PortablePrimitives.readByte(ptr, fieldOffsetPos) & 0xFF); - else if (fieldOffsetSize == PortableUtils.OFFSET_2) - fieldPos = start + ((int)PortablePrimitives.readShort(ptr, fieldOffsetPos) & 0xFFFF); - else - fieldPos = start + PortablePrimitives.readInt(ptr, fieldOffsetPos); - - // Read header and try performing fast lookup for well-known types (the most common types go first). - byte hdr = PortablePrimitives.readByte(ptr, fieldPos); - - switch (hdr) { - case INT: - val = PortablePrimitives.readInt(ptr, fieldPos + 1); - - break; - - case LONG: - val = PortablePrimitives.readLong(ptr, fieldPos + 1); - - break; - - case BOOLEAN: - val = PortablePrimitives.readBoolean(ptr, fieldPos + 1); - - break; - - case SHORT: - val = PortablePrimitives.readShort(ptr, fieldPos + 1); - - break; - - case BYTE: - val = PortablePrimitives.readByte(ptr, fieldPos + 1); - - break; - - case CHAR: - val = PortablePrimitives.readChar(ptr, fieldPos + 1); - - break; - - case FLOAT: - val = PortablePrimitives.readFloat(ptr, fieldPos + 1); - - break; - - case DOUBLE: - val = PortablePrimitives.readDouble(ptr, fieldPos + 1); - - break; - - case STRING: { - boolean utf = PortablePrimitives.readBoolean(ptr, fieldPos + 1); - - if (utf) { - int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 2); - byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 6, dataLen); - - val = new String(data, UTF_8); - } - else { - int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 2); - char[] data = PortablePrimitives.readCharArray(ptr, fieldPos + 6, dataLen); - - val = String.valueOf(data); - } - - break; - } - - case DATE: { - long time = PortablePrimitives.readLong(ptr, fieldPos + 1); - - val = new Date(time); - - break; - } - - case TIMESTAMP: { - long time = PortablePrimitives.readLong(ptr, fieldPos + 1); - int nanos = PortablePrimitives.readInt(ptr, fieldPos + 1 + 8); - - Timestamp ts = new Timestamp(time); - - ts.setNanos(ts.getNanos() + nanos); - - val = ts; - - break; - } - - case UUID: { - long most = PortablePrimitives.readLong(ptr, fieldPos + 1); - long least = PortablePrimitives.readLong(ptr, fieldPos + 1 + 8); - - val = new UUID(most, least); - - break; - } - - case DECIMAL: { - int scale = PortablePrimitives.readInt(ptr, fieldPos + 1); - - int dataLen = PortablePrimitives.readInt(ptr, fieldPos + 5); - byte[] data = PortablePrimitives.readByteArray(ptr, fieldPos + 9, dataLen); - - BigInteger intVal = new BigInteger(data); - - if (scale < 0) { - scale &= 0x7FFFFFFF; - - intVal = intVal.negate(); - } - - val = new BigDecimal(intVal, scale); - - break; - } - - case NULL: - val = null; - - break; - - default: { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - val = reader.unmarshalFieldByAbsolutePosition(fieldPos); - } - } - - return (F)val; - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override protected <F> F field(PortableReaderContext rCtx, String fieldName) { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null, - rCtx); - - return (F)reader.unmarshalField(fieldName); - } - - /** {@inheritDoc} */ - @Override public boolean hasField(String fieldName) { - PortableReaderExImpl reader = new PortableReaderExImpl(ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - return reader.hasField(fieldName); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T deserialize() throws PortableException { - // TODO: IGNITE-1272 - Deserialize with proper class loader. - PortableReaderExImpl reader = new PortableReaderExImpl( - ctx, - new PortableOffheapInputStream(ptr, size, false), - start, - null); - - return (T)reader.deserialize(); - } - - /** {@inheritDoc} */ - @SuppressWarnings("CloneDoesntCallSuperClone") - @Override public PortableObject clone() throws CloneNotSupportedException { - return heapCopy(); - } - - /** {@inheritDoc} */ - @Override public byte type() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Nullable @Override public <T> T value(CacheObjectContext ctx, boolean cpy) { - return (T)this; - } - - /** {@inheritDoc} */ - @Override public byte[] valueBytes(CacheObjectContext ctx) throws IgniteCheckedException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public CacheObject prepareForCache(CacheObjectContext ctx) { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void finishUnmarshal(CacheObjectContext ctx, ClassLoader ldr) throws IgniteCheckedException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void prepareMarshal(CacheObjectContext ctx) throws IgniteCheckedException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public boolean readFrom(ByteBuffer buf, MessageReader reader) { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public byte directType() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public byte fieldsCount() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - throw new UnsupportedOperationException(); // To make sure it is not marshalled. - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - throw new UnsupportedOperationException(); // To make sure it is not marshalled. - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/b783d2b7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableRawReaderEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableRawReaderEx.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableRawReaderEx.java deleted file mode 100644 index e703f2f..0000000 --- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableRawReaderEx.java +++ /dev/null @@ -1,33 +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.internal.portable; - -import org.apache.ignite.portable.PortableException; -import org.apache.ignite.portable.PortableRawReader; -import org.jetbrains.annotations.Nullable; - -/** - * Extended reader interface. - */ -public interface PortableRawReaderEx extends PortableRawReader { - /** - * @return Object. - * @throws PortableException In case of error. - */ - @Nullable public Object readObjectDetached() throws PortableException; -} \ No newline at end of file