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 2015/11/10 09:16:55 UTC

[1/2] metamodel git commit: METAMODEL-207: Fixed

Repository: metamodel
Updated Branches:
  refs/heads/master 1758ae206 -> 4895b801c


METAMODEL-207: Fixed

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

Branch: refs/heads/master
Commit: ef354e837f815e3bfde7661913561c384999117c
Parents: 1758ae2
Author: Kasper Sørensen <i....@gmail.com>
Authored: Fri Nov 6 14:49:09 2015 +0100
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Fri Nov 6 14:49:09 2015 +0100

----------------------------------------------------------------------
 .../apache/metamodel/csv/SingleLineCsvRow.java  | 23 ++++++--
 .../metamodel/csv/SingleLineCsvRowTest.java     | 59 ++++++++++++++++++++
 2 files changed, 76 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/ef354e83/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
----------------------------------------------------------------------
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
index bdd3beb..439dc91 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
@@ -19,6 +19,7 @@
 package org.apache.metamodel.csv;
 
 import java.io.IOException;
+import java.io.ObjectOutputStream;
 
 import org.apache.metamodel.MetaModelException;
 import org.apache.metamodel.data.AbstractRow;
@@ -38,17 +39,20 @@ final class SingleLineCsvRow extends AbstractRow {
     private static final long serialVersionUID = 1L;
 
     private static final Logger logger = LoggerFactory.getLogger(SingleLineCsvRow.class);
+
+    private final transient SingleLineCsvDataSet _dataSet;
     
-    private final SingleLineCsvDataSet _dataSet;
     private final String _line;
     private final int _columnsInTable;
     private final boolean _failOnInconsistentRowLength;
     private final int _rowNumber;
+    private final DataSetHeader _header;
     private String[] _values;
 
     public SingleLineCsvRow(SingleLineCsvDataSet dataSet, final String line, final int columnsInTable,
             final boolean failOnInconsistentRowLength, final int rowNumber) {
         _dataSet = dataSet;
+        _header = dataSet.getHeader();
         _line = line;
         _columnsInTable = columnsInTable;
         _failOnInconsistentRowLength = failOnInconsistentRowLength;
@@ -69,12 +73,11 @@ final class SingleLineCsvRow extends AbstractRow {
 
             // convert the line's values into the row values that where
             // requested
-            final DataSetHeader header = _dataSet.getHeader();
-            final int size = header.size();
+            final int size = _header.size();
             final String[] rowValues = new String[size];
 
             for (int i = 0; i < size; i++) {
-                final Column column = header.getSelectItem(i).getColumn();
+                final Column column = _header.getSelectItem(i).getColumn();
                 final int columnNumber = column.getColumnNumber();
                 if (columnNumber < csvValues.length) {
                     rowValues[i] = csvValues[columnNumber];
@@ -90,6 +93,12 @@ final class SingleLineCsvRow extends AbstractRow {
         return _values;
     }
 
+    private void writeObject(ObjectOutputStream stream) throws IOException {
+        // ensure that values are loaded
+        getValues();
+        stream.defaultWriteObject();
+    }
+
     private String[] parseLine() {
         try {
             final CSVParser parser = _dataSet.getCsvParser();
@@ -98,7 +107,9 @@ final class SingleLineCsvRow extends AbstractRow {
             if (_failOnInconsistentRowLength) {
                 throw new MetaModelException("Failed to parse CSV line no. " + _rowNumber + ": " + _line, e);
             } else {
-                logger.warn("Encountered unparseable line no. {}, returning line as a single value with trailing nulls: {}", _rowNumber, _line);
+                logger.warn(
+                        "Encountered unparseable line no. {}, returning line as a single value with trailing nulls: {}",
+                        _rowNumber, _line);
                 String[] csvValues = new String[_columnsInTable];
                 csvValues[0] = _line;
                 return csvValues;
@@ -120,7 +131,7 @@ final class SingleLineCsvRow extends AbstractRow {
 
     @Override
     protected DataSetHeader getHeader() {
-        return _dataSet.getHeader();
+        return _header;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/metamodel/blob/ef354e83/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
----------------------------------------------------------------------
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
new file mode 100644
index 0000000..bed494e
--- /dev/null
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
@@ -0,0 +1,59 @@
+/**
+ * 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.csv;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.apache.metamodel.data.Row;
+import org.apache.metamodel.schema.Column;
+import org.apache.metamodel.schema.MutableColumn;
+import org.junit.Assert;
+import org.junit.Test;
+
+import au.com.bytecode.opencsv.CSVParser;
+
+public class SingleLineCsvRowTest {
+
+    @Test
+    public void testSerialize() throws Exception {
+        final Column[] columns = new Column[] { new MutableColumn("1"), new MutableColumn("2") };
+        CSVParser csvParser = new CSVParser();
+        final SingleLineCsvDataSet dataSet = new SingleLineCsvDataSet(null, csvParser, columns, null, 2, false);
+        final SingleLineCsvRow originalRow = new SingleLineCsvRow(dataSet, "foo,bar", 2, false, 1);
+
+        final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+        final ObjectOutputStream out = new ObjectOutputStream(bytes);
+        out.writeObject(originalRow);
+        out.flush();
+        bytes.flush();
+
+        final byte[] byteArray = bytes.toByteArray();
+        Assert.assertTrue(byteArray.length > 0);
+        
+        final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(byteArray));
+        final Row deserializedRow = (Row) in.readObject();
+
+        final Object[] values1 = originalRow.getValues();
+        final Object[] values2 = deserializedRow.getValues();
+        Assert.assertArrayEquals(values1, values2);
+    }
+}


[2/2] metamodel git commit: METAMODEL-207: Updated CHANGES.md

Posted by ka...@apache.org.
METAMODEL-207: Updated CHANGES.md

Fixes #71

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

Branch: refs/heads/master
Commit: 4895b801c38de83690d9630ba04050b21c673721
Parents: ef354e8
Author: Kasper Sørensen <i....@gmail.com>
Authored: Tue Nov 10 09:16:51 2015 +0100
Committer: Kasper Sørensen <i....@gmail.com>
Committed: Tue Nov 10 09:16:51 2015 +0100

----------------------------------------------------------------------
 CHANGES.md | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/4895b801/CHANGES.md
----------------------------------------------------------------------
diff --git a/CHANGES.md b/CHANGES.md
index 2899294..9a8047e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,7 @@
+### Apache MetaModel (work-in-progress)
+
+ * [METAMODEL-207] - Ensured the serializability of the SingleLineCsvRow class.
+
 ### Apache MetaModel 4.4.1
 
  * [METAMODEL-198] - Fixed support for JDBC TIMESTAMP precision to match the underlying database's precision.