wt.pds
Class PDSEncoder

java.lang.Object
  extended bywt.pds.PDSEncoder

public class PDSEncoder
extends Object

The PDSEncoder class provides methods to encode and decode serializable objects to and from character strings for long term (persistent) storage. It provides static convenience methods to encode and decode a single serializable object to and from a character string. Instances of PDSEncoder can be used to efficiently reuse a single java.io.ObjectInputStream or java.io.ObjectOutputStream to read and write many character strings or byte streams. The encoding scheme is considered an internal property of the encoder, but is guaranteed to be a subset of ASCII characters such as Base64-encoding.

The object input and object output streams implement wt.pds.PDSObjectInput and wt.pds.PDSObjectOutput interfaces. These are tagging interfaces used by some Windchill classes to identify when they are being serialized for long term storage. The object output stream will optionally warn or abort attempts to serialize objects that implement the wt.fc.NetFactor interface if they do not also implement the wt.fc.Evolvable interface. This behavior is controlled by the wt.pds.notEvolvableAction properties. Valid values are "none", "warning", "traceback", and "exception". The default is "warning".

NOTE: This class duplicates code that exists in wt.util.Encoder. Any changes to this class should be reflected there as well.

Supported API: false
Extendable: false


Nested Class Summary
(package private) static class PDSEncoder.DecodeObjectInputStream
           
(package private) static class PDSEncoder.EncodeObjectOutputStream
           
(package private) static class PDSEncoder.InputRedirector
           
(package private) static class PDSEncoder.OutputRedirector
           
(package private) static class PDSEncoder.RewriteCheckingDecodeObjectInputStream
          This class exists to deal with bad versions of the wt.meta.LocalizedValue class if they're encountered during (small)blob decodings.
(package private) static class PDSEncoder.SerializationMappingEntry
           
 
Field Summary
private  PDSEncoder.DecodeObjectInputStream decodeStream
           
private  PDSEncoder.EncodeObjectOutputStream encodeStream
           
private static String PJL60LV_JAR_URL
           
private static ClassLoader repairingClassLoaderForPjl60__
           
private static ClassLoader repairingClassLoaderForWnc620__
           
private static String WNC620LV_JAR_URL
           
 
Constructor Summary
PDSEncoder()
           
 
Method Summary
static Serializable decode(String str)
          Produces a serializable object from the encoded string argument.
static String encode(Serializable obj)
          Produces an encoded string from an object argument.
private static ClassLoader getRepairingClassLoaderForPjl60()
          A class loader that loads the bad pjl.6.(0|1)) version of wt.meta.LocalizedValue class from a special jar.
private static ClassLoader getRepairingClassLoaderForWnc620()
          A class loader that loads the bad 6.2.(0|1) version of wt.meta.LocalizedValue class from a special jar.
private static ClassLoader newRepairingClassLoader(String relative_jar_url)
           
 ObjectInputStream setInput(InputStream in)
          Set a input stream to read next object stream.
 ObjectInputStream setInput(String str)
          Set a string to read next encoded object stream.
 ObjectOutputStream setOutput(OutputStream out)
          Set a output stream to receive the next object stream.
 ObjectOutputStream setOutput(StringBuffer buf)
          Set a string buffer to receive the next encoded object stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

encodeStream

private PDSEncoder.EncodeObjectOutputStream encodeStream

decodeStream

private PDSEncoder.DecodeObjectInputStream decodeStream

repairingClassLoaderForWnc620__

private static ClassLoader repairingClassLoaderForWnc620__

repairingClassLoaderForPjl60__

private static ClassLoader repairingClassLoaderForPjl60__

WNC620LV_JAR_URL

private static final String WNC620LV_JAR_URL
See Also:
Constant Field Values

PJL60LV_JAR_URL

private static final String PJL60LV_JAR_URL
See Also:
Constant Field Values
Constructor Detail

PDSEncoder

public PDSEncoder()
Method Detail

encode

public static String encode(Serializable obj)
                     throws IOException
Produces an encoded string from an object argument. The object must be Serializable. A transient Encoder object is constructed to perform the serialization.

Supported API: false

Parameters:
obj - Serializable object to be encoded
Returns:
String serialization of the object
Throws:
IOException

decode

public static Serializable decode(String str)
                           throws IOException,
                                  ClassNotFoundException
Produces a serializable object from the encoded string argument.

Supported API: false

Parameters:
str - encoded string returned by encode operation
Returns:
Serializable object
Throws:
IOException
ClassNotFoundException

setOutput

public ObjectOutputStream setOutput(StringBuffer buf)
                             throws IOException
Set a string buffer to receive the next encoded object stream.

Supported API: false

Parameters:
buf - the StringBuffer
Returns:
the ObjectOutputStream for writing to this buffer
Throws:
IOException

setOutput

public ObjectOutputStream setOutput(OutputStream out)
                             throws IOException
Set a output stream to receive the next object stream.

Supported API: false

Parameters:
out - the OutputStream
Returns:
the ObjectOutputStream for writing to this byte stream
Throws:
IOException

setInput

public ObjectInputStream setInput(String str)
                           throws IOException
Set a string to read next encoded object stream.

Supported API: false

Parameters:
str - the String
Returns:
the ObjectInputStream for reading this string
Throws:
IOException

setInput

public ObjectInputStream setInput(InputStream in)
                           throws IOException
Set a input stream to read next object stream.

Supported API: false

Parameters:
in - the InputStream
Returns:
the ObjectInputStream for reading this stream
Throws:
IOException

getRepairingClassLoaderForWnc620

private static ClassLoader getRepairingClassLoaderForWnc620()
                                                     throws MalformedURLException
A class loader that loads the bad 6.2.(0|1) version of wt.meta.LocalizedValue class from a special jar.

Throws:
MalformedURLException

getRepairingClassLoaderForPjl60

private static ClassLoader getRepairingClassLoaderForPjl60()
                                                    throws MalformedURLException
A class loader that loads the bad pjl.6.(0|1)) version of wt.meta.LocalizedValue class from a special jar.

Throws:
MalformedURLException

newRepairingClassLoader

private static ClassLoader newRepairingClassLoader(String relative_jar_url)