Skip to content

Commit

Permalink
KAA-1072: Add support complex log schemas to mongo appender.
Browse files Browse the repository at this point in the history
  • Loading branch information
sashadidukh committed May 17, 2016
1 parent 05e4e1c commit fb037a9
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 24 deletions.
4 changes: 4 additions & 0 deletions server/appenders/mongo-appender/pom.xml
Expand Up @@ -90,6 +90,10 @@
<artifactId>spring-test</artifactId> <artifactId>spring-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.kaaproject.kaa.server.common.nosql</groupId>
<artifactId>mongo-dao</artifactId>
</dependency>
</dependencies> </dependencies>


<build> <build>
Expand Down
Expand Up @@ -22,6 +22,7 @@
import org.kaaproject.kaa.server.common.log.shared.appender.data.ProfileInfo; import org.kaaproject.kaa.server.common.log.shared.appender.data.ProfileInfo;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import org.kaaproject.kaa.server.common.nosql.mongo.dao.model.MongoDaoUtil;


import com.mongodb.DBObject; import com.mongodb.DBObject;
import com.mongodb.util.JSON; import com.mongodb.util.JSON;
Expand All @@ -44,10 +45,10 @@ public LogEvent() {


public LogEvent(LogEventDto dto, ProfileInfo clientProfile, ProfileInfo serverProfile) { public LogEvent(LogEventDto dto, ProfileInfo clientProfile, ProfileInfo serverProfile) {
this.id = dto.getId(); this.id = dto.getId();
this.header = (DBObject) JSON.parse(dto.getHeader()); this.header = MongoDaoUtil.encodeReservedCharacteres((DBObject) JSON.parse(dto.getHeader()));
this.event = (DBObject) JSON.parse(dto.getEvent()); this.event = MongoDaoUtil.encodeReservedCharacteres((DBObject) JSON.parse(dto.getEvent()));
this.clientProfile = (clientProfile != null) ? (DBObject) JSON.parse(clientProfile.getBody()) : null; this.clientProfile = (clientProfile != null) ? MongoDaoUtil.encodeReservedCharacteres((DBObject) JSON.parse(clientProfile.getBody())) : null;
this.serverProfile = (serverProfile != null) ? (DBObject) JSON.parse(serverProfile.getBody()) : null; this.serverProfile = (serverProfile != null) ? MongoDaoUtil.encodeReservedCharacteres((DBObject) JSON.parse(serverProfile.getBody())) : null;
} }


public String getId() { public String getId() {
Expand All @@ -63,36 +64,38 @@ public DBObject getEvent() {
} }


public void setEvent(DBObject event) { public void setEvent(DBObject event) {
this.event = event; this.event = MongoDaoUtil.encodeReservedCharacteres(event);
} }


public DBObject getHeader() { public DBObject getHeader() {
return header; return header;
} }


public void setHeader(DBObject header) { public void setHeader(DBObject header) {
this.header = header; this.header = MongoDaoUtil.encodeReservedCharacteres(header);
} }


public DBObject getClientProfile() { public DBObject getClientProfile() {
return clientProfile; return clientProfile;
} }


public void setClientProfile(DBObject clientProfile) { public void setClientProfile(DBObject clientProfile) {
this.clientProfile = clientProfile; this.clientProfile = MongoDaoUtil.encodeReservedCharacteres(clientProfile);
} }


public DBObject getServerProfile() { public DBObject getServerProfile() {
return serverProfile; return serverProfile;
} }


public void setServerProfile(DBObject serverProfile) { public void setServerProfile(DBObject serverProfile) {
this.serverProfile = serverProfile; this.serverProfile = MongoDaoUtil.encodeReservedCharacteres(serverProfile);
} }


@Override @Override
public String toString() { public String toString() {
return "LogEvent [id=" + id + ", header=" + header + ", event=" + event + ", clientProfile=" + clientProfile + ", serverProfile=" + serverProfile + "]"; return "LogEvent [id=" + id + ", header=" + MongoDaoUtil.decodeReservedCharacteres(header) + ", event=" +
MongoDaoUtil.decodeReservedCharacteres(event) + ", clientProfile=" + MongoDaoUtil.decodeReservedCharacteres(clientProfile) +
", serverProfile=" + MongoDaoUtil.decodeReservedCharacteres(serverProfile) + "]";
} }


} }
Expand Up @@ -62,6 +62,7 @@
import org.kaaproject.kaa.server.common.log.shared.appender.data.BaseSchemaInfo; import org.kaaproject.kaa.server.common.log.shared.appender.data.BaseSchemaInfo;
import org.kaaproject.kaa.server.common.log.shared.appender.data.ProfileInfo; import org.kaaproject.kaa.server.common.log.shared.appender.data.ProfileInfo;
import org.kaaproject.kaa.server.common.nosql.mongo.dao.MongoDBTestRunner; import org.kaaproject.kaa.server.common.nosql.mongo.dao.MongoDBTestRunner;
import org.kaaproject.kaa.server.common.nosql.mongo.dao.model.MongoDaoUtil;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -90,10 +91,10 @@ public class MongoDBLogAppenderTest {
private static final String SERVER_PROFILE_CONTENT_FILE = "server_profile_content.json"; private static final String SERVER_PROFILE_CONTENT_FILE = "server_profile_content.json";


// According to the server profile schema file // According to the server profile schema file
private static final String SERVER_FIELD_KEY = "serverField"; private static final String SERVER_FIELD_KEY = "country.$";


// According to the server profile content file // According to the server profile content file
private static final int SERVER_FIELD_VALUE = 111; private static final String SERVER_FIELD_VALUE = "1.0.$.";


private static final String SERVER_PROFILE = "serverProfile"; private static final String SERVER_PROFILE = "serverProfile";


Expand Down Expand Up @@ -288,7 +289,9 @@ public void doAppendWithServerProfileTest() throws Exception {
this.logAppender.doAppend(logEventPack, new TestLogDeliveryCallback()); this.logAppender.doAppend(logEventPack, new TestLogDeliveryCallback());
String collectionName = (String) ReflectionTestUtils.getField(this.logAppender, "collectionName"); String collectionName = (String) ReflectionTestUtils.getField(this.logAppender, "collectionName");
DBObject serverProfile = (DBObject) MongoDBTestRunner.getDB().getCollection(collectionName).findOne().get(SERVER_PROFILE); DBObject serverProfile = (DBObject) MongoDBTestRunner.getDB().getCollection(collectionName).findOne().get(SERVER_PROFILE);
Assert.assertEquals(SERVER_FIELD_VALUE, serverProfile.get(SERVER_FIELD_KEY)); DBObject profile = (DBObject) serverProfile.get("Profile");
DBObject profileNamespace = (DBObject) profile.get("org.kaaproject.kaa.schema.sample.profile");
Assert.assertEquals(SERVER_FIELD_VALUE, profileNamespace.get(SERVER_FIELD_KEY));
} }


@Test @Test
Expand Down
@@ -1,3 +1,16 @@
{ {
"serverField" : 111 "Profile" : {
"org.kaaproject.kaa.schema.sample.profile" : {
"country.$" : "1.0.$.",
"country$IsoCode" : "2.0.$.",
"city" : "3.0.$.",
"Obj" : {
"org.kaaproject.kaa.schema.sample.profile.Obj" : {
"name" : {
"string" : "Obj.name$"
}
}
}
}
}
} }
@@ -1,11 +1,28 @@
+{ {
+ "type" : "record", "type":"record",
+ "name" : "ServerProfileTest", "name":"Profile",
+ "namespace" : "org.kaaproject.kaa", "namespace":"org.kaaproject.kaa.schema.sample.profile",
+ "fields" : [ "fields":[
+ { {
+ "name" : "serverField", "name":"country.$",
+ "type" : "int" "type":"string"
+ } },
+ ] {
+} "name":"country$IsoCode",
"type" : "string"
},
{
"name" : "city",
"type" : "string"
},
{
"name":"Obj",
"type": "record",
"namespace":"org.kaaproject.kaa.schema.sample.profile.Obj",
"fields" : [
"name" : "name",
"type" : "string"
]
},
]
}

0 comments on commit fb037a9

Please sign in to comment.