package org.jboss.mq.referenceable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.rmi.MarshalledObject;
import javax.naming.RefAddr;
public class ObjectRefAddr extends RefAddr
{
private static final long serialVersionUID = 751863774931559945L;
private byte[] serialContent;
public ObjectRefAddr(String arg1, Object content) throws javax.naming.NamingException
{
super(arg1);
try
{
java.rmi.MarshalledObject mo = new MarshalledObject(content);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(mo);
serialContent = baos.toByteArray();
}
catch (java.io.IOException e)
{
e.printStackTrace();
throw new javax.naming.NamingException("Could not create a reference: " + e.getMessage());
}
}
public Object getContent()
{
return serialContent;
}
public static Object extractObjectRefFrom(javax.naming.Reference ref, String arg1)
throws javax.naming.NamingException
{
try
{
byte[] serialContent = (byte[]) ref.get(arg1).getContent();
ByteArrayInputStream bais = new ByteArrayInputStream(serialContent);
ObjectInputStream ois = new ObjectInputStream(bais);
java.rmi.MarshalledObject mo = (java.rmi.MarshalledObject) ois.readObject();
return mo.get();
}
catch (Exception e)
{
throw new javax.naming.NamingException("Invalid reference. Error: " + e.getMessage());
}
}
}