package org.radargun.query;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;
import org.infinispan.protostream.MessageMarshaller;
/**
* @author Matej Cimbora
*/
@Indexed
public class ComposedObject implements Serializable {
@IndexedEmbedded
private TextObject textObject;
@IndexedEmbedded
private NumberObject numberObject;
@IndexedEmbedded
private List<TextObject> textObjectList;
@IndexedEmbedded
private List<NumberObject> numberObjectList;
public ComposedObject(TextObject textObject, NumberObject numberObject, List<TextObject> textObjectList, List<NumberObject> numberObjectList) {
this.textObject = textObject;
this.numberObject = numberObject;
this.textObjectList = textObjectList;
this.numberObjectList = numberObjectList;
}
public TextObject getTextObject() {
return textObject;
}
public NumberObject getNumberObject() {
return numberObject;
}
public List<TextObject> getTextObjectList() {
return textObjectList;
}
public List<NumberObject> getNumberObjectList() {
return numberObjectList;
}
@Override
public String toString() {
return "ComposedObject{" +
"textObject=" + textObject +
", numberObject=" + numberObject +
", textObjectList=" + textObjectList +
", numberObjectList=" + numberObjectList +
'}';
}
public static class Marshaller implements MessageMarshaller<ComposedObject> {
private static final String NAME = ComposedObject.class.getName();
@Override
public ComposedObject readFrom(ProtoStreamReader reader) throws IOException {
return new ComposedObject(reader.readObject("textObject", TextObject.class),
reader.readObject("numberObject", NumberObject.class),
reader.readCollection("textObjectList", new ArrayList<TextObject>(), TextObject.class),
reader.readCollection("numberObjectList", new ArrayList<NumberObject>(), NumberObject.class));
}
@Override
public void writeTo(ProtoStreamWriter writer, ComposedObject composedObject) throws IOException {
writer.writeObject("textObject", composedObject.getTextObject(), TextObject.class);
writer.writeObject("numberObject", composedObject.getNumberObject(), NumberObject.class);
writer.writeCollection("textObjectList", composedObject.getTextObjectList(), TextObject.class);
writer.writeCollection("numberObjectList", composedObject.getNumberObjectList(), NumberObject.class);
}
@Override
public Class<? extends ComposedObject> getJavaClass() {
return ComposedObject.class;
}
@Override
public String getTypeName() {
return NAME;
}
}
}