blob: 51e481d898e89fbf2345ac9f7e5e1c7350991da0 [file] [log] [blame]
/*
* 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.flink.api.java.typeutils;
import static org.junit.Assert.assertTrue;
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeutils.CompositeType;
import org.apache.flink.api.java.typeutils.TypeExtractor;
import org.junit.Test;
public class PojoTypeInformationTest {
public static class SimplePojo {
public String str;
public Boolean Bl;
public boolean bl;
public Byte Bt;
public byte bt;
public Short Shrt;
public short shrt;
public Integer Intgr;
public int intgr;
public Long Lng;
public long lng;
public Float Flt;
public float flt;
public Double Dbl;
public double dbl;
public Character Ch;
public char ch;
public int[] primIntArray;
public Integer[] intWrapperArray;
}
@Test
public void testSimplePojoTypeExtraction() {
TypeInformation<SimplePojo> type = TypeExtractor.getForClass(SimplePojo.class);
assertTrue("Extracted type is not a composite/pojo type but should be.", type instanceof CompositeType);
}
public static class NestedPojoInner {
public String field;
}
public static class NestedPojoOuter {
public Integer intField;
public NestedPojoInner inner;
}
@Test
public void testNestedPojoTypeExtraction() {
TypeInformation<NestedPojoOuter> type = TypeExtractor.getForClass(NestedPojoOuter.class);
assertTrue("Extracted type is not a Pojo type but should be.", type instanceof CompositeType);
}
public static class Recursive1Pojo {
public Integer intField;
public Recursive2Pojo rec;
}
public static class Recursive2Pojo {
public String strField;
public Recursive1Pojo rec;
}
@Test
public void testRecursivePojoTypeExtraction() {
// This one tests whether a recursive pojo is detected using the set of visited
// types in the type extractor. The recursive field will be handled using the generic serializer.
TypeInformation<Recursive1Pojo> type = TypeExtractor.getForClass(Recursive1Pojo.class);
assertTrue("Extracted type is not a Pojo type but should be.", type instanceof CompositeType);
}
@Test
public void testRecursivePojoObjectTypeExtraction() {
TypeInformation<Recursive1Pojo> type = TypeExtractor.getForObject(new Recursive1Pojo());
assertTrue("Extracted type is not a Pojo type but should be.", type instanceof CompositeType);
}
}