From 5afb20eef05fd2aef680d2192985a996cab4f501 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Tue, 15 Dec 2020 09:13:50 -0500 Subject: [PATCH] support hyphenated operations --- .../java/jvcl/service/json/JOperationFactory.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/jvcl/service/json/JOperationFactory.java b/src/main/java/jvcl/service/json/JOperationFactory.java index 79397ca..56ba173 100644 --- a/src/main/java/jvcl/service/json/JOperationFactory.java +++ b/src/main/java/jvcl/service/json/JOperationFactory.java @@ -8,6 +8,7 @@ import jvcl.model.JOperation; import jvcl.operation.exec.ExecBase; import java.io.IOException; +import java.util.StringTokenizer; import static com.fasterxml.jackson.databind.type.TypeBindings.emptyBindings; import static org.apache.commons.lang3.StringUtils.capitalize; @@ -37,11 +38,21 @@ public class JOperationFactory extends DeserializationProblemHandler { if (id.contains(".")) { className = id; } else { - className = OPERATION_DEFAULT_PACKAGE + "." + capitalize(id) + OPERATION_CLASSNAME_SUFFIX; + className = OPERATION_DEFAULT_PACKAGE + + "." + + (id.contains("-") ? replaceHyphens(id) : capitalize(id)) + + OPERATION_CLASSNAME_SUFFIX; } return forName(className); } + private static String replaceHyphens(String id) { + final StringBuilder b = new StringBuilder(); + final StringTokenizer st = new StringTokenizer(id, "-"); + while (st.hasMoreTokens()) b.append(capitalize(st.nextToken())); + return b.toString(); + } + public static Class> getOperationExecClass(Class opClass) { final String name = opClass.getSimpleName(); if (!name.endsWith(OPERATION_CLASSNAME_SUFFIX)) {