package org.jboss.capedwarf.log;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import com.google.appengine.api.log.AppLogLine;
import com.google.appengine.api.log.LogService;
import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Norms;
import org.hibernate.search.annotations.NumericField;
import org.hibernate.search.annotations.ProvidedId;
import org.hibernate.search.annotations.TermVector;
/**
* @author <a href="mailto:mluksa@redhat.com">Marko Luksa</a>
*/
@Indexed
@ProvidedId
public class CapedwarfAppLogLine extends CapedwarfLogElement implements Externalizable {
public static final String REQUEST_ID = "requestId";
public static final String SEQUENCE_NUMBER = "sequenceNumber";
private String requestId;
private long sequenceNumber;
private AppLogLine appLogLine = new AppLogLine();
public CapedwarfAppLogLine() {
}
public CapedwarfAppLogLine(String requestId, long sequenceNumber) {
this.requestId = requestId;
this.sequenceNumber = sequenceNumber;
}
@Field(name = REQUEST_ID, analyze = Analyze.NO, norms = Norms.NO, termVector = TermVector.NO)
public String getRequestId() {
return requestId;
}
public AppLogLine getAppLogLine() {
return appLogLine;
}
@NumericField
@Field(name = SEQUENCE_NUMBER)
public long getSequenceNumber() {
return sequenceNumber;
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeInt(1); // version
out.writeUTF(requestId);
out.writeLong(sequenceNumber);
out.writeInt(appLogLine.getLogLevel().ordinal());
out.writeUTF(appLogLine.getLogMessage());
out.writeLong(appLogLine.getTimeUsec());
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
int version = in.readInt();
if (version == 1) {
requestId = in.readUTF();
sequenceNumber = in.readLong();
appLogLine.setLogLevel(LogService.LogLevel.values()[in.readInt()]);
appLogLine.setLogMessage(in.readUTF());
appLogLine.setTimeUsec(in.readLong());
} else {
throw new IOException("Unsupported version " + version);
}
}
}