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 2013/07/22 10:11:13 UTC

[60/64] git commit: Added a utility ObjectInputStream for deserializing legacy org.eobjects.metamodel objects.

Added a utility ObjectInputStream for deserializing legacy
org.eobjects.metamodel objects.

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

Branch: refs/heads/master
Commit: 69ad6cdd497f900af50d7cb018ace53139771c8a
Parents: 587d518
Author: kaspers <ka...@kaspers-think.humaninference.com>
Authored: Fri Jul 19 11:04:34 2013 +0200
Committer: kaspers <ka...@kaspers-think.humaninference.com>
Committed: Fri Jul 19 11:04:34 2013 +0200

----------------------------------------------------------------------
 .../org/apache/metamodel/data/DefaultRow.java   |   2 +-
 .../org/apache/metamodel/data/StyleImpl.java    | 292 +++++++++----------
 .../apache/metamodel/schema/ImmutableTable.java |   2 -
 .../LegacyDeserializationObjectInputStream.java |  47 +++
 .../apache/metamodel/data/DefaultRowTest.java   |   7 +-
 5 files changed, 197 insertions(+), 153 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/69ad6cdd/core/src/main/java/org/apache/metamodel/data/DefaultRow.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/data/DefaultRow.java b/core/src/main/java/org/apache/metamodel/data/DefaultRow.java
index c528bc3..64703d4 100644
--- a/core/src/main/java/org/apache/metamodel/data/DefaultRow.java
+++ b/core/src/main/java/org/apache/metamodel/data/DefaultRow.java
@@ -35,7 +35,7 @@ public final class DefaultRow extends AbstractRow implements Row {
     private final DataSetHeader _header;
     private final Object[] _values;
     private final Style[] _styles;
-
+    
     /**
      * This field was replaced by the DataSetHeader field above.
      * 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/69ad6cdd/core/src/main/java/org/apache/metamodel/data/StyleImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/data/StyleImpl.java b/core/src/main/java/org/apache/metamodel/data/StyleImpl.java
index ef6ba31..6e2f078 100644
--- a/core/src/main/java/org/apache/metamodel/data/StyleImpl.java
+++ b/core/src/main/java/org/apache/metamodel/data/StyleImpl.java
@@ -27,151 +27,149 @@ import org.apache.metamodel.util.BaseObject;
  * 
  * @author Kasper Sørensen
  */
-final class StyleImpl extends BaseObject implements Style {
-
-	private static final long serialVersionUID = 1L;
-	
-	private final boolean _underline;
-	private final boolean _italic;
-	private final boolean _bold;
-	private final Integer _fontSize;
-	private final TextAlignment _alignment;
-	private final Color _backgroundColor;
-	private final Color _foregroundColor;
-	private final SizeUnit _fontSizeUnit;
-
-	public StyleImpl() {
-		this(false, false, false, null, null, null, null, null);
-	}
-
-	public StyleImpl(boolean bold, boolean italic, boolean underline,
-			Integer fontSize, SizeUnit fontSizeUnit, TextAlignment alignment,
-			Color backgroundColor, Color foregroundColor) {
-		_bold = bold;
-		_italic = italic;
-		_underline = underline;
-		_fontSize = fontSize;
-		_fontSizeUnit = fontSizeUnit;
-		_alignment = alignment;
-		_backgroundColor = backgroundColor;
-		_foregroundColor = foregroundColor;
-	}
-
-	@Override
-	public boolean isBold() {
-		return _bold;
-	}
-
-	@Override
-	public boolean isItalic() {
-		return _italic;
-	}
-
-	@Override
-	public boolean isUnderline() {
-		return _underline;
-	}
-
-	@Override
-	public Integer getFontSize() {
-		return _fontSize;
-	}
-
-	@Override
-	public SizeUnit getFontSizeUnit() {
-		return _fontSizeUnit;
-	}
-
-	@Override
-	public TextAlignment getAlignment() {
-		return _alignment;
-	}
-
-	@Override
-	public Color getForegroundColor() {
-		return _foregroundColor;
-	}
-
-	@Override
-	public Color getBackgroundColor() {
-		return _backgroundColor;
-	}
-
-	@Override
-	public String toCSS() {
-		StringBuilder sb = new StringBuilder();
-		if (_bold) {
-			sb.append("font-weight: bold;");
-		}
-		if (_italic) {
-			sb.append("font-style: italic;");
-		}
-		if (_underline) {
-			sb.append("text-decoration: underline;");
-		}
-		if (_alignment != null) {
-			sb.append("text-align: " + toCSS(_alignment) + ";");
-		}
-		if (_fontSize != null) {
-			sb.append("font-size: " + _fontSize);
-			switch (_fontSizeUnit) {
-			case PT:
-				sb.append("pt");
-				break;
-			case PX:
-				sb.append("px");
-				break;
-			case PERCENT:
-				sb.append("%");
-				break;
-			default:
-				// don't write a size unit
-			}
-			sb.append(';');
-		}
-		if (_foregroundColor != null) {
-			sb.append("color: " + toCSS(_foregroundColor) + ";");
-		}
-		if (_backgroundColor != null) {
-			sb.append("background-color: " + toCSS(_backgroundColor) + ";");
-		}
-		return sb.toString();
-	}
-
-	private String toCSS(Color c) {
-		return "rgb(" + c.getRed() + "," + c.getGreen() + "," + c.getBlue()
-				+ ")";
-	}
-
-	@Override
-	public String toString() {
-		return toCSS();
-	}
-
-	private String toCSS(TextAlignment alignment) {
-		switch (alignment) {
-		case LEFT:
-			return "left";
-		case RIGHT:
-			return "right";
-		case CENTER:
-			return "center";
-		case JUSTIFY:
-			return "justify";
-		default:
-			throw new IllegalStateException("Unknown alignment: " + alignment);
-		}
-	}
-
-	@Override
-	protected void decorateIdentity(List<Object> identifiers) {
-		identifiers.add(_underline);
-		identifiers.add(_italic);
-		identifiers.add(_bold);
-		identifiers.add(_fontSize);
-		identifiers.add(_fontSizeUnit);
-		identifiers.add(_alignment);
-		identifiers.add(_backgroundColor);
-		identifiers.add(_foregroundColor);
-	}
+public final class StyleImpl extends BaseObject implements Style {
+
+    private static final long serialVersionUID = 1L;
+
+    private final boolean _underline;
+    private final boolean _italic;
+    private final boolean _bold;
+    private final Integer _fontSize;
+    private final TextAlignment _alignment;
+    private final Color _backgroundColor;
+    private final Color _foregroundColor;
+    private final SizeUnit _fontSizeUnit;
+
+    public StyleImpl() {
+        this(false, false, false, null, null, null, null, null);
+    }
+
+    public StyleImpl(boolean bold, boolean italic, boolean underline, Integer fontSize, SizeUnit fontSizeUnit,
+            TextAlignment alignment, Color backgroundColor, Color foregroundColor) {
+        _bold = bold;
+        _italic = italic;
+        _underline = underline;
+        _fontSize = fontSize;
+        _fontSizeUnit = fontSizeUnit;
+        _alignment = alignment;
+        _backgroundColor = backgroundColor;
+        _foregroundColor = foregroundColor;
+    }
+
+    @Override
+    public boolean isBold() {
+        return _bold;
+    }
+
+    @Override
+    public boolean isItalic() {
+        return _italic;
+    }
+
+    @Override
+    public boolean isUnderline() {
+        return _underline;
+    }
+
+    @Override
+    public Integer getFontSize() {
+        return _fontSize;
+    }
+
+    @Override
+    public SizeUnit getFontSizeUnit() {
+        return _fontSizeUnit;
+    }
+
+    @Override
+    public TextAlignment getAlignment() {
+        return _alignment;
+    }
+
+    @Override
+    public Color getForegroundColor() {
+        return _foregroundColor;
+    }
+
+    @Override
+    public Color getBackgroundColor() {
+        return _backgroundColor;
+    }
+
+    @Override
+    public String toCSS() {
+        StringBuilder sb = new StringBuilder();
+        if (_bold) {
+            sb.append("font-weight: bold;");
+        }
+        if (_italic) {
+            sb.append("font-style: italic;");
+        }
+        if (_underline) {
+            sb.append("text-decoration: underline;");
+        }
+        if (_alignment != null) {
+            sb.append("text-align: " + toCSS(_alignment) + ";");
+        }
+        if (_fontSize != null) {
+            sb.append("font-size: " + _fontSize);
+            switch (_fontSizeUnit) {
+            case PT:
+                sb.append("pt");
+                break;
+            case PX:
+                sb.append("px");
+                break;
+            case PERCENT:
+                sb.append("%");
+                break;
+            default:
+                // don't write a size unit
+            }
+            sb.append(';');
+        }
+        if (_foregroundColor != null) {
+            sb.append("color: " + toCSS(_foregroundColor) + ";");
+        }
+        if (_backgroundColor != null) {
+            sb.append("background-color: " + toCSS(_backgroundColor) + ";");
+        }
+        return sb.toString();
+    }
+
+    private String toCSS(Color c) {
+        return "rgb(" + c.getRed() + "," + c.getGreen() + "," + c.getBlue() + ")";
+    }
+
+    @Override
+    public String toString() {
+        return toCSS();
+    }
+
+    private String toCSS(TextAlignment alignment) {
+        switch (alignment) {
+        case LEFT:
+            return "left";
+        case RIGHT:
+            return "right";
+        case CENTER:
+            return "center";
+        case JUSTIFY:
+            return "justify";
+        default:
+            throw new IllegalStateException("Unknown alignment: " + alignment);
+        }
+    }
+
+    @Override
+    protected void decorateIdentity(List<Object> identifiers) {
+        identifiers.add(_underline);
+        identifiers.add(_italic);
+        identifiers.add(_bold);
+        identifiers.add(_fontSize);
+        identifiers.add(_fontSizeUnit);
+        identifiers.add(_alignment);
+        identifiers.add(_backgroundColor);
+        identifiers.add(_foregroundColor);
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/69ad6cdd/core/src/main/java/org/apache/metamodel/schema/ImmutableTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/schema/ImmutableTable.java b/core/src/main/java/org/apache/metamodel/schema/ImmutableTable.java
index 4fc470b..d807290 100644
--- a/core/src/main/java/org/apache/metamodel/schema/ImmutableTable.java
+++ b/core/src/main/java/org/apache/metamodel/schema/ImmutableTable.java
@@ -29,8 +29,6 @@ import java.util.List;
  * constructor in ImmutableSchema.
  * 
  * @see ImmutableSchema
- * 
- * @author Kasper Sørensen
  */
 final class ImmutableTable extends AbstractTable implements Serializable {
 

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/69ad6cdd/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
new file mode 100644
index 0000000..c5ab2e5
--- /dev/null
+++ b/core/src/main/java/org/apache/metamodel/util/LegacyDeserializationObjectInputStream.java
@@ -0,0 +1,47 @@
+/**
+ * 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.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamClass;
+
+/**
+ * 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.
+ */
+public class LegacyDeserializationObjectInputStream extends ObjectInputStream {
+
+    public LegacyDeserializationObjectInputStream(InputStream in) throws IOException, SecurityException {
+        super(in);
+    }
+
+    @Override
+    protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
+        String className = desc.getName();
+        if (className.startsWith("org.eobjects.metamodel") || className.startsWith("[Lorg.eobjects.metamodel")) {
+            String newClassName = className.replace("org.eobjects", "org.apache");
+            return Class.forName(newClassName);
+        }
+        return super.resolveClass(desc);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/69ad6cdd/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 e19cc29..45ff980 100644
--- a/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
+++ b/core/src/test/java/org/apache/metamodel/data/DefaultRowTest.java
@@ -25,20 +25,21 @@ import java.lang.reflect.Field;
 import org.apache.metamodel.query.SelectItem;
 import org.apache.metamodel.schema.MutableColumn;
 import org.apache.metamodel.util.FileHelper;
+import org.apache.metamodel.util.LegacyDeserializationObjectInputStream;
 
 import junit.framework.TestCase;
 
 public class DefaultRowTest extends TestCase {
 
-    SelectItem[] items = new SelectItem[] { new SelectItem(new MutableColumn("foo")),
+    private SelectItem[] items = new SelectItem[] { new SelectItem(new MutableColumn("foo")),
             new SelectItem(new MutableColumn("bar")) };
-    Object[] values = new Object[] { "foo", "bar" };
+    private Object[] values = new Object[] { "foo", "bar" };
 
     public void testDeserializeBackwardsCompatible() throws Exception {
         Object obj;
         FileInputStream fileIn = new FileInputStream("src/test/resources/metamodel-3.0-default-row.ser");
         try {
-            ObjectInputStream ois = new ObjectInputStream(fileIn);
+            ObjectInputStream ois = new LegacyDeserializationObjectInputStream(fileIn);
             obj = ois.readObject();
             ois.close();
         } finally {