use of com.emc.storageos.api.service.impl.resource.utils.JSONAuditLogMarshaller in project coprhd-controller by CoprHD.
the class DbAuditLogRetriever method getBulkAuditLogs.
@Override
public void getBulkAuditLogs(AuditLogRequest auditLogRequest, MediaType type, Writer writer) throws MarshallingExcetion {
if (dbClient == null) {
throw APIException.internalServerErrors.auditLogNoDb();
}
AuditLogMarshaller marshaller = null;
if (type.equals(MediaType.APPLICATION_XML_TYPE)) {
marshaller = new XMLAuditLogMarshaller();
log.debug("Parser type: {}", type.toString());
} else if (type.equals(MediaType.APPLICATION_JSON_TYPE)) {
marshaller = new JSONAuditLogMarshaller();
log.debug("Parser type: {}", type.toString());
} else if (type.equals(MediaType.TEXT_PLAIN_TYPE)) {
marshaller = new TextAuditLogMarshaller();
log.debug("parser type: {}", type.toString());
} else {
log.warn("unsupported type: {}, use XML", type.toString());
marshaller = new XMLAuditLogMarshaller();
}
marshaller.setLang(auditLogRequest.getLanguage());
DateTime start = auditLogRequest.getStartTime();
DateTime end = auditLogRequest.getEndTime();
TimeSeriesMetadata.TimeBucket bucket = TimeSeriesMetadata.TimeBucket.HOUR;
if (start.plusSeconds(59).isEqual(end.toInstant())) {
bucket = TimeSeriesMetadata.TimeBucket.MINUTE;
}
AuditLogQueryResult result = new AuditLogQueryResult(marshaller, writer, auditLogRequest);
marshaller.header(writer);
log.info("Query time bucket {} to {}", start, end);
for (; !start.isAfter(end.toInstant()); start = start.plusHours(1)) {
dbClient.queryTimeSeries(AuditLogTimeSeries.class, start, bucket, result, getThreadPool());
}
result.outputCount();
marshaller.tailer(writer);
}
use of com.emc.storageos.api.service.impl.resource.utils.JSONAuditLogMarshaller in project coprhd-controller by CoprHD.
the class JSONAuditLogMarchallerTest method testJsonAuditLogMarshallingForIOExceptions.
@Test
public void testJsonAuditLogMarshallingForIOExceptions() throws URISyntaxException, IOException, MarshallingExcetion {
deleteIfExists(JsonTestOutputFile);
JSONAuditLogMarshaller jm = new JSONAuditLogMarshaller();
AuditLog log = new AuditLog();
log.setProductId("productId.2");
log.setTenantId(new URI("http://tenant.2"));
log.setUserId(new URI("http://user.2"));
log.setServiceType("serviceType.2");
log.setAuditType("auditType.2");
log.setDescription("description.2");
log.setOperationalStatus("operationalStatus.2");
OutputStream output = new OutputStream() {
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b);
}
public String toString() {
return this.string.toString();
}
};
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
writer.close();
jm.header(writer);
} catch (MarshallingExcetion e) {
Assert.assertTrue(e.toString().contains("JSON head Streaming failed"));
}
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
writer.close();
jm.marshal(log, writer);
} catch (MarshallingExcetion e) {
Assert.assertTrue(e.toString().contains("JSON streaming failed"));
}
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
writer.close();
jm.tailer(writer);
} catch (MarshallingExcetion e) {
Assert.assertTrue(e.toString().contains("JSON tail Streaming failed"));
}
deleteIfExists(JsonTestOutputFile);
}
use of com.emc.storageos.api.service.impl.resource.utils.JSONAuditLogMarshaller in project coprhd-controller by CoprHD.
the class JSONAuditLogMarchallerTest method testJsonAuditLogMarshallingForNullLog.
@Test
public void testJsonAuditLogMarshallingForNullLog() throws URISyntaxException, IOException, MarshallingExcetion {
deleteIfExists(JsonTestOutputFile);
JSONAuditLogMarshaller jm = new JSONAuditLogMarshaller();
AuditLog log = null;
OutputStream output = new OutputStream() {
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b);
}
public String toString() {
return this.string.toString();
}
};
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
jm.header(writer);
jm.marshal(log, writer);
jm.tailer(writer);
writer.close();
FileWriter fileWriter = new FileWriter(JsonTestOutputFile);
fileWriter.write(output.toString());
fileWriter.close();
ObjectMapper mapper = null;
mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getDeserializationConfig().withAnnotationIntrospector(introspector);
try {
@SuppressWarnings("unused") AuditLog auditLog = mapper.readValue(new File(JsonTestOutputFile), AuditLog.class);
} catch (UnrecognizedPropertyException e) {
Assert.assertTrue(e.toString().contains("Unrecognized"));
}
deleteIfExists(JsonTestOutputFile);
}
use of com.emc.storageos.api.service.impl.resource.utils.JSONAuditLogMarshaller in project coprhd-controller by CoprHD.
the class JSONAuditLogMarchallerTest method testJsonAuditLogMarshalling.
@Test
public void testJsonAuditLogMarshalling() throws URISyntaxException, IOException, MarshallingExcetion {
deleteIfExists(JsonTestOutputFile);
JSONAuditLogMarshaller jm = new JSONAuditLogMarshaller();
AuditLog log = new AuditLog();
log.setProductId("productId.1");
log.setTenantId(new URI("http://tenant.1"));
log.setUserId(new URI("http://user.1"));
log.setServiceType("serviceType.1");
log.setAuditType("auditType.1");
log.setDescription("description.1");
log.setOperationalStatus("operationalStatus.1");
OutputStream output = new OutputStream() {
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b);
}
public String toString() {
return this.string.toString();
}
};
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
jm.marshal(log, writer);
writer.close();
FileWriter fileWriter = new FileWriter(JsonTestOutputFile);
fileWriter.write(output.toString());
fileWriter.close();
ObjectMapper mapper = null;
mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getDeserializationConfig().withAnnotationIntrospector(introspector);
AuditLog auditLog = mapper.readValue(new File(JsonTestOutputFile), AuditLog.class);
Assert.assertEquals("productId.1", auditLog.getProductId().toString());
Assert.assertEquals("http://tenant.1", auditLog.getTenantId().toString());
Assert.assertEquals("http://user.1", auditLog.getUserId().toString());
Assert.assertEquals("serviceType.1", auditLog.getServiceType().toString());
Assert.assertEquals("auditType.1", auditLog.getAuditType().toString());
Assert.assertEquals("description.1", auditLog.getDescription().toString());
Assert.assertEquals("operationalStatus.1", auditLog.getOperationalStatus().toString());
deleteIfExists(JsonTestOutputFile);
}
use of com.emc.storageos.api.service.impl.resource.utils.JSONAuditLogMarshaller in project coprhd-controller by CoprHD.
the class DummyAuditLogRetriever method getBulkAuditLogs.
@Override
public void getBulkAuditLogs(AuditLogRequest auditLogRequest, MediaType type, Writer writer) throws MarshallingExcetion {
AuditLogMarshaller marshaller = null;
if (type == MediaType.APPLICATION_XML_TYPE) {
marshaller = new XMLAuditLogMarshaller();
} else if (type == MediaType.APPLICATION_JSON_TYPE) {
marshaller = new JSONAuditLogMarshaller();
}
marshaller.header(writer);
List<AuditLog> auditLogs = null;
try {
auditLogs = getDummyAuditLogs();
} catch (URISyntaxException e) {
_logger.error("Error getting logs", e);
}
for (AuditLog log : auditLogs) {
if (type == MediaType.APPLICATION_XML_TYPE) {
marshaller.marshal(log, writer);
} else if (type == MediaType.APPLICATION_JSON_TYPE) {
marshaller.marshal(log, writer);
}
}
marshaller.tailer(writer);
}
Aggregations