-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
simple java producer factory and consumer dispatch
Signed-off-by: Clemens Vasters <[email protected]>
- Loading branch information
Showing
19 changed files
with
604 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
{ | ||
"description" : "Java 13+", | ||
"description" : "Java 21+", | ||
"priority" : 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
{ | ||
"description" : "Java CloudEvents SDK endpoint consumer class", | ||
"description" : "Java Experimental CloudEvents SDK endpoint consumer class", | ||
"priority" : 1 | ||
} |
79 changes: 79 additions & 0 deletions
79
xregistry/templates/java/consumer/main/{classdir}EventDispatcher.java.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
{%- import "cloudevents.jinja.include" as cloudEvents -%} | ||
{%- import "amqp.jinja.include" as amqp -%} | ||
{%- import "mqtt.jinja.include" as mqtt -%} | ||
{%- set messagegroups = root.messagegroups %} | ||
{%- set uses_cloudevents_message = (root | exists( "format", "cloudevents" )) %} | ||
{%- set uses_http_endpoint = (root | exists( "protocol", "http" )) %} | ||
{%- set uses_amqp_message = (root | exists( "binding", "amqp" )) %} | ||
{%- set uses_amqp_endpoint = (root | exists( "protocol", "amqp" )) %} | ||
{%- set uses_mqtt_message = (root | exists( "binding", "mqtt" )) %} | ||
{%- set uses_mqtt_endpoint = (root | exists( "protocol", "mqtt" )) %} | ||
// this file was generated by a tool | ||
package {{ class_name | namespace | lower }}; | ||
|
||
{%- if uses_amqp_message %} | ||
{{ amqp.AmqpImports() }} | ||
{%- endif %} | ||
{%- if uses_mqtt_message %} | ||
{{ mqtt.PahoImports() }} | ||
{%- endif %} | ||
{%- if uses_cloudevents_message %} | ||
import io.cloudevents.CloudEvent; | ||
{%- endif %} | ||
import java.util.concurrent.CompletableFuture; | ||
import java.util.ArrayList; | ||
import org.apache.logging.log4j.Logger; | ||
import org.apache.logging.log4j.LogManager; | ||
|
||
{% for messagegroup_key, messagegroup in messagegroups.items() -%} | ||
{%- set pascalGroupName = messagegroup.id | pascal -%} | ||
{%- set className = (pascalGroupName | strip_namespace)+"EventDispatcher" %} | ||
public class {{ className | strip_namespace }} | ||
{ | ||
|
||
private Logger _logger = LogManager.getLogger({{ className }}.class); | ||
|
||
{%- if uses_cloudevents_message %} | ||
{{ cloudEvents.DeclareDispatchObjectsFields( project_name, messagegroups ) | indent(4) }} | ||
{{ cloudEvents.DeclareDispatchObjectsConstructor( project_name, className, messagegroups, '', '') | indent(4) }} | ||
{%- endif %} | ||
{%- if uses_amqp_message %} | ||
{{ amqp.DeclareDispatchObjectsFields( project_name, messagegroups ) | indent(4) }} | ||
{{ amqp.DeclareDispatchObjectsConstructor( project_name, className, messagegroups, '', '') | indent(4) }} | ||
{%- endif %} | ||
{%- if uses_mqtt_message %} | ||
{{ mqtt.DeclareDispatchObjectsFields( project_name, messagegroups ) | indent(4) }} | ||
{{ mqtt.DeclareDispatchObjectsConstructor( project_name, className, messagegroups, '', '') | indent(4) }} | ||
{%- endif %} | ||
|
||
{%- if uses_cloudevents_message %} | ||
public CompletableFuture<Void> dispatchCloudEventAsync( | ||
CloudEvent cloudEvent) | ||
{ | ||
{{ cloudEvents.DispatchToDispatchObjects(project_name, root, "cloudEvent", messagegroups, "_logger" ) | indent(12) }} | ||
} | ||
{%- endif %} | ||
|
||
{%- if uses_amqp_message %} | ||
public CompletableFuture<Void> dispatchMessageAsync( | ||
Message amqpMessage, MessageContext messageContext) | ||
{ | ||
{{ amqp.DispatchToDispatchObjects(project_name, root, "amqpMessage", messagegroups, "_logger" ) | indent(12) }} | ||
} | ||
{%- endif %} | ||
|
||
{%- if uses_mqtt_message %} | ||
public CompletableFuture<Void> dispatchMqttMessageV5Async( | ||
MqttMessageV5 mqttMessage) | ||
{ | ||
{{ mqtt.DispatchToDispatchObjects(project_name, root, "mqttMessage", messagegroups, "_logger" ) | indent(12) }} | ||
} | ||
|
||
public CompletableFuture<Void> dispatchMqttMessageV3Async( | ||
MqttMessageV3 mqttMessage) | ||
{ | ||
{{ mqtt.DispatchToDispatchObjects(project_name, root, "mqttMessage", messagegroups, "_logger") | indent(12) }} | ||
} | ||
{%- endif %} | ||
} | ||
{% endfor %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
{ | ||
"description" : "Java CloudEvents SDK endpoint producer class", | ||
"description" : "Java Experimental CloudEvents SDK endpoint producer class", | ||
"priority" : 1 | ||
} |
72 changes: 72 additions & 0 deletions
72
xregistry/templates/java/producer/main/{classdir}EventFactory.java.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
{%- import "cloudevents.jinja.include" as cloudEvents -%} | ||
{%- import "amqp.jinja.include" as amqp -%} | ||
{%- import "mqtt.jinja.include" as mqtt -%} | ||
{%- set messagegroups = root.messagegroups %} | ||
{%- set uses_cloudevents_message = (root | exists( "format", "cloudevents" )) %} | ||
{%- set uses_http_endpoint = (root | exists( "protocol", "http" )) %} | ||
{%- set uses_amqp_message = (root | exists( "binding", "amqp" )) %} | ||
{%- set uses_amqp_endpoint = (root | exists( "protocol", "amqp" )) %} | ||
{%- set uses_mqtt_message = (root | exists( "binding", "mqtt" )) %} | ||
{%- set uses_mqtt_endpoint = (root | exists( "protocol", "mqtt" )) %} | ||
// this file was generated by a tool | ||
package {{ class_name | namespace | lower }}; | ||
|
||
import io.cloudevents.CloudEvent; | ||
import io.cloudevents.CloudEventData; | ||
import io.cloudevents.core.v1.CloudEventBuilder; | ||
import io.cloudevents.core.format.EventFormat; | ||
import io.cloudevents.core.message.Encoding; | ||
|
||
{%- if uses_amqp_message %} | ||
{{ amqp.AmqpImports() }} | ||
{%- endif %} | ||
{%- if uses_mqtt_message %} | ||
{{ mqtt.PahoImports() }} | ||
{%- endif %} | ||
import java.util.ArrayList; | ||
|
||
{% for messagegroup_key, messagegroup in messagegroups.items() -%} | ||
{%- set pascalGroupName = messagegroup.id | pascal -%} | ||
{%- set className = (pascalGroupName | strip_namespace)+"EventFactory" %} | ||
public class {{ className | strip_namespace }} | ||
{ | ||
{% for id in messagegroup.messages -%} | ||
{%- set definition = messagegroup.messages[id] -%} | ||
{%- set pascalDefinitionName = definition.id | pascal %} | ||
{%- set isCloudEvent = not definition.format or definition.format.lower().startswith("cloudevents") -%} | ||
{%- set isAmqp = not isCloudEvent and definition.format.lower().startswith("amqp") %} | ||
{%- set isMqtt = not isCloudEvent and definition.format.lower().startswith("mqtt") %} | ||
public {% if isCloudEvent %}CloudEvent{% elif isAmqp %}Amqp.Message{% elif isMqtt %}MqttMessageV5{% endif %} create{{ pascalDefinitionName | strip_namespace }}( | ||
{%- if definition.schemaurl -%} | ||
{%- set toBytes="data.toByteArray()" -%} | ||
{%- set type = (definition.schemaurl if definition.schemaurl else definition.schema) | schema_type( project_name, root, definition.schemaformat) %} | ||
{%- set typePackage = type | namespace | lower %} | ||
{%- set typeName = type | strip_namespace | pascal %} | ||
{{ typePackage }}.{{ typeName }} data | ||
{%- else -%} | ||
{% set toBytes="data.toBytes()" %} | ||
CloudEventData data | ||
{%- endif %} | ||
{%- if isCloudEvent -%} | ||
{{- cloudEvents.DeclareUriTemplateArguments(definition) -}} | ||
{%- elif isAmqp -%} | ||
{{- amqp.DeclareUriTemplateArguments(definition) -}} | ||
{%- elif isMqtt -%} | ||
{{- mqtt.DeclareUriTemplateArguments(definition) -}} | ||
{%- endif -%} | ||
) throws Exception { | ||
{% if isCloudEvent %} | ||
{{- cloudEvents.DeclareCloudNativeCloudEvent("cloudEvent", toBytes, definition) | indent(12)}} | ||
return cloudEvent; | ||
{%- elif isAmqp %} | ||
{{- amqp.DeclareAmqpNetLiteMessage("amqpMessage", definition) | indent(12)}} | ||
amqpMessage.BodySection = new Data() { Binary = {{ toBytes }} }; | ||
return amqpMessage; | ||
{%- elif isMqtt %} | ||
{{- mqtt.DeclareMqttNetMessage("mqttMessage", definition) | indent(12)}} | ||
return mqttMessage; | ||
{%- endif %} | ||
} | ||
{% endfor %} | ||
} | ||
{% endfor -%} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"description" : "Java Experimental CloudEvents SDK endpoint consumer class", | ||
"priority" : 1 | ||
} |
11 changes: 11 additions & 0 deletions
11
xregistry/templates/java/xconsumer/main/{classdir}DispatchInterfaces.java.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{%- import "cloudevents.jinja.include" as cloudEvents -%} | ||
{%- import "mqtt.jinja.include" as mqtt -%} | ||
{%- import "amqp.jinja.include" as amqp -%} | ||
|
||
{{ cloudEvents.DeclareDispatchInterfaces( project_name, root) }} | ||
{{ mqtt.DeclareDispatchInterfaces( project_name, root) }} | ||
{{ amqp.DeclareDispatchInterfaces( project_name, root) }} | ||
|
||
{# the macros are pushing all generated interfaces onto the "files" stack #} | ||
{# therefore we exit the template here to avoid generating this file #} | ||
{% exit %} |
File renamed without changes.
19 changes: 19 additions & 0 deletions
19
xregistry/templates/java/xconsumer/main/{projectdir}ExceptionMessages.java.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package {{ project_name | lower }}; | ||
|
||
public class ExceptionMessages | ||
{ | ||
public static final String ValueIsTooLow = "%s value is too low. (min: %d)"; | ||
public static final String ValueIsTooHigh = "%s value is too high. (max: %d)"; | ||
public static final String ValueIsTooLong = "%s value is too long. (max length: %d)"; | ||
public static final String ValueIsTooShort = "%s value is too short. (min length: %d)"; | ||
public static final String ValueIsTooBig = "%s value is too big. (max: %d)"; | ||
public static final String ValueIsTooSmall = "%s value is too small. (min: %d)"; | ||
public static final String ValueIsInvalid = "%s value is invalid."; | ||
public static final String ValueIsRequired = "%s value is required."; | ||
public static final String ValueIsNotUnique = "%s value is not unique."; | ||
public static final String ValueIsNotAnEmail = "%s value is not an email."; | ||
public static final String ValueIsNotAnUrl = "%s value is not an URL."; | ||
public static final String ValueIsNotADate = "%s value is not a date."; | ||
public static final String ValueIsNotADateTime = "%s value is not a date time."; | ||
public static final String ValueIsNotATime = "%s value is not a time."; | ||
} |
10 changes: 10 additions & 0 deletions
10
xregistry/templates/java/xconsumer/main/{projectdir}RegexPatterns.java.jinja
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package {{ project_name | lower }}; | ||
|
||
public class RegexPatterns | ||
{ | ||
public static final String Email = "^\\S+@\\S+$"; | ||
public static final String Url = "^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$"; | ||
public static final String Date = "^\\d{4}-\\d{2}-\\d{2}$"; | ||
public static final String DateTime = "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}:\\d{2})|Z)?$"; | ||
public static final String Time = "^\\d{2}:\\d{2}:\\d{2}$"; | ||
} |
Oops, something went wrong.