/
SimpleMapTextPayloadToDitto.java
97 lines (87 loc) · 3.97 KB
/
SimpleMapTextPayloadToDitto.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
* Copyright (c) 2017-2018 Bosch Software Innovations GmbH.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/index.php
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.services.connectivity.mapping.javascript.benchmark;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.eclipse.ditto.services.connectivity.mapping.MessageMapper;
import org.eclipse.ditto.services.connectivity.mapping.MessageMappers;
import org.eclipse.ditto.services.connectivity.mapping.javascript.JavaScriptMessageMapperFactory;
import org.eclipse.ditto.services.models.connectivity.ExternalMessage;
import org.eclipse.ditto.services.models.connectivity.ExternalMessageFactory;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
@State(Scope.Benchmark)
public class SimpleMapTextPayloadToDitto implements MapToDittoProtocolScenario {
static final String MAPPING_STRING = "A simple text to be mapped";
private static final String CONTENT_TYPE = "text/plain";
private static final String MAPPING_INCOMING_PLAIN =
"function mapToDittoProtocolMsg(\n" +
" headers,\n" +
" textPayload,\n" +
" bytePayload,\n" +
" contentType\n" +
") {\n" +
"\n" +
" // ###\n" +
" // Insert your mapping logic here\n" +
" let namespace = \"org.eclipse.ditto\";\n" +
" let id = \"jmh-test\";\n" +
" let group = \"things\";\n" +
" let channel = \"twin\";\n" +
" let criterion = \"commands\";\n" +
" let action = \"modify\";\n" +
" let path = \"/attributes/foo\";\n" +
" let dittoHeaders = {};\n" +
" dittoHeaders[\"correlation-id\"] = headers[\"correlation-id\"];\n" +
" let value = textPayload;\n" +
" // ###\n" +
"\n" +
" return Ditto.buildDittoProtocolMsg(\n" +
" namespace,\n" +
" id,\n" +
" group,\n" +
" channel,\n" +
" criterion,\n" +
" action,\n" +
" path,\n" +
" dittoHeaders,\n" +
" value\n" +
" );\n" +
"}";
private final ExternalMessage externalMessage;
public SimpleMapTextPayloadToDitto() {
final String correlationId = UUID.randomUUID().toString();
final Map<String, String> headers = new HashMap<>();
headers.put("correlation-id", correlationId);
headers.put(ExternalMessage.CONTENT_TYPE_HEADER, CONTENT_TYPE);
externalMessage = ExternalMessageFactory.newExternalMessageBuilder(headers)
.withText(MAPPING_STRING)
.build();
}
@Override
public MessageMapper getMessageMapper() {
final MessageMapper javaScriptRhinoMapperPlain = MessageMappers.createJavaScriptMessageMapper();
javaScriptRhinoMapperPlain.configure(MAPPING_CONFIG,
JavaScriptMessageMapperFactory
.createJavaScriptMessageMapperConfigurationBuilder(Collections.emptyMap())
.contentType(CONTENT_TYPE)
.incomingScript(MAPPING_INCOMING_PLAIN)
.build()
);
return javaScriptRhinoMapperPlain;
}
@Override
public ExternalMessage getExternalMessage() {
return externalMessage;
}
}