use of com.adobe.target.edge.client.model.ondevice.OnDeviceDecisioningEvaluation in project target-java-sdk by adobe.
the class OnDeviceDecisioningService method buildDeliveryResponse.
private TargetDeliveryResponse buildDeliveryResponse(TargetDeliveryRequest deliveryRequest, String requestId) {
OnDeviceDecisioningEvaluation localEvaluation = evaluateLocalExecution(deliveryRequest);
int status = localEvaluation.isAllLocal() ? HttpStatus.SC_OK : HttpStatus.SC_PARTIAL_CONTENT;
DeliveryResponse deliveryResponse = new DeliveryResponse().client(clientConfig.getClient()).requestId(requestId).id(deliveryRequest.getDeliveryRequest().getId()).status(status);
PrefetchResponse prefetchResponse = new PrefetchResponse();
ExecuteResponse executeResponse = new ExecuteResponse();
deliveryResponse.setPrefetch(prefetchResponse);
deliveryResponse.setExecute(executeResponse);
TargetDeliveryResponse targetResponse = new TargetDeliveryResponse(deliveryRequest, deliveryResponse, status, localEvaluation.isAllLocal() ? "Local-decisioning response" : localEvaluation.getReason());
ResponseStatus responseStatus = targetResponse.getResponseStatus();
responseStatus.setGlobalMbox(localEvaluation.getGlobalMbox());
responseStatus.setRemoteMboxes(localEvaluation.getRemoteMBoxes());
responseStatus.setRemoteViews(localEvaluation.getRemoteViews());
return targetResponse;
}
use of com.adobe.target.edge.client.model.ondevice.OnDeviceDecisioningEvaluation in project target-java-sdk by adobe.
the class OnDeviceDecisioningEvaluatorTest method testUnknownMbox.
@Test
public void testUnknownMbox() throws JsonProcessingException, NoSuchFieldException {
OnDeviceDecisioningRuleSet ruleSet = new OnDeviceDecisioningRuleSet();
List<String> mboxes = new ArrayList<>();
mboxes.add("test");
FieldSetter.setField(ruleSet, ruleSet.getClass().getDeclaredField("localMboxes"), mboxes);
FieldSetter.setField(ruleSet, ruleSet.getClass().getDeclaredField("remoteMboxes"), new ArrayList<>());
String serializedRuleSet = objectMapper.writeValueAsString(ruleSet);
RuleLoader testRuleLoader = TargetTestDeliveryRequestUtils.getTestRuleLoader(serializedRuleSet);
evaluator = new OnDeviceDecisioningEvaluator(testRuleLoader);
TargetDeliveryRequest request = TargetDeliveryRequest.builder().execute(new ExecuteRequest().addMboxesItem(new MboxRequest().name("test")).addMboxesItem(new MboxRequest().name("test2"))).build();
OnDeviceDecisioningEvaluation evaluation = evaluator.evaluateLocalExecution(request);
assertFalse(evaluation.isAllLocal());
List<String> remoteMboxes = new ArrayList<>();
remoteMboxes.add("test2");
assertEquals(remoteMboxes, evaluation.getRemoteMBoxes());
assertNull(evaluation.getRemoteViews());
}
use of com.adobe.target.edge.client.model.ondevice.OnDeviceDecisioningEvaluation in project target-java-sdk by adobe.
the class OnDeviceDecisioningEvaluatorTest method testNoRuleSet.
@Test
public void testNoRuleSet() {
RuleLoader testRuleLoader = TargetTestDeliveryRequestUtils.getTestRuleLoader(null);
evaluator = new OnDeviceDecisioningEvaluator(testRuleLoader);
TargetDeliveryRequest request = TargetDeliveryRequest.builder().build();
OnDeviceDecisioningEvaluation evaluation = evaluator.evaluateLocalExecution(request);
assertFalse(evaluation.isAllLocal());
assertNull(evaluation.getRemoteMBoxes());
assertNull(evaluation.getRemoteViews());
}
use of com.adobe.target.edge.client.model.ondevice.OnDeviceDecisioningEvaluation in project target-java-sdk by adobe.
the class OnDeviceDecisioningEvaluatorTest method testLocalAndRemoteView.
@Test
public void testLocalAndRemoteView() throws JsonProcessingException, NoSuchFieldException {
OnDeviceDecisioningRuleSet ruleSet = new OnDeviceDecisioningRuleSet();
List<String> views = new ArrayList<>();
views.add("test");
views.add("test2");
FieldSetter.setField(ruleSet, ruleSet.getClass().getDeclaredField("localViews"), views);
FieldSetter.setField(ruleSet, ruleSet.getClass().getDeclaredField("remoteViews"), views);
String serializedRuleSet = objectMapper.writeValueAsString(ruleSet);
RuleLoader testRuleLoader = TargetTestDeliveryRequestUtils.getTestRuleLoader(serializedRuleSet);
evaluator = new OnDeviceDecisioningEvaluator(testRuleLoader);
TargetDeliveryRequest request = TargetDeliveryRequest.builder().prefetch(new PrefetchRequest().addViewsItem(new ViewRequest().name("test")).addViewsItem(new ViewRequest().name("test2"))).build();
OnDeviceDecisioningEvaluation evaluation = evaluator.evaluateLocalExecution(request);
assertFalse(evaluation.isAllLocal());
List<String> remoteViews = evaluation.getRemoteViews();
remoteViews.sort(Comparator.naturalOrder());
assertEquals(views, remoteViews);
assertNull(evaluation.getRemoteMBoxes());
}
use of com.adobe.target.edge.client.model.ondevice.OnDeviceDecisioningEvaluation in project target-java-sdk by adobe.
the class OnDeviceDecisioningEvaluatorTest method testNullRequest.
@Test
public void testNullRequest() throws JsonProcessingException {
OnDeviceDecisioningRuleSet ruleSet = new OnDeviceDecisioningRuleSet();
String serializedRuleSet = objectMapper.writeValueAsString(ruleSet);
RuleLoader testRuleLoader = TargetTestDeliveryRequestUtils.getTestRuleLoader(serializedRuleSet);
evaluator = new OnDeviceDecisioningEvaluator(testRuleLoader);
OnDeviceDecisioningEvaluation evaluation = evaluator.evaluateLocalExecution(null);
assertFalse(evaluation.isAllLocal());
assertNull(evaluation.getRemoteMBoxes());
assertNull(evaluation.getRemoteViews());
}
Aggregations