You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2014/07/20 08:03:27 UTC

[1/5] git commit: METAMODEL-70: Fixed

Repository: incubator-metamodel
Updated Branches:
  refs/heads/master 069de273c -> a395c5f80


METAMODEL-70: Fixed

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/9d60bceb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/9d60bceb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/9d60bceb

Branch: refs/heads/master
Commit: 9d60bceb0713a8294aa6a370b1c9fc91f5ae8d7b
Parents: 069de27
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sat Jul 19 21:20:25 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sat Jul 19 21:20:25 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../apache/metamodel/util/SimpleTableDef.java   |  2 +-
 .../metamodel/pojo/ObjectTableDataProvider.java | 24 ++++++++++++++------
 .../pojo/ObjectTableDataProviderTest.java       |  2 +-
 4 files changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/9d60bceb/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3fc6a79..3c4e0fa 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -7,6 +7,7 @@ Apache MetaModel 4.2.0-incubating
  * [METAMODEL-46] - Improved row-lookup by primary key (ID) in CouchDB
  * [METAMODEL-58] - Fixed a bug related to using CreateTable class and primary keys not getting created.
  * [METAMODEL-3]  - Improved writing of Byte-Order-Mark (BOM) for various encoding spelling variants.
+ * [METAMODEL-70] - Made the build compatible with both JDK versions 6 and 7.
  * [METAMODEL-59] - Fixed a bug related to handling of date/time literals in MS SQL Server queries.
  * [METAMODEL-60] - Fixed a bug related to DISTINCT and TOP keywords in MS SQL Server queries.
  * [METAMODEL-45] - Improved and standardized way of handling integration test connection information towards external databases.

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/9d60bceb/core/src/main/java/org/apache/metamodel/util/SimpleTableDef.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/util/SimpleTableDef.java b/core/src/main/java/org/apache/metamodel/util/SimpleTableDef.java
index be6c7e4..c68893c 100644
--- a/core/src/main/java/org/apache/metamodel/util/SimpleTableDef.java
+++ b/core/src/main/java/org/apache/metamodel/util/SimpleTableDef.java
@@ -160,7 +160,7 @@ public class SimpleTableDef implements Serializable, HasName {
 
     @Override
     public String toString() {
-        return "SimpleDbTableDef[name=" + _name + ",columnNames=" + Arrays.toString(_columnNames) + ",columnTypes="
+        return "SimpleTableDef[name=" + _name + ",columnNames=" + Arrays.toString(_columnNames) + ",columnTypes="
                 + Arrays.toString(_columnTypes) + "]";
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/9d60bceb/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
----------------------------------------------------------------------
diff --git a/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java b/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
index 5571d0b..747267c 100644
--- a/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
+++ b/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -80,8 +81,7 @@ public final class ObjectTableDataProvider<E> implements TableDataProvider<E> {
     }
 
     private SimpleTableDef createTableDef() {
-        final List<String> columnNames = new ArrayList<String>();
-        final List<ColumnType> columnTypes = new ArrayList<ColumnType>();
+        final Map<String,ColumnType> columns = new LinkedHashMap<String, ColumnType>();
 
         final Method[] methods = _class.getMethods();
         for (final Method method : methods) {
@@ -93,17 +93,27 @@ public final class ObjectTableDataProvider<E> implements TableDataProvider<E> {
                         final String columnName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);
 
                         _fieldTypes.put(columnName, returnType);
-                        columnNames.add(columnName);
-                        columnTypes.add(ColumnTypeImpl.convertColumnType(returnType));
+                        final ColumnType columnType = ColumnTypeImpl.convertColumnType(returnType);
+                        columns.put(columnName, columnType);
                     }
                 }
             }
         }
 
-        final int size = columnNames.size();
+        final int size = columns.size();
+        final String[] columnNames= new String[size];
+        final ColumnType[] columnTypes = new ColumnType[size];
+        
+        final Set<Entry<String, ColumnType>> entrySet = columns.entrySet();
+        int i= 0;
+        for (Entry<String, ColumnType> entry : entrySet) {
+            columnNames[i] = entry.getKey();
+            columnTypes[i] = entry.getValue();
+            i++;
+        }
 
-        return new SimpleTableDef(_tableName, columnNames.toArray(new String[size]),
-                columnTypes.toArray(new ColumnType[size]));
+        return new SimpleTableDef(_tableName, columnNames,
+                columnTypes);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/9d60bceb/pojo/src/test/java/org/apache/metamodel/pojo/ObjectTableDataProviderTest.java
----------------------------------------------------------------------
diff --git a/pojo/src/test/java/org/apache/metamodel/pojo/ObjectTableDataProviderTest.java b/pojo/src/test/java/org/apache/metamodel/pojo/ObjectTableDataProviderTest.java
index f0a87f2..bdffc2a 100644
--- a/pojo/src/test/java/org/apache/metamodel/pojo/ObjectTableDataProviderTest.java
+++ b/pojo/src/test/java/org/apache/metamodel/pojo/ObjectTableDataProviderTest.java
@@ -30,7 +30,7 @@ public class ObjectTableDataProviderTest extends TestCase {
 
         SimpleTableDef tableDef = tableDataProvider.getTableDef();
         assertEquals(
-                "SimpleDbTableDef[name=FoobarBean,columnNames=[col1, col2, col3],columnTypes=[VARCHAR, INTEGER, BOOLEAN]]",
+                "SimpleTableDef[name=FoobarBean,columnNames=[col1, col2, col3],columnTypes=[VARCHAR, INTEGER, BOOLEAN]]",
                 tableDef.toString());
     }
 }


[2/5] git commit: METAMODEL-69: Applied patch from review board.

Posted by ka...@apache.org.
METAMODEL-69: Applied patch from review board.

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/cad631d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/cad631d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/cad631d6

Branch: refs/heads/master
Commit: cad631d6b8b8fd0a57409356c756e4f448b8851f
Parents: 9d60bce
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sat Jul 19 21:27:37 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sat Jul 19 21:27:37 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |   1 +
 .../org/apache/metamodel/schema/JdbcTypes.java  |   2 +-
 .../LegacyDeserializationObjectInputStream.java | 218 ++++++++++++++++++-
 .../apache/metamodel/data/DefaultRowTest.java   |  15 +-
 ...acyDeserializationObjectInputStreamTest.java |  83 +++++++
 5 files changed, 313 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/cad631d6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3c4e0fa..57b7b4f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -14,6 +14,7 @@ Apache MetaModel 4.2.0-incubating
  * [METAMODEL-62] - Fixed a bug related to fault-tolerant handling of malformed CSV lines when reading CSVs in single-line mode
  * [METAMODEL-68] - Made it possible to create a CSV table without a header line in the file, if the user configures it.
  * [METAMODEL-67] - Upgraded Jackson (JSON library) dependency from org.codehaus namespace to the newer com.fasterxml namespace.
+ * [METAMODEL-69] - Fixed issue with deserialization of ColumnType into the new interface instead of the old enum.
 
 Apache MetaModel 4.1.0-incubating
 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/cad631d6/core/src/main/java/org/apache/metamodel/schema/JdbcTypes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/schema/JdbcTypes.java b/core/src/main/java/org/apache/metamodel/schema/JdbcTypes.java
index 2ab39ab..a76b9c6 100644
--- a/core/src/main/java/org/apache/metamodel/schema/JdbcTypes.java
+++ b/core/src/main/java/org/apache/metamodel/schema/JdbcTypes.java
@@ -24,7 +24,7 @@ package org.apache.metamodel.schema;
  * additional types (confirmed by JavaTypesTest). It is being used to convert
  * JDBC types to ColumnType enumerations.
  */
-final class JdbcTypes {
+public final class JdbcTypes {
 
 	// Prevent instantiation
 	private JdbcTypes() {

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/cad631d6/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java b/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
index c5ab2e5..3e492b8 100644
--- a/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
+++ b/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
@@ -18,10 +18,30 @@
  */
 package org.apache.metamodel.util;
 
+import static org.apache.metamodel.schema.SuperColumnType.BINARY_TYPE;
+import static org.apache.metamodel.schema.SuperColumnType.BOOLEAN_TYPE;
+import static org.apache.metamodel.schema.SuperColumnType.LITERAL_TYPE;
+import static org.apache.metamodel.schema.SuperColumnType.NUMBER_TYPE;
+import static org.apache.metamodel.schema.SuperColumnType.OTHER_TYPE;
+import static org.apache.metamodel.schema.SuperColumnType.TIME_TYPE;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamClass;
+import java.lang.reflect.Field;
+import java.math.BigInteger;
+import java.sql.Blob;
+import java.sql.Clob;
+import java.sql.Types;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.metamodel.schema.ColumnType;
+import org.apache.metamodel.schema.JdbcTypes;
+import org.apache.metamodel.schema.SuperColumnType;
 
 /**
  * A specialized {@link ObjectInputStream} for MetaModel which can be used or
@@ -31,17 +51,211 @@ import java.io.ObjectStreamClass;
  */
 public class LegacyDeserializationObjectInputStream extends ObjectInputStream {
 
+    /**
+     * Implementation of the new {@link ColumnType} interface which still
+     * adheres to the constant/enum values of the old ColumnType definition.
+     * While deserializing old ColumnType objects, we will convert them to this
+     * enum.
+     */
+    protected static enum LegacyColumnType implements ColumnType {
+
+        /**
+         * Literal
+         */
+        CHAR(LITERAL_TYPE), VARCHAR(LITERAL_TYPE), LONGVARCHAR(LITERAL_TYPE), CLOB(LITERAL_TYPE), NCHAR(LITERAL_TYPE), NVARCHAR(
+                LITERAL_TYPE), LONGNVARCHAR(LITERAL_TYPE), NCLOB(LITERAL_TYPE),
+
+        /**
+         * Numbers
+         */
+        TINYINT(NUMBER_TYPE), SMALLINT(NUMBER_TYPE), INTEGER(NUMBER_TYPE), BIGINT(NUMBER_TYPE), FLOAT(NUMBER_TYPE), REAL(
+                NUMBER_TYPE), DOUBLE(NUMBER_TYPE), NUMERIC(NUMBER_TYPE), DECIMAL(NUMBER_TYPE),
+
+        /**
+         * Time based
+         */
+        DATE(TIME_TYPE), TIME(TIME_TYPE), TIMESTAMP(TIME_TYPE),
+
+        /**
+         * Booleans
+         */
+        BIT(BOOLEAN_TYPE), BOOLEAN(BOOLEAN_TYPE),
+
+        /**
+         * Binary types
+         */
+        BINARY(BINARY_TYPE), VARBINARY(BINARY_TYPE), LONGVARBINARY(BINARY_TYPE), BLOB(BINARY_TYPE),
+
+        /**
+         * Other types (as defined in {@link Types}).
+         */
+        NULL(OTHER_TYPE), OTHER(OTHER_TYPE), JAVA_OBJECT(OTHER_TYPE), DISTINCT(OTHER_TYPE), STRUCT(OTHER_TYPE), ARRAY(
+                OTHER_TYPE), REF(OTHER_TYPE), DATALINK(OTHER_TYPE), ROWID(OTHER_TYPE), SQLXML(OTHER_TYPE),
+
+        /**
+         * Additional types (added by MetaModel for non-JDBC datastores)
+         */
+        LIST(OTHER_TYPE), MAP(OTHER_TYPE);
+
+        private final SuperColumnType _superType;
+
+        private LegacyColumnType(SuperColumnType superType) {
+            if (superType == null) {
+                throw new IllegalArgumentException("SuperColumnType cannot be null");
+            }
+            _superType = superType;
+        }
+
+        @Override
+        public String getName() {
+            return name();
+        }
+
+        @Override
+        public Comparator<Object> getComparator() {
+            if (isTimeBased()) {
+                return TimeComparator.getComparator();
+            }
+            if (isNumber()) {
+                return NumberComparator.getComparator();
+            }
+            if (isLiteral()) {
+                return ToStringComparator.getComparator();
+            }
+            return ObjectComparator.getComparator();
+        }
+
+        @Override
+        public boolean isBoolean() {
+            return _superType == BOOLEAN_TYPE;
+        }
+
+        @Override
+        public boolean isBinary() {
+            return _superType == BINARY_TYPE;
+        }
+
+        @Override
+        public boolean isNumber() {
+            return _superType == NUMBER_TYPE;
+        }
+
+        @Override
+        public boolean isTimeBased() {
+            return _superType == TIME_TYPE;
+        }
+
+        @Override
+        public boolean isLiteral() {
+            return _superType == LITERAL_TYPE;
+        }
+
+        @Override
+        public boolean isLargeObject() {
+            switch (this) {
+            case BLOB:
+            case CLOB:
+            case NCLOB:
+                return true;
+            default:
+                return false;
+            }
+        }
+
+        @Override
+        public Class<?> getJavaEquivalentClass() {
+            switch (this) {
+            case TINYINT:
+            case SMALLINT:
+                return Short.class;
+            case INTEGER:
+                return Integer.class;
+            case BIGINT:
+                return BigInteger.class;
+            case DECIMAL:
+            case NUMERIC:
+            case FLOAT:
+            case REAL:
+            case DOUBLE:
+                return Double.class;
+            case DATE:
+            case TIME:
+            case TIMESTAMP:
+                return Date.class;
+            case BLOB:
+                return Blob.class;
+            case CLOB:
+            case NCLOB:
+                return Clob.class;
+            case MAP:
+                return Map.class;
+            case LIST:
+                return List.class;
+            default:
+                // All other types have fitting java equivalent classes in the
+                // super
+                // type
+                return _superType.getJavaEquivalentClass();
+            }
+        }
+
+        @Override
+        public SuperColumnType getSuperType() {
+            return _superType;
+        }
+
+        @Override
+        public int getJdbcType() throws IllegalStateException {
+            final String name = this.toString();
+            try {
+                // We assume that the JdbcTypes class only consists of constant
+                // integer types, so we make no assertions here
+                final Field[] fields = JdbcTypes.class.getFields();
+                for (int i = 0; i < fields.length; i++) {
+                    Field field = fields[i];
+                    String fieldName = field.getName();
+                    if (fieldName.equals(name)) {
+                        int value = (Integer) field.getInt(null);
+                        return value;
+                    }
+                }
+                throw new IllegalStateException("No JdbcType found with field name: " + name);
+            } catch (Exception e) {
+                throw new IllegalStateException("Could not access fields in JdbcTypes", e);
+            }
+        }
+    }
+
+    private static final String OLD_CLASS_NAME_COLUMN_TYPE = "org.eobjects.metamodel.schema.ColumnType";
+
     public LegacyDeserializationObjectInputStream(InputStream in) throws IOException, SecurityException {
         super(in);
     }
 
     @Override
     protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
-        String className = desc.getName();
+        final String className = desc.getName();
         if (className.startsWith("org.eobjects.metamodel") || className.startsWith("[Lorg.eobjects.metamodel")) {
-            String newClassName = className.replace("org.eobjects", "org.apache");
+            final String newClassName;
+            if (OLD_CLASS_NAME_COLUMN_TYPE.equals(className)) {
+                // since ColumnType was changed from enum to interface, there's
+                // some special treatment here.
+                newClassName = LegacyColumnType.class.getName();
+            } else {
+                newClassName = className.replace("org.eobjects", "org.apache");
+            }
             return Class.forName(newClassName);
         }
         return super.resolveClass(desc);
     }
+
+    @Override
+    protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
+        final ObjectStreamClass objectStreamClass = super.readClassDescriptor();
+        if (OLD_CLASS_NAME_COLUMN_TYPE.equals(objectStreamClass.getName())) {
+            final ObjectStreamClass result = ObjectStreamClass.lookup(LegacyColumnType.class);
+            return result;
+        }
+        return objectStreamClass;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/cad631d6/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java b/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
index a3a45f6..40f0551 100644
--- a/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
+++ b/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
@@ -26,6 +26,8 @@ import java.io.ObjectOutputStream;
 import java.lang.reflect.Field;
 
 import org.apache.metamodel.query.SelectItem;
+import org.apache.metamodel.schema.Column;
+import org.apache.metamodel.schema.ColumnType;
 import org.apache.metamodel.schema.MutableColumn;
 import org.apache.metamodel.util.FileHelper;
 import org.apache.metamodel.util.LegacyDeserializationObjectInputStream;
@@ -37,18 +39,18 @@ public class DefaultRowTest extends TestCase {
     private SelectItem[] items = new SelectItem[] { new SelectItem(new MutableColumn("foo")),
             new SelectItem(new MutableColumn("bar")) };
     private Object[] values = new Object[] { "foo", "bar" };
-    
+
     public void testSerializeAndDeserialize() throws Exception {
         DefaultRow row = new DefaultRow(new SimpleDataSetHeader(items), values);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ObjectOutputStream oos = new ObjectOutputStream(baos);
         oos.writeObject(row);
         oos.close();
-        
+
         ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
         ObjectInputStream ois = new ObjectInputStream(bais);
         Object deserialized = ois.readObject();
-        
+
         assertEquals("Row[values=[foo, bar]]", deserialized.toString());
         assertEquals(row, deserialized);
     }
@@ -78,6 +80,13 @@ public class DefaultRowTest extends TestCase {
 
         assertEquals(Style.NO_STYLE, row.getStyle(0));
         assertEquals(Style.NO_STYLE, row.getStyle(1));
+
+        Column column = selectItems[0].getColumn();
+        assertNotNull(column);
+        
+        // the columns used to create the object did not have column types assigned.
+        ColumnType type = column.getType();
+        assertNull(type);
     }
 
     public void testGetValueOfColumn() throws Exception {

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/cad631d6/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
new file mode 100644
index 0000000..e202ad7
--- /dev/null
+++ b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
@@ -0,0 +1,83 @@
+/**
+ * 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.metamodel.util;
+
+import java.io.FileInputStream;
+
+import org.apache.metamodel.query.Query;
+import org.apache.metamodel.schema.Column;
+import org.apache.metamodel.schema.Table;
+
+import junit.framework.TestCase;
+
+public class LegacyDeserializationObjectInputStreamTest extends TestCase {
+
+    /**
+     * Method initially used (with org.eobjects codebase) to generate the test
+     * input file:
+     * 
+     * <pre>
+     * public void testCreateOldSchema() throws Exception {
+     *     MutableSchema schema = new MutableSchema(&quot;myschema&quot;);
+     *     MutableTable table = new MutableTable(&quot;mytable&quot;, TableType.TABLE, schema);
+     *     schema.addTable(table);
+     * 
+     *     table.addColumn(new MutableColumn(&quot;mycol1&quot;, ColumnType.INTEGER, table, 0, 16, &quot;int&quot;, false, &quot;my remark 1&quot;, false,
+     *             &quot;\&quot;&quot;));
+     *     table.addColumn(new MutableColumn(&quot;mycol1&quot;, ColumnType.VARCHAR, table, 1, 255, &quot;text&quot;, true, &quot;my remark 2&quot;, true,
+     *             null));
+     * 
+     *     Query q = new Query();
+     *     q.from(table);
+     *     q.select(table.getColumn(0));
+     *     q.where(table.getColumn(1), OperatorType.EQUALS_TO, &quot;foo&quot;);
+     * 
+     *     FileOutputStream out = new FileOutputStream(&quot;src/test/resources/metamodel-3.4-query-and-schema.ser&quot;);
+     *     new ObjectOutputStream(out).writeObject(q);
+     *     out.close();
+     * }
+     * </pre>
+     */
+    public void testDeserializeOldQueryAndSchema() throws Exception {
+        final Object obj;
+        {
+            final FileInputStream in = new FileInputStream("src/test/resources/metamodel-3.4-query-and-schema.ser");
+            try {
+                final LegacyDeserializationObjectInputStream ois = new LegacyDeserializationObjectInputStream(in);
+                obj = ois.readObject();
+                ois.close();
+            } finally {
+                in.close();
+            }
+        }
+        
+        assertTrue(obj instanceof Query);
+        
+        final Query q = (Query) obj;
+        final Table table = q.getFromClause().getItem(0).getTable();
+        final Column[] columns = table.getColumns();
+
+        assertEquals("Table[name=mytable,type=TABLE,remarks=null]", table.toString());
+        assertEquals("Column[name=mycol1,columnNumber=0,type=INTEGER,nullable=false,nativeType=int,columnSize=16]", columns[0].toString());
+        assertEquals("Column[name=mycol1,columnNumber=1,type=VARCHAR,nullable=true,nativeType=text,columnSize=255]", columns[1].toString());
+        
+        assertEquals("SELECT mytable.\"mycol1\" FROM myschema.mytable WHERE mytable.mycol1 = 'foo'", q.toSql());
+    }
+
+}


[4/5] git commit: METAMODEL-70: Fixed dependency on hashmap specifics - using treemap

Posted by ka...@apache.org.
METAMODEL-70: Fixed dependency on hashmap specifics - using treemap

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/39c4a391
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/39c4a391
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/39c4a391

Branch: refs/heads/master
Commit: 39c4a391b55e360eaa4132c598648e0b27563756
Parents: 85e457f
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sat Jul 19 21:48:41 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sat Jul 19 21:48:41 2014 +0200

----------------------------------------------------------------------
 .../java/org/apache/metamodel/pojo/ObjectTableDataProvider.java  | 3 ++-
 .../test/java/org/apache/metamodel/pojo/PojoDataContextTest.java | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/39c4a391/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
----------------------------------------------------------------------
diff --git a/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java b/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
index 747267c..27d3cce 100644
--- a/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
+++ b/pojo/src/main/java/org/apache/metamodel/pojo/ObjectTableDataProvider.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.TreeMap;
 
 import org.apache.metamodel.schema.ColumnType;
 import org.apache.metamodel.schema.ColumnTypeImpl;
@@ -81,7 +82,7 @@ public final class ObjectTableDataProvider<E> implements TableDataProvider<E> {
     }
 
     private SimpleTableDef createTableDef() {
-        final Map<String,ColumnType> columns = new LinkedHashMap<String, ColumnType>();
+        final Map<String,ColumnType> columns = new TreeMap<String, ColumnType>();
 
         final Method[] methods = _class.getMethods();
         for (final Method method : methods) {

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/39c4a391/pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java
----------------------------------------------------------------------
diff --git a/pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java b/pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java
index 778ed1a..e345a8c 100644
--- a/pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java
+++ b/pojo/src/test/java/org/apache/metamodel/pojo/PojoDataContextTest.java
@@ -63,8 +63,10 @@ public class PojoDataContextTest extends TestCase {
 
         DataSet dataSet = dc.query().from("persons").innerJoin("titles").on("name", "name").selectAll().execute();
 
+        assertEquals("[persons.age, persons.name, titles.name, titles.title]",
+                Arrays.toString(dataSet.getSelectItems()));
         assertTrue(dataSet.next());
-        assertEquals("Row[values=[Elvis Presley, 42, Elvis Presley, The King]]", dataSet.getRow().toString());
+        assertEquals("Row[values=[42, Elvis Presley, Elvis Presley, The King]]", dataSet.getRow().toString());
         assertFalse(dataSet.next());
     }
 


[5/5] git commit: METAMODEL-69: Fixed.

Posted by ka...@apache.org.
METAMODEL-69: Fixed.

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/a395c5f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/a395c5f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/a395c5f8

Branch: refs/heads/master
Commit: a395c5f8023700c2ef47fbb542dd3bf8b88a6ee3
Parents: 39c4a39
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sun Jul 20 08:01:45 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sun Jul 20 08:01:45 2014 +0200

----------------------------------------------------------------------
 .../LegacyDeserializationObjectInputStream.java   |  6 +++---
 ...egacyDeserializationObjectInputStreamTest.java | 18 +++++++++---------
 2 files changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/a395c5f8/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java b/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
index 3e492b8..993bd89 100644
--- a/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
+++ b/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
@@ -47,7 +47,7 @@ import org.apache.metamodel.schema.SuperColumnType;
  * A specialized {@link ObjectInputStream} for MetaModel which can be used or
  * extended if it is needed to deserialize legacy MetaModel objects. This is
  * needed since the namespace of MetaModel was changed from
- * org.eobjects.metamodel to org.apache.metamodel.
+ * org.apache.metamodel to org.apache.metamodel.
  */
 public class LegacyDeserializationObjectInputStream extends ObjectInputStream {
 
@@ -226,7 +226,7 @@ public class LegacyDeserializationObjectInputStream extends ObjectInputStream {
         }
     }
 
-    private static final String OLD_CLASS_NAME_COLUMN_TYPE = "org.eobjects.metamodel.schema.ColumnType";
+    private static final String OLD_CLASS_NAME_COLUMN_TYPE = "org.apache.metamodel.schema.ColumnType";
 
     public LegacyDeserializationObjectInputStream(InputStream in) throws IOException, SecurityException {
         super(in);
@@ -235,7 +235,7 @@ public class LegacyDeserializationObjectInputStream extends ObjectInputStream {
     @Override
     protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
         final String className = desc.getName();
-        if (className.startsWith("org.eobjects.metamodel") || className.startsWith("[Lorg.eobjects.metamodel")) {
+        if (className.startsWith("org.apache.metamodel") || className.startsWith("[Lorg.apache.metamodel")) {
             final String newClassName;
             if (OLD_CLASS_NAME_COLUMN_TYPE.equals(className)) {
                 // since ColumnType was changed from enum to interface, there's

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/a395c5f8/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
index da26df6..0557cf9 100644
--- a/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
+++ b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
@@ -35,23 +35,23 @@ public class LegacyDeserializationObjectInputStreamTest extends TestCase {
 
         // create the example serialized object
         {
-            final org.eobjects.metamodel.schema.MutableSchema schema = new org.eobjects.metamodel.schema.MutableSchema(
+            final org.apache.metamodel.schema.MutableSchema schema = new org.apache.metamodel.schema.MutableSchema(
                     "myschema");
-            final org.eobjects.metamodel.schema.MutableTable table = new org.eobjects.metamodel.schema.MutableTable(
-                    "mytable", org.eobjects.metamodel.schema.TableType.TABLE, schema);
+            final org.apache.metamodel.schema.MutableTable table = new org.apache.metamodel.schema.MutableTable(
+                    "mytable", org.apache.metamodel.schema.TableType.TABLE, schema);
             schema.addTable(table);
 
-            table.addColumn(new org.eobjects.metamodel.schema.MutableColumn("mycol1",
-                    org.eobjects.metamodel.schema.ColumnType.INTEGER, table, 0, 16, "int", false, "my remark 1", false,
+            table.addColumn(new org.apache.metamodel.schema.MutableColumn("mycol1",
+                    org.apache.metamodel.schema.ColumnType.INTEGER, table, 0, 16, "int", false, "my remark 1", false,
                     "\""));
-            table.addColumn(new org.eobjects.metamodel.schema.MutableColumn("mycol1",
-                    org.eobjects.metamodel.schema.ColumnType.VARCHAR, table, 1, 255, "text", true, "my remark 2", true,
+            table.addColumn(new org.apache.metamodel.schema.MutableColumn("mycol1",
+                    org.apache.metamodel.schema.ColumnType.VARCHAR, table, 1, 255, "text", true, "my remark 2", true,
                     null));
 
-            final org.eobjects.metamodel.query.Query q = new org.eobjects.metamodel.query.Query();
+            final org.apache.metamodel.query.Query q = new org.apache.metamodel.query.Query();
             q.from(table);
             q.select(table.getColumn(0));
-            q.where(table.getColumn(1), org.eobjects.metamodel.query.OperatorType.EQUALS_TO, "foo");
+            q.where(table.getColumn(1), org.apache.metamodel.query.OperatorType.EQUALS_TO, "foo");
 
             final FileOutputStream out = new FileOutputStream(filename);
             try {


[3/5] git commit: METAMODEL-69: Made unittest self-create the example from MetaModel 3.4.11.

Posted by ka...@apache.org.
METAMODEL-69: Made unittest self-create the example from MetaModel
3.4.11.

Project: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/commit/85e457f3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/tree/85e457f3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metamodel/diff/85e457f3

Branch: refs/heads/master
Commit: 85e457f3cb05975d9bf832deba589c93e346e3d6
Parents: cad631d
Author: Kasper Sørensen <i....@gmail.com>
Authored: Sat Jul 19 21:34:34 2014 +0200
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Sat Jul 19 21:34:34 2014 +0200

----------------------------------------------------------------------
 core/pom.xml                                    |  6 ++
 ...acyDeserializationObjectInputStreamTest.java | 77 +++++++++++---------
 2 files changed, 48 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/85e457f3/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 100aa2a..2fa2e37 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -46,5 +46,11 @@ under the License.
 			<artifactId>easymock</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>
+			org.eobjects.metamodel</groupId>
+		<artifactId>MetaModel-core</artifactId>
+		<version>3.4.11</version>
+		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/85e457f3/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
index e202ad7..da26df6 100644
--- a/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
+++ b/core/src/test/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStreamTest.java
@@ -19,6 +19,8 @@
 package org.apache.metamodel.util;
 
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectOutputStream;
 
 import org.apache.metamodel.query.Query;
 import org.apache.metamodel.schema.Column;
@@ -28,36 +30,40 @@ import junit.framework.TestCase;
 
 public class LegacyDeserializationObjectInputStreamTest extends TestCase {
 
-    /**
-     * Method initially used (with org.eobjects codebase) to generate the test
-     * input file:
-     * 
-     * <pre>
-     * public void testCreateOldSchema() throws Exception {
-     *     MutableSchema schema = new MutableSchema(&quot;myschema&quot;);
-     *     MutableTable table = new MutableTable(&quot;mytable&quot;, TableType.TABLE, schema);
-     *     schema.addTable(table);
-     * 
-     *     table.addColumn(new MutableColumn(&quot;mycol1&quot;, ColumnType.INTEGER, table, 0, 16, &quot;int&quot;, false, &quot;my remark 1&quot;, false,
-     *             &quot;\&quot;&quot;));
-     *     table.addColumn(new MutableColumn(&quot;mycol1&quot;, ColumnType.VARCHAR, table, 1, 255, &quot;text&quot;, true, &quot;my remark 2&quot;, true,
-     *             null));
-     * 
-     *     Query q = new Query();
-     *     q.from(table);
-     *     q.select(table.getColumn(0));
-     *     q.where(table.getColumn(1), OperatorType.EQUALS_TO, &quot;foo&quot;);
-     * 
-     *     FileOutputStream out = new FileOutputStream(&quot;src/test/resources/metamodel-3.4-query-and-schema.ser&quot;);
-     *     new ObjectOutputStream(out).writeObject(q);
-     *     out.close();
-     * }
-     * </pre>
-     */
-    public void testDeserializeOldQueryAndSchema() throws Exception {
+    public void testCreateSerializeAndDeserializeOldSchemaAndQuery() throws Exception {
+        final String filename = "target/metamodel-3.4-query-and-schema.ser";
+
+        // create the example serialized object
+        {
+            final org.eobjects.metamodel.schema.MutableSchema schema = new org.eobjects.metamodel.schema.MutableSchema(
+                    "myschema");
+            final org.eobjects.metamodel.schema.MutableTable table = new org.eobjects.metamodel.schema.MutableTable(
+                    "mytable", org.eobjects.metamodel.schema.TableType.TABLE, schema);
+            schema.addTable(table);
+
+            table.addColumn(new org.eobjects.metamodel.schema.MutableColumn("mycol1",
+                    org.eobjects.metamodel.schema.ColumnType.INTEGER, table, 0, 16, "int", false, "my remark 1", false,
+                    "\""));
+            table.addColumn(new org.eobjects.metamodel.schema.MutableColumn("mycol1",
+                    org.eobjects.metamodel.schema.ColumnType.VARCHAR, table, 1, 255, "text", true, "my remark 2", true,
+                    null));
+
+            final org.eobjects.metamodel.query.Query q = new org.eobjects.metamodel.query.Query();
+            q.from(table);
+            q.select(table.getColumn(0));
+            q.where(table.getColumn(1), org.eobjects.metamodel.query.OperatorType.EQUALS_TO, "foo");
+
+            final FileOutputStream out = new FileOutputStream(filename);
+            try {
+                new ObjectOutputStream(out).writeObject(q);
+            } finally {
+                out.close();
+            }
+        }
+
         final Object obj;
         {
-            final FileInputStream in = new FileInputStream("src/test/resources/metamodel-3.4-query-and-schema.ser");
+            final FileInputStream in = new FileInputStream(filename);
             try {
                 final LegacyDeserializationObjectInputStream ois = new LegacyDeserializationObjectInputStream(in);
                 obj = ois.readObject();
@@ -66,18 +72,19 @@ public class LegacyDeserializationObjectInputStreamTest extends TestCase {
                 in.close();
             }
         }
-        
+
         assertTrue(obj instanceof Query);
-        
+
         final Query q = (Query) obj;
         final Table table = q.getFromClause().getItem(0).getTable();
         final Column[] columns = table.getColumns();
 
         assertEquals("Table[name=mytable,type=TABLE,remarks=null]", table.toString());
-        assertEquals("Column[name=mycol1,columnNumber=0,type=INTEGER,nullable=false,nativeType=int,columnSize=16]", columns[0].toString());
-        assertEquals("Column[name=mycol1,columnNumber=1,type=VARCHAR,nullable=true,nativeType=text,columnSize=255]", columns[1].toString());
-        
+        assertEquals("Column[name=mycol1,columnNumber=0,type=INTEGER,nullable=false,nativeType=int,columnSize=16]",
+                columns[0].toString());
+        assertEquals("Column[name=mycol1,columnNumber=1,type=VARCHAR,nullable=true,nativeType=text,columnSize=255]",
+                columns[1].toString());
+
         assertEquals("SELECT mytable.\"mycol1\" FROM myschema.mytable WHERE mytable.mycol1 = 'foo'", q.toSql());
     }
-
-}
+}
\ No newline at end of file