}
public class LogEntry {
public static enum SEVERITY { NORMAL, SEVERE, WARN, FATAL};
private String message;
private Timestamp time;
private SEVERITY severity;
public LogEntry(){}
public LogEntry(String message, Timestamp time, SEVERITY severity) {
super();
this.message = message;
this.time = time;
this.severity = severity;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/**
* @return the time
*/
public Timestamp getTime() {
return time;
}
/**
* @param time the time to set
*/
public void setTime(Timestamp time) {
this.time = time;
}
/**
* @return the severity
*/
public SEVERITY getSeverity() {
return severity;
}
/**
* @param severity the severity to set
*/
public void setSeverity(SEVERITY severity) {
this.severity = severity;
}
}
//here's how its saved
TestWithMapDao dao = new TestWithMapDaoMorph(TestWithMap.class, getDatastore());
ObjectId oid = new ObjectId();
Map<String, Object> theMap = new HashMap<String, Object>();
theMap.put("fookey", "foovalue");
theMap.put("complxObj", new LogEntry(System.currentTimeMillis(), "hey im the complex object", PRIORITY.important));
TestWithMap twm = new TestWithMap(oid, "i have a map", theMap);
dao.save(twm);
//and the exception :
java.lang.IllegalArgumentException: can't serialize class foo.bar.LogEntry
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:284)
at org.bson.BasicBSONEncoder.putMap(BasicBSONEncoder.java:324)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:246)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:131)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:33)
at com.mongodb.BSONBinaryWriter.encodeDocument(BSONBinaryWriter.java:339)
at com.mongodb.InsertCommandMessage.writeTheWrites(InsertCommandMessage.java:45)
at com.mongodb.InsertCommandMessage.writeTheWrites(InsertCommandMessage.java:23)
at com.mongodb.BaseWriteCommandMessage.encodeMessageBody(BaseWriteCommandMessage.java:69)
at com.mongodb.BaseWriteCommandMessage.encodeMessageBody(BaseWriteCommandMessage.java:23)
at com.mongodb.RequestMessage.encode(RequestMessage.java:66)
at com.mongodb.BaseWriteCommandMessage.encode(BaseWriteCommandMessage.java:53)
at com.mongodb.DBCollectionImpl.sendWriteCommandMessage(DBCollectionImpl.java:471)
at com.mongodb.DBCollectionImpl.writeWithCommandProtocol(DBCollectionImpl.java:425)
at com.mongodb.DBCollectionImpl.insertWithCommandProtocol(DBCollectionImpl.java:385)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:186)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165)
at com.mongodb.DBCollection.insert(DBCollection.java:161)
at com.mongodb.DBCollection.insert(DBCollection.java:107)
at com.mongodb.DBCollection.save(DBCollection.java:966)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:949)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:1013)
at org.mongodb.morphia.DatastoreImpl.save(DatastoreImpl.java:1000)
at org.mongodb.morphia.dao.BasicDAO.save(BasicDAO.java:130)
at foo.bar.Test.testObjectWithMap(Test.java:64)