Modify code to limit garbage collectible objects and create method to deploy adapters without custom mapping

Removed creation of ArrayLists when a service is been called and added null validation to those lists in service layer. Developed code to deploy adapters when custom mapping is false and updated exception handling.
4.x.x
Yohan Avishke 5 years ago
parent d885707046
commit 51b7f8b206

@ -27,7 +27,7 @@ import java.util.List;
*/
public class AdapterConfiguration {
@ApiModelProperty(value = "Adapter properties list")
private List<AdapterProperty> adapterProperties = new ArrayList<>();
private List<AdapterProperty> adapterProperties;
@ApiModelProperty(value = "Custom-mapping flag")
private boolean isCustomMappingEnabled;
@ApiModelProperty(value = "Mapping configurations")

@ -32,15 +32,15 @@ public class AdapterMappingConfiguration {
@ApiModelProperty(value = "Input mapping for json,text and xml mappings")
private String inputMappingString;
@ApiModelProperty(value = "Input mapping for json,map and xml mappings")
private List<MappingProperty> inputMappingProperties = new ArrayList<>();
private List<MappingProperty> inputMappingProperties;
@ApiModelProperty(value = "Name-scape mapping for xml mapping")
private List<MappingProperty> namespaceMappingProperties = new ArrayList<>();
private List<MappingProperty> namespaceMappingProperties;
@ApiModelProperty(value = "Correlation mapping for wso2 mapping")
private List<MappingProperty> correlationMappingProperties = new ArrayList<>();
private List<MappingProperty> correlationMappingProperties;
@ApiModelProperty(value = "Payload mapping for wso2 mapping")
private List<MappingProperty> payloadMappingProperties = new ArrayList<>();
private List<MappingProperty> payloadMappingProperties;
@ApiModelProperty(value = "Meta mapping for wso2 mapping")
private List<MappingProperty> metaMappingProperties = new ArrayList<>();
private List<MappingProperty> metaMappingProperties;
public MessageFormat getMessageFormat() {
return messageFormat;

@ -36,11 +36,11 @@ public class EventStream {
@ApiModelProperty(value = "Stream description")
private String description;
@ApiModelProperty(value = "Meta attribute list")
private List<Attribute> metaData = new ArrayList<>();
private List<Attribute> metaData;
@ApiModelProperty(value = "Correlation attribute list")
private List<Attribute> correlationData = new ArrayList<>();
private List<Attribute> correlationData;
@ApiModelProperty(value = "Payload attribute list")
private List<Attribute> payloadData = new ArrayList<>();
private List<Attribute> payloadData;
@ApiModelProperty(value = "Stream definition" , notes = "use only when creating stream as a String")
private String definition;

@ -19,6 +19,7 @@
package org.wso2.carbon.device.mgt.jaxrs.exception;
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
@ -27,8 +28,26 @@ import javax.ws.rs.core.Response;
* Custom exception class for wrapping BadRequest related exceptions.
*/
public class BadRequestException extends WebApplicationException {
private String message;
private static final long serialVersionUID = -24991723711391192L;
public BadRequestException(ErrorResponse error) {
super(Response.status(Response.Status.BAD_REQUEST).entity(error).build());
}
}
public BadRequestException(ErrorDTO errorDTO) {
super(Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(errorDTO)
.header(Constants.DeviceConstants.HEADER_CONTENT_TYPE, Constants.DeviceConstants.APPLICATION_JSON)
.build());
message = errorDTO.getMessage();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

@ -36,7 +36,7 @@ public class InvalidExecutionPlanException extends WebApplicationException {
.entity(errorDTO)
.header(Constants.DeviceConstants.HEADER_CONTENT_TYPE, Constants.DeviceConstants.APPLICATION_JSON)
.build());
message = errorDTO.getDescription();
message = errorDTO.getMessage();
}
@Override

@ -18,7 +18,6 @@
package org.wso2.carbon.device.mgt.jaxrs.service.impl;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
import org.wso2.carbon.device.mgt.jaxrs.beans.analytics.Attribute;
import org.wso2.carbon.device.mgt.jaxrs.beans.analytics.AdapterMappingConfiguration;
import org.wso2.carbon.device.mgt.jaxrs.beans.analytics.MappingProperty;
@ -116,8 +115,12 @@ public class AnalyticsArtifactsManagementServiceImpl
public Response deployEventDefinitionAsDto(@Valid EventStream stream) {
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain();
try {
validateStreamProperties(stream);
deployStream(stream);
return Response.ok().build();
} catch (BadRequestException e) {
log.error(e.getMessage(), e);
return e.getResponse();
} catch (AxisFault e) {
String errMsg = "Failed to create event definitions for tenant " + tenantDomain;
log.error(errMsg, e);
@ -187,6 +190,9 @@ public class AnalyticsArtifactsManagementServiceImpl
}
deployReceiver(receiver, customMapping, adapterConfiguration);
return Response.ok().build();
} catch (BadRequestException e) {
log.error(e.getMessage(), e);
return e.getResponse();
} catch (AxisFault e) {
String errMsg = "Failed to create event definitions for tenantDomain: " + tenantDomain;
log.error(errMsg, e);
@ -256,6 +262,9 @@ public class AnalyticsArtifactsManagementServiceImpl
}
deployPublisher(publisher, customMapping, adapterConfiguration);
return Response.ok().build();
} catch (BadRequestException e) {
log.error(e.getMessage(), e);
return e.getResponse();
} catch (AxisFault e) {
String errMsg = "Failed to create event definitions for tenantDomain: " + tenantDomain;
log.error(errMsg, e);
@ -283,8 +292,11 @@ public class AnalyticsArtifactsManagementServiceImpl
@Valid SiddhiExecutionPlan plan) {
String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain();
try {
publishSiddhiExecutionPlan(name, isEdited, plan.getDefinition());
deploySiddhiExecutionPlan(name, isEdited, plan.getDefinition());
return Response.ok().build();
} catch (InvalidExecutionPlanException e) {
log.error(e.getMessage(), e);
return e.getResponse();
} catch (AxisFault e) {
String errMsg = "Failed to create event definitions for tenantDomain: " + tenantDomain;
log.error(errMsg, e);
@ -315,14 +327,6 @@ public class AnalyticsArtifactsManagementServiceImpl
List<Attribute> metaData = stream.getMetaData();
List<Attribute> payloadData = stream.getPayloadData();
List<Attribute> correlationData = stream.getCorrelationData();
if (metaData.isEmpty() && correlationData.isEmpty() && payloadData.isEmpty()) {
String errMsg = String.format("Failed to validate Stream property attributes of %s:%s",
stream.getName(), stream.getVersion());
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(errMsg);
log.error(errMsg);
throw new BadRequestException(errorResponse);
}
try {
eventStreamAdminServiceStub = DeviceMgtAPIUtils.getEventStreamAdminServiceStub();
@ -331,10 +335,15 @@ public class AnalyticsArtifactsManagementServiceImpl
eventStreamDefinitionDto.setVersion(stream.getVersion());
eventStreamDefinitionDto.setNickName(stream.getNickName());
eventStreamDefinitionDto.setDescription(stream.getDescription());
eventStreamDefinitionDto.setMetaData(addEventAttributesToDto(metaData));
eventStreamDefinitionDto.setPayloadData(addEventAttributesToDto(payloadData));
eventStreamDefinitionDto.setCorrelationData(addEventAttributesToDto(correlationData));
if (metaData != null) {
eventStreamDefinitionDto.setMetaData(addEventAttributesToDto(metaData));
}
if (payloadData != null) {
eventStreamDefinitionDto.setPayloadData(addEventAttributesToDto(payloadData));
}
if (correlationData != null) {
eventStreamDefinitionDto.setCorrelationData(addEventAttributesToDto(correlationData));
}
String streamId = stream.getName() + ":" + stream.getVersion();
if (eventStreamAdminServiceStub.getStreamDefinitionDto(streamId) != null) {
eventStreamAdminServiceStub.editEventStreamDefinitionAsDto(eventStreamDefinitionDto, streamId);
@ -344,7 +353,6 @@ public class AnalyticsArtifactsManagementServiceImpl
} finally {
cleanup(eventStreamAdminServiceStub);
}
}
/**
@ -360,8 +368,8 @@ public class AnalyticsArtifactsManagementServiceImpl
private void deployReceiver(Adapter receiver, boolean customMapping,
AdapterConfiguration adapterConfiguration)
throws RemoteException, UserStoreException, JWTClientException {
EventReceiverAdminServiceStub eventReceiverAdminServiceStub = DeviceMgtAPIUtils.getEventReceiverAdminServiceStub();
EventReceiverAdminServiceStub eventReceiverAdminServiceStub = DeviceMgtAPIUtils
.getEventReceiverAdminServiceStub();
try {
String receiverName = receiver.getAdapterName();
String adapterType = receiver.getAdapterType().toStringFormatted();
@ -374,55 +382,95 @@ public class AnalyticsArtifactsManagementServiceImpl
}
BasicInputAdapterPropertyDto[] basicInputAdapterPropertyDtos = addReceiverConfigToDto(adapterProperties);
AdapterMappingConfiguration adapterMappingConfiguration = adapterConfiguration.getAdapterMappingConfiguration();
MessageFormat messageFormat = adapterMappingConfiguration.getMessageFormat();
if (!messageFormat.toString().equals("wso2event")) {
EventMappingPropertyDto[] inputMappingPropertyDtos =
addReceiverMappingToDto(adapterMappingConfiguration.getInputMappingProperties());
if (messageFormat.toString().equals("xml")) {
EventMappingPropertyDto[] namespaceMappingPropertyDtos =
addReceiverMappingToDto(adapterMappingConfiguration.getNamespaceMappingProperties());
eventReceiverAdminServiceStub.deployXmlEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, null
, namespaceMappingPropertyDtos, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, customMapping);
} else {
if (messageFormat.toString().equals("map")) {
eventReceiverAdminServiceStub.deployMapEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, customMapping);
} else if (messageFormat.toString().equals("text")) {
eventReceiverAdminServiceStub.deployTextEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, customMapping);
if (customMapping) {
AdapterMappingConfiguration adapterMappingConfiguration = adapterConfiguration
.getAdapterMappingConfiguration();
MessageFormat messageFormat = adapterMappingConfiguration.getMessageFormat();
if (!messageFormat.toString().equals("wso2event")) {
EventMappingPropertyDto[] inputMappingPropertyDtos =
addReceiverMappingToDto(adapterMappingConfiguration.getInputMappingProperties());
if (messageFormat.toString().equals("xml")) {
EventMappingPropertyDto[] namespaceMappingPropertyDtos =
addReceiverMappingToDto(adapterMappingConfiguration.getNamespaceMappingProperties());
eventReceiverAdminServiceStub.deployXmlEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, null
, namespaceMappingPropertyDtos, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, true);
} else {
eventReceiverAdminServiceStub.deployJsonEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, customMapping);
if (messageFormat.toString().equals("map")) {
eventReceiverAdminServiceStub.deployMapEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, true);
} else if (messageFormat.toString().equals("text")) {
eventReceiverAdminServiceStub.deployTextEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, true);
} else {
eventReceiverAdminServiceStub.deployJsonEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicInputAdapterPropertyDtos, true);
}
}
} else {
EventMappingPropertyDto[] correlationMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getCorrelationMappingProperties()
);
EventMappingPropertyDto[] metaMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getInputMappingProperties()
);
EventMappingPropertyDto[] payloadMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getPayloadMappingProperties()
);
eventReceiverAdminServiceStub.deployWso2EventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, metaMappingPropertyDtos
, correlationMappingPropertyDtos, payloadMappingPropertyDtos
, basicInputAdapterPropertyDtos, true
, eventStreamWithVersion);
}
} else {
EventMappingPropertyDto[] correlationMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getCorrelationMappingProperties()
);
EventMappingPropertyDto[] metaMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getInputMappingProperties()
);
EventMappingPropertyDto[] payloadMappingPropertyDtos = addReceiverMappingToDto(
adapterMappingConfiguration.getPayloadMappingProperties()
);
eventReceiverAdminServiceStub.deployWso2EventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, metaMappingPropertyDtos
, correlationMappingPropertyDtos, payloadMappingPropertyDtos
, basicInputAdapterPropertyDtos, customMapping
, eventStreamWithVersion);
deployReceiverWithoutMapping(receiverName, eventStreamWithVersion, adapterType,
eventReceiverAdminServiceStub, basicInputAdapterPropertyDtos);
}
} finally {
cleanup(eventReceiverAdminServiceStub);
}
}
/**
* To deploy receiver if custom mapping is false
*
* @param receiverName Name of the receiver
* @param eventStreamWithVersion Attached event stream of the receiver
* @param adapterType Adapter type name
* @param eventReceiverAdminServiceStub Stub to deploy receiver
* @param basicInputAdapterPropertyDtos DTO to attach receiver data
* @throws RemoteException Exception that may occur during a remote method call
*/
private void deployReceiverWithoutMapping(String receiverName, String eventStreamWithVersion
, String adapterType, EventReceiverAdminServiceStub eventReceiverAdminServiceStub
, BasicInputAdapterPropertyDto[] basicInputAdapterPropertyDtos)
throws RemoteException {
switch (adapterType) {
case "iot-event":
case "wso2event":
eventReceiverAdminServiceStub.deployWso2EventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, null, null
, null, basicInputAdapterPropertyDtos, false
, eventStreamWithVersion);
break;
case "soap":
eventReceiverAdminServiceStub.deployXmlEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, null, null
, null, basicInputAdapterPropertyDtos, false);
break;
default:
eventReceiverAdminServiceStub.deployTextEventReceiverConfiguration(receiverName
, eventStreamWithVersion, adapterType, null
, basicInputAdapterPropertyDtos, false);
}
}
/**
* Set data to a publisher dto and deploy dto through a stub
*
@ -436,7 +484,8 @@ public class AnalyticsArtifactsManagementServiceImpl
private void deployPublisher(Adapter publisher, boolean customMapping,
AdapterConfiguration adapterConfiguration)
throws RemoteException, UserStoreException, JWTClientException {
EventPublisherAdminServiceStub eventPublisherAdminServiceStub = DeviceMgtAPIUtils.getEventPublisherAdminServiceStub();
EventPublisherAdminServiceStub eventPublisherAdminServiceStub = DeviceMgtAPIUtils
.getEventPublisherAdminServiceStub();
try {
String publisherName = publisher.getAdapterName();
String adapterType = publisher.getAdapterType().toStringFormatted();
@ -451,53 +500,65 @@ public class AnalyticsArtifactsManagementServiceImpl
BasicOutputAdapterPropertyDto[] basicOutputAdapterPropertyDtos =
addPublisherConfigToDto(adapterProperties);
AdapterMappingConfiguration adapterMappingConfiguration = adapterConfiguration.getAdapterMappingConfiguration();
MessageFormat messageFormat = adapterMappingConfiguration.getMessageFormat();
if (!messageFormat.toString().equals("wso2event")) {
if (!messageFormat.toString().equals("map")) {
if (messageFormat.toString().equals("xml")) {
eventPublisherAdminServiceStub.deployXmlEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, customMapping);
} else if (messageFormat.toString().equals("text")) {
eventPublisherAdminServiceStub.deployTextEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, customMapping);
if (customMapping) {
AdapterMappingConfiguration adapterMappingConfiguration = adapterConfiguration
.getAdapterMappingConfiguration();
MessageFormat messageFormat = adapterMappingConfiguration.getMessageFormat();
if (!messageFormat.toString().equals("wso2event")) {
if (!messageFormat.toString().equals("map")) {
if (messageFormat.toString().equals("xml")) {
eventPublisherAdminServiceStub.deployXmlEventPublisherConfiguration(
publisherName, eventStreamWithVersion, adapterType
, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, true);
} else if (messageFormat.toString().equals("text")) {
eventPublisherAdminServiceStub.deployTextEventPublisherConfiguration(
publisherName, eventStreamWithVersion, adapterType
, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, true);
} else {
eventPublisherAdminServiceStub.deployJsonEventPublisherConfiguration(
publisherName, eventStreamWithVersion, adapterType
, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, true);
}
} else {
eventPublisherAdminServiceStub.deployJsonEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, adapterMappingConfiguration.getInputMappingString()
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, customMapping);
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[] inputMappingPropertyDtos =
addPublisherMappingToDto(
adapterMappingConfiguration.getInputMappingProperties()
);
eventPublisherAdminServiceStub.deployMapEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicOutputAdapterPropertyDtos, true);
}
} else {
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[] inputMappingPropertyDtos =
addPublisherMappingToDto(
adapterMappingConfiguration.getInputMappingProperties()
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[]
correlationMappingPropertyDtos = addPublisherMappingToDto
(
adapterMappingConfiguration.getCorrelationMappingProperties()
);
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[]
metaMappingPropertyDtos = addPublisherMappingToDto
(
adapterMappingConfiguration.getMetaMappingProperties()
);
eventPublisherAdminServiceStub.deployMapEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, inputMappingPropertyDtos
, basicOutputAdapterPropertyDtos, customMapping);
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[]
payloadMappingPropertyDtos = addPublisherMappingToDto
(
adapterMappingConfiguration.getPayloadMappingProperties()
);
eventPublisherAdminServiceStub.deployWSO2EventPublisherConfiguration(
publisherName, eventStreamWithVersion, adapterType, metaMappingPropertyDtos
, correlationMappingPropertyDtos, payloadMappingPropertyDtos
, basicOutputAdapterPropertyDtos, true
, eventStreamWithVersion);
}
} else {
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[] correlationMappingPropertyDtos =
addPublisherMappingToDto(
adapterMappingConfiguration.getCorrelationMappingProperties()
);
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[] metaMappingPropertyDtos =
addPublisherMappingToDto(
adapterMappingConfiguration.getMetaMappingProperties()
);
org.wso2.carbon.event.publisher.stub.types.EventMappingPropertyDto[] payloadMappingPropertyDtos =
addPublisherMappingToDto(
adapterMappingConfiguration.getPayloadMappingProperties()
);
eventPublisherAdminServiceStub.deployWSO2EventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, metaMappingPropertyDtos
, correlationMappingPropertyDtos, payloadMappingPropertyDtos
, basicOutputAdapterPropertyDtos, customMapping
, eventStreamWithVersion);
deployPublisherWithoutMapping(publisherName, eventStreamWithVersion, adapterType
, eventPublisherAdminServiceStub, basicOutputAdapterPropertyDtos);
}
} finally {
@ -505,6 +566,49 @@ public class AnalyticsArtifactsManagementServiceImpl
}
}
/**
* To deploy publisher if custom mapping is false
*
* @param publisherName Name of the publisher
* @param eventStreamWithVersion Attached event stream of the publisher
* @param adapterType Adapter type name
* @param eventPublisherAdminServiceStub Stub to deploy publisher
* @param basicOutputAdapterPropertyDtos DTO to attach publisher data
* @throws RemoteException Exception that may occur during a remote method call
*/
private void deployPublisherWithoutMapping(String publisherName, String eventStreamWithVersion
, String adapterType, EventPublisherAdminServiceStub eventPublisherAdminServiceStub
, BasicOutputAdapterPropertyDto[] basicOutputAdapterPropertyDtos)
throws RemoteException {
switch (adapterType) {
case "wso2event":
case "ui":
case "secured-websocket":
eventPublisherAdminServiceStub.deployWSO2EventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, null
, null, null, basicOutputAdapterPropertyDtos
, false, eventStreamWithVersion);
break;
case "soap":
eventPublisherAdminServiceStub.deployXmlEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, null
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, false);
break;
case "cassandra":
case "rdbms":
eventPublisherAdminServiceStub.deployMapEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, null
, basicOutputAdapterPropertyDtos, false);
break;
default:
eventPublisherAdminServiceStub.deployTextEventPublisherConfiguration(publisherName
, eventStreamWithVersion, adapterType, null
, basicOutputAdapterPropertyDtos, eventStreamWithVersion
, false);
}
}
/**
* Publish a siddhi execution plan using a stub
*
@ -516,9 +620,9 @@ public class AnalyticsArtifactsManagementServiceImpl
* @throws JWTClientException Exception that may occur during connecting to client store
* @throws InvalidExecutionPlanException Exception that may occur if execution plan validation fails
*/
private void publishSiddhiExecutionPlan(String name, boolean isEdited,
String plan)
throws RemoteException, UserStoreException, JWTClientException {
private void deploySiddhiExecutionPlan(String name, boolean isEdited, String plan)
throws RemoteException, UserStoreException, JWTClientException,
InvalidExecutionPlanException {
EventProcessorAdminServiceStub eventProcessorAdminServiceStub = null;
try {
eventProcessorAdminServiceStub = DeviceMgtAPIUtils.getEventProcessorAdminServiceStub();
@ -532,7 +636,6 @@ public class AnalyticsArtifactsManagementServiceImpl
} else {
ErrorDTO errorDTO = new ErrorDTO();
errorDTO.setMessage(validationResponse);
log.error(validationResponse);
throw new InvalidExecutionPlanException(errorDTO);
}
} finally {
@ -541,20 +644,21 @@ public class AnalyticsArtifactsManagementServiceImpl
}
/**
* This will set payload of event attribute's mapping to the DTO
* Validate stream properties
*
* @param attributes list of event attributes
* @return DTO with all the event attributes
* @param stream EventStream object
*/
private EventStreamAttributeDto[] addEventAttributesToDto(List<Attribute> attributes) {
EventStreamAttributeDto[] eventStreamAttributeDtos = new EventStreamAttributeDto[attributes.size()];
for (Attribute attribute : attributes) {
EventStreamAttributeDto eventStreamAttributeDto = new EventStreamAttributeDto();
eventStreamAttributeDto.setAttributeName(attribute.getName());
eventStreamAttributeDto.setAttributeType(attribute.getType().toString());
private void validateStreamProperties(EventStream stream) throws BadRequestException {
if ((stream.getMetaData() == null || stream.getMetaData().isEmpty()) &&
(stream.getCorrelationData() == null || stream.getCorrelationData().isEmpty()) &&
(stream.getPayloadData() == null || stream.getPayloadData().isEmpty())) {
String errMsg = String.format("Failed to validate Stream property attributes of %s:%s. " +
"Stream mapping can't be null or empty",
stream.getName(), stream.getVersion());
ErrorDTO errorDTO = new ErrorDTO();
errorDTO.setMessage(errMsg);
throw new BadRequestException(errorDTO);
}
return eventStreamAttributeDtos;
}
/**
@ -562,13 +666,13 @@ public class AnalyticsArtifactsManagementServiceImpl
*
* @param adapterProperties Adapter payload attributes
*/
private void validateAdapterProperties(List<AdapterProperty> adapterProperties) {
if (adapterProperties.isEmpty()) {
String errMsg = "Invalid payload: event property attributes invalid!!!";
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(errMsg);
log.error(errMsg);
throw new BadRequestException(errorResponse);
private void validateAdapterProperties(List<AdapterProperty> adapterProperties)
throws BadRequestException {
if (adapterProperties == null) {
String errMsg = "Failed to validate adapter attributes. Adapter attributes can't be null";
ErrorDTO errorDTO = new ErrorDTO();
errorDTO.setMessage(errMsg);
throw new BadRequestException(errorDTO);
}
}
@ -583,25 +687,53 @@ public class AnalyticsArtifactsManagementServiceImpl
*
* @param adapterMappingConfiguration Adapter mapping attributes
*/
private void validateAdapterMapping(AdapterMappingConfiguration adapterMappingConfiguration) {
if (adapterMappingConfiguration.getInputMappingString() == null &&
(adapterMappingConfiguration.getInputMappingProperties().isEmpty() &&
adapterMappingConfiguration.getNamespaceMappingProperties().isEmpty()) &&
(
adapterMappingConfiguration.getCorrelationMappingProperties().isEmpty() &&
adapterMappingConfiguration.getPayloadMappingProperties().isEmpty() &&
adapterMappingConfiguration.getMetaMappingProperties().isEmpty()
)
|| adapterMappingConfiguration.getMessageFormat() == null) {
String errMsg = "Invalid payload: event mapping attributes invalid!!!";
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(errMsg);
log.error(errMsg);
throw new BadRequestException(errorResponse);
private void validateAdapterMapping(AdapterMappingConfiguration adapterMappingConfiguration)
throws BadRequestException {
if (adapterMappingConfiguration == null) {
String errMsg = "Failed to validate adapter mapping attributes. " +
"Adapter mapping configuration can't be null";
ErrorDTO errorDTO = new ErrorDTO();
errorDTO.setMessage(errMsg);
throw new BadRequestException(errorDTO);
} else if (adapterMappingConfiguration.getMessageFormat() == null ||
((adapterMappingConfiguration.getInputMappingString() == null)
&& (adapterMappingConfiguration.getInputMappingProperties() == null ||
adapterMappingConfiguration.getInputMappingProperties().isEmpty())
&& (adapterMappingConfiguration.getNamespaceMappingProperties() == null ||
adapterMappingConfiguration.getNamespaceMappingProperties().isEmpty()))
&&
((adapterMappingConfiguration.getCorrelationMappingProperties() == null ||
adapterMappingConfiguration.getCorrelationMappingProperties().isEmpty())
&& (adapterMappingConfiguration.getPayloadMappingProperties() == null ||
adapterMappingConfiguration.getPayloadMappingProperties().isEmpty())
&& (adapterMappingConfiguration.getMetaMappingProperties() == null ||
adapterMappingConfiguration.getMetaMappingProperties().isEmpty()))
) {
String errMsg = "Failed to validate adapter mapping attributes. " +
"Adapter mapping configuration invalid";
ErrorDTO errorDTO = new ErrorDTO();
errorDTO.setMessage(errMsg);
throw new BadRequestException(errorDTO);
}
}
/**
* This will set payload of event attribute's mapping to the DTO
*
* @param attributes list of event attributes
* @return DTO with all the event attributes
*/
private EventStreamAttributeDto[] addEventAttributesToDto(List<Attribute> attributes) {
EventStreamAttributeDto[] eventStreamAttributeDtos = new EventStreamAttributeDto[attributes.size()];
for (int i = 0; i < attributes.size(); i++) {
EventStreamAttributeDto eventStreamAttributeDto = new EventStreamAttributeDto();
eventStreamAttributeDto.setAttributeName(attributes.get(i).getName());
eventStreamAttributeDto.setAttributeType(attributes.get(i).getType().toString());
eventStreamAttributeDtos[i] = eventStreamAttributeDto;
}
return eventStreamAttributeDtos;
}
/**
* This will set payload of receiver attributes to the DTO
*

Loading…
Cancel
Save