001/* 002 * Copyright (c) 2003-2010 The Regents of the University of California. 003 * All rights reserved. 004 * 005 * '$Author: crawl $' 006 * '$Date: 2015-05-20 00:31:29 +0000 (Wed, 20 May 2015) $' 007 * '$Revision: 33419 $' 008 * 009 * Permission is hereby granted, without written agreement and without 010 * license or royalty fees, to use, copy, modify, and distribute this 011 * software and its documentation for any purpose, provided that the above 012 * copyright notice and the following two paragraphs appear in all copies 013 * of this software. 014 * 015 * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY 016 * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 017 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF 018 * THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF 019 * SUCH DAMAGE. 020 * 021 * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, 022 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE 024 * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF 025 * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, 026 * ENHANCEMENTS, OR MODIFICATIONS. 027 * 028 */ 029 030package org.kepler.reporting.rio; 031 032import java.io.IOException; 033import java.io.ObjectInputStream; 034import java.io.ObjectOutputStream; 035import java.io.Serializable; 036 037import ptolemy.data.Token; 038 039public class ItemValue implements Serializable { 040 041 /** The token value. This field is marked transient since Token 042 * is not serializable. Instead, writeObject() and readObject() 043 * used _tokenValue and _tokenType for serialization and 044 * deserialization. 045 */ 046 private transient Token value; 047 048 /** The token value. */ 049 private String _tokenValue; 050 051 /** The token type. */ 052 private String _tokenType; 053 054 private String base64data; 055 056 private boolean reference = false; 057 058 public ItemValue() {} 059 060 public ItemValue(Token value) { 061 this.value = value; 062 } 063 064 public Token getValue() { 065 return value; 066 } 067 068 public void setValue(Token value) { 069 this.value = value; 070 } 071 072 public String getBase64data() { 073 return base64data; 074 } 075 076 public void setBase64data(String base64data) { 077 this.base64data = base64data; 078 } 079 080 public boolean isReference() { 081 return reference; 082 } 083 084 public void setReference(boolean reference) { 085 this.reference = reference; 086 } 087 088 /** Serialize the fields. Set the token value and type since Token is not serializable. */ 089 private void writeObject(ObjectOutputStream out) 090 throws IOException { 091 _tokenValue = value.toString(); 092 _tokenType = value.getClass().getName(); 093 out.defaultWriteObject(); 094 } 095 096 /** Deserialize the fields. Use the token value and type since Token is not serializable. */ 097 private void readObject(ObjectInputStream in) 098 throws IOException, ClassNotFoundException { 099 in.defaultReadObject(); 100 try 101 { 102 Class<?> clazz = Class.forName(_tokenType); 103 value = (Token) clazz.getConstructor(String.class).newInstance(_tokenValue); 104 } 105 catch (Exception e) 106 { 107 System.err.println("WARNING: Token could not be constructed for type: " + 108 _tokenType + ": " + e.getMessage()); 109 e.printStackTrace(); 110 } 111 } 112}