List of usage examples for org.springframework.data.util TypeInformation isMap
boolean isMap();
From source file:io.twipple.springframework.data.clusterpoint.convert.DefaultClusterpointEntityConverter.java
/** * Read an incoming {@link ClusterpointDocument} into the target entity. * * @param type the type information of the target entity. * @param source the document to convert. * @param parent an optional parent object. * @param <R> the entity type./*from w ww . j a v a2 s.co m*/ * @return the converted entity. */ @NotNull @SuppressWarnings("unchecked") protected <R> R read(@NotNull TypeInformation<R> type, @NotNull ClusterpointDocument source, Object parent) { Assert.notNull(type); Assert.notNull(source); TypeInformation<? extends R> typeToUse = typeMapper.readType(source, type); Class<? extends R> rawType = typeToUse.getType(); // TODO: handle custom conversions for DOMDocument and DOMElement. // Since ClusterpointDocument is a holder of a DOMDocument, it might happen that there is a custom conversion // for either DOMDocument or the root DOMElement. if (conversions.hasCustomReadTarget(source.getClass(), rawType)) { return conversionService.convert(source, rawType); } if (typeToUse.isMap()) { return (R) readMap(typeToUse, source, parent); } if (typeToUse.isCollectionLike()) { return (R) readCollection(typeToUse, source, parent); } ClusterpointPersistentEntity<R> entity = (ClusterpointPersistentEntity<R>) mappingContext .getPersistentEntity(typeToUse); if (entity == null) { throw new MappingException("No mapping metadata found for " + rawType.getName()); } return read(entity, source, parent); }
From source file:org.springframework.data.crate.core.convert.CrateDocumentConverter.java
/** * // w w w . ja v a 2s . c o m * @param root container for the converted payload * @param payload value to be converted to {@link CrateDocument} */ @SuppressWarnings("unchecked") private void toCrateDocument(CrateDocument root, Object payload) { Map<String, Object> map = (Map<String, Object>) payload; for (Entry<String, Object> entry : map.entrySet()) { TypeInformation<?> type = getTypeInformation(entry.getValue().getClass()); if (type.isMap()) { CrateDocument document = new CrateDocument(); toCrateDocument(document, entry.getValue()); logger.debug("converted '{}' to CrateDocument", entry.getKey()); root.put(entry.getKey(), document); } else if (type.isCollectionLike()) { CrateArray array = new CrateArray(); toCrateArray(array, entry.getValue()); logger.debug("converted '{}' to CrateArray", entry.getKey()); root.put(entry.getKey(), array); } else { // simple type root.put(entry.getKey(), entry.getValue()); } } }
From source file:org.springframework.data.crate.core.convert.CrateDocumentConverter.java
/** * Nesting Array or Collection types is not supported by crate. It is safe to assume that the payload * will contain either a Map or a primitive type. Map types will be converted to {@link CrateDocument} * while simple types will be added without any conversion * @param array {@link CrateArray} for adding either Map or Simple types * @param payload containing either a Map or primitive type. *///from w w w . j av a 2 s.c o m @SuppressWarnings("unchecked") private void toCrateArray(CrateArray array, Object payload) { Collection<Object> objects = (Collection<Object>) (payload.getClass().isArray() ? asList((Object[]) payload) : payload); for (Object object : objects) { TypeInformation<?> type = getTypeInformation(object.getClass()); if (type.isMap()) { CrateDocument document = new CrateDocument(); toCrateDocument(document, object); array.add(document); } else { array.add(object); } } }
From source file:org.springframework.data.mongodb.core.convert.MappingMongoConverter.java
@SuppressWarnings("unchecked") protected <S extends Object> S read(TypeInformation<S> type, DBObject dbo) { if (null == dbo) { return null; }//from ww w .j av a 2s .com TypeInformation<? extends S> typeToUse = typeMapper.readType(dbo, type); Class<? extends S> rawType = typeToUse.getType(); if (conversions.hasCustomReadTarget(dbo.getClass(), rawType)) { return conversionService.convert(dbo, rawType); } if (DBObject.class.isAssignableFrom(rawType)) { return (S) dbo; } if (typeToUse.isCollectionLike() && dbo instanceof BasicDBList) { return (S) readCollectionOrArray(typeToUse, (BasicDBList) dbo); } if (typeToUse.isMap()) { return (S) readMap(typeToUse, dbo); } // Retrieve persistent entity info MongoPersistentEntity<S> persistentEntity = (MongoPersistentEntity<S>) mappingContext .getPersistentEntity(typeToUse); if (persistentEntity == null) { throw new MappingException("No mapping metadata found for " + rawType.getName()); } return read(persistentEntity, dbo); }
From source file:org.springframework.data.mongodb.core.convert.MappingMongoConverter.java
@SuppressWarnings({ "unchecked" }) protected void writePropertyInternal(Object obj, DBObject dbo, MongoPersistentProperty prop) { if (obj == null) { return;//from www. ja va 2 s. c o m } String name = prop.getFieldName(); TypeInformation<?> valueType = ClassTypeInformation.from(obj.getClass()); TypeInformation<?> type = prop.getTypeInformation(); if (valueType.isCollectionLike()) { DBObject collectionInternal = createCollection(asCollection(obj), prop); dbo.put(name, collectionInternal); return; } if (valueType.isMap()) { BasicDBObject mapDbObj = new BasicDBObject(); writeMapInternal((Map<Object, Object>) obj, mapDbObj, type); dbo.put(name, mapDbObj); return; } if (prop.isDbReference()) { DBRef dbRefObj = createDBRef(obj, prop.getDBRef()); if (null != dbRefObj) { dbo.put(name, dbRefObj); return; } } // Lookup potential custom target type Class<?> basicTargetType = conversions.getCustomWriteTarget(obj.getClass(), null); if (basicTargetType != null) { dbo.put(name, conversionService.convert(obj, basicTargetType)); return; } BasicDBObject propDbObj = new BasicDBObject(); addCustomTypeKeyIfNecessary(type, obj, propDbObj); MongoPersistentEntity<?> entity = isSubtype(prop.getType(), obj.getClass()) ? mappingContext.getPersistentEntity(obj.getClass()) : mappingContext.getPersistentEntity(type); writeInternal(obj, propDbObj, entity); dbo.put(name, propDbObj); }
From source file:org.springframework.data.mongodb.core.convert.MappingMongoConverter.java
/** * Writes the given {@link Map} to the given {@link DBObject} considering the given {@link TypeInformation}. * /*from w ww. j a va 2s. c o m*/ * @param obj must not be {@literal null}. * @param dbo must not be {@literal null}. * @param propertyType must not be {@literal null}. * @return */ protected DBObject writeMapInternal(Map<Object, Object> obj, DBObject dbo, TypeInformation<?> propertyType) { for (Map.Entry<Object, Object> entry : obj.entrySet()) { Object key = entry.getKey(); Object val = entry.getValue(); if (conversions.isSimpleType(key.getClass())) { // Don't use conversion service here as removal of ObjectToString converter results in some primitive types not // being convertable String simpleKey = potentiallyEscapeMapKey(key.toString()); if (val == null || conversions.isSimpleType(val.getClass())) { writeSimpleInternal(val, dbo, simpleKey); } else if (val instanceof Collection || val.getClass().isArray()) { dbo.put(simpleKey, writeCollectionInternal(asCollection(val), propertyType.getMapValueType(), new BasicDBList())); } else { DBObject newDbo = new BasicDBObject(); TypeInformation<?> valueTypeInfo = propertyType.isMap() ? propertyType.getMapValueType() : ClassTypeInformation.OBJECT; writeInternal(val, newDbo, valueTypeInfo); dbo.put(simpleKey, newDbo); } } else { throw new MappingException("Cannot use a complex object as a key value."); } } return dbo; }
From source file:org.springframework.data.neo4j.support.Neo4jTemplate.java
@SuppressWarnings("unchecked") public Object query(String statement, Map<String, Object> params, final TypeInformation<?> typeInformation) { final TypeInformation<?> actualType = typeInformation.getActualType(); final Class<Object> targetType = (Class<Object>) actualType.getType(); final Result<Object> result = queryEngineFor(QueryType.Cypher).query(statement, params); final Class<? extends Iterable<Object>> containerType = (Class<? extends Iterable<Object>>) typeInformation .getType();/* ww w . j a va2 s . c om*/ if (EndResult.class.isAssignableFrom(containerType)) { return result; } if (actualType.isMap()) { return result; } if (typeInformation.isCollectionLike()) { return result.to(targetType).as(containerType); } return result.to(targetType).single(); }