http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/PojoGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/PojoGeneratorTest.java
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/PojoGeneratorTest.java
new file mode 100644
index 0000000..a7de8f8
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/PojoGeneratorTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.ignite.schema.test.generator;
+
+import org.apache.ignite.schema.generator.PojoGenerator;
+import org.apache.ignite.schema.test.AbstractSchemaImportTest;
+import org.apache.ignite.schema.model.PojoDescriptor;
+
+import java.io.File;
+
+/**
+ * Tests for POJO generator.
+ */
+public class PojoGeneratorTest extends AbstractSchemaImportTest {
+    /** Marker string to skip date generation while comparing.*/
+    private static final String GEN_PTRN = "Code generated by Apache Ignite 
Schema Import utility";
+
+    /**
+     * Test that POJOs generated correctly.
+     */
+    public void testPojoGeneration() throws Exception {
+        String pkg = "org.apache.ignite.schema.test.model";
+        String intPath = "org/apache/ignite/schema/test/model";
+
+        Boolean containsSchema = false;
+
+        for (PojoDescriptor pojo : pojos) {
+            if (pojo.valueClassName().isEmpty())
+                containsSchema = true;
+            else {
+                PojoGenerator.generate(pojo, OUT_DIR_PATH, pkg, true, true, 
askOverwrite);
+
+                assertTrue("Generated key class POJO content is differ from 
expected for type " + pojo.keyClassName(),
+                        compareFiles(pojo.keyClassName(), intPath, GEN_PTRN));
+
+                assertTrue("Generated value class POJO content is differ from 
expected for type " + pojo.valueClassName(),
+                        compareFiles(pojo.valueClassName(), intPath, 
GEN_PTRN));
+            }
+        }
+
+        assertTrue("Generated POJOs does not contains schema.", 
containsSchema);
+    }
+
+    /**
+     * @param typeName Type name.
+     * @param intPath Internal path.
+     * @return {@code true} if generated POJO as expected.
+     */
+    private boolean compareFiles(String typeName, String intPath, String 
excludePtrn) {
+        String relPath = intPath + "/" + typeName;
+
+        return compareFilesInt(getClass().getResourceAsStream("/" + relPath + 
".txt"),
+                new File(OUT_DIR_PATH + "/" + relPath + ".java"), excludePtrn);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/XmlGeneratorTest.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/XmlGeneratorTest.java
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/XmlGeneratorTest.java
new file mode 100644
index 0000000..dffc58c
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/generator/XmlGeneratorTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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.ignite.schema.test.generator;
+
+import org.apache.ignite.schema.generator.*;
+import org.apache.ignite.schema.test.*;
+import org.apache.ignite.schema.model.*;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Tests for XML generator.
+ */
+public class XmlGeneratorTest extends AbstractSchemaImportTest {
+    /**
+     * Test that XML generated correctly.
+     */
+    public void testXmlGeneration() throws Exception {
+        Collection<PojoDescriptor> all = new ArrayList<>();
+
+        for (PojoDescriptor pojo : pojos)
+            if (pojo.parent() != null)
+                all.add(pojo);
+
+        String fileName = "Ignite.xml";
+
+        XmlGenerator.generate("org.apache.ignite.schema.test.model", all, 
true, new File(OUT_DIR_PATH, fileName),
+            askOverwrite);
+
+        assertTrue("Generated XML file content is differ from expected one",
+            
compareFilesInt(getClass().getResourceAsStream("/org/apache/ignite/schema/test/model/"
 + fileName),
+                new File(OUT_DIR_PATH + "/" + fileName), "XML generated by 
Apache Ignite Schema Import utility"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Ignite.xml
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Ignite.xml
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Ignite.xml
new file mode 100644
index 0000000..ceb315b
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Ignite.xml
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  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.
+-->
+
+<!--
+    XML generated by Apache Ignite Schema Import utility: 02/05/2015
+-->
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:util="http://www.springframework.org/schema/util";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           
http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/util
+                           
http://www.springframework.org/schema/util/spring-util.xsd";>
+    <bean class="org.apache.ignite.cache.CacheTypeMetadata">
+        <property name="databaseSchema" value="PUBLIC"/>
+        <property name="databaseTable" value="OBJECTS"/>
+        <property name="keyType" 
value="org.apache.ignite.schema.test.model.ObjectsKey"/>
+        <property name="valueType" 
value="org.apache.ignite.schema.test.model.Objects"/>
+        <property name="keyFields">
+            <list>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="PK"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="pk"/>
+                    <property name="javaType" value="int"/>
+                </bean>
+            </list>
+        </property>
+        <property name="valueFields">
+            <list>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="PK"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="pk"/>
+                    <property name="javaType" value="int"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BOOLCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.BOOLEAN"/>
+                    </property>
+                    <property name="javaName" value="boolcol"/>
+                    <property name="javaType" value="java.lang.Boolean"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BYTECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.TINYINT"/>
+                    </property>
+                    <property name="javaName" value="bytecol"/>
+                    <property name="javaType" value="java.lang.Byte"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="SHORTCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.SMALLINT"/>
+                    </property>
+                    <property name="javaName" value="shortcol"/>
+                    <property name="javaType" value="java.lang.Short"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="INTCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="intcol"/>
+                    <property name="javaType" value="java.lang.Integer"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="LONGCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.BIGINT"/>
+                    </property>
+                    <property name="javaName" value="longcol"/>
+                    <property name="javaType" value="java.lang.Long"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="FLOATCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.REAL"/>
+                    </property>
+                    <property name="javaName" value="floatcol"/>
+                    <property name="javaType" value="java.lang.Float"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DOUBLECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DOUBLE"/>
+                    </property>
+                    <property name="javaName" value="doublecol"/>
+                    <property name="javaType" value="java.lang.Double"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DOUBLECOL2"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DOUBLE"/>
+                    </property>
+                    <property name="javaName" value="doublecol2"/>
+                    <property name="javaType" value="java.lang.Double"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BIGDECIMALCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DECIMAL"/>
+                    </property>
+                    <property name="javaName" value="bigdecimalcol"/>
+                    <property name="javaType" value="java.math.BigDecimal"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="STRCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.VARCHAR"/>
+                    </property>
+                    <property name="javaName" value="strcol"/>
+                    <property name="javaType" value="java.lang.String"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DATECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DATE"/>
+                    </property>
+                    <property name="javaName" value="datecol"/>
+                    <property name="javaType" value="java.sql.Date"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="TIMECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.TIME"/>
+                    </property>
+                    <property name="javaName" value="timecol"/>
+                    <property name="javaType" value="java.sql.Time"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="TSCOL"/>
+                    <property name="databaseType">
+                        <util:constant 
static-field="java.sql.Types.TIMESTAMP"/>
+                    </property>
+                    <property name="javaName" value="tscol"/>
+                    <property name="javaType" value="java.sql.Timestamp"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="ARRCOL"/>
+                    <property name="databaseType">
+                        <util:constant 
static-field="java.sql.Types.VARBINARY"/>
+                    </property>
+                    <property name="javaName" value="arrcol"/>
+                    <property name="javaType" value="java.lang.Object"/>
+                </bean>
+            </list>
+        </property>
+        <property name="queryFields">
+            <map>
+                <entry key="pk" value="int"/>
+                <entry key="boolcol" value="java.lang.Boolean"/>
+                <entry key="bytecol" value="java.lang.Byte"/>
+                <entry key="shortcol" value="java.lang.Short"/>
+                <entry key="intcol" value="java.lang.Integer"/>
+                <entry key="longcol" value="java.lang.Long"/>
+                <entry key="floatcol" value="java.lang.Float"/>
+                <entry key="doublecol" value="java.lang.Double"/>
+                <entry key="doublecol2" value="java.lang.Double"/>
+                <entry key="bigdecimalcol" value="java.math.BigDecimal"/>
+                <entry key="strcol" value="java.lang.String"/>
+                <entry key="datecol" value="java.sql.Date"/>
+                <entry key="timecol" value="java.sql.Time"/>
+                <entry key="tscol" value="java.sql.Timestamp"/>
+                <entry key="arrcol" value="java.lang.Object"/>
+            </map>
+        </property>
+        <property name="ascendingFields">
+            <map>
+                <entry key="pk" value="int"/>
+            </map>
+        </property>
+        <property name="groups">
+            <map>
+                <entry key="PRIMARY_KEY_C">
+                    <map>
+                        <entry key="pk">
+                            <bean class="org.apache.ignite.lang.IgniteBiTuple">
+                                <constructor-arg value="int"/>
+                                <constructor-arg value="false"/>
+                            </bean>
+                        </entry>
+                    </map>
+                </entry>
+            </map>
+        </property>
+    </bean>
+    <bean class="org.apache.ignite.cache.CacheTypeMetadata">
+        <property name="databaseSchema" value="PUBLIC"/>
+        <property name="databaseTable" value="PRIMITIVES"/>
+        <property name="keyType" 
value="org.apache.ignite.schema.test.model.PrimitivesKey"/>
+        <property name="valueType" 
value="org.apache.ignite.schema.test.model.Primitives"/>
+        <property name="keyFields">
+            <list>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="PK"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="pk"/>
+                    <property name="javaType" value="int"/>
+                </bean>
+            </list>
+        </property>
+        <property name="valueFields">
+            <list>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="PK"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="pk"/>
+                    <property name="javaType" value="int"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BOOLCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.BOOLEAN"/>
+                    </property>
+                    <property name="javaName" value="boolcol"/>
+                    <property name="javaType" value="boolean"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BYTECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.TINYINT"/>
+                    </property>
+                    <property name="javaName" value="bytecol"/>
+                    <property name="javaType" value="byte"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="SHORTCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.SMALLINT"/>
+                    </property>
+                    <property name="javaName" value="shortcol"/>
+                    <property name="javaType" value="short"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="INTCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.INTEGER"/>
+                    </property>
+                    <property name="javaName" value="intcol"/>
+                    <property name="javaType" value="int"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="LONGCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.BIGINT"/>
+                    </property>
+                    <property name="javaName" value="longcol"/>
+                    <property name="javaType" value="long"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="FLOATCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.REAL"/>
+                    </property>
+                    <property name="javaName" value="floatcol"/>
+                    <property name="javaType" value="float"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DOUBLECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DOUBLE"/>
+                    </property>
+                    <property name="javaName" value="doublecol"/>
+                    <property name="javaType" value="double"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DOUBLECOL2"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DOUBLE"/>
+                    </property>
+                    <property name="javaName" value="doublecol2"/>
+                    <property name="javaType" value="double"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="BIGDECIMALCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DECIMAL"/>
+                    </property>
+                    <property name="javaName" value="bigdecimalcol"/>
+                    <property name="javaType" value="java.math.BigDecimal"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="STRCOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.VARCHAR"/>
+                    </property>
+                    <property name="javaName" value="strcol"/>
+                    <property name="javaType" value="java.lang.String"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="DATECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.DATE"/>
+                    </property>
+                    <property name="javaName" value="datecol"/>
+                    <property name="javaType" value="java.sql.Date"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="TIMECOL"/>
+                    <property name="databaseType">
+                        <util:constant static-field="java.sql.Types.TIME"/>
+                    </property>
+                    <property name="javaName" value="timecol"/>
+                    <property name="javaType" value="java.sql.Time"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="TSCOL"/>
+                    <property name="databaseType">
+                        <util:constant 
static-field="java.sql.Types.TIMESTAMP"/>
+                    </property>
+                    <property name="javaName" value="tscol"/>
+                    <property name="javaType" value="java.sql.Timestamp"/>
+                </bean>
+                <bean class="org.apache.ignite.cache.CacheTypeFieldMetadata">
+                    <property name="databaseName" value="ARRCOL"/>
+                    <property name="databaseType">
+                        <util:constant 
static-field="java.sql.Types.VARBINARY"/>
+                    </property>
+                    <property name="javaName" value="arrcol"/>
+                    <property name="javaType" value="java.lang.Object"/>
+                </bean>
+            </list>
+        </property>
+        <property name="queryFields">
+            <map>
+                <entry key="pk" value="int"/>
+                <entry key="boolcol" value="boolean"/>
+                <entry key="bytecol" value="byte"/>
+                <entry key="shortcol" value="short"/>
+                <entry key="intcol" value="int"/>
+                <entry key="longcol" value="long"/>
+                <entry key="floatcol" value="float"/>
+                <entry key="doublecol" value="double"/>
+                <entry key="doublecol2" value="double"/>
+                <entry key="bigdecimalcol" value="java.math.BigDecimal"/>
+                <entry key="strcol" value="java.lang.String"/>
+                <entry key="datecol" value="java.sql.Date"/>
+                <entry key="timecol" value="java.sql.Time"/>
+                <entry key="tscol" value="java.sql.Timestamp"/>
+                <entry key="arrcol" value="java.lang.Object"/>
+            </map>
+        </property>
+        <property name="ascendingFields">
+            <map>
+                <entry key="pk" value="int"/>
+            </map>
+        </property>
+        <property name="groups">
+            <map>
+                <entry key="PRIMARY_KEY_D">
+                    <map>
+                        <entry key="pk">
+                            <bean class="org.apache.ignite.lang.IgniteBiTuple">
+                                <constructor-arg value="int"/>
+                                <constructor-arg value="false"/>
+                            </bean>
+                        </entry>
+                    </map>
+                </entry>
+            </map>
+        </property>
+    </bean>
+</beans>

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Objects.txt
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Objects.txt
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Objects.txt
new file mode 100644
index 0000000..c448ab5
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Objects.txt
@@ -0,0 +1,502 @@
+/*
+ * 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.ignite.schema.test.model;
+
+import java.io.*;
+
+/**
+ * Objects definition.
+ *
+ * Code generated by Apache Ignite Schema Import utility: 01/27/2015.
+ */
+public class Objects implements Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Value for pk. */
+    private int pk;
+
+    /** Value for boolcol. */
+    private Boolean boolcol;
+
+    /** Value for bytecol. */
+    private Byte bytecol;
+
+    /** Value for shortcol. */
+    private Short shortcol;
+
+    /** Value for intcol. */
+    private Integer intcol;
+
+    /** Value for longcol. */
+    private Long longcol;
+
+    /** Value for floatcol. */
+    private Float floatcol;
+
+    /** Value for doublecol. */
+    private Double doublecol;
+
+    /** Value for doublecol2. */
+    private Double doublecol2;
+
+    /** Value for bigdecimalcol. */
+    private java.math.BigDecimal bigdecimalcol;
+
+    /** Value for strcol. */
+    private String strcol;
+
+    /** Value for datecol. */
+    private java.sql.Date datecol;
+
+    /** Value for timecol. */
+    private java.sql.Time timecol;
+
+    /** Value for tscol. */
+    private java.sql.Timestamp tscol;
+
+    /** Value for arrcol. */
+    private Object arrcol;
+
+    /**
+     * Empty constructor.
+     */
+    public Objects() {
+        // No-op.
+    }
+
+    /**
+     * Full constructor.
+     */
+    public Objects(
+        int pk,
+        Boolean boolcol,
+        Byte bytecol,
+        Short shortcol,
+        Integer intcol,
+        Long longcol,
+        Float floatcol,
+        Double doublecol,
+        Double doublecol2,
+        java.math.BigDecimal bigdecimalcol,
+        String strcol,
+        java.sql.Date datecol,
+        java.sql.Time timecol,
+        java.sql.Timestamp tscol,
+        Object arrcol
+    ) {
+        this.pk = pk;
+        this.boolcol = boolcol;
+        this.bytecol = bytecol;
+        this.shortcol = shortcol;
+        this.intcol = intcol;
+        this.longcol = longcol;
+        this.floatcol = floatcol;
+        this.doublecol = doublecol;
+        this.doublecol2 = doublecol2;
+        this.bigdecimalcol = bigdecimalcol;
+        this.strcol = strcol;
+        this.datecol = datecol;
+        this.timecol = timecol;
+        this.tscol = tscol;
+        this.arrcol = arrcol;
+    }
+
+    /**
+     * Gets pk.
+     *
+     * @return Value for pk.
+     */
+    public int getPk() {
+        return pk;
+    }
+
+    /**
+     * Sets pk.
+     *
+     * @param pk New value for pk.
+     */
+    public void setPk(int pk) {
+        this.pk = pk;
+    }
+
+    /**
+     * Gets boolcol.
+     *
+     * @return Value for boolcol.
+     */
+    public Boolean getBoolcol() {
+        return boolcol;
+    }
+
+    /**
+     * Sets boolcol.
+     *
+     * @param boolcol New value for boolcol.
+     */
+    public void setBoolcol(Boolean boolcol) {
+        this.boolcol = boolcol;
+    }
+
+    /**
+     * Gets bytecol.
+     *
+     * @return Value for bytecol.
+     */
+    public Byte getBytecol() {
+        return bytecol;
+    }
+
+    /**
+     * Sets bytecol.
+     *
+     * @param bytecol New value for bytecol.
+     */
+    public void setBytecol(Byte bytecol) {
+        this.bytecol = bytecol;
+    }
+
+    /**
+     * Gets shortcol.
+     *
+     * @return Value for shortcol.
+     */
+    public Short getShortcol() {
+        return shortcol;
+    }
+
+    /**
+     * Sets shortcol.
+     *
+     * @param shortcol New value for shortcol.
+     */
+    public void setShortcol(Short shortcol) {
+        this.shortcol = shortcol;
+    }
+
+    /**
+     * Gets intcol.
+     *
+     * @return Value for intcol.
+     */
+    public Integer getIntcol() {
+        return intcol;
+    }
+
+    /**
+     * Sets intcol.
+     *
+     * @param intcol New value for intcol.
+     */
+    public void setIntcol(Integer intcol) {
+        this.intcol = intcol;
+    }
+
+    /**
+     * Gets longcol.
+     *
+     * @return Value for longcol.
+     */
+    public Long getLongcol() {
+        return longcol;
+    }
+
+    /**
+     * Sets longcol.
+     *
+     * @param longcol New value for longcol.
+     */
+    public void setLongcol(Long longcol) {
+        this.longcol = longcol;
+    }
+
+    /**
+     * Gets floatcol.
+     *
+     * @return Value for floatcol.
+     */
+    public Float getFloatcol() {
+        return floatcol;
+    }
+
+    /**
+     * Sets floatcol.
+     *
+     * @param floatcol New value for floatcol.
+     */
+    public void setFloatcol(Float floatcol) {
+        this.floatcol = floatcol;
+    }
+
+    /**
+     * Gets doublecol.
+     *
+     * @return Value for doublecol.
+     */
+    public Double getDoublecol() {
+        return doublecol;
+    }
+
+    /**
+     * Sets doublecol.
+     *
+     * @param doublecol New value for doublecol.
+     */
+    public void setDoublecol(Double doublecol) {
+        this.doublecol = doublecol;
+    }
+
+    /**
+     * Gets doublecol2.
+     *
+     * @return Value for doublecol2.
+     */
+    public Double getDoublecol2() {
+        return doublecol2;
+    }
+
+    /**
+     * Sets doublecol2.
+     *
+     * @param doublecol2 New value for doublecol2.
+     */
+    public void setDoublecol2(Double doublecol2) {
+        this.doublecol2 = doublecol2;
+    }
+
+    /**
+     * Gets bigdecimalcol.
+     *
+     * @return Value for bigdecimalcol.
+     */
+    public java.math.BigDecimal getBigdecimalcol() {
+        return bigdecimalcol;
+    }
+
+    /**
+     * Sets bigdecimalcol.
+     *
+     * @param bigdecimalcol New value for bigdecimalcol.
+     */
+    public void setBigdecimalcol(java.math.BigDecimal bigdecimalcol) {
+        this.bigdecimalcol = bigdecimalcol;
+    }
+
+    /**
+     * Gets strcol.
+     *
+     * @return Value for strcol.
+     */
+    public String getStrcol() {
+        return strcol;
+    }
+
+    /**
+     * Sets strcol.
+     *
+     * @param strcol New value for strcol.
+     */
+    public void setStrcol(String strcol) {
+        this.strcol = strcol;
+    }
+
+    /**
+     * Gets datecol.
+     *
+     * @return Value for datecol.
+     */
+    public java.sql.Date getDatecol() {
+        return datecol;
+    }
+
+    /**
+     * Sets datecol.
+     *
+     * @param datecol New value for datecol.
+     */
+    public void setDatecol(java.sql.Date datecol) {
+        this.datecol = datecol;
+    }
+
+    /**
+     * Gets timecol.
+     *
+     * @return Value for timecol.
+     */
+    public java.sql.Time getTimecol() {
+        return timecol;
+    }
+
+    /**
+     * Sets timecol.
+     *
+     * @param timecol New value for timecol.
+     */
+    public void setTimecol(java.sql.Time timecol) {
+        this.timecol = timecol;
+    }
+
+    /**
+     * Gets tscol.
+     *
+     * @return Value for tscol.
+     */
+    public java.sql.Timestamp getTscol() {
+        return tscol;
+    }
+
+    /**
+     * Sets tscol.
+     *
+     * @param tscol New value for tscol.
+     */
+    public void setTscol(java.sql.Timestamp tscol) {
+        this.tscol = tscol;
+    }
+
+    /**
+     * Gets arrcol.
+     *
+     * @return Value for arrcol.
+     */
+    public Object getArrcol() {
+        return arrcol;
+    }
+
+    /**
+     * Sets arrcol.
+     *
+     * @param arrcol New value for arrcol.
+     */
+    public void setArrcol(Object arrcol) {
+        this.arrcol = arrcol;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean equals(Object o) {
+        if (this == o)
+            return true;
+
+        if (!(o instanceof Objects))
+            return false;
+
+        Objects that = (Objects)o;
+
+        if (pk != that.pk)
+            return false;
+
+        if (boolcol != null ? !boolcol.equals(that.boolcol) : that.boolcol != 
null)
+            return false;
+
+        if (bytecol != null ? !bytecol.equals(that.bytecol) : that.bytecol != 
null)
+            return false;
+
+        if (shortcol != null ? !shortcol.equals(that.shortcol) : that.shortcol 
!= null)
+            return false;
+
+        if (intcol != null ? !intcol.equals(that.intcol) : that.intcol != null)
+            return false;
+
+        if (longcol != null ? !longcol.equals(that.longcol) : that.longcol != 
null)
+            return false;
+
+        if (floatcol != null ? !floatcol.equals(that.floatcol) : that.floatcol 
!= null)
+            return false;
+
+        if (doublecol != null ? !doublecol.equals(that.doublecol) : 
that.doublecol != null)
+            return false;
+
+        if (doublecol2 != null ? !doublecol2.equals(that.doublecol2) : 
that.doublecol2 != null)
+            return false;
+
+        if (bigdecimalcol != null ? !bigdecimalcol.equals(that.bigdecimalcol) 
: that.bigdecimalcol != null)
+            return false;
+
+        if (strcol != null ? !strcol.equals(that.strcol) : that.strcol != null)
+            return false;
+
+        if (datecol != null ? !datecol.equals(that.datecol) : that.datecol != 
null)
+            return false;
+
+        if (timecol != null ? !timecol.equals(that.timecol) : that.timecol != 
null)
+            return false;
+
+        if (tscol != null ? !tscol.equals(that.tscol) : that.tscol != null)
+            return false;
+
+        if (arrcol != null ? !arrcol.equals(that.arrcol) : that.arrcol != null)
+            return false;
+
+        return true;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int hashCode() {
+        int res = pk;
+
+        res = 31 * res + (boolcol != null ? boolcol.hashCode() : 0);
+
+        res = 31 * res + (bytecol != null ? bytecol.hashCode() : 0);
+
+        res = 31 * res + (shortcol != null ? shortcol.hashCode() : 0);
+
+        res = 31 * res + (intcol != null ? intcol.hashCode() : 0);
+
+        res = 31 * res + (longcol != null ? longcol.hashCode() : 0);
+
+        res = 31 * res + (floatcol != null ? floatcol.hashCode() : 0);
+
+        res = 31 * res + (doublecol != null ? doublecol.hashCode() : 0);
+
+        res = 31 * res + (doublecol2 != null ? doublecol2.hashCode() : 0);
+
+        res = 31 * res + (bigdecimalcol != null ? bigdecimalcol.hashCode() : 
0);
+
+        res = 31 * res + (strcol != null ? strcol.hashCode() : 0);
+
+        res = 31 * res + (datecol != null ? datecol.hashCode() : 0);
+
+        res = 31 * res + (timecol != null ? timecol.hashCode() : 0);
+
+        res = 31 * res + (tscol != null ? tscol.hashCode() : 0);
+
+        res = 31 * res + (arrcol != null ? arrcol.hashCode() : 0);
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return "Objects [pk=" + pk +
+            ", boolcol=" + boolcol +
+            ", bytecol=" + bytecol +
+            ", shortcol=" + shortcol +
+            ", intcol=" + intcol +
+            ", longcol=" + longcol +
+            ", floatcol=" + floatcol +
+            ", doublecol=" + doublecol +
+            ", doublecol2=" + doublecol2 +
+            ", bigdecimalcol=" + bigdecimalcol +
+            ", strcol=" + strcol +
+            ", datecol=" + datecol +
+            ", timecol=" + timecol +
+            ", tscol=" + tscol +
+            ", arrcol=" + arrcol +
+            "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/ObjectsKey.txt
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/ObjectsKey.txt
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/ObjectsKey.txt
new file mode 100644
index 0000000..cad109c
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/ObjectsKey.txt
@@ -0,0 +1,96 @@
+/*
+ * 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.ignite.schema.test.model;
+
+import java.io.*;
+
+/**
+ * ObjectsKey definition.
+ *
+ * Code generated by Apache Ignite Schema Import utility: 01/27/2015.
+ */
+public class ObjectsKey implements Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Value for pk. */
+    private int pk;
+
+    /**
+     * Empty constructor.
+     */
+    public ObjectsKey() {
+        // No-op.
+    }
+
+    /**
+     * Full constructor.
+     */
+    public ObjectsKey(
+        int pk
+    ) {
+        this.pk = pk;
+    }
+
+    /**
+     * Gets pk.
+     *
+     * @return Value for pk.
+     */
+    public int getPk() {
+        return pk;
+    }
+
+    /**
+     * Sets pk.
+     *
+     * @param pk New value for pk.
+     */
+    public void setPk(int pk) {
+        this.pk = pk;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean equals(Object o) {
+        if (this == o)
+            return true;
+
+        if (!(o instanceof ObjectsKey))
+            return false;
+
+        ObjectsKey that = (ObjectsKey)o;
+
+        if (pk != that.pk)
+            return false;
+
+        return true;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int hashCode() {
+        int res = pk;
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return "ObjectsKey [pk=" + pk +
+            "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Primitives.txt
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Primitives.txt
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Primitives.txt
new file mode 100644
index 0000000..ef8f902
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/Primitives.txt
@@ -0,0 +1,506 @@
+/*
+ * 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.ignite.schema.test.model;
+
+import java.io.*;
+
+/**
+ * Primitives definition.
+ *
+ * Code generated by Apache Ignite Schema Import utility: 01/27/2015.
+ */
+public class Primitives implements Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Value for pk. */
+    private int pk;
+
+    /** Value for boolcol. */
+    private boolean boolcol;
+
+    /** Value for bytecol. */
+    private byte bytecol;
+
+    /** Value for shortcol. */
+    private short shortcol;
+
+    /** Value for intcol. */
+    private int intcol;
+
+    /** Value for longcol. */
+    private long longcol;
+
+    /** Value for floatcol. */
+    private float floatcol;
+
+    /** Value for doublecol. */
+    private double doublecol;
+
+    /** Value for doublecol2. */
+    private double doublecol2;
+
+    /** Value for bigdecimalcol. */
+    private java.math.BigDecimal bigdecimalcol;
+
+    /** Value for strcol. */
+    private String strcol;
+
+    /** Value for datecol. */
+    private java.sql.Date datecol;
+
+    /** Value for timecol. */
+    private java.sql.Time timecol;
+
+    /** Value for tscol. */
+    private java.sql.Timestamp tscol;
+
+    /** Value for arrcol. */
+    private Object arrcol;
+
+    /**
+     * Empty constructor.
+     */
+    public Primitives() {
+        // No-op.
+    }
+
+    /**
+     * Full constructor.
+     */
+    public Primitives(
+        int pk,
+        boolean boolcol,
+        byte bytecol,
+        short shortcol,
+        int intcol,
+        long longcol,
+        float floatcol,
+        double doublecol,
+        double doublecol2,
+        java.math.BigDecimal bigdecimalcol,
+        String strcol,
+        java.sql.Date datecol,
+        java.sql.Time timecol,
+        java.sql.Timestamp tscol,
+        Object arrcol
+    ) {
+        this.pk = pk;
+        this.boolcol = boolcol;
+        this.bytecol = bytecol;
+        this.shortcol = shortcol;
+        this.intcol = intcol;
+        this.longcol = longcol;
+        this.floatcol = floatcol;
+        this.doublecol = doublecol;
+        this.doublecol2 = doublecol2;
+        this.bigdecimalcol = bigdecimalcol;
+        this.strcol = strcol;
+        this.datecol = datecol;
+        this.timecol = timecol;
+        this.tscol = tscol;
+        this.arrcol = arrcol;
+    }
+
+    /**
+     * Gets pk.
+     *
+     * @return Value for pk.
+     */
+    public int getPk() {
+        return pk;
+    }
+
+    /**
+     * Sets pk.
+     *
+     * @param pk New value for pk.
+     */
+    public void setPk(int pk) {
+        this.pk = pk;
+    }
+
+    /**
+     * Gets boolcol.
+     *
+     * @return Value for boolcol.
+     */
+    public boolean getBoolcol() {
+        return boolcol;
+    }
+
+    /**
+     * Sets boolcol.
+     *
+     * @param boolcol New value for boolcol.
+     */
+    public void setBoolcol(boolean boolcol) {
+        this.boolcol = boolcol;
+    }
+
+    /**
+     * Gets bytecol.
+     *
+     * @return Value for bytecol.
+     */
+    public byte getBytecol() {
+        return bytecol;
+    }
+
+    /**
+     * Sets bytecol.
+     *
+     * @param bytecol New value for bytecol.
+     */
+    public void setBytecol(byte bytecol) {
+        this.bytecol = bytecol;
+    }
+
+    /**
+     * Gets shortcol.
+     *
+     * @return Value for shortcol.
+     */
+    public short getShortcol() {
+        return shortcol;
+    }
+
+    /**
+     * Sets shortcol.
+     *
+     * @param shortcol New value for shortcol.
+     */
+    public void setShortcol(short shortcol) {
+        this.shortcol = shortcol;
+    }
+
+    /**
+     * Gets intcol.
+     *
+     * @return Value for intcol.
+     */
+    public int getIntcol() {
+        return intcol;
+    }
+
+    /**
+     * Sets intcol.
+     *
+     * @param intcol New value for intcol.
+     */
+    public void setIntcol(int intcol) {
+        this.intcol = intcol;
+    }
+
+    /**
+     * Gets longcol.
+     *
+     * @return Value for longcol.
+     */
+    public long getLongcol() {
+        return longcol;
+    }
+
+    /**
+     * Sets longcol.
+     *
+     * @param longcol New value for longcol.
+     */
+    public void setLongcol(long longcol) {
+        this.longcol = longcol;
+    }
+
+    /**
+     * Gets floatcol.
+     *
+     * @return Value for floatcol.
+     */
+    public float getFloatcol() {
+        return floatcol;
+    }
+
+    /**
+     * Sets floatcol.
+     *
+     * @param floatcol New value for floatcol.
+     */
+    public void setFloatcol(float floatcol) {
+        this.floatcol = floatcol;
+    }
+
+    /**
+     * Gets doublecol.
+     *
+     * @return Value for doublecol.
+     */
+    public double getDoublecol() {
+        return doublecol;
+    }
+
+    /**
+     * Sets doublecol.
+     *
+     * @param doublecol New value for doublecol.
+     */
+    public void setDoublecol(double doublecol) {
+        this.doublecol = doublecol;
+    }
+
+    /**
+     * Gets doublecol2.
+     *
+     * @return Value for doublecol2.
+     */
+    public double getDoublecol2() {
+        return doublecol2;
+    }
+
+    /**
+     * Sets doublecol2.
+     *
+     * @param doublecol2 New value for doublecol2.
+     */
+    public void setDoublecol2(double doublecol2) {
+        this.doublecol2 = doublecol2;
+    }
+
+    /**
+     * Gets bigdecimalcol.
+     *
+     * @return Value for bigdecimalcol.
+     */
+    public java.math.BigDecimal getBigdecimalcol() {
+        return bigdecimalcol;
+    }
+
+    /**
+     * Sets bigdecimalcol.
+     *
+     * @param bigdecimalcol New value for bigdecimalcol.
+     */
+    public void setBigdecimalcol(java.math.BigDecimal bigdecimalcol) {
+        this.bigdecimalcol = bigdecimalcol;
+    }
+
+    /**
+     * Gets strcol.
+     *
+     * @return Value for strcol.
+     */
+    public String getStrcol() {
+        return strcol;
+    }
+
+    /**
+     * Sets strcol.
+     *
+     * @param strcol New value for strcol.
+     */
+    public void setStrcol(String strcol) {
+        this.strcol = strcol;
+    }
+
+    /**
+     * Gets datecol.
+     *
+     * @return Value for datecol.
+     */
+    public java.sql.Date getDatecol() {
+        return datecol;
+    }
+
+    /**
+     * Sets datecol.
+     *
+     * @param datecol New value for datecol.
+     */
+    public void setDatecol(java.sql.Date datecol) {
+        this.datecol = datecol;
+    }
+
+    /**
+     * Gets timecol.
+     *
+     * @return Value for timecol.
+     */
+    public java.sql.Time getTimecol() {
+        return timecol;
+    }
+
+    /**
+     * Sets timecol.
+     *
+     * @param timecol New value for timecol.
+     */
+    public void setTimecol(java.sql.Time timecol) {
+        this.timecol = timecol;
+    }
+
+    /**
+     * Gets tscol.
+     *
+     * @return Value for tscol.
+     */
+    public java.sql.Timestamp getTscol() {
+        return tscol;
+    }
+
+    /**
+     * Sets tscol.
+     *
+     * @param tscol New value for tscol.
+     */
+    public void setTscol(java.sql.Timestamp tscol) {
+        this.tscol = tscol;
+    }
+
+    /**
+     * Gets arrcol.
+     *
+     * @return Value for arrcol.
+     */
+    public Object getArrcol() {
+        return arrcol;
+    }
+
+    /**
+     * Sets arrcol.
+     *
+     * @param arrcol New value for arrcol.
+     */
+    public void setArrcol(Object arrcol) {
+        this.arrcol = arrcol;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean equals(Object o) {
+        if (this == o)
+            return true;
+
+        if (!(o instanceof Primitives))
+            return false;
+
+        Primitives that = (Primitives)o;
+
+        if (pk != that.pk)
+            return false;
+
+        if (boolcol != that.boolcol)
+            return false;
+
+        if (bytecol != that.bytecol)
+            return false;
+
+        if (shortcol != that.shortcol)
+            return false;
+
+        if (intcol != that.intcol)
+            return false;
+
+        if (longcol != that.longcol)
+            return false;
+
+        if (Float.compare(floatcol, that.floatcol) != 0)
+            return false;
+
+        if (Double.compare(doublecol, that.doublecol) != 0)
+            return false;
+
+        if (Double.compare(doublecol2, that.doublecol2) != 0)
+            return false;
+
+        if (bigdecimalcol != null ? !bigdecimalcol.equals(that.bigdecimalcol) 
: that.bigdecimalcol != null)
+            return false;
+
+        if (strcol != null ? !strcol.equals(that.strcol) : that.strcol != null)
+            return false;
+
+        if (datecol != null ? !datecol.equals(that.datecol) : that.datecol != 
null)
+            return false;
+
+        if (timecol != null ? !timecol.equals(that.timecol) : that.timecol != 
null)
+            return false;
+
+        if (tscol != null ? !tscol.equals(that.tscol) : that.tscol != null)
+            return false;
+
+        if (arrcol != null ? !arrcol.equals(that.arrcol) : that.arrcol != null)
+            return false;
+
+        return true;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int hashCode() {
+        int res = pk;
+
+        res = 31 * res + (boolcol ? 1 : 0);
+
+        res = 31 * res + (int)bytecol;
+
+        res = 31 * res + (int)shortcol;
+
+        res = 31 * res + intcol;
+
+        res = 31 * res + (int)(longcol ^ (longcol >>> 32));
+
+        res = 31 * res + (floatcol != +0.0f ? Float.floatToIntBits(floatcol) : 
0);
+
+        long ig_hash_temp = Double.doubleToLongBits(doublecol);
+
+        res = 31 * res + (int)(ig_hash_temp ^ (ig_hash_temp >>> 32));
+
+        ig_hash_temp = Double.doubleToLongBits(doublecol2);
+
+        res = 31 * res + (int)(ig_hash_temp ^ (ig_hash_temp >>> 32));
+
+        res = 31 * res + (bigdecimalcol != null ? bigdecimalcol.hashCode() : 
0);
+
+        res = 31 * res + (strcol != null ? strcol.hashCode() : 0);
+
+        res = 31 * res + (datecol != null ? datecol.hashCode() : 0);
+
+        res = 31 * res + (timecol != null ? timecol.hashCode() : 0);
+
+        res = 31 * res + (tscol != null ? tscol.hashCode() : 0);
+
+        res = 31 * res + (arrcol != null ? arrcol.hashCode() : 0);
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return "Primitives [pk=" + pk +
+            ", boolcol=" + boolcol +
+            ", bytecol=" + bytecol +
+            ", shortcol=" + shortcol +
+            ", intcol=" + intcol +
+            ", longcol=" + longcol +
+            ", floatcol=" + floatcol +
+            ", doublecol=" + doublecol +
+            ", doublecol2=" + doublecol2 +
+            ", bigdecimalcol=" + bigdecimalcol +
+            ", strcol=" + strcol +
+            ", datecol=" + datecol +
+            ", timecol=" + timecol +
+            ", tscol=" + tscol +
+            ", arrcol=" + arrcol +
+            "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/PrimitivesKey.txt
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/PrimitivesKey.txt
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/PrimitivesKey.txt
new file mode 100644
index 0000000..0844e63
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/model/PrimitivesKey.txt
@@ -0,0 +1,96 @@
+/*
+ * 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.ignite.schema.test.model;
+
+import java.io.*;
+
+/**
+ * PrimitivesKey definition.
+ *
+ * Code generated by Apache Ignite Schema Import utility: 01/27/2015.
+ */
+public class PrimitivesKey implements Serializable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Value for pk. */
+    private int pk;
+
+    /**
+     * Empty constructor.
+     */
+    public PrimitivesKey() {
+        // No-op.
+    }
+
+    /**
+     * Full constructor.
+     */
+    public PrimitivesKey(
+        int pk
+    ) {
+        this.pk = pk;
+    }
+
+    /**
+     * Gets pk.
+     *
+     * @return Value for pk.
+     */
+    public int getPk() {
+        return pk;
+    }
+
+    /**
+     * Sets pk.
+     *
+     * @param pk New value for pk.
+     */
+    public void setPk(int pk) {
+        this.pk = pk;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean equals(Object o) {
+        if (this == o)
+            return true;
+
+        if (!(o instanceof PrimitivesKey))
+            return false;
+
+        PrimitivesKey that = (PrimitivesKey)o;
+
+        if (pk != that.pk)
+            return false;
+
+        return true;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int hashCode() {
+        int res = pk;
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return "PrimitivesKey [pk=" + pk +
+            "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/parser/DbMetadataParserTest.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/parser/DbMetadataParserTest.java
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/parser/DbMetadataParserTest.java
new file mode 100644
index 0000000..b73b8b3
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/parser/DbMetadataParserTest.java
@@ -0,0 +1,118 @@
+/*
+ * 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.ignite.schema.test.parser;
+
+import org.apache.ignite.schema.test.*;
+import org.apache.ignite.schema.model.*;
+
+import java.math.*;
+import java.sql.Date;
+import java.sql.*;
+import java.util.*;
+
+/**
+ * Tests for metadata parsing.
+ */
+public class DbMetadataParserTest extends AbstractSchemaImportTest {
+    /**
+     * Check that field is correspond to expected.
+     *
+     * @param field Field descriptor.
+     * @param name Expected field name.
+     * @param primitive Expected field primitive type.
+     * @param cls Expected field type.
+     */
+    private void checkField(PojoField field, String name, boolean primitive, 
Class<?> cls) {
+        assertEquals("Name of field should be " + name, name, 
field.javaName());
+
+        assertEquals("Type of field should be " + cls.getName(), 
cls.getName(), field.javaTypeName());
+
+        assertEquals("Field primitive should be " + primitive, primitive, 
field.primitive());
+    }
+
+    /**
+     * Check that type is correspond to expected.
+     *
+     * @param type Type descriptor.
+     */
+    private void checkType(PojoDescriptor type) {
+        assertFalse("Type key class name should be defined", 
type.keyClassName().isEmpty());
+
+        assertFalse("Type value class name should be defined", 
type.valueClassName().isEmpty());
+
+        Collection<PojoField> keyFields = type.keyFields();
+
+        assertEquals("Key type should have 1 field", 1, keyFields.size());
+
+        checkField(keyFields.iterator().next(), "pk", true, int.class);
+
+        List<PojoField> fields = type.fields();
+
+        assertEquals("Value type should have 15 fields", 15, fields.size());
+
+        Iterator<PojoField> fieldsIt = fields.iterator();
+
+        checkField(fieldsIt.next(), "pk", true, int.class);
+
+        if ("Objects".equals(type.valueClassName())) {
+            checkField(fieldsIt.next(), "boolcol", false, Boolean.class);
+            checkField(fieldsIt.next(), "bytecol", false, Byte.class);
+            checkField(fieldsIt.next(), "shortcol", false, Short.class);
+            checkField(fieldsIt.next(), "intcol", false, Integer.class);
+            checkField(fieldsIt.next(), "longcol", false, Long.class);
+            checkField(fieldsIt.next(), "floatcol", false, Float.class);
+            checkField(fieldsIt.next(), "doublecol", false, Double.class);
+            checkField(fieldsIt.next(), "doublecol2", false, Double.class);
+        }
+        else {
+            checkField(fieldsIt.next(), "boolcol", true, boolean.class);
+            checkField(fieldsIt.next(), "bytecol", true, byte.class);
+            checkField(fieldsIt.next(), "shortcol", true, short.class);
+            checkField(fieldsIt.next(), "intcol", true, int.class);
+            checkField(fieldsIt.next(), "longcol", true, long.class);
+            checkField(fieldsIt.next(), "floatcol", true, float.class);
+            checkField(fieldsIt.next(), "doublecol", true, double.class);
+            checkField(fieldsIt.next(), "doublecol2", true, double.class);
+        }
+
+        checkField(fieldsIt.next(), "bigdecimalcol", false, BigDecimal.class);
+        checkField(fieldsIt.next(), "strcol", false, String.class);
+        checkField(fieldsIt.next(), "datecol", false, Date.class);
+        checkField(fieldsIt.next(), "timecol", false, Time.class);
+        checkField(fieldsIt.next(), "tscol", false, Timestamp.class);
+        checkField(fieldsIt.next(), "arrcol", false, Object.class);
+    }
+
+    /**
+     * Test that metadata generated correctly.
+     */
+    public void testCheckMetadata() {
+        assertEquals("Metadata should contain 3 element", 3, pojos.size());
+
+        Iterator<PojoDescriptor> it = pojos.iterator();
+
+        PojoDescriptor schema = it.next();
+
+        assertTrue("First element is schema description. Its class name should 
be empty",
+                schema.valueClassName().isEmpty());
+
+        checkType(it.next());
+
+        checkType(it.next());
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/91bca564/modules/schema-import/src/test/java/org/apache/ignite/schema/test/testsuites/IgniteSchemaImportTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-import/src/test/java/org/apache/ignite/schema/test/testsuites/IgniteSchemaImportTestSuite.java
 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/testsuites/IgniteSchemaImportTestSuite.java
new file mode 100644
index 0000000..dce63a4
--- /dev/null
+++ 
b/modules/schema-import/src/test/java/org/apache/ignite/schema/test/testsuites/IgniteSchemaImportTestSuite.java
@@ -0,0 +1,41 @@
+/*
+ * 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.ignite.schema.test.testsuites;
+
+import junit.framework.*;
+import org.apache.ignite.schema.test.generator.*;
+import org.apache.ignite.schema.test.parser.*;
+
+/**
+ * Ignite Schema Import Utility Tests.
+ */
+public class IgniteSchemaImportTestSuite {
+    /**
+     * @return Test suite.
+     * @throws Exception Thrown in case of the failure.
+     */
+    public static TestSuite suite() throws Exception {
+        TestSuite suite = new TestSuite("Ignite Apache Schema Import Utility 
Test Suite");
+
+        suite.addTestSuite(PojoGeneratorTest.class);
+        suite.addTestSuite(XmlGeneratorTest.class);
+        suite.addTestSuite(DbMetadataParserTest.class);
+
+        return suite;
+    }
+}

Reply via email to