static boolean shouldCache(Object value) { return value instanceof Data && !((Data) value).isPortable(); }
static boolean shouldCache(Object value) { return value instanceof Data && !((Data) value).isPortable(); }
/** * @return Data (in this case it's portable) or Object (in this case it's non-portable) */ private static Object getTargetObject(InternalSerializationService serializationService, Object target) { Data targetData; if (target instanceof Portable) { targetData = serializationService.toData(target); if (targetData.isPortable()) { return targetData; } } if (target instanceof Data) { targetData = (Data) target; if (targetData.isPortable()) { return targetData; } else { // convert non-portable Data to object return serializationService.toObject(target); } } return target; }
public PortableReader createPortableReader(Data data) throws IOException { if (!data.isPortable()) { throw new IllegalArgumentException("Given data is not Portable! -> " + data.getType()); } BufferObjectDataInput in = createObjectDataInput(data); return portableSerializer.createReader(in); }
public PortableReader createPortableReader(Data data) throws IOException { if (!data.isPortable()) { throw new IllegalArgumentException("Given data is not Portable! -> " + data.getType()); } BufferObjectDataInput in = createObjectDataInput(data); return portableSerializer.createReader(in); }
/** * Returns the form of this data that is queryable. * Returns {@link Data} if {@code target} is * <ul> * <li>a portable object either in Data form or Object form</li> * <li>a {@link HazelcastJsonValue} in Data form</li> * </ul> * Otherwise, returns object form. * * @return Data or Object */ private Object getTargetObject(Object target) { Data targetData; if (target instanceof Portable) { targetData = ss.toData(target); if (targetData.isPortable()) { return targetData; } } if (target instanceof Data) { targetData = (Data) target; if (targetData.isPortable() || targetData.isJson()) { return targetData; } else { // convert non-portable Data to object return ss.toObject(target); } } return target; }
@Override protected Object getTargetObject(boolean key) { Object targetObject; if (key) { // keyData is never null if (keyData.isPortable()) { targetObject = keyData; } else { targetObject = getKey(); } } else { if (valueObject == null) { if (valueData.isPortable()) { targetObject = valueData; } else { targetObject = getValue(); } } else { if (valueObject instanceof Portable) { targetObject = getValueData(); } else { targetObject = getValue(); } } } return targetObject; }
@Override protected Object getTargetObject(boolean key) { Object targetObject; if (key) { // keyData is never null if (keyData.isPortable() || keyData.isJson()) { targetObject = keyData; } else { targetObject = getKey(); } } else { if (valueObject == null) { if (valueData.isPortable() || valueData.isJson()) { targetObject = valueData; } else { targetObject = getValue(); } } else { if (valueObject instanceof Portable) { targetObject = getValueData(); } else { targetObject = getValue(); } } } return targetObject; }
@Override public ClassDefinition lookupClassDefinition(Data data) throws IOException { if (!data.isPortable()) { throw new IllegalArgumentException("Data is not Portable!"); } BufferObjectDataInput in = serializationService.createObjectDataInput(data); int factoryId = in.readInt(); int classId = in.readInt(); int version = in.readInt(); ClassDefinition classDefinition = lookupClassDefinition(factoryId, classId, version); if (classDefinition == null) { classDefinition = readClassDefinition(in, factoryId, classId, version); } return classDefinition; }
@Override public ClassDefinition lookupClassDefinition(Data data) throws IOException { if (!data.isPortable()) { throw new IllegalArgumentException("Data is not Portable!"); } BufferObjectDataInput in = serializationService.createObjectDataInput(data); int factoryId = in.readInt(); int classId = in.readInt(); int version = in.readInt(); ClassDefinition classDefinition = lookupClassDefinition(factoryId, classId, version); if (classDefinition == null) { classDefinition = readClassDefinition(in, factoryId, classId, version); } return classDefinition; }
private Getter instantiateGetter(Object targetObject, String attributeName) { String attributeNameWithoutArguments = extractAttributeNameNameWithoutArguments(attributeName); ValueExtractor valueExtractor = extractors.get(attributeNameWithoutArguments); if (valueExtractor != null) { Object arguments = argumentsParser.parse(extractArgumentsFromAttributeName(attributeName)); return new ExtractorGetter(ss, valueExtractor, arguments); } else { if (targetObject instanceof Data) { if (((Data) targetObject).isPortable()) { if (genericPortableGetter == null) { // will be initialised a couple of times in the worst case genericPortableGetter = new PortableGetter(ss); } return genericPortableGetter; } else if (((Data) targetObject).isJson()) { if (jsonDataGetter == null) { // will be initialised a couple of times in the worst case jsonDataGetter = new JsonDataGetter(); } return jsonDataGetter; } else { throw new HazelcastSerializationException("No Data getter found for type " + ((Data) targetObject).getType()); } } else if (targetObject instanceof HazelcastJsonValue) { return JsonGetter.INSTANCE; } else { return ReflectionHelper.createGetter(targetObject, attributeName); } } }