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.