2

Simple XML で byte[] のカスタム コンバーターを作成しようとしています。これは途中で機能しており、書き込みメソッドを呼び出していますが、読み取りメソッドは呼び出していません。誰かが理由を指摘できますか??

これが私の単純なxml注釈付きオブジェクトです

@Root
public class Device implements Serializable
{

    private final static long serialVersionUID = 1L;
    @Element
    @Convert(ByteArrayConverter.class)
    protected byte[] imageRef;

    public byte[] getImageRef() {
    return imageRef;
    }

    public void setImageRef(byte[] imageRef) {
    this.imageRef = imageRef;
    }

これが私のカスタムコンバーターです

public class ByteArrayConverter implements Converter<byte[]>
{


    @Override
    public byte[] read(InputNode node) throws Exception 
    {            
         //put a break point here BUT Code not getting here
           ("I am here in read")
           String s = node.getValue();
           return Base64.decode(s);
    }

    @Override
    public void write(OutputNode node, byte[] byteArray) throws Exception 
    {       
        ("I am here in write")  
            node.setValue(Base64.encode(byteArray)) 
    }

これが私のシリアライゼーション/デシリアライゼーションコードです

Registry registry = new Registry();
Strategy strategy = new RegistryStrategy(registry);
Serializer serializer = new Persister(strategy);
try
{
    registry.bind(byte[].class, ByteArrayConverter.class);
} catch (Exception e)
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Device device = new Device();
device.setImageRef(new byte[]{1,2,3});

File file = new File("myDevice.xml");       
serializer.write(device, file); 

Device readDevice = serializer.read(Device.class, file);

デバッガーでこれを実行すると、書き込みメソッドでデバッガーが停止するのがわかりますが、read()メソッドで停止しないため、期待される結果が得られません。オブジェクトを構築しているときに、このコードの読み取りが停止しない理由は何ですか??? ありがとう

4

0 に答える 0