/* * Copyright 2011, Mysema Ltd * * Licensed 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 com.mysema.query.codegen; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Set; import org.junit.Before; import org.junit.Test; import com.mysema.codegen.JavaWriter; import com.mysema.codegen.StringUtils; import com.mysema.codegen.model.ClassType; import com.mysema.codegen.model.Constructor; import com.mysema.codegen.model.Parameter; import com.mysema.codegen.model.SimpleType; import com.mysema.codegen.model.Type; import com.mysema.codegen.model.TypeCategory; import com.mysema.codegen.model.TypeExtends; import com.mysema.codegen.model.TypeSuper; public class SerializerTest { private EntityType type; private Writer writer = new StringWriter(); private TypeMappings typeMappings = new JavaTypeMappings(); @SuppressWarnings("unchecked") @Before public void setUp(){ // type Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.mysema.query.DomainClass", "com.mysema.query", "DomainClass", false, false); type = new EntityType(typeModel); // property type.addProperty(new Property(type, "entityField", type)); type.addProperty(new Property(type, "collection", new ClassType(TypeCategory.COLLECTION, Collection.class, typeModel))); type.addProperty(new Property(type, "listField", new ClassType(TypeCategory.LIST, List.class, typeModel))); type.addProperty(new Property(type, "setField", new ClassType(TypeCategory.SET, Set.class, typeModel))); type.addProperty(new Property(type, "arrayField", new ClassType(TypeCategory.ARRAY, String[].class, typeModel))); type.addProperty(new Property(type, "mapField", new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel))); type.addProperty(new Property(type, "superTypeField", new TypeExtends(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); type.addProperty(new Property(type, "extendsTypeField", new TypeSuper(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); for (Class cl : Arrays.asList(Boolean.class, Comparable.class, Integer.class, Date.class, java.sql.Date.class, java.sql.Time.class)){ Type classType = new ClassType(TypeCategory.get(cl.getName()), cl); type.addProperty(new Property(type, StringUtils.uncapitalize(cl.getSimpleName()), classType)); } // constructor Parameter firstName = new Parameter("firstName", new ClassType(TypeCategory.STRING, String.class)); Parameter lastName = new Parameter("lastName", new ClassType(TypeCategory.STRING, String.class)); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName))); } @Test public void EntitySerializer() throws Exception { new EntitySerializer(typeMappings, Collections.emptyList()) .serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); } @Test public void EntitySerializer2() throws Exception { new EntitySerializer(typeMappings,Collections.emptyList()) .serialize(type, new SimpleSerializerConfig(true,true,true,true), new JavaWriter(writer)); } @Test public void EmbeddableSerializer() throws Exception { new EmbeddableSerializer(typeMappings,Collections.emptyList()) .serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); } @Test public void SupertypeSerializer() throws IOException{ new SupertypeSerializer(typeMappings,Collections.emptyList()) .serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); } @Test public void DTOSerializer() throws IOException{ new ProjectionSerializer(typeMappings) .serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); } }