private <T> Collection<T> deserializeCollection( ModuleDescriptor module, CollectionType collectionType, JsonArray json ) { return (Collection<T>) json.stream() .map( item -> doDeserialize( module, collectionType.collectedType(), item ) ) .collect( toCollection( () -> collectionType.isSet() ? new LinkedHashSet<>() : new ArrayList<>() ) ); }
private <T> Collection<T> deserializeCollection( ModuleDescriptor module, CollectionType collectionType, JsonArray json ) { return (Collection<T>) json.stream() .map( item -> doDeserialize( module, collectionType.collectedType(), item ) ) .collect( toCollection( () -> collectionType.isSet() ? new LinkedHashSet<>() : new ArrayList<>() ) ); }
private boolean isSupported( ValueType valueType ) { if( valueType instanceof CollectionType ) { CollectionType collectionType = (CollectionType) valueType; return isSupported( collectionType.collectedType() ); } Class<?> primaryType = valueType.primaryType(); return Number.class.isAssignableFrom( primaryType ) || Boolean.class.isAssignableFrom( primaryType ) || Character.class.isAssignableFrom( primaryType ) || Enum.class.isAssignableFrom( primaryType ) || String.class.isAssignableFrom( primaryType ) || Identity.class.isAssignableFrom( primaryType ) // TODO javax.time support in indexing-sql // || Date.class.isAssignableFrom( primaryType ) // || DateTime.class.isAssignableFrom( primaryType ) // || LocalDateTime.class.isAssignableFrom( primaryType ) // || LocalDate.class.isAssignableFrom( primaryType ) || valueType.hasType( ValueComposite.class ); } };
@SuppressWarnings( "unchecked" ) private Collection deserializeCollection( ModuleDescriptor module, CollectionType collectionType, Node xml ) { Supplier<Collection> collectionSupplier = () -> collectionType.isSet() ? new LinkedHashSet<>() : new ArrayList<>(); if( !xml.hasChildNodes() ) { return collectionSupplier.get(); } return JavaxXml .childElements( xml ) .map( element -> { if( settings.getCollectionElementTagName().equals( element.getTagName() ) ) { return doDeserialize( module, collectionType.collectedType(), JavaxXml.firstStateChildNode( element ).get() ); } return doDeserialize( module, collectionType.collectedType(), element ); } ) .collect( Collectors.toCollection( collectionSupplier ) ); }
private Collection<?> deserializeCollection( ModuleDescriptor module, CollectionType collectionType, ArrayValue value ) throws IOException { Collection<?> collection = collectionType.isSet() ? new LinkedHashSet( value.size() ) : new ArrayList( value.size() ); for( Value element : value.list() ) { collection.add( doDeserialize( module, collectionType.collectedType(), element ) ); } return collection; }
@Test public void collections() { assertThat( valueTypeFactory.valueTypeOf( module, LinkedHashSet.class ), instanceOf( CollectionType.class ) ); List<String> list = new ArrayList<>(); ValueType listValueType = valueTypeFactory.valueTypeOf( module, list ); assertThat( listValueType, instanceOf( CollectionType.class ) ); assertThat( ( (CollectionType) listValueType ).collectedType(), equalTo( ValueType.OBJECT ) ); }
if( collection.collectedType() instanceof ValueCompositeType )
if( collection.collectedType() instanceof ValueCompositeType )