ByteArrayTransfer

The class <code>ByteArrayTransfer</code> provides a platform specific mechanism for converting a java <code>byte[]</code> to a platform specific representation of the byte array and vice versa.

<p><code>ByteArrayTransfer</code> is never used directly but is sub-classed by transfer agents that convert between data in a java format such as a <code>String</code> and a platform specific byte array.

<p>If the data you are converting <b>does not</b> map to a <code>byte[]</code>, you should sub-class <code>Transfer</code> directly and do your own mapping to a platform data type.</p>

<p>The following snippet shows a subclass of ByteArrayTransfer that transfers data defined by the class <code>MyType</code>.</p>

<pre><code> public class MyType { public String fileName; public long fileLength; public long lastModified; } </code></pre>

<pre><code> public class MyTypeTransfer extends ByteArrayTransfer {

private static final String MYTYPENAME = "my_type_name"; private static final int MYTYPEID = registerType(MYTYPENAME); private static MyTypeTransfer _instance = new MyTypeTransfer();

private MyTypeTransfer() {}

public static MyTypeTransfer getInstance () { return _instance; } public void javaToNative (Object object, TransferData transferData) { if (object is null || !(object instanceof MyType[])) return;

if (isSupportedType(transferData)) { MyType[] myTypes = (MyType[]) object; try { // write data to a byte array and then ask super to convert to pMedium ByteArrayOutputStream out = new ByteArrayOutputStream(); DataOutputStream writeOut = new DataOutputStream(out); for (int i = 0, length = myTypes.length; i &lt; length; i++){ byte[] buffer = myTypesi.fileName.getBytes(); writeOut.writeInt(buffer.length); writeOut.write(buffer); writeOut.writeLong(myTypesi.fileLength); writeOut.writeLong(myTypesi.lastModified); } byte[] buffer = out.toByteArray(); writeOut.close();

super.javaToNative(buffer, transferData);

} catch (IOException e) { } } } public Object nativeToJava(TransferData transferData){

if (isSupportedType(transferData)) {

byte[] buffer = (byte[])super.nativeToJava(transferData); if (buffer is null) return null;

MyType[] myData = new MyType[0]; try { ByteArrayInputStream in = new ByteArrayInputStream(buffer); DataInputStream readIn = new DataInputStream(in); while(readIn.available() > 20) { MyType datum = new MyType(); int size = readIn.readInt(); byte[] name = new bytesize; readIn.read(name); datum.fileName = new String(name); datum.fileLength = readIn.readLong(); datum.lastModified = readIn.readLong(); MyType[] newMyData = new MyType[myData.length + 1]; System.arraycopy(myData, 0, newMyData, 0, myData.length); newMyDatamyData.length = datum; myData = newMyData; } readIn.close(); } catch (IOException ex) { return null; } return myData; }

return null; } protected String[] getTypeNames(){ return new String[]{MYTYPENAME}; } protected int[] getTypeIds(){ return new int[] {MYTYPEID}; } } </code></pre>

@see Transfer

Members

Functions

javaToNative
void javaToNative(Object object, TransferData transferData)

This implementation of <code>javaToNative</code> converts a java <code>byte[]</code> to a platform specific representation.

nativeToJava
Object nativeToJava(TransferData transferData)

This implementation of <code>nativeToJava</code> converts a platform specific representation of a byte array to a java <code>byte[]</code>.

Inherited Members

From Transfer

getSupportedTypes
TransferData[] getSupportedTypes()

Returns a list of the platform specific data types that can be converted using this transfer agent.

isSupportedType
bool isSupportedType(TransferData transferData)

Returns true if the <code>TransferData</code> data type can be converted using this transfer agent, or false otherwise (including if transferData is <code>null</code>).

getTypeNames
String[] getTypeNames()

Returns the platform specific names of the data types that can be converted using this transfer agent.

getTypeIds
int[] getTypeIds()

Returns the platform specific ids of the data types that can be converted using this transfer agent.

javaToNative
void javaToNative(Object object, TransferData transferData)

Converts a java representation of data to a platform specific representation of the data.

nativeToJava
Object nativeToJava(TransferData transferData)

Converts a platform specific representation of data to a java representation.

registerType
int registerType(String formatName)

Registers a name for a data type and returns the associated unique identifier.

validate
bool validate(Object object)

Test that the object is of the correct format for this Transfer class.

Meta