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("myschema");
+ * MutableTable table = new MutableTable("mytable", TableType.TABLE, schema);
+ * schema.addTable(table);
+ *
+ * table.addColumn(new MutableColumn("mycol1", ColumnType.INTEGER, table, 0, 16, "int", false, "my remark 1", false,
+ * "\""));
+ * table.addColumn(new MutableColumn("mycol1", ColumnType.VARCHAR, table, 1, 255, "text", true, "my remark 2", true,
+ * null));
+ *
+ * Query q = new Query();
+ * q.from(table);
+ * q.select(table.getColumn(0));
+ * q.where(table.getColumn(1), OperatorType.EQUALS_TO, "foo");
+ *
+ * FileOutputStream out = new FileOutputStream("src/test/resources/metamodel-3.4-query-and-schema.ser");
+ * 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("myschema");
- * MutableTable table = new MutableTable("mytable", TableType.TABLE, schema);
- * schema.addTable(table);
- *
- * table.addColumn(new MutableColumn("mycol1", ColumnType.INTEGER, table, 0, 16, "int", false, "my remark 1", false,
- * "\""));
- * table.addColumn(new MutableColumn("mycol1", ColumnType.VARCHAR, table, 1, 255, "text", true, "my remark 2", true,
- * null));
- *
- * Query q = new Query();
- * q.from(table);
- * q.select(table.getColumn(0));
- * q.where(table.getColumn(1), OperatorType.EQUALS_TO, "foo");
- *
- * FileOutputStream out = new FileOutputStream("src/test/resources/metamodel-3.4-query-and-schema.ser");
- * 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