diff --git a/gxawsserverless/pom.xml b/gxawsserverless/pom.xml index 621a0df4f..de7fc9888 100644 --- a/gxawsserverless/pom.xml +++ b/gxawsserverless/pom.xml @@ -31,6 +31,12 @@ ${project.version} + + ${project.groupId} + gxserverlesscommon + ${project.version} + + javax.servlet javax.servlet-api diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/Helper.java b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/Helper.java deleted file mode 100644 index 1f86e4c0b..000000000 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/Helper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.genexus.cloud.serverless; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.genexus.cloud.serverless.model.EventMessage; -import com.genexus.cloud.serverless.model.EventMessageProperty; -import com.genexus.diagnostics.core.ILogger; -import com.genexus.diagnostics.core.LogManager; - -public class Helper { - - private static final ILogger logger = LogManager.getLogger(Helper.class); - - public static String toJSONString(Object dtoObject) { - try { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(dtoObject); - } - catch (Exception e) { - logger.error("Failed to serialize object to jsonString", e); - } - return ""; - } - - public static void addEventMessageProperty(EventMessage msg, String key, String value) { - msg.getMessageProperties().add(new EventMessageProperty(key, value)); - } -} diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaBaseEventHandler.java b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaBaseEventHandler.java index c7a4f82b8..198f12bad 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaBaseEventHandler.java +++ b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaBaseEventHandler.java @@ -3,8 +3,7 @@ import com.genexus.ApplicationContext; import com.genexus.ModelContext; import com.genexus.cloud.serverless.*; -import com.genexus.cloud.serverless.model.EventMessageResponse; -import com.genexus.cloud.serverless.model.EventMessages; +import com.genexus.cloud.serverless.model.*; import com.genexus.diagnostics.core.ILogger; import com.genexus.specific.java.Connect; import com.genexus.specific.java.LogManager; @@ -64,7 +63,7 @@ private void initialize() throws Exception { } protected EventMessageResponse dispatchEvent(EventMessages eventMessages, String lambdaRawMessageBody) throws Exception { - String jsonStringMessages = Helper.toJSONString(eventMessages); + String jsonStringMessages = JSONHelper.toJSONString(eventMessages); if (logger.isDebugEnabled()) { logger.debug(String.format("dispatchEventMessages (%s) - serialized messages: %s", functionConfiguration.getEntryPointClassName(), jsonStringMessages)); @@ -74,7 +73,7 @@ protected EventMessageResponse dispatchEvent(EventMessages eventMessages, String EventMessageResponse response = null; try { - response = executor.execute(modelContext, eventMessages, lambdaRawMessageBody); + response = executor.execute(modelContext, eventMessages, null, lambdaRawMessageBody); } catch (Exception e) { logger.error(String.format("dispatchEventmessages - program '%s' execution error", entryPointClass.getName()), e); throw e; diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaEventBridgeHandler.java b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaEventBridgeHandler.java index 95f420c19..d92da3747 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaEventBridgeHandler.java +++ b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaEventBridgeHandler.java @@ -2,12 +2,9 @@ import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; -import com.genexus.cloud.serverless.Helper; +import com.genexus.cloud.serverless.JSONHelper; +import com.genexus.cloud.serverless.model.*; import com.genexus.cloud.serverless.exception.FunctionRuntimeException; -import com.genexus.cloud.serverless.model.EventMessage; -import com.genexus.cloud.serverless.model.EventMessageResponse; -import com.genexus.cloud.serverless.model.EventMessageSourceType; -import com.genexus.cloud.serverless.model.EventMessages; import com.genexus.json.JSONObjectWrapper; import org.apache.http.client.utils.DateUtils; @@ -25,7 +22,7 @@ public LambdaEventBridgeHandler(String entryPointClassName) throws Exception { @Override public String handleRequest(Map stringObjectMap, Context context) { - String jsonEventRaw = Helper.toJSONString(stringObjectMap); + String jsonEventRaw = JSONHelper.toJSONString(stringObjectMap); logger.debug("handleRequest started with event: " + jsonEventRaw); @@ -44,7 +41,7 @@ public String handleRequest(Map stringObjectMap, Context context msgItem.setMessageData(new JSONObjectWrapper(jsonEventRaw).getJSONObject("detail").toString()); } for (Map.Entry entry : stringObjectMap.entrySet()) { - Helper.addEventMessageProperty(msgItem, entry.getKey(), entry.getValue().toString()); + JSONHelper.addEventMessageProperty(msgItem, entry.getKey(), entry.getValue().toString()); } msgs.add(msgItem); response = dispatchEvent(msgs, jsonEventRaw); @@ -63,6 +60,6 @@ public String handleRequest(Map stringObjectMap, Context context logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); throw new RuntimeException(response.getErrorMessage()); } - return Helper.toJSONString(response); + return JSONHelper.toJSONString(response); } } diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaSQSHandler.java b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaSQSHandler.java index ef90bbb98..3c7d62f8a 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaSQSHandler.java +++ b/gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaSQSHandler.java @@ -6,11 +6,7 @@ import com.amazonaws.services.lambda.runtime.events.SQSEvent; import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage; import com.genexus.cloud.serverless.*; -import com.genexus.cloud.serverless.model.EventMessageProperty; -import com.genexus.cloud.serverless.model.EventMessage; -import com.genexus.cloud.serverless.model.EventMessageResponse; -import com.genexus.cloud.serverless.model.EventMessageSourceType; -import com.genexus.cloud.serverless.model.EventMessages; +import com.genexus.cloud.serverless.model.*; import java.util.ArrayList; import java.util.Date; @@ -64,7 +60,7 @@ public SQSBatchResponse handleRequest(SQSEvent sqsEvent, Context context) { String errorMessage; try { - EventMessageResponse response = dispatchEvent(msgs, Helper.toJSONString(sqsEvent)); + EventMessageResponse response = dispatchEvent(msgs, JSONHelper.toJSONString(sqsEvent)); wasHandled = !response.hasFailed(); errorMessage = response.getErrorMessage(); } catch (Exception e) { diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventCustomPayload_CustomPayloadItem.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventCustomPayload_CustomPayloadItem.java deleted file mode 100644 index 7510b3ed8..000000000 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventCustomPayload_CustomPayloadItem.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.genexus.genexusserverlessapi; - -import com.genexus.*; -import com.genexus.*; -import com.genexus.xml.*; -import com.genexus.search.*; -import com.genexus.webpanels.*; - -import java.util.*; - -public final class SdtEventCustomPayload_CustomPayloadItem extends GxUserType { - public SdtEventCustomPayload_CustomPayloadItem() { - this(new ModelContext(SdtEventCustomPayload_CustomPayloadItem.class)); - } - - public SdtEventCustomPayload_CustomPayloadItem(ModelContext context) { - super(context, "SdtEventCustomPayload_CustomPayloadItem"); - } - - public SdtEventCustomPayload_CustomPayloadItem(int remoteHandle, - ModelContext context) { - super(remoteHandle, context, "SdtEventCustomPayload_CustomPayloadItem"); - } - - public SdtEventCustomPayload_CustomPayloadItem(StructSdtEventCustomPayload_CustomPayloadItem struct) { - this(); - setStruct(struct); - } - - private static java.util.HashMap mapper = new java.util.HashMap(); - - static { - } - - public String getJsonMap(String value) { - return (String) mapper.get(value); - } - - public String getgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid() { - return gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid; - } - - public void setgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid(String value) { - gxTv_SdtEventCustomPayload_CustomPayloadItem_N = (byte) (0); - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid = value; - } - - public String getgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue() { - return gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue; - } - - public void setgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue(String value) { - gxTv_SdtEventCustomPayload_CustomPayloadItem_N = (byte) (0); - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue = value; - } - - public void initialize(int remoteHandle) { - initialize(); - } - - public void initialize() { - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid = ""; - gxTv_SdtEventCustomPayload_CustomPayloadItem_N = (byte) (1); - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue = ""; - sTagName = ""; - } - - public byte isNull() { - return gxTv_SdtEventCustomPayload_CustomPayloadItem_N; - } - - public com.genexus.genexusserverlessapi.SdtEventCustomPayload_CustomPayloadItem Clone() { - return (com.genexus.genexusserverlessapi.SdtEventCustomPayload_CustomPayloadItem) (clone()); - } - - public void setStruct(com.genexus.genexusserverlessapi.StructSdtEventCustomPayload_CustomPayloadItem struct) { - setgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid(struct.getPropertyid()); - setgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue(struct.getPropertyvalue()); - } - - @SuppressWarnings("unchecked") - public com.genexus.genexusserverlessapi.StructSdtEventCustomPayload_CustomPayloadItem getStruct() { - com.genexus.genexusserverlessapi.StructSdtEventCustomPayload_CustomPayloadItem struct = new com.genexus.genexusserverlessapi.StructSdtEventCustomPayload_CustomPayloadItem(); - struct.setPropertyid(getgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid()); - struct.setPropertyvalue(getgxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue()); - return struct; - } - - protected byte gxTv_SdtEventCustomPayload_CustomPayloadItem_N; - protected short readOk; - protected short nOutParmCount; - protected String gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue; - protected String sTagName; - protected boolean readElement; - protected boolean formatError; - protected String gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid; -} - diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java index d3502078e..170a15d71 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java @@ -1,186 +1,532 @@ -package com.genexus.genexusserverlessapi; - +package com.genexus.genexusserverlessapi ; +import com.genexus.*; import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; import java.util.*; -public final class SdtEventMessage extends GxUserType { - public SdtEventMessage() { - this(new ModelContext(SdtEventMessage.class)); - } - - public SdtEventMessage(ModelContext context) { - super(context, "SdtEventMessage"); - } - - public SdtEventMessage(int remoteHandle, - ModelContext context) { - super(remoteHandle, context, "SdtEventMessage"); - } - - public SdtEventMessage(StructSdtEventMessage struct) { - this(); - setStruct(struct); - } - - private static java.util.HashMap mapper = new java.util.HashMap(); - - public String getJsonMap(String value) { - return (String) mapper.get(value); - } - - public String getgxTv_SdtEventMessage_Eventmessageid() { - return gxTv_SdtEventMessage_Eventmessageid; - } - - public void setgxTv_SdtEventMessage_Eventmessageid(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessageid = value; - } - - public java.util.Date getgxTv_SdtEventMessage_Eventmessagedate() { - return gxTv_SdtEventMessage_Eventmessagedate; - } - - public void setgxTv_SdtEventMessage_Eventmessagedate(java.util.Date value) { - gxTv_SdtEventMessage_Eventmessagedate_N = (byte) (0); - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagedate = value; - } - - public String getgxTv_SdtEventMessage_Eventmessagesourcetype() { - return gxTv_SdtEventMessage_Eventmessagesourcetype; - } - - public void setgxTv_SdtEventMessage_Eventmessagesourcetype(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagesourcetype = value; - } - - public String getgxTv_SdtEventMessage_Eventmessagedata() { - return gxTv_SdtEventMessage_Eventmessagedata; - } - - public void setgxTv_SdtEventMessage_Eventmessagedata(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagedata = value; - } - - public String getgxTv_SdtEventMessage_Eventmessageversion() { - return gxTv_SdtEventMessage_Eventmessageversion; - } - - public void setgxTv_SdtEventMessage_Eventmessageversion(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessageversion = value; - } - - public GXBaseCollection getgxTv_SdtEventMessage_Eventmessagecustompayload() { - if (gxTv_SdtEventMessage_Eventmessagecustompayload == null) { - gxTv_SdtEventMessage_Eventmessagecustompayload = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventCustomPayload_CustomPayloadItem.class, "CustomPayloadItem", "ServerlessAPI", remoteHandle); - } - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (0); - gxTv_SdtEventMessage_N = (byte) (0); - return gxTv_SdtEventMessage_Eventmessagecustompayload; - } - - public void setgxTv_SdtEventMessage_Eventmessagecustompayload(GXBaseCollection value) { - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (0); - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagecustompayload = value; - } - - public void setgxTv_SdtEventMessage_Eventmessagecustompayload_SetNull() { - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (1); - gxTv_SdtEventMessage_Eventmessagecustompayload = null; - } - - public boolean getgxTv_SdtEventMessage_Eventmessagecustompayload_IsNull() { - if (gxTv_SdtEventMessage_Eventmessagecustompayload == null) { - return true; - } - return false; - } - - public byte getgxTv_SdtEventMessage_Eventmessagecustompayload_N() { - return gxTv_SdtEventMessage_Eventmessagecustompayload_N; - } - - public void initialize(int remoteHandle) { - initialize(); - } - - public void initialize() { - gxTv_SdtEventMessage_Eventmessageid = ""; - gxTv_SdtEventMessage_N = (byte) (1); - gxTv_SdtEventMessage_Eventmessagedate = GXutil.resetTime(GXutil.nullDate()); - gxTv_SdtEventMessage_Eventmessagedate_N = (byte) (1); - gxTv_SdtEventMessage_Eventmessagesourcetype = ""; - gxTv_SdtEventMessage_Eventmessagedata = ""; - gxTv_SdtEventMessage_Eventmessageversion = ""; - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (1); - sTagName = ""; - sDateCnv = ""; - sNumToPad = ""; - datetime_STZ = GXutil.resetTime(GXutil.nullDate()); - } - - public byte isNull() { - return gxTv_SdtEventMessage_N; - } - - public com.genexus.genexusserverlessapi.SdtEventMessage Clone() { - return (com.genexus.genexusserverlessapi.SdtEventMessage) (clone()); - } - - public void setStruct(com.genexus.genexusserverlessapi.StructSdtEventMessage struct) { - setgxTv_SdtEventMessage_Eventmessageid(struct.getEventmessageid()); - if (struct.gxTv_SdtEventMessage_Eventmessagedate_N == 0) { - setgxTv_SdtEventMessage_Eventmessagedate(struct.getEventmessagedate()); - } - setgxTv_SdtEventMessage_Eventmessagesourcetype(struct.getEventmessagesourcetype()); - setgxTv_SdtEventMessage_Eventmessagedata(struct.getEventmessagedata()); - setgxTv_SdtEventMessage_Eventmessageversion(struct.getEventmessageversion()); - GXBaseCollection gxTv_SdtEventMessage_Eventmessagecustompayload_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventCustomPayload_CustomPayloadItem.class, "CustomPayloadItem", "ServerlessAPI", remoteHandle); - Vector gxTv_SdtEventMessage_Eventmessagecustompayload_aux1 = struct.getEventmessagecustompayload(); - if (gxTv_SdtEventMessage_Eventmessagecustompayload_aux1 != null) { - for (int i = 0; i < gxTv_SdtEventMessage_Eventmessagecustompayload_aux1.size(); i++) { - gxTv_SdtEventMessage_Eventmessagecustompayload_aux.add(new com.genexus.genexusserverlessapi.SdtEventCustomPayload_CustomPayloadItem(gxTv_SdtEventMessage_Eventmessagecustompayload_aux1.elementAt(i))); - } - } - setgxTv_SdtEventMessage_Eventmessagecustompayload(gxTv_SdtEventMessage_Eventmessagecustompayload_aux); - } - - @SuppressWarnings("unchecked") - public com.genexus.genexusserverlessapi.StructSdtEventMessage getStruct() { - com.genexus.genexusserverlessapi.StructSdtEventMessage struct = new com.genexus.genexusserverlessapi.StructSdtEventMessage(); - struct.setEventmessageid(getgxTv_SdtEventMessage_Eventmessageid()); - if (gxTv_SdtEventMessage_Eventmessagedate_N == 0) { - struct.setEventmessagedate(getgxTv_SdtEventMessage_Eventmessagedate()); - } - struct.setEventmessagesourcetype(getgxTv_SdtEventMessage_Eventmessagesourcetype()); - struct.setEventmessagedata(getgxTv_SdtEventMessage_Eventmessagedata()); - struct.setEventmessageversion(getgxTv_SdtEventMessage_Eventmessageversion()); - struct.setEventmessagecustompayload(getgxTv_SdtEventMessage_Eventmessagecustompayload().getStruct()); - return struct; - } - - protected byte gxTv_SdtEventMessage_N; - protected byte gxTv_SdtEventMessage_Eventmessagedate_N; - protected byte gxTv_SdtEventMessage_Eventmessagecustompayload_N; - protected short readOk; - protected short nOutParmCount; - protected String sTagName; - protected String sDateCnv; - protected String sNumToPad; - protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate; - protected java.util.Date datetime_STZ; - protected boolean readElement; - protected boolean formatError; - protected String gxTv_SdtEventMessage_Eventmessagedata; - protected String gxTv_SdtEventMessage_Eventmessageid; - protected String gxTv_SdtEventMessage_Eventmessagesourcetype; - protected String gxTv_SdtEventMessage_Eventmessageversion; - protected GXBaseCollection gxTv_SdtEventMessage_Eventmessagecustompayload_aux; - protected GXBaseCollection gxTv_SdtEventMessage_Eventmessagecustompayload = null; +public final class SdtEventMessage extends GxUserType +{ + public SdtEventMessage( ) + { + this( new ModelContext(SdtEventMessage.class)); + } + + public SdtEventMessage( ModelContext context ) + { + super( context, "SdtEventMessage"); + } + + public SdtEventMessage( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessage"); + } + + public SdtEventMessage( StructSdtEventMessage struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageId") ) + { + gxTv_SdtEventMessage_Eventmessageid = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageDate") ) + { + if ( ( GXutil.strcmp(oReader.getValue(), "") == 0 ) || ( oReader.existsAttribute("xsi:nil") == 1 ) ) + { + gxTv_SdtEventMessage_Eventmessagedate = GXutil.resetTime( GXutil.nullDate() ); + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + } + else + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = localUtil.ymdhmsToT( (short)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 1, 4), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 6, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 9, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 12, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 15, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 18, 2), ".")))) ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageSourceType") ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageData") ) + { + gxTv_SdtEventMessage_Eventmessagedata = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageProperties") ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + gxTv_SdtEventMessage_Eventmessageproperties = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessage_Eventmessageproperties.readxmlcollection(oReader, "EventMessageProperties", "EventMessageProperty") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageProperties") ) + { + GXSoapError = oReader.read() ; + } + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageVersion") ) + { + gxTv_SdtEventMessage_Eventmessageversion = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessage" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + oWriter.writeElement("EventMessageId", gxTv_SdtEventMessage_Eventmessageid); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + if ( GXutil.dateCompare(GXutil.nullDate(), gxTv_SdtEventMessage_Eventmessagedate) && ( gxTv_SdtEventMessage_Eventmessagedate_N == 1 ) ) + { + oWriter.writeElement("EventMessageDate", ""); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + } + else + { + sDateCnv = "" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.year( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "0000", 1, 4-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.month( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.day( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "T" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.hour( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.minute( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.second( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + oWriter.writeElement("EventMessageDate", sDateCnv); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + } + oWriter.writeElement("EventMessageSourceType", gxTv_SdtEventMessage_Eventmessagesourcetype); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeElement("EventMessageData", gxTv_SdtEventMessage_Eventmessagedata); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + if ( gxTv_SdtEventMessage_Eventmessageproperties != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessage_Eventmessageproperties.writexmlcollection(oWriter, "EventMessageProperties", sNameSpace1, "EventMessageProperty", sNameSpace1); + } + oWriter.writeElement("EventMessageVersion", gxTv_SdtEventMessage_Eventmessageversion); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessage_Eventmessageid_N != 1 ) + { + AddObjectProperty("EventMessageId", gxTv_SdtEventMessage_Eventmessageid, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagedate_N != 1 ) + { + datetime_STZ = gxTv_SdtEventMessage_Eventmessagedate ; + sDateCnv = "" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.year( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "0000", 1, 4-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.month( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.day( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "T" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.hour( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.minute( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.second( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + AddObjectProperty("EventMessageDate", sDateCnv, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagesourcetype_N != 1 ) + { + AddObjectProperty("EventMessageSourceType", gxTv_SdtEventMessage_Eventmessagesourcetype, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagedata_N != 1 ) + { + AddObjectProperty("EventMessageData", gxTv_SdtEventMessage_Eventmessagedata, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessageproperties != null ) + { + AddObjectProperty("EventMessageProperties", gxTv_SdtEventMessage_Eventmessageproperties, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessageversion_N != 1 ) + { + AddObjectProperty("EventMessageVersion", gxTv_SdtEventMessage_Eventmessageversion, false, false); + } + } + + public String getgxTv_SdtEventMessage_Eventmessageid( ) + { + return gxTv_SdtEventMessage_Eventmessageid ; + } + + public void setgxTv_SdtEventMessage_Eventmessageid( String value ) + { + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageid = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageid_N( ) + { + return gxTv_SdtEventMessage_Eventmessageid_N ; + } + + public java.util.Date getgxTv_SdtEventMessage_Eventmessagedate( ) + { + return gxTv_SdtEventMessage_Eventmessagedate ; + } + + public void setgxTv_SdtEventMessage_Eventmessagedate( java.util.Date value ) + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagedate_N( ) + { + return gxTv_SdtEventMessage_Eventmessagedate_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessagesourcetype( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype ; + } + + public void setgxTv_SdtEventMessage_Eventmessagesourcetype( String value ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagesourcetype_N( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessagedata( ) + { + return gxTv_SdtEventMessage_Eventmessagedata ; + } + + public void setgxTv_SdtEventMessage_Eventmessagedata( String value ) + { + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedata = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagedata_N( ) + { + return gxTv_SdtEventMessage_Eventmessagedata_N ; + } + + public GXBaseCollection getgxTv_SdtEventMessage_Eventmessageproperties( ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + gxTv_SdtEventMessage_Eventmessageproperties = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + } + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessage_Eventmessageproperties ; + } + + public void setgxTv_SdtEventMessage_Eventmessageproperties( GXBaseCollection value ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageproperties = value ; + } + + public void setgxTv_SdtEventMessage_Eventmessageproperties_SetNull( ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties = null ; + } + + public boolean getgxTv_SdtEventMessage_Eventmessageproperties_IsNull( ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageproperties_N( ) + { + return gxTv_SdtEventMessage_Eventmessageproperties_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessageversion( ) + { + return gxTv_SdtEventMessage_Eventmessageversion ; + } + + public void setgxTv_SdtEventMessage_Eventmessageversion( String value ) + { + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageversion = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageversion_N( ) + { + return gxTv_SdtEventMessage_Eventmessageversion_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessage_Eventmessageid = "" ; + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedate = GXutil.resetTime( GXutil.nullDate() ); + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = "" ; + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedata = "" ; + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageversion = "" ; + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(1) ; + sTagName = "" ; + sDateCnv = "" ; + sNumToPad = "" ; + datetime_STZ = GXutil.resetTime( GXutil.nullDate() ); + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessage Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessage)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessage struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessage_Eventmessageid(struct.getEventmessageid()); + if ( struct.gxTv_SdtEventMessage_Eventmessagedate_N == 0 ) + { + setgxTv_SdtEventMessage_Eventmessagedate(struct.getEventmessagedate()); + } + setgxTv_SdtEventMessage_Eventmessagesourcetype(struct.getEventmessagesourcetype()); + setgxTv_SdtEventMessage_Eventmessagedata(struct.getEventmessagedata()); + GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + Vector gxTv_SdtEventMessage_Eventmessageproperties_aux1 = struct.getEventmessageproperties(); + if (gxTv_SdtEventMessage_Eventmessageproperties_aux1 != null) + { + for (int i = 0; i < gxTv_SdtEventMessage_Eventmessageproperties_aux1.size(); i++) + { + gxTv_SdtEventMessage_Eventmessageproperties_aux.add(new com.genexus.genexusserverlessapi.SdtEventMessageProperty(gxTv_SdtEventMessage_Eventmessageproperties_aux1.elementAt(i))); + } + } + setgxTv_SdtEventMessage_Eventmessageproperties(gxTv_SdtEventMessage_Eventmessageproperties_aux); + setgxTv_SdtEventMessage_Eventmessageversion(struct.getEventmessageversion()); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessage getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessage struct = new com.genexus.genexusserverlessapi.StructSdtEventMessage (); + struct.setEventmessageid(getgxTv_SdtEventMessage_Eventmessageid()); + if ( gxTv_SdtEventMessage_Eventmessagedate_N == 0 ) + { + struct.setEventmessagedate(getgxTv_SdtEventMessage_Eventmessagedate()); + } + struct.setEventmessagesourcetype(getgxTv_SdtEventMessage_Eventmessagesourcetype()); + struct.setEventmessagedata(getgxTv_SdtEventMessage_Eventmessagedata()); + struct.setEventmessageproperties(getgxTv_SdtEventMessage_Eventmessageproperties().getStruct()); + struct.setEventmessageversion(getgxTv_SdtEventMessage_Eventmessageversion()); + return struct ; + } + + protected byte gxTv_SdtEventMessage_Eventmessageid_N ; + protected byte sdtIsNull ; + protected byte gxTv_SdtEventMessage_Eventmessagedate_N ; + protected byte gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedata_N ; + protected byte gxTv_SdtEventMessage_Eventmessageproperties_N ; + protected byte gxTv_SdtEventMessage_Eventmessageversion_N ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected String sDateCnv ; + protected String sNumToPad ; + protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate ; + protected java.util.Date datetime_STZ ; + protected boolean readElement ; + protected boolean formatError ; + protected String gxTv_SdtEventMessage_Eventmessagedata ; + protected String gxTv_SdtEventMessage_Eventmessageid ; + protected String gxTv_SdtEventMessage_Eventmessagesourcetype ; + protected String gxTv_SdtEventMessage_Eventmessageversion ; + protected GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties=null ; + protected GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties_aux ; } diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java new file mode 100644 index 000000000..918a9c215 --- /dev/null +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java @@ -0,0 +1,225 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessageProperty extends GxUserType +{ + public SdtEventMessageProperty( ) + { + this( new ModelContext(SdtEventMessageProperty.class)); + } + + public SdtEventMessageProperty( ModelContext context ) + { + super( context, "SdtEventMessageProperty"); + } + + public SdtEventMessageProperty( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessageProperty"); + } + + public SdtEventMessageProperty( StructSdtEventMessageProperty struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "PropertyId") ) + { + gxTv_SdtEventMessageProperty_Propertyid = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "PropertyValue") ) + { + gxTv_SdtEventMessageProperty_Propertyvalue = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessageProperty" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + oWriter.writeElement("PropertyId", gxTv_SdtEventMessageProperty_Propertyid); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeElement("PropertyValue", gxTv_SdtEventMessageProperty_Propertyvalue); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + AddObjectProperty("PropertyId", gxTv_SdtEventMessageProperty_Propertyid, false, false); + AddObjectProperty("PropertyValue", gxTv_SdtEventMessageProperty_Propertyvalue, false, false); + } + + public String getgxTv_SdtEventMessageProperty_Propertyid( ) + { + return gxTv_SdtEventMessageProperty_Propertyid ; + } + + public void setgxTv_SdtEventMessageProperty_Propertyid( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyid = value ; + } + + public String getgxTv_SdtEventMessageProperty_Propertyvalue( ) + { + return gxTv_SdtEventMessageProperty_Propertyvalue ; + } + + public void setgxTv_SdtEventMessageProperty_Propertyvalue( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyvalue = value ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessageProperty_Propertyid = "" ; + sdtIsNull = (byte)(1) ; + gxTv_SdtEventMessageProperty_Propertyvalue = "" ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessageProperty Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessageProperty)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessageProperty struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessageProperty_Propertyid(struct.getPropertyid()); + setgxTv_SdtEventMessageProperty_Propertyvalue(struct.getPropertyvalue()); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessageProperty getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessageProperty struct = new com.genexus.genexusserverlessapi.StructSdtEventMessageProperty (); + struct.setPropertyid(getgxTv_SdtEventMessageProperty_Propertyid()); + struct.setPropertyvalue(getgxTv_SdtEventMessageProperty_Propertyvalue()); + return struct ; + } + + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String gxTv_SdtEventMessageProperty_Propertyid ; + protected String gxTv_SdtEventMessageProperty_Propertyvalue ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; +} + diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java index f4868de13..c0eed2752 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java @@ -157,7 +157,7 @@ public boolean getgxTv_SdtEventMessageResponse_Handlefailure( ) public void setgxTv_SdtEventMessageResponse_Handlefailure( boolean value ) { - gxTv_SdtEventMessageResponse_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; gxTv_SdtEventMessageResponse_Handlefailure = value ; } @@ -168,7 +168,7 @@ public String getgxTv_SdtEventMessageResponse_Errormessage( ) public void setgxTv_SdtEventMessageResponse_Errormessage( String value ) { - gxTv_SdtEventMessageResponse_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; gxTv_SdtEventMessageResponse_Errormessage = value ; } @@ -179,14 +179,14 @@ public void initialize( int remoteHandle ) public void initialize( ) { - gxTv_SdtEventMessageResponse_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; gxTv_SdtEventMessageResponse_Errormessage = "" ; sTagName = "" ; } public byte isNull( ) { - return gxTv_SdtEventMessageResponse_N ; + return sdtIsNull ; } public com.genexus.genexusserverlessapi.SdtEventMessageResponse Clone( ) @@ -212,7 +212,7 @@ public com.genexus.genexusserverlessapi.StructSdtEventMessageResponse getStruct( return struct ; } - protected byte gxTv_SdtEventMessageResponse_N ; + protected byte sdtIsNull ; protected short readOk ; protected short nOutParmCount ; protected String sTagName ; diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java index af0c5fb35..6ef489957 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java @@ -1,116 +1,253 @@ -package com.genexus.genexusserverlessapi; - +package com.genexus.genexusserverlessapi ; import com.genexus.*; import com.genexus.*; import com.genexus.xml.*; import com.genexus.search.*; import com.genexus.webpanels.*; - import java.util.*; -public final class SdtEventMessages extends GxUserType { - public SdtEventMessages() { - this(new ModelContext(SdtEventMessages.class)); - } - - public SdtEventMessages(ModelContext context) { - super(context, "SdtEventMessages"); - } - - public SdtEventMessages(int remoteHandle, - ModelContext context) { - super(remoteHandle, context, "SdtEventMessages"); - } - - public SdtEventMessages(StructSdtEventMessages struct) { - this(); - setStruct(struct); - } - - private static java.util.HashMap mapper = new java.util.HashMap(); - - static { - } - - public String getJsonMap(String value) { - return (String) mapper.get(value); - } - - public GXBaseCollection getgxTv_SdtEventMessages_Eventmessage() { - if (gxTv_SdtEventMessages_Eventmessage == null) { - gxTv_SdtEventMessages_Eventmessage = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); - } - gxTv_SdtEventMessages_Eventmessage_N = (byte) (0); - gxTv_SdtEventMessages_N = (byte) (0); - return gxTv_SdtEventMessages_Eventmessage; - } - - public void setgxTv_SdtEventMessages_Eventmessage(GXBaseCollection value) { - gxTv_SdtEventMessages_Eventmessage_N = (byte) (0); - gxTv_SdtEventMessages_N = (byte) (0); - gxTv_SdtEventMessages_Eventmessage = value; - } - - public void setgxTv_SdtEventMessages_Eventmessage_SetNull() { - gxTv_SdtEventMessages_Eventmessage_N = (byte) (1); - gxTv_SdtEventMessages_Eventmessage = null; - } - - public boolean getgxTv_SdtEventMessages_Eventmessage_IsNull() { - if (gxTv_SdtEventMessages_Eventmessage == null) { - return true; - } - return false; - } - - public byte getgxTv_SdtEventMessages_Eventmessage_N() { - return gxTv_SdtEventMessages_Eventmessage_N; - } - - public void initialize(int remoteHandle) { - initialize(); - } - - public void initialize() { - gxTv_SdtEventMessages_Eventmessage_N = (byte) (1); - gxTv_SdtEventMessages_N = (byte) (1); - sTagName = ""; - } - - public byte isNull() { - return gxTv_SdtEventMessages_N; - } - - public com.genexus.genexusserverlessapi.SdtEventMessages Clone() { - return (com.genexus.genexusserverlessapi.SdtEventMessages) (clone()); - } - - public void setStruct(com.genexus.genexusserverlessapi.StructSdtEventMessages struct) { - GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); - Vector gxTv_SdtEventMessages_Eventmessage_aux1 = struct.getEventmessage(); - if (gxTv_SdtEventMessages_Eventmessage_aux1 != null) { - for (int i = 0; i < gxTv_SdtEventMessages_Eventmessage_aux1.size(); i++) { - gxTv_SdtEventMessages_Eventmessage_aux.add(new com.genexus.genexusserverlessapi.SdtEventMessage(gxTv_SdtEventMessages_Eventmessage_aux1.elementAt(i))); - } - } - setgxTv_SdtEventMessages_Eventmessage(gxTv_SdtEventMessages_Eventmessage_aux); - } - - @SuppressWarnings("unchecked") - public com.genexus.genexusserverlessapi.StructSdtEventMessages getStruct() { - com.genexus.genexusserverlessapi.StructSdtEventMessages struct = new com.genexus.genexusserverlessapi.StructSdtEventMessages(); - struct.setEventmessage(getgxTv_SdtEventMessages_Eventmessage().getStruct()); - return struct; - } - - protected byte gxTv_SdtEventMessages_Eventmessage_N; - protected byte gxTv_SdtEventMessages_N; - protected short readOk; - protected short nOutParmCount; - protected String sTagName; - protected boolean readElement; - protected boolean formatError; - protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux; - protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage = null; +public final class SdtEventMessages extends GxUserType +{ + public SdtEventMessages( ) + { + this( new ModelContext(SdtEventMessages.class)); + } + + public SdtEventMessages( ModelContext context ) + { + super( context, "SdtEventMessages"); + } + + public SdtEventMessages( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessages"); + } + + public SdtEventMessages( StructSdtEventMessages struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessage") ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + gxTv_SdtEventMessages_Eventmessage = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessages_Eventmessage.readxmlcollection(oReader, "EventMessage", "EventMessage") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessage") ) + { + GXSoapError = oReader.read() ; + } + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessages" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + if ( gxTv_SdtEventMessages_Eventmessage != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessages_Eventmessage.writexmlcollection(oWriter, "EventMessage", sNameSpace1, "EventMessage", sNameSpace1); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessages_Eventmessage != null ) + { + AddObjectProperty("EventMessage", gxTv_SdtEventMessages_Eventmessage, false, false); + } + } + + public GXBaseCollection getgxTv_SdtEventMessages_Eventmessage( ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + gxTv_SdtEventMessages_Eventmessage = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + } + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessages_Eventmessage ; + } + + public void setgxTv_SdtEventMessages_Eventmessage( GXBaseCollection value ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessages_Eventmessage = value ; + } + + public void setgxTv_SdtEventMessages_Eventmessage_SetNull( ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + gxTv_SdtEventMessages_Eventmessage = null ; + } + + public boolean getgxTv_SdtEventMessages_Eventmessage_IsNull( ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessages_Eventmessage_N( ) + { + return gxTv_SdtEventMessages_Eventmessage_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessages Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessages)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessages struct ) + { + if ( struct != null ) + { + GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + Vector gxTv_SdtEventMessages_Eventmessage_aux1 = struct.getEventmessage(); + if (gxTv_SdtEventMessages_Eventmessage_aux1 != null) + { + for (int i = 0; i < gxTv_SdtEventMessages_Eventmessage_aux1.size(); i++) + { + gxTv_SdtEventMessages_Eventmessage_aux.add(new com.genexus.genexusserverlessapi.SdtEventMessage(gxTv_SdtEventMessages_Eventmessage_aux1.elementAt(i))); + } + } + setgxTv_SdtEventMessages_Eventmessage(gxTv_SdtEventMessages_Eventmessage_aux); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessages getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessages struct = new com.genexus.genexusserverlessapi.StructSdtEventMessages (); + struct.setEventmessage(getgxTv_SdtEventMessages_Eventmessage().getStruct()); + return struct ; + } + + protected byte gxTv_SdtEventMessages_Eventmessage_N ; + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; + protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage=null ; + protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux ; } diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java new file mode 100644 index 000000000..423e6c68f --- /dev/null +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java @@ -0,0 +1,243 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessagesList extends GxUserType +{ + public SdtEventMessagesList( ) + { + this( new ModelContext(SdtEventMessagesList.class)); + } + + public SdtEventMessagesList( ModelContext context ) + { + super( context, "SdtEventMessagesList"); + } + + public SdtEventMessagesList( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessagesList"); + } + + public SdtEventMessagesList( StructSdtEventMessagesList struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "items") ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + gxTv_SdtEventMessagesList_Items = new GXSimpleCollection(String.class, "internal", ""); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessagesList_Items.readxmlcollection(oReader, "items", "Item") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "items") ) + { + GXSoapError = oReader.read() ; + } + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessagesList" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + if ( gxTv_SdtEventMessagesList_Items != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessagesList_Items.writexmlcollection(oWriter, "items", sNameSpace1, "Item", sNameSpace1); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessagesList_Items != null ) + { + AddObjectProperty("items", gxTv_SdtEventMessagesList_Items, false, false); + } + } + + public GXSimpleCollection getgxTv_SdtEventMessagesList_Items( ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + gxTv_SdtEventMessagesList_Items = new GXSimpleCollection(String.class, "internal", ""); + } + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessagesList_Items ; + } + + public void setgxTv_SdtEventMessagesList_Items( GXSimpleCollection value ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessagesList_Items = value ; + } + + public void setgxTv_SdtEventMessagesList_Items_SetNull( ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + gxTv_SdtEventMessagesList_Items = null ; + } + + public boolean getgxTv_SdtEventMessagesList_Items_IsNull( ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessagesList_Items_N( ) + { + return gxTv_SdtEventMessagesList_Items_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessagesList Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessagesList)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessagesList struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessagesList_Items(new GXSimpleCollection(String.class, "internal", "", struct.getItems())); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessagesList getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessagesList struct = new com.genexus.genexusserverlessapi.StructSdtEventMessagesList (); + struct.setItems(getgxTv_SdtEventMessagesList_Items().getStruct()); + return struct ; + } + + protected byte gxTv_SdtEventMessagesList_Items_N ; + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; + protected GXSimpleCollection gxTv_SdtEventMessagesList_Items=null ; +} + diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload.java deleted file mode 100644 index 38d73aaae..000000000 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.genexus.genexusserverlessapi; - -import com.genexus.*; - -@javax.xml.bind.annotation.XmlType(name = "EventCustomPayload", namespace = "ServerlessAPI") -public final class StructSdtEventCustomPayload implements Cloneable, java.io.Serializable { - public StructSdtEventCustomPayload() { - this(-1, new ModelContext(StructSdtEventCustomPayload.class)); - } - - public StructSdtEventCustomPayload(int remoteHandle, - ModelContext context) { - } - - public StructSdtEventCustomPayload(java.util.Vector value) { - item = value; - } - - public Object clone() { - Object cloned = null; - try { - cloned = super.clone(); - } catch (CloneNotSupportedException e) { - ; - } - return cloned; - } - - @javax.xml.bind.annotation.XmlElement(name = "CustomPayloadItem", namespace = "ServerlessAPI") - public java.util.Vector getItem() { - return item; - } - - public void setItem(java.util.Vector value) { - item = value; - } - - protected java.util.Vector item = new java.util.Vector<>(); -} - diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload_CustomPayloadItem.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload_CustomPayloadItem.java deleted file mode 100644 index d1485d4c7..000000000 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventCustomPayload_CustomPayloadItem.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.genexus.genexusserverlessapi; - -import com.genexus.*; - -public final class StructSdtEventCustomPayload_CustomPayloadItem implements Cloneable, java.io.Serializable { - public StructSdtEventCustomPayload_CustomPayloadItem() { - this(-1, new ModelContext(StructSdtEventCustomPayload_CustomPayloadItem.class)); - } - - public StructSdtEventCustomPayload_CustomPayloadItem(int remoteHandle, - ModelContext context) { - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid = ""; - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue = ""; - } - - public Object clone() { - Object cloned = null; - try { - cloned = super.clone(); - } catch (CloneNotSupportedException e) { - ; - } - return cloned; - } - - public String getPropertyid() { - return gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid; - } - - public void setPropertyid(String value) { - gxTv_SdtEventCustomPayload_CustomPayloadItem_N = (byte) (0); - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid = value; - } - - public String getPropertyvalue() { - return gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue; - } - - public void setPropertyvalue(String value) { - gxTv_SdtEventCustomPayload_CustomPayloadItem_N = (byte) (0); - gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue = value; - } - - protected byte gxTv_SdtEventCustomPayload_CustomPayloadItem_N; - protected String gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyvalue; - protected String gxTv_SdtEventCustomPayload_CustomPayloadItem_Propertyid; -} - diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java index 2c5c3414e..13b9c7e68 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java @@ -1,100 +1,126 @@ -package com.genexus.genexusserverlessapi; - +package com.genexus.genexusserverlessapi ; import com.genexus.*; -public final class StructSdtEventMessage implements Cloneable, java.io.Serializable { - public StructSdtEventMessage() { - this(-1, new ModelContext(StructSdtEventMessage.class)); - } - - public StructSdtEventMessage(int remoteHandle, - ModelContext context) { - java.util.Calendar cal = java.util.Calendar.getInstance(); - cal.set(1, 0, 1, 0, 0, 0); - cal.set(java.util.Calendar.MILLISECOND, 0); - gxTv_SdtEventMessage_Eventmessageid = ""; - gxTv_SdtEventMessage_Eventmessagedate = cal.getTime(); - gxTv_SdtEventMessage_Eventmessagesourcetype = ""; - gxTv_SdtEventMessage_Eventmessagedata = ""; - gxTv_SdtEventMessage_Eventmessageversion = ""; - gxTv_SdtEventMessage_Eventmessagedate_N = (byte) (1); - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (1); - } - - public Object clone() { - Object cloned = null; - try { - cloned = super.clone(); - } catch (CloneNotSupportedException e) { - ; - } - return cloned; - } - - public String getEventmessageid() { - return gxTv_SdtEventMessage_Eventmessageid; - } - - public void setEventmessageid(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessageid = value; - } - - public java.util.Date getEventmessagedate() { - return gxTv_SdtEventMessage_Eventmessagedate; - } - - public void setEventmessagedate(java.util.Date value) { - gxTv_SdtEventMessage_Eventmessagedate_N = (byte) (0); - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagedate = value; - } - - public String getEventmessagesourcetype() { - return gxTv_SdtEventMessage_Eventmessagesourcetype; - } - - public void setEventmessagesourcetype(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagesourcetype = value; - } - - public String getEventmessagedata() { - return gxTv_SdtEventMessage_Eventmessagedata; - } - - public void setEventmessagedata(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagedata = value; - } - - public String getEventmessageversion() { - return gxTv_SdtEventMessage_Eventmessageversion; - } - - public void setEventmessageversion(String value) { - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessageversion = value; - } - - public java.util.Vector getEventmessagecustompayload() { - return gxTv_SdtEventMessage_Eventmessagecustompayload; - } - - public void setEventmessagecustompayload(java.util.Vector value) { - gxTv_SdtEventMessage_Eventmessagecustompayload_N = (byte) (0); - gxTv_SdtEventMessage_N = (byte) (0); - gxTv_SdtEventMessage_Eventmessagecustompayload = value; - } - - protected byte gxTv_SdtEventMessage_Eventmessagedate_N; - protected byte gxTv_SdtEventMessage_Eventmessagecustompayload_N; - protected byte gxTv_SdtEventMessage_N; - protected String gxTv_SdtEventMessage_Eventmessagedata; - protected String gxTv_SdtEventMessage_Eventmessageid; - protected String gxTv_SdtEventMessage_Eventmessagesourcetype; - protected String gxTv_SdtEventMessage_Eventmessageversion; - protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate; - protected java.util.Vector gxTv_SdtEventMessage_Eventmessagecustompayload = null; +public final class StructSdtEventMessage implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessage( ) + { + this( -1, new ModelContext( StructSdtEventMessage.class )); + } + + public StructSdtEventMessage( int remoteHandle , + ModelContext context ) + { + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.set(1, 0, 1, 0, 0, 0); + cal.set(java.util.Calendar.MILLISECOND, 0); + gxTv_SdtEventMessage_Eventmessageid = "" ; + gxTv_SdtEventMessage_Eventmessagedate = cal.getTime() ; + gxTv_SdtEventMessage_Eventmessagesourcetype = "" ; + gxTv_SdtEventMessage_Eventmessagedata = "" ; + gxTv_SdtEventMessage_Eventmessageversion = "" ; + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public String getEventmessageid( ) + { + return gxTv_SdtEventMessage_Eventmessageid ; + } + + public void setEventmessageid( String value ) + { + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageid = value ; + } + + public java.util.Date getEventmessagedate( ) + { + return gxTv_SdtEventMessage_Eventmessagedate ; + } + + public void setEventmessagedate( java.util.Date value ) + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = value ; + } + + public String getEventmessagesourcetype( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype ; + } + + public void setEventmessagesourcetype( String value ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = value ; + } + + public String getEventmessagedata( ) + { + return gxTv_SdtEventMessage_Eventmessagedata ; + } + + public void setEventmessagedata( String value ) + { + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedata = value ; + } + + public java.util.Vector getEventmessageproperties( ) + { + return gxTv_SdtEventMessage_Eventmessageproperties ; + } + + public void setEventmessageproperties( java.util.Vector value ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageproperties = value ; + } + + public String getEventmessageversion( ) + { + return gxTv_SdtEventMessage_Eventmessageversion ; + } + + public void setEventmessageversion( String value ) + { + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageversion = value ; + } + + protected byte gxTv_SdtEventMessage_Eventmessageid_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedate_N ; + protected byte gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedata_N ; + protected byte gxTv_SdtEventMessage_Eventmessageproperties_N ; + protected byte gxTv_SdtEventMessage_Eventmessageversion_N ; + protected byte sdtIsNull ; + protected String gxTv_SdtEventMessage_Eventmessagedata ; + protected String gxTv_SdtEventMessage_Eventmessageid ; + protected String gxTv_SdtEventMessage_Eventmessagesourcetype ; + protected String gxTv_SdtEventMessage_Eventmessageversion ; + protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate ; + protected java.util.Vector gxTv_SdtEventMessage_Eventmessageproperties=null ; } diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java new file mode 100644 index 000000000..543aaeb2f --- /dev/null +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java @@ -0,0 +1,54 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessageProperty implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessageProperty( ) + { + this( -1, new ModelContext( StructSdtEventMessageProperty.class )); + } + + public StructSdtEventMessageProperty( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessageProperty_Propertyid = "" ; + gxTv_SdtEventMessageProperty_Propertyvalue = "" ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public String getPropertyid( ) + { + return gxTv_SdtEventMessageProperty_Propertyid ; + } + + public void setPropertyid( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyid = value ; + } + + public String getPropertyvalue( ) + { + return gxTv_SdtEventMessageProperty_Propertyvalue ; + } + + public void setPropertyvalue( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyvalue = value ; + } + + protected byte sdtIsNull ; + protected String gxTv_SdtEventMessageProperty_Propertyid ; + protected String gxTv_SdtEventMessageProperty_Propertyvalue ; +} + diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java index 4f78a73e9..f390dd9c2 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java @@ -31,7 +31,7 @@ public boolean getHandlefailure( ) public void setHandlefailure( boolean value ) { - gxTv_SdtEventMessageResponse_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; gxTv_SdtEventMessageResponse_Handlefailure = value ; } @@ -42,11 +42,11 @@ public String getErrormessage( ) public void setErrormessage( String value ) { - gxTv_SdtEventMessageResponse_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; gxTv_SdtEventMessageResponse_Errormessage = value ; } - protected byte gxTv_SdtEventMessageResponse_N ; + protected byte sdtIsNull ; protected boolean gxTv_SdtEventMessageResponse_Handlefailure ; protected String gxTv_SdtEventMessageResponse_Errormessage ; } diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java index 18a558a2d..e1ac05e3b 100644 --- a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java @@ -1,39 +1,43 @@ -package com.genexus.genexusserverlessapi; - +package com.genexus.genexusserverlessapi ; import com.genexus.*; -public final class StructSdtEventMessages implements Cloneable, java.io.Serializable { - public StructSdtEventMessages() { - this(-1, new ModelContext(StructSdtEventMessages.class)); - } - - public StructSdtEventMessages(int remoteHandle, - ModelContext context) { - gxTv_SdtEventMessages_Eventmessage_N = (byte) (1); - } - - public Object clone() { - Object cloned = null; - try { - cloned = super.clone(); - } catch (CloneNotSupportedException e) { - ; - } - return cloned; - } - - public java.util.Vector getEventmessage() { - return gxTv_SdtEventMessages_Eventmessage; - } - - public void setEventmessage(java.util.Vector value) { - gxTv_SdtEventMessages_Eventmessage_N = (byte) (0); - gxTv_SdtEventMessages_N = (byte) (0); - gxTv_SdtEventMessages_Eventmessage = value; - } - - protected byte gxTv_SdtEventMessages_Eventmessage_N; - protected byte gxTv_SdtEventMessages_N; - protected java.util.Vector gxTv_SdtEventMessages_Eventmessage = null; +public final class StructSdtEventMessages implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessages( ) + { + this( -1, new ModelContext( StructSdtEventMessages.class )); + } + + public StructSdtEventMessages( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public java.util.Vector getEventmessage( ) + { + return gxTv_SdtEventMessages_Eventmessage ; + } + + public void setEventmessage( java.util.Vector value ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessages_Eventmessage = value ; + } + + protected byte gxTv_SdtEventMessages_Eventmessage_N ; + protected byte sdtIsNull ; + protected java.util.Vector gxTv_SdtEventMessages_Eventmessage=null ; } diff --git a/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java new file mode 100644 index 000000000..a770155e1 --- /dev/null +++ b/gxawsserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java @@ -0,0 +1,43 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessagesList implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessagesList( ) + { + this( -1, new ModelContext( StructSdtEventMessagesList.class )); + } + + public StructSdtEventMessagesList( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public java.util.Vector getItems( ) + { + return gxTv_SdtEventMessagesList_Items ; + } + + public void setItems( java.util.Vector value ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessagesList_Items = value ; + } + + protected byte gxTv_SdtEventMessagesList_Items_N ; + protected byte sdtIsNull ; + protected java.util.Vector gxTv_SdtEventMessagesList_Items=null ; +} + diff --git a/gxazureserverless/client.cfg b/gxazureserverless/client.cfg new file mode 100644 index 000000000..755775f4d --- /dev/null +++ b/gxazureserverless/client.cfg @@ -0,0 +1,127 @@ +[Client] +MODEL_NUM= 2 +GENERATOR_NUM= 12 +LDAP_LOGIN=0 +LOGIN_AS_USERID=0 +LDAP_HOST= +LDAP_AUTH=simple +LDAP_PRINCIPAL= +LDAP_USERID_TYPE=OS +SMTP_HOST= +NAME_SPACE= com.gx.serverless.test +NAME_HOST= +CORBA_SERVER_NAME= +DCOM_GUID= +CONN_TIMEOUT=300 +HELP_MODE=WINHTML +HELP_BASEURL= +PREFERRED_UI=BEST +JFC_LF=NATIVE +CALENDAR=1 +CALC=1 +WP_RESIZE=1 +SHOW_STATUS=1 +FIELD_EXIT=Tab +ESCAPE_FUNCTION=Exit_form +KEY_REFRESH=5 +KEY_PROMPT=4 +MDI_FORMS=1 +REMOTE_CALLS=NEVER +IMAGE_SUBST=0 +CS_CONNECT=First +CS_REORG=1 +CS_REORGJAVA=1 +SUBFILE_ORDER=Y +FC_READONLY=GRAYED +PACKAGE=com.gx.serverless.test +DECIMAL_POINT=. +DATE_FMT= MDY +CTOD_DATE_FMT= L +BLANK_EMPTY_DATE=0 +TIME_FMT=12 +YEAR_LIMIT=40 +COMPRESS_HTML=1 +DocumentType=HTML5 +IE_COMPATIBILITY_VIEW=EmulateIE7 +WEB_IMAGE_DIR=/static +HTTP_BACKEND_URL= +WEB_STATIC_DIR= +ORQ_CLIENT_URL= +ORQ_SERVER_DIR= +TMPMEDIA_DIR=PrivateTempStorage +PRINT_LAYOUT_METADATA_DIR=LayoutMetadata +StorageTimeZone= 1 +GX_BUILD_NUMBER=123400 +ODBC_CALLS=0 +NameSpace1= com.gx.serverless.test +LANGUAGE=eng +LANG_NAME=English +Theme=Carmine +CS_BLOB_PATH=PublicTempStorage +SUBMIT_POOL_SIZE=5 +CACHE_TTL_0=-1 +CACHE_TTL_1=60 +CACHE_TTL_2=600 +CACHE_TTL_3=0 +CACHE_STORAGE_SIZE=0 +CACHING=0 +SMART_CACHING=0 +CACHE_INVALIDATION_TOKEN=201871916103460 +EVENT_BEFORE_COMMIT= +EVENT_AFTER_COMMIT= +EVENT_BEFORE_ROLLBACK= +EVENT_AFTER_ROLLBACK= +EVENT_BEFORE_CONNECT= +EVENT_AFTER_CONNECT= +ENABLE_MANAGEMENT=0 +EnableIntegratedSecurity=0 +IntegratedSecurityLoginWeb= +IntegratedSecurityNotAuthorizedWeb= +VER_STAMP= +[language|English] +code= eng +time_fmt= 12 +decimal_point= . +thousand_sep= , +date_fmt= MDY +culture= en-US +[com.serverlessbasictest] +GXDB_LOCATION= +JTA=0 +DataSource1=DEFAULT +JDBC_LOG= +JDBCLogEnabled=0 +JDBCUniqueName=0 +JDBCLogPath= +JDBCLogLevel=0 +JDBCLogBuffer=0 +JDBCLogDetail=0 +[com.serverlessbasictest|DEFAULT] +CS_DBNAME= +INFORMIX_DB=ANSI +CS_LIBL400= +CS_PACKAGE400= +DB2400_DATE_DATATYPE= +CS_SCHEMA= +USER_ID=82sPNmMP8O3TlpdEZk1r8E== +USER_PASSWORD=q+TSEf35qmaJpVp4SmrATG== +CS_CONNECT=First +WAIT_RECORD=0 +LOCK_RETRY=10 +LoginInServer=1 +JDBC_DRIVER=net.sourceforge.jtds.jdbc.Driver +DB_URL=jdbc:jtds:sqlserver://:1433/ +USE_JDBC_DATASOURCE=0 +JDBC_DATASOURCE= +MAX_CURSOR=100 +INITIALIZE_NEW=1 +ISOLATION_LEVEL=CR +XBASE_TINT=1 +DBMS=sqlserver +UnlimitedRWPool=1 +PoolRWEnabled=1 +RecycleRW=1 +RecycleRWType=1 +RecycleRWMin=30 +POOLSIZE_RW=10 +POOL_STARTUP=0 diff --git a/gxazureserverless/gxazmappings.json b/gxazureserverless/gxazmappings.json new file mode 100644 index 000000000..3790d8acc --- /dev/null +++ b/gxazureserverless/gxazmappings.json @@ -0,0 +1,34 @@ +[ + { + "FunctionName": "TestQueueRaw", + "GXEntrypoint": "com.unittest.eventdriven.queue.handlequeueazureevent" + }, + { + "FunctionName": "TestQueueEventMessage", + "GXEntrypoint": "com.unittest.eventdriven.queue.handlequeueazureevent2" + }, + { + "FunctionName": "TestTimerRaw", + "GXEntrypoint": "com.unittest.eventdriven.timer.handletimerazureevent" + }, + { + "FunctionName": "TestServiceBusRaw", + "GXEntrypoint": "com.unittest.eventdriven.servicebus.handlesbqueueazureevent" + }, + { + "FunctionName": "TestServiceBusMessage", + "GXEntrypoint": "com.unittest.eventdriven.servicebus.handlesbqueueazureevent2" + }, + { + "FunctionName": "TestEventGridRaw", + "GXEntrypoint": "com.unittest.eventdriven.eventgrid.handleeventgridazure" + }, + { + "FunctionName": "TestEventGridCloud", + "GXEntrypoint": "com.unittest.eventdriven.eventgridcloud.handleeventgridcloudazure" + }, + { + "FunctionName": "TestCosmosDB", + "GXEntrypoint": "com.unittest.eventdriven.cosmosdb.handlecosmosdbazure" + } +] \ No newline at end of file diff --git a/gxazureserverless/log4j2.xml b/gxazureserverless/log4j2.xml new file mode 100644 index 000000000..2ff3a3346 --- /dev/null +++ b/gxazureserverless/log4j2.xml @@ -0,0 +1,39 @@ + + + + ${main:0:-.}${sys:file.separator}logs${sys:file.separator} + + ${logBaseDir}client.log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gxazureserverless/pom.xml b/gxazureserverless/pom.xml new file mode 100644 index 000000000..6fa7fef36 --- /dev/null +++ b/gxazureserverless/pom.xml @@ -0,0 +1,94 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxazureserverless + GeneXus Azure Functions Handler + + + + + ${project.groupId} + gxserverlesscommon + ${project.version} + + + + com.microsoft.azure.functions + azure-functions-java-library + 3.1.0 + + + + com.microsoft.azure + azure-functions-maven-plugin + 1.35.0 + + + + io.cloudevents + cloudevents-api + 2.5.0 + + + + io.cloudevents + cloudevents-core + 2.3.0 + + + + io.cloudevents + cloudevents-json-jackson + 4.0.1 + + + + com.azure + azure-messaging-eventgrid + 4.22.3 + + + + org.mockito + mockito-core + 5.12.0 + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + org.junit.jupiter + junit-jupiter-api + 5.10.3 + test + + + + + + gx-azure-serverless + + + + + + com.github.spotbugs + spotbugs-maven-plugin + 3.1.10 + + + + diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureBlobStorageHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureBlobStorageHandler.java new file mode 100644 index 000000000..14ae44856 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureBlobStorageHandler.java @@ -0,0 +1,57 @@ +package com.genexus.cloud.serverless.azure.handler; +import com.genexus.cloud.serverless.model.*; + +import com.microsoft.azure.functions.annotation.*; +import com.microsoft.azure.functions.ExecutionContext; + +import java.time.Instant; +import java.util.List; +import java.util.*; + +public class AzureBlobStorageHandler extends AzureEventHandler{ + + EventMessages msgs = new EventMessages(); + String rawMessage =""; + + public AzureBlobStorageHandler() throws Exception { + super(); + } + public void run( + @BlobTrigger(name = "content", source = "EventGrid", path = "%blob_path%", dataType = "binary") byte[] content, + @BindingName("name") String name, + final ExecutionContext context + ) throws Exception { + + context.getLogger().info("GeneXus Blob Storage trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + + switch (executor.getMethodSignatureIdx()) { + case 0: + EventMessage msg = new EventMessage(); + msg.setMessageId(context.getInvocationId()); + msg.setMessageSourceType(EventMessageSourceType.BLOB); + Instant nowUtc = Instant.now(); + msg.setMessageDate(Date.from(nowUtc)); + msg.setMessageData(Base64.getEncoder().encodeToString(content)); + List msgAtts = msg.getMessageProperties(); + msgAtts.add(new EventMessageProperty("Id", context.getInvocationId())); + msgAtts.add(new EventMessageProperty("name", name)); + + msgs.add(msg); + break; + case 1: + case 2: + rawMessage = Base64.getEncoder().encodeToString(content); + } + try { + EventMessageResponse response = dispatchEvent(msgs, rawMessage); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureCosmosDBHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureCosmosDBHandler.java new file mode 100644 index 000000000..628eb4ba1 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureCosmosDBHandler.java @@ -0,0 +1,104 @@ +package com.genexus.cloud.serverless.azure.handler; +import com.genexus.cloud.serverless.JSONHelper; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.CosmosDBTrigger; + +import java.util.*; + +public class AzureCosmosDBHandler extends AzureEventHandler{ + + public AzureCosmosDBHandler() throws Exception { + super(); + } + public void run( + @CosmosDBTrigger(name = "itemIn", databaseName = "%CosmosDB_Database_Name%", containerName = "%Container_Name%", leaseContainerName = "%lease_Container_Name%", connection = "connection") List items , + final ExecutionContext context) throws Exception { + + context.getLogger().info("GeneXus CosmosDB trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + + UUID eventId = UUID.randomUUID(); + EventMessages msgs = new EventMessages(); + EventMessagesList eventMessagesList = new EventMessagesList(); + String rawMessage= ""; + setupServerlessMappings(context.getFunctionName()); + + switch (executor.getMethodSignatureIdx()) { + case 0: + msgs = setupEventMessages(eventId,TryGetDocuments(items)); + break; + case 4: + eventMessagesList = setupEventMessagesList(TryGetDocuments(items)); + break; + default: + rawMessage = JSONHelper.toJSONString(items); + break; + } + try { + EventMessageResponse response = dispatchEvent(msgs, eventMessagesList, rawMessage); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } + + private List> TryGetDocuments(List items){ + List> documents = new ArrayList<>(); + if (items != null && !items.isEmpty()) { + for (Object item : items) { + if (item instanceof Map) { + try { + Map document = (Map) item; + documents.add(document); + } + catch (Exception ex) + { + logger.error(String.format("Messages were not handled. Error trying to read Cosmos DB data. %s", ex.toString())); + throw new RuntimeException(String.format("Error trying to read Cosmos DB data. %s", ex.toString())); //Throw the exception so the runtime can Retry the operation. + } + } + } + return documents; + } + return null; + } + private EventMessagesList setupEventMessagesList(List> jsonList) + { + EventMessagesList messagesList = new EventMessagesList(); + for (Map json : jsonList) { + messagesList.addItem(JSONHelper.toJSONString(json)); + } + return messagesList; + } + + private EventMessages setupEventMessages(UUID eventId, List> jsonList) + { + EventMessages msgs = new EventMessages(); + for (Map json : jsonList) { + + String idValue = ""; + EventMessage msg = new EventMessage(); + msg.setMessageDate(new Date()); + msg.setMessageSourceType(EventMessageSourceType.COSMOSDB); + + List msgAtts = msg.getMessageProperties(); + for (Map.Entry entry : json.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue().toString(); + + msgAtts.add(new EventMessageProperty(key, value)); + + if (key.equals("id")) + idValue = value; + } + String messageId = eventId.toString() + "_" + idValue; + msg.setMessageId(messageId); + msgs.add(msg); + } + return msgs; + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridCloudHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridCloudHandler.java new file mode 100644 index 000000000..3aa86be12 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridCloudHandler.java @@ -0,0 +1,78 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.genexus.cloud.serverless.model.EventMessage; +import com.genexus.cloud.serverless.model.EventMessageProperty; +import com.genexus.cloud.serverless.model.EventMessageResponse; +import com.genexus.cloud.serverless.model.EventMessages; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.EventGridTrigger; +import io.cloudevents.CloudEvent; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +public class AzureEventGridCloudHandler extends AzureEventHandler{ + EventMessages msgs = new EventMessages(); + String rawMessage = ""; + + public AzureEventGridCloudHandler() throws Exception {super();} + + public void run( + @EventGridTrigger(name = "eventgridEvent") String eventJson, + final ExecutionContext context) throws Exception { + context.getLogger().info("GeneXus Event Grid CloudEvents trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + setupEventGridMessage(eventJson); + + try { + EventMessageResponse response = dispatchEvent(msgs, rawMessage); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } + protected void setupEventGridMessage(String eventJson) throws JsonProcessingException { + switch (executor.getMethodSignatureIdx()) { + case 0: + try { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(io.cloudevents.jackson.JsonFormat.getCloudEventJacksonModule()); + CloudEvent cloudEvent = objectMapper.readValue(eventJson, CloudEvent.class); + EventMessage msg = new EventMessage(); + msg.setMessageId(cloudEvent.getId()); + msg.setMessageSourceType(cloudEvent.getType()); + msg.setMessageVersion(""); + msg.setMessageDate(new Date()); + msg.setMessageData(Objects.requireNonNull(cloudEvent.getData()).toString()); + + List msgAtts = msg.getMessageProperties(); + msgAtts.add(new EventMessageProperty("Id", cloudEvent.getId())); + msgAtts.add(new EventMessageProperty("Subject", cloudEvent.getSubject())); + msgAtts.add(new EventMessageProperty("DataContentType", cloudEvent.getDataContentType())); + if (cloudEvent.getDataSchema() != null) + msgAtts.add(new EventMessageProperty("DataSchema", cloudEvent.getDataSchema().toString())); + if (cloudEvent.getSource() != null) + msgAtts.add(new EventMessageProperty("Source", cloudEvent.getSource().toString())); + if (cloudEvent.getSpecVersion() != null) + msgAtts.add(new EventMessageProperty("SpecVersion", cloudEvent.getSpecVersion().toString())); + if (cloudEvent.getTime() != null) + msgAtts.add(new EventMessageProperty("Time", cloudEvent.getTime().toString())); + msgs.add(msg); + } + catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e;} + break; + case 1: + case 2: + rawMessage = eventJson; + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridHandler.java new file mode 100644 index 000000000..df304349a --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventGridHandler.java @@ -0,0 +1,65 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.azure.messaging.eventgrid.EventGridEvent; +import com.genexus.cloud.serverless.JSONHelper; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.EventGridTrigger; + +import java.util.Date; +import java.util.List; + +public class AzureEventGridHandler extends AzureEventHandler { + + EventMessages msgs = new EventMessages(); + String rawMessage = ""; + public AzureEventGridHandler() throws Exception { + } + + public void run( + @EventGridTrigger(name = "eventgridEvent") EventGridEvent event, + final ExecutionContext context) throws Exception { + + context.getLogger().info("GeneXus Event Grid trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + + setupServerlessMappings(context.getFunctionName()); + setupEventGridMessage(event); + + try { + EventMessageResponse response = dispatchEvent(msgs, rawMessage); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } + + protected void setupEventGridMessage(EventGridEvent event) { + switch (executor.getMethodSignatureIdx()) { + case 0: + EventMessage msg = new EventMessage(); + msg.setMessageId(event.getId()); + msg.setMessageSourceType(event.getEventType()); + msg.setMessageVersion(event.getDataVersion()); + msg.setMessageDate(new Date()); + msg.setMessageData(event.getData().toString()); + + List msgAtts = msg.getMessageProperties(); + msgAtts.add(new EventMessageProperty("Id", event.getId())); + + msgAtts.add(new EventMessageProperty("Subject",event.getSubject())); + msgAtts.add(new EventMessageProperty("Topic",event.getTopic())); + if (event.getEventTime()!= null) + msgAtts.add(new EventMessageProperty("EventTime",event.getEventTime().toString())); + + msgs.add(msg); + break; + case 1: + case 2: + rawMessage = JSONHelper.toJSONString(event); + } + } +} \ No newline at end of file diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventHandler.java new file mode 100644 index 000000000..e2d700b2f --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureEventHandler.java @@ -0,0 +1,57 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.GXProcedureExecutor; +import com.genexus.cloud.serverless.ServerlessBaseEventHandler; +import com.genexus.cloud.serverless.exception.FunctionConfigurationException; +import com.genexus.cloud.serverless.helpers.GlobalConfigurationCache; + +public class AzureEventHandler extends ServerlessBaseEventHandler { + public AzureEventHandler() throws Exception { + super(); + } + protected void setupServerlessMappings(String functionName) throws FunctionConfigurationException, ClassNotFoundException { + logger.debug("Initializing Function configuration"); + + //First use Environment variable, then try reading from the gxazmappings.json file + String envvar = String.format("GX_AZURE_%s_CLASS", functionName.trim().toUpperCase()); + if (System.getenv(envvar) != null) { + String gxObjectClassName = System.getenv(envvar); + entryPointClass = Class.forName(gxObjectClassName); + functionConfiguration = new AzureFunctionConfiguration(functionName, gxObjectClassName); + } + else { + try { + functionConfiguration = GlobalConfigurationCache.getInstance().getAzureFunctionConfiguration(functionName); + entryPointClass = Class.forName(functionConfiguration.getGXClassName()); + } catch (Exception e) { + logger.error(String.format("Failed to initialize Application configuration for %s", functionName), e); + throw e; + } + } + if (entryPointClass != null) + executor = new GXProcedureExecutor(entryPointClass); + else { + logger.error(String.format("GeneXus Entry point class for function %s was not specified. Set %s Environment Variable.",functionName,envvar)); + throw new FunctionConfigurationException(String.format("GeneXus Entry point class for function %s was not specified. Set %s Environment Variable.",functionName,envvar)); + } + } + @Override + protected AzureFunctionConfiguration createFunctionConfiguration(String functionName, String className) { + return new AzureFunctionConfiguration(functionName,className); + } + + @Override + protected AzureFunctionConfiguration createFunctionConfiguration(String className) { + return new AzureFunctionConfiguration("",className); + } + + @Override + protected AzureFunctionConfiguration createFunctionConfiguration() { + + return new AzureFunctionConfiguration(); + } + @Override + protected void InitializeServerlessConfig(){ + } +} + diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfiguration.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfiguration.java new file mode 100644 index 000000000..db1443e7b --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfiguration.java @@ -0,0 +1,42 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.genexus.cloud.serverless.ServerlessFunctionConfiguration; + +public class AzureFunctionConfiguration extends ServerlessFunctionConfiguration { + + @JsonProperty("FunctionName") + private String functionName; + @JsonProperty("GXEntrypoint") + private String gxEntrypoint; + + public AzureFunctionConfiguration() { + } + public AzureFunctionConfiguration(String functionName, String gxEntrypoint) { + this.functionName = functionName; + this.gxEntrypoint = gxEntrypoint; + } + public void setFunctionName(String functionName) { + this.functionName = functionName; + } + public void setGXEntrypoint(String gxEntrypoint) { + this.gxEntrypoint = gxEntrypoint; + } + + public String getFunctionName() { + return functionName; + } + + public String getGXEntrypoint() { + return gxEntrypoint; + } + @Override + public boolean isValidConfiguration () { + return functionName != null && !functionName.trim().isEmpty() && gxEntrypoint != null && !gxEntrypoint.trim().isEmpty(); + } + + @Override + public String getGXClassName() { + return getGXEntrypoint(); + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfigurationHelper.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfigurationHelper.java new file mode 100644 index 000000000..dcda65518 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureFunctionConfigurationHelper.java @@ -0,0 +1,54 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import com.genexus.cloud.serverless.exception.FunctionConfigurationException; +import com.genexus.diagnostics.core.ILogger; +import com.genexus.specific.java.LogManager; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.Optional; + +public class AzureFunctionConfigurationHelper { + private final static ILogger logger = LogManager.initialize(".", AzureFunctionConfiguration.class); + private final static String FUNCTION_CONFIG_PATH = "gxazmappings.json"; + + public static List getFunctionsMapConfiguration() throws FunctionConfigurationException { + File configFile = new File(FUNCTION_CONFIG_PATH); + + if (configFile.exists()) { + try { + String jsonConfig = new String(Files.readAllBytes(Paths.get(FUNCTION_CONFIG_PATH))); + return new ObjectMapper().readValue(jsonConfig, new TypeReference>(){}); + } catch (IOException e) { + logger.error(String.format("Invalid Azure function configuration file: %s. Please check json content.", FUNCTION_CONFIG_PATH), e); + throw new FunctionConfigurationException(String.format("JSON contents of file '%s' are not valid.", FUNCTION_CONFIG_PATH)); + } + } + else { + logger.error(String.format("Failure while trying to read Azure function configuration file: %s.", FUNCTION_CONFIG_PATH)); + throw new FunctionConfigurationException(String.format("File %s not found. The file is attempted to be read when there is no GX_AZURE__CLASS environment variable pointing to the GeneXus class associated with the function.", FUNCTION_CONFIG_PATH)); + } + } + + public static String getFunctionConfigurationEntryPoint(String functionName, AzureFunctionConfiguration functionConfiguration) { + if (functionConfiguration != null) + return functionConfiguration.getGXClassName(); + else return null; + } + + public static AzureFunctionConfiguration getAzureFunctionConfiguration(String functionName, List mappings) throws FunctionConfigurationException { + Optional config = Optional.empty(); + if (mappings != null) { + config = mappings.stream() + .filter(c -> functionName.equals(c.getFunctionName())) + .findFirst(); + } + return config.orElseThrow(() -> new FunctionConfigurationException(String.format("Configuration not found for Azure function %s at gxazmappings.json.", functionName))); + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureQueueHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureQueueHandler.java new file mode 100644 index 000000000..5409473c6 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureQueueHandler.java @@ -0,0 +1,55 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.model.*; + +import com.microsoft.azure.functions.annotation.*; +import com.microsoft.azure.functions.ExecutionContext; + +import java.time.Instant; +import java.util.List; +import java.util.*; + +public class AzureQueueHandler extends AzureEventHandler { + public AzureQueueHandler() throws Exception { + super(); + } + public void run( + @QueueTrigger(name = "message", queueName = "%queue_name%") String message, + @BindingName("Id") final String id, + @BindingName("DequeueCount") final long dequeCount, + @BindingName("ExpirationTime") final String expirationTime, + @BindingName("InsertionTime") final String insertionTime, + @BindingName("NextVisibleTime") final String nextVisibleTime, + @BindingName("PopReceipt") final String popReceipt, + final ExecutionContext context) throws Exception { + + context.getLogger().info("GeneXus Queue trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + EventMessages msgs = new EventMessages(); + if (executor.getMethodSignatureIdx() == 0) { + EventMessage msg = new EventMessage(); + msg.setMessageId(id); + msg.setMessageSourceType(EventMessageSourceType.QUEUE_MESSAGE); + msg.setMessageDate(Date.from(Instant.now())); + msg.setMessageData(message); + List msgAtts = msg.getMessageProperties(); + msgAtts.add(new EventMessageProperty("Id", id)); + msgAtts.add(new EventMessageProperty("DequeueCount", Long.toString(dequeCount))); + msgAtts.add(new EventMessageProperty("ExpirationTime", expirationTime)); + msgAtts.add(new EventMessageProperty("InsertionTime", insertionTime)); + msgAtts.add(new EventMessageProperty("NextVisibleTime", nextVisibleTime)); + msgAtts.add(new EventMessageProperty("PopReceipt", popReceipt)); + msgs.add(msg); + } + try { + EventMessageResponse response = dispatchEvent(msgs, message); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} \ No newline at end of file diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueHandler.java new file mode 100644 index 000000000..750ad7f53 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueHandler.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.helpers.ServiceBusBatchMessageProcessor; +import com.genexus.cloud.serverless.helpers.ServiceBusProcessedMessage; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.*; + +public class AzureServiceBusQueueHandler extends AzureEventHandler { + + public AzureServiceBusQueueHandler() throws Exception { + super(); + } + + public void run( + @ServiceBusQueueTrigger(name = "messages", queueName = "%queue_name%", connection = "%queue_connection%", cardinality = Cardinality.MANY) + String[] messages, + final ExecutionContext context + ) throws Exception { + + context.getLogger().info("GeneXus Service Bus Queue trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + ServiceBusBatchMessageProcessor queueBatchMessageProcessor = new ServiceBusBatchMessageProcessor(); + ServiceBusProcessedMessage queueMessage = queueBatchMessageProcessor.processQueueMessage(context, executor, messages); + try { + EventMessageResponse response = dispatchEvent(queueMessage.getEventMessages(),queueMessage.getRawMessage()); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueSingleMsgHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueSingleMsgHandler.java new file mode 100644 index 000000000..ee9c45820 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusQueueSingleMsgHandler.java @@ -0,0 +1,40 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.helpers.ServiceBusProcessedMessage; +import com.genexus.cloud.serverless.helpers.ServiceBusSingleMessageProcessor; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.BindingName; +import com.microsoft.azure.functions.annotation.Cardinality; +import com.microsoft.azure.functions.annotation.ServiceBusQueueTrigger; + +public class AzureServiceBusQueueSingleMsgHandler extends AzureEventHandler { + + public AzureServiceBusQueueSingleMsgHandler() throws Exception { + super(); + } + + public void run( + @ServiceBusQueueTrigger(name = "messages", queueName = "%queue_name%", connection = "%queue_connection%", cardinality = Cardinality.ONE) + String message, + @BindingName("MessageId") String messageId, + @BindingName("EnqueuedTimeUtc") String enqueuedTimeUtc, // (ISO-8601) + final ExecutionContext context + ) throws Exception { + + context.getLogger().info("GeneXus Service Bus Queue trigger single message process handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + ServiceBusSingleMessageProcessor queueSingleMessageProcessor = new ServiceBusSingleMessageProcessor(); + ServiceBusProcessedMessage queueMessage = queueSingleMessageProcessor.processQueueMessage(executor,messageId,enqueuedTimeUtc,context,message); + try { + EventMessageResponse response = dispatchEvent(queueMessage.getEventMessages(), queueMessage.getRawMessage()); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicHandler.java new file mode 100644 index 000000000..0242ead8f --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicHandler.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.helpers.ServiceBusBatchMessageProcessor; +import com.genexus.cloud.serverless.helpers.ServiceBusProcessedMessage; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.*; + +public class AzureServiceBusTopicHandler extends AzureEventHandler { + + public AzureServiceBusTopicHandler() throws Exception { + super(); + } + + public void run( + @ServiceBusTopicTrigger(name = "messages", topicName = "%topic_name%", subscriptionName = "%subscriptionName%", connection = "%queue_connection%", cardinality = Cardinality.MANY) + String[] messages, + final ExecutionContext context + ) throws Exception { + + context.getLogger().info("GeneXus Service Bus Topic trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + ServiceBusBatchMessageProcessor queueBatchMessageProcessor = new ServiceBusBatchMessageProcessor(); + ServiceBusProcessedMessage queueMessage = queueBatchMessageProcessor.processQueueMessage(context, executor, messages); + try { + EventMessageResponse response = dispatchEvent(queueMessage.getEventMessages(), queueMessage.getRawMessage()); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicSingleMsgHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicSingleMsgHandler.java new file mode 100644 index 000000000..2e3cc218e --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureServiceBusTopicSingleMsgHandler.java @@ -0,0 +1,41 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.genexus.cloud.serverless.helpers.ServiceBusProcessedMessage; +import com.genexus.cloud.serverless.helpers.ServiceBusSingleMessageProcessor; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; +import com.microsoft.azure.functions.annotation.BindingName; +import com.microsoft.azure.functions.annotation.Cardinality; +import com.microsoft.azure.functions.annotation.ServiceBusTopicTrigger; + +public class AzureServiceBusTopicSingleMsgHandler extends AzureEventHandler { + + public AzureServiceBusTopicSingleMsgHandler() throws Exception { + super(); + } + + public void run( + @ServiceBusTopicTrigger(name = "messages", topicName = "%topic_name%", subscriptionName = "%subscriptionName%", connection = "%queue_connection%", cardinality = Cardinality.ONE) + String message, + @BindingName("MessageId") String messageId, + @BindingName("EnqueuedTimeUtc") String enqueuedTimeUtc, // (ISO-8601) + final ExecutionContext context + ) throws Exception { + + context.getLogger().info("GeneXus Service Bus Topic trigger single message handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + setupServerlessMappings(context.getFunctionName()); + ServiceBusSingleMessageProcessor queueSingleMessageProcessor = new ServiceBusSingleMessageProcessor(); + ServiceBusProcessedMessage queueMessage = queueSingleMessageProcessor.processQueueMessage(executor,messageId,enqueuedTimeUtc,context,message); + try { + EventMessageResponse response = dispatchEvent(queueMessage.getEventMessages(),queueMessage.getRawMessage()); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } +} + diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureTimerHandler.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureTimerHandler.java new file mode 100644 index 000000000..2f7b17f20 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/azure/handler/AzureTimerHandler.java @@ -0,0 +1,145 @@ +package com.genexus.cloud.serverless.azure.handler; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import com.genexus.cloud.serverless.model.*; + +import com.microsoft.azure.functions.annotation.*; +import com.microsoft.azure.functions.ExecutionContext; + +import java.time.Instant; +import java.util.List; +import java.util.*; + + +public class AzureTimerHandler extends AzureEventHandler { + + public AzureTimerHandler() throws Exception { + } + + public void run( + @TimerTrigger(name = "TimerInfo", schedule = "%timer_schedule%") String TimerInfo, + final ExecutionContext context) throws Exception { + + context.getLogger().info("GeneXus Timer trigger handler. Function processed: " + context.getFunctionName() + " Invocation Id: " + context.getInvocationId()); + + setupServerlessMappings(context.getFunctionName()); + EventMessages msgs = new EventMessages(); + + if (executor.getMethodSignatureIdx() == 0) { + try { + TimerObject timerObject = new ObjectMapper().readValue(TimerInfo, new TypeReference() { + }); + EventMessage msg = new EventMessage(); + msg.setMessageId(context.getInvocationId()); + msg.setMessageSourceType(EventMessageSourceType.TIMER); + + Instant nowUtc = Instant.now(); + msg.setMessageDate(Date.from(nowUtc)); + + List msgAtts = msg.getMessageProperties(); + + msgAtts.add(new EventMessageProperty("Id", context.getInvocationId())); + boolean adjustForSDT = timerObject.timerSchedule.getAdjustForDST(); + msgAtts.add(new EventMessageProperty("AdjustForDST", Boolean.toString(adjustForSDT))); + msgAtts.add(new EventMessageProperty("Next", timerObject.timerScheduleStatus.getNext())); + msgAtts.add(new EventMessageProperty("Last", timerObject.timerScheduleStatus.getLast())); + msgAtts.add(new EventMessageProperty("LastUpdated", timerObject.timerScheduleStatus.getLastUpdated())); + + boolean isPastDue = timerObject.getIsPastDue(); + msgAtts.add(new EventMessageProperty("IsPastDue", Boolean.toString(isPastDue))); + + msgs.add(msg); + } catch (Exception e) { + logger.error("Message could not be processed."); + throw e; + } + } + try { + EventMessageResponse response = dispatchEvent(msgs, TimerInfo); + if (response.hasFailed()) { + logger.error(String.format("Messages were not handled. Error: %s", response.getErrorMessage())); + throw new RuntimeException(response.getErrorMessage()); //Throw the exception so the runtime can Retry the operation. + } + } catch (Exception e) { + logger.error("HandleRequest execution error", e); + throw e; //Throw the exception so the runtime can Retry the operation. + } + } + + public static class TimerObject{ + + @JsonProperty("ScheduleStatus") + TimerScheduleStatus timerScheduleStatus; + + @JsonProperty("IsPastDue") + boolean IsPastDue; + + @JsonProperty("Schedule") + TimerSchedule timerSchedule; + + public TimerObject() { + } + + public TimerObject(TimerScheduleStatus timerScheduleStatus, boolean IsPastDue,TimerSchedule timerSchedule) { + this.timerScheduleStatus = timerScheduleStatus; + this.IsPastDue = IsPastDue; + this.timerSchedule = timerSchedule; + } + + protected boolean getIsPastDue() { + return IsPastDue; + } + } + + public static class TimerSchedule{ + + @JsonProperty("AdjustForDST") + boolean AdjustForDST; + + public TimerSchedule() {} + + public TimerSchedule(boolean AdjustForDST) { + this.AdjustForDST = AdjustForDST; + } + protected boolean getAdjustForDST() { + return AdjustForDST; + } + } + + public static class TimerScheduleStatus { + + @JsonProperty("Last") + String Last; + + @JsonProperty("Next") + String Next; + + @JsonProperty("LastUpdated") + String LastUpdated; + + public TimerScheduleStatus() {} + + public void setLast(String last) { + Last = last; + } + public void setNext(String next) { + Next = next; + } + public void setLastUpdated(String lastUpdated) { + LastUpdated = lastUpdated; + } + + protected String getLastUpdated() { + return LastUpdated; + } + protected String getNext() { + return Next; + } + protected String getLast() { + return Last; + } + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java new file mode 100644 index 000000000..c4e395ca2 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java @@ -0,0 +1,7 @@ +package com.genexus.cloud.serverless.exception; + +public class FunctionConfigurationException extends Exception { + public FunctionConfigurationException(String exceptionMessage) { + super(exceptionMessage); + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/GlobalConfigurationCache.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/GlobalConfigurationCache.java new file mode 100644 index 000000000..449bb2c5f --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/GlobalConfigurationCache.java @@ -0,0 +1,55 @@ +package com.genexus.cloud.serverless.helpers; + +import com.genexus.cloud.serverless.azure.handler.AzureFunctionConfiguration; +import com.genexus.cloud.serverless.azure.handler.AzureFunctionConfigurationHelper; +import com.genexus.cloud.serverless.exception.FunctionConfigurationException; +import com.genexus.diagnostics.core.ILogger; +import com.genexus.specific.java.LogManager; + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + +public class GlobalConfigurationCache { + + private final static ILogger logger = LogManager.initialize(".", GlobalConfigurationCache.class); + private static final ConcurrentHashMap functionConfigCache = new ConcurrentHashMap<>(); + private static boolean initialized = false; + private static volatile GlobalConfigurationCache CONFIGURATION_CACHE; + + private GlobalConfigurationCache() throws FunctionConfigurationException { + initializeCache(); + } + + public static GlobalConfigurationCache getInstance() throws FunctionConfigurationException { + GlobalConfigurationCache globalConfigurationCache = CONFIGURATION_CACHE; + if (globalConfigurationCache == null) { + synchronized (GlobalConfigurationCache.class) { + if (globalConfigurationCache == null) { + CONFIGURATION_CACHE = globalConfigurationCache = new GlobalConfigurationCache(); + } + } + } + return globalConfigurationCache; + } + private synchronized void initializeCache() throws FunctionConfigurationException { + if (!initialized) { + List mappings = AzureFunctionConfigurationHelper.getFunctionsMapConfiguration(); + if (mappings != null) { + for (AzureFunctionConfiguration azureFunctionConfiguration : mappings) { + if (azureFunctionConfiguration.isValidConfiguration()) + functionConfigCache.put(azureFunctionConfiguration.getFunctionName(), azureFunctionConfiguration.getGXClassName()); + } + initialized = true; + } + else { + logger.error("Global configuration cache could not be initialized."); + } + } + } + public String getData(String functionName) { + return functionConfigCache.get(functionName); + } + public AzureFunctionConfiguration getAzureFunctionConfiguration(String functionName) { + return new AzureFunctionConfiguration(functionName,functionConfigCache.get(functionName)); + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusBatchMessageProcessor.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusBatchMessageProcessor.java new file mode 100644 index 000000000..8bf2971e4 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusBatchMessageProcessor.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.serverless.helpers; + +import com.genexus.cloud.serverless.GXProcedureExecutor; +import com.genexus.cloud.serverless.JSONHelper; +import com.genexus.cloud.serverless.model.EventMessage; +import com.genexus.cloud.serverless.model.EventMessages; +import com.microsoft.azure.functions.ExecutionContext; +import com.sun.jna.platform.win32.Guid; + +import java.time.Instant; +import java.util.Date; + +public class ServiceBusBatchMessageProcessor { + public ServiceBusProcessedMessage processQueueMessage(ExecutionContext context, GXProcedureExecutor executor, String[] messages) { + String rawMessage = ""; + EventMessages eventMessages = new EventMessages(); + switch (executor.getMethodSignatureIdx()) { + case 0: { + for(String message : messages) + { + EventMessage msg = new EventMessage(); + msg.setMessageId(context.getInvocationId()); // This is a fake Id. + msg.setMessageDate(Date.from(Instant.now())); //This is the time of processing not the enqueued time. Until now, this metadata is not available. + msg.setMessageData(message); + eventMessages.add(msg); + } + } + break; + case 1: + case 2: + rawMessage = JSONHelper.toJSONString(messages); + break; + } + return new ServiceBusProcessedMessage(eventMessages,rawMessage); + } +} diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusProcessedMessage.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusProcessedMessage.java new file mode 100644 index 000000000..853d58596 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusProcessedMessage.java @@ -0,0 +1,21 @@ +package com.genexus.cloud.serverless.helpers; +import com.genexus.cloud.serverless.model.EventMessages; + +public class ServiceBusProcessedMessage { + private final EventMessages _eventMessages; + private final String _rawMessage; + + public ServiceBusProcessedMessage(EventMessages eventMessages, String rawMessage) { + this._eventMessages = eventMessages; + this._rawMessage = rawMessage; + } + + public EventMessages getEventMessages() { + return _eventMessages; + } + + public String getRawMessage() { + return _rawMessage; + } +} + diff --git a/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusSingleMessageProcessor.java b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusSingleMessageProcessor.java new file mode 100644 index 000000000..bc1ddebe6 --- /dev/null +++ b/gxazureserverless/src/main/java/com/genexus/cloud/serverless/helpers/ServiceBusSingleMessageProcessor.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.serverless.helpers; + +import com.genexus.cloud.serverless.GXProcedureExecutor; +import com.genexus.cloud.serverless.model.*; +import com.microsoft.azure.functions.ExecutionContext; + +import java.time.Instant; +import java.util.Date; +import java.util.List; + +public class ServiceBusSingleMessageProcessor { + + public ServiceBusProcessedMessage processQueueMessage(GXProcedureExecutor executor, String messageId, String enqueuedTimeUtc, ExecutionContext context, String message){ + EventMessages eventmessages = new EventMessages(); + String rawMessage = ""; + switch (executor.getMethodSignatureIdx()) { + case 0: { + EventMessage msg = new EventMessage(); + msg.setMessageId(messageId); + msg.setMessageSourceType(EventMessageSourceType.SERVICE_BUS_MESSAGE); + msg.setMessageDate(Date.from(Instant.now())); + msg.setMessageData(message); + List msgProperties = msg.getMessageProperties(); + msgProperties.add(new EventMessageProperty("Id", messageId)); + msgProperties.add(new EventMessageProperty("EnqueuedTime", enqueuedTimeUtc)); + eventmessages.add(msg); + } + break; + case 1: + case 2: + rawMessage = message; + break; + } + return new ServiceBusProcessedMessage(eventmessages,rawMessage); + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/MockExecutionContext.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/MockExecutionContext.java new file mode 100644 index 000000000..f50cc1f10 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/MockExecutionContext.java @@ -0,0 +1,30 @@ +package com.genexus.cloud.azure.events; + +import com.microsoft.azure.functions.ExecutionContext; +import java.util.logging.Logger; + +public class MockExecutionContext implements ExecutionContext { + private Logger logger; + private String functionName; + private String invocationId; + + public MockExecutionContext(String name, String id) { + this.logger = Logger.getLogger(MockExecutionContext.class.getName()); + functionName = name; + invocationId = id; + } + @Override + public Logger getLogger() { + return this.logger; + } + + @Override + public String getInvocationId() { + return invocationId; + } + + @Override + public String getFunctionName() { + return functionName; + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureCosmosDBHandler.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureCosmosDBHandler.java new file mode 100644 index 000000000..a2a5babce --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureCosmosDBHandler.java @@ -0,0 +1,42 @@ +package com.genexus.cloud.azure.events; + +import com.genexus.cloud.serverless.azure.handler.AzureCosmosDBHandler; +import com.microsoft.azure.functions.ExecutionContext; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestAzureCosmosDBHandler { + private AzureCosmosDBHandler cosmosDBFunction; + private ExecutionContext context; + + @Test + public void testCosmosDBFunction() throws Exception { + + cosmosDBFunction = new AzureCosmosDBHandler(); + List list = new ArrayList<>(2); + + Map map1 = new HashMap<>(); + map1.put("UserId", "ac7f12fd-9784-4c93-94cd-7e02a7b1cf4b"); + map1.put("UserName", "Jhon"); + + Map map2 = new HashMap<>(); + map2.put("UserId", "bf3288ef-afe5-470e-8be6-2f55b4015f3b"); + map2.put("UserName", "Mary"); + + list.add(map1); + list.add(map2); + + context = new MockExecutionContext("TestCosmosDB","13e2d1f9-6838-4927-a6a8-0160e8601ab5"); + cosmosDBFunction.run(list,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } + +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGrid.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGrid.java new file mode 100644 index 000000000..e75094caf --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGrid.java @@ -0,0 +1,50 @@ +package com.genexus.cloud.azure.events; + +import com.azure.core.util.BinaryData; +import com.azure.messaging.eventgrid.EventGridEvent; +import com.genexus.cloud.serverless.azure.handler.AzureEventGridHandler; +import com.microsoft.azure.functions.ExecutionContext; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.time.OffsetDateTime; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestAzureEventGrid { + private AzureEventGridHandler eventGridFunction; + private ExecutionContext context; + + @BeforeEach + public void setup() throws Exception { + eventGridFunction = new AzureEventGridHandler(); + } + + @Test + public void testEventGridFunctionRaw() throws Exception { + EventGridEvent message = loadmessages(); + context = new MockExecutionContext("TestEventGridRaw","13e2d1f9-6838-4927-a6a8-0160e8601ab5"); + eventGridFunction.run(message,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } + + private EventGridEvent loadmessages() { + String id = "ac6105de-9715-4753-9c80-4c07c4c8bda3"; + long sequenceNumber = 1123456789; + String subject = "testsubject1"; + String eventTime = "2025-01-01T00:00:00.000Z"; + String topic = "testtopic1"; + + EventGridEvent message1 = Mockito.mock(EventGridEvent.class); + Mockito.when(message1.getData()).thenReturn(BinaryData.fromBytes("Test message Event Grid 1".getBytes())); + Mockito.when(message1.getId()).thenReturn(id); + Mockito.when(message1.getEventTime()).thenReturn(OffsetDateTime.parse(eventTime)); + Mockito.when(message1.getTopic()).thenReturn(topic); + Mockito.when(message1.getSubject()).thenReturn(subject); + + return message1; + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGridCloud.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGridCloud.java new file mode 100644 index 000000000..541c35372 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureEventGridCloud.java @@ -0,0 +1,51 @@ +package com.genexus.cloud.azure.events; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.genexus.cloud.serverless.azure.handler.AzureEventGridCloudHandler;; +import com.microsoft.azure.functions.ExecutionContext; +import io.cloudevents.CloudEvent; +import io.cloudevents.CloudEventData; +import io.cloudevents.SpecVersion; +import io.cloudevents.jackson.JsonFormat; +import org.junit.Test; +import org.mockito.Mockito; + +import java.net.URI; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestAzureEventGridCloud { + private AzureEventGridCloudHandler eventGridCloudFunction; + private ExecutionContext context; + + @Test + public void testEventGridCloudFunction() throws Exception { + eventGridCloudFunction = new AzureEventGridCloudHandler(); + CloudEvent message = loadmessages(); + context = new MockExecutionContext("TestEventGridCloud","13e2d1f9-6838-4927-a6a8-0160e8601ab2"); + + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(JsonFormat.getCloudEventJacksonModule()); + String json = mapper.writeValueAsString(message); + eventGridCloudFunction.run(json,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } + + private CloudEvent loadmessages() { + String id = "ac6105de-9715-4753-9c80-4c07c4c8bda3"; + + CloudEvent message1 = Mockito.mock(CloudEvent.class); + CloudEventData mockData = Mockito.mock(CloudEventData.class); + + Mockito.when(mockData.toBytes()).thenReturn("{\"key\":\"1234\"}".getBytes()); + Mockito.when(message1.getData()).thenReturn(mockData); + + Mockito.when(message1.getType()).thenReturn("MyEventType"); + Mockito.when(message1.getSource()).thenReturn(URI.create("/my/source")); + Mockito.when(message1.getId()).thenReturn(id); + Mockito.when(message1.getSpecVersion()).thenReturn(SpecVersion.parse("1.0")); + + return message1; + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureQueueHandler.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureQueueHandler.java new file mode 100644 index 000000000..ad4a18d3c --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureQueueHandler.java @@ -0,0 +1,52 @@ +package com.genexus.cloud.azure.events; + +import com.genexus.cloud.serverless.azure.handler.AzureQueueHandler; +import com.microsoft.azure.functions.ExecutionContext; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class TestAzureQueueHandler { + private AzureQueueHandler queueFunction; + private ExecutionContext context; + + @BeforeEach + public void setup() throws Exception { + queueFunction = new AzureQueueHandler(); + } + + @Test + public void testQueueTriggerFunctionRaw() throws Exception { + String testMessage = "Test message Queue"; + String id = "ac6105de-9715-4753-9c80-4c07c4c8bda3"; + long dequeCount =2; + String expirationTime = "2025-01-01T00:00:00.000Z"; + final String insertionTime = "2024-11-01T00:00:00.000Z"; + String nextVisibleTime = "2024-11-01T04:00:00.000Z"; + String popReceipt = "bc2a33d5-d481-4fc2-a1e7-a9f8e50e0281"; + + context = new MockExecutionContext("TestQueueRaw","13e2d1f9-6838-4927-a6a8-0160e8601ab0"); + queueFunction.run(testMessage,id,dequeCount,expirationTime,insertionTime, nextVisibleTime,popReceipt,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + + } + @Test + public void testQueueTriggerFunctionMessage() throws Exception { + String testMessage = "{\"UserId\":\"d2376a4c-86c3-461f-93cc-1c2e0174222b\", \"UserName\":\"John\"}"; + String id = "ac6105de-9715-4753-9c80-4c07c4c8bda3"; + long dequeCount =2; + String expirationTime = "2025-01-01T00:00:00.000Z"; + final String insertionTime = "2024-11-01T00:00:00.000Z"; + String nextVisibleTime = "2024-11-01T04:00:00.000Z"; + String popReceipt = "bc2a33d5-d481-4fc2-a1e7-a9f8e50e0281"; + + context = new MockExecutionContext("TestQueueEventMessage","758093bf-68c1-47a5-8f93-cc2882e961e7"); + queueFunction.run(testMessage,id,dequeCount,expirationTime,insertionTime, nextVisibleTime,popReceipt,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureServiceBusSingleMessageHandler.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureServiceBusSingleMessageHandler.java new file mode 100644 index 000000000..0f8e0733b --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureServiceBusSingleMessageHandler.java @@ -0,0 +1,59 @@ +package com.genexus.cloud.azure.events; + +import com.genexus.cloud.serverless.azure.handler.AzureServiceBusQueueSingleMsgHandler; + +import com.microsoft.azure.functions.ExecutionContext; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestAzureServiceBusSingleMessageHandler { + private AzureServiceBusQueueSingleMsgHandler queueFunction; + private ExecutionContext context; + + @BeforeEach + public void setup() throws Exception { + queueFunction = new AzureServiceBusQueueSingleMsgHandler(); + } + + @Test + public void testSBTriggerFunctionRaw() throws Exception { + + String messageId = "ac6105de-9715-4753-9c80-4c07c4c8bda3"; + String enqueuedTimeUtc = "2025-01-01T12:34:56Z"; + String message = "Test message Service Bus Queue 1"; + + context = new MockExecutionContext("TestServiceBusRaw","13e2d1f9-6838-4927-a6a8-0160e8601ab0"); + queueFunction.run(message,messageId,enqueuedTimeUtc,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } + @Test + public void testSBTriggerFunctionRaw2() throws Exception { + + String messageId = "ac6105de-9715-4753-9c80-4c07c4c8bda4"; + String enqueuedTimeUtc = "2025-01-01T12:34:56Z"; + String message = "{\"UserId\":\"d2376a4c-86c3-461f-93cc-1c2e0174222b\", \"UserName\":\"John\"}"; + + context = new MockExecutionContext("TestServiceBusRaw","13e2d1f9-6838-4927-a6a8-0160e8601ab1"); + queueFunction.run(message,messageId,enqueuedTimeUtc,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } + @Test + public void testSBTriggerFunctionMessage() throws Exception { + + String messageId = "ac6105de-9715-4753-9c80-4c07c4c8bda5"; + String enqueuedTimeUtc = "2025-01-01T12:34:56Z"; + String message = "{\"UserId\":\"d2376a4c-86c3-461f-93cc-1c2e0174222a\", \"UserName\":\"Mary\"}"; + + context = new MockExecutionContext("TestServiceBusMessage","13e2d1f9-6838-4927-a6a8-0160e8601ab1"); + queueFunction.run(message,messageId,enqueuedTimeUtc,context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureTimerHandler.java b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureTimerHandler.java new file mode 100644 index 000000000..6bca18ba8 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/cloud/azure/events/TestAzureTimerHandler.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.azure.events; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.genexus.cloud.serverless.azure.handler.AzureTimerHandler; +import com.microsoft.azure.functions.ExecutionContext; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestAzureTimerHandler { + + private AzureTimerHandler timerFunction; + private ExecutionContext context; + + @BeforeEach + public void setup() throws Exception { + timerFunction = new AzureTimerHandler(); + } + @Test + public void testTimerTriggerFunctionRaw() throws Exception { + AzureTimerHandler.TimerScheduleStatus timerScheduleStatus = new AzureTimerHandler.TimerScheduleStatus(); + timerScheduleStatus.setLast("2025-01-01T00:00:00.000Z"); + timerScheduleStatus.setNext("2025-01-01T00:00:00.000Z"); + timerScheduleStatus.setLastUpdated("2025-01-01T00:00:00.000Z"); + + AzureTimerHandler.TimerSchedule timerSchedule = new AzureTimerHandler.TimerSchedule(true); + AzureTimerHandler.TimerObject timerObject = new AzureTimerHandler.TimerObject(timerScheduleStatus,false,timerSchedule); + + context = new MockExecutionContext("TestTimerRaw","845579bc-e081-46da-8397-daa17e32e269"); + timerFunction.run(new ObjectMapper().writeValueAsString(timerObject),context); + + assertNotNull(context.getLogger()); + context.getLogger().info("Logger is not null"); + } +} diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java new file mode 100644 index 000000000..170a15d71 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessage.java @@ -0,0 +1,532 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessage extends GxUserType +{ + public SdtEventMessage( ) + { + this( new ModelContext(SdtEventMessage.class)); + } + + public SdtEventMessage( ModelContext context ) + { + super( context, "SdtEventMessage"); + } + + public SdtEventMessage( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessage"); + } + + public SdtEventMessage( StructSdtEventMessage struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageId") ) + { + gxTv_SdtEventMessage_Eventmessageid = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageDate") ) + { + if ( ( GXutil.strcmp(oReader.getValue(), "") == 0 ) || ( oReader.existsAttribute("xsi:nil") == 1 ) ) + { + gxTv_SdtEventMessage_Eventmessagedate = GXutil.resetTime( GXutil.nullDate() ); + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + } + else + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = localUtil.ymdhmsToT( (short)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 1, 4), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 6, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 9, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 12, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 15, 2), "."))), (byte)(DecimalUtil.decToDouble(CommonUtil.decimalVal( GXutil.substring( oReader.getValue(), 18, 2), ".")))) ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageSourceType") ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageData") ) + { + gxTv_SdtEventMessage_Eventmessagedata = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageProperties") ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + gxTv_SdtEventMessage_Eventmessageproperties = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessage_Eventmessageproperties.readxmlcollection(oReader, "EventMessageProperties", "EventMessageProperty") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageProperties") ) + { + GXSoapError = oReader.read() ; + } + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessageVersion") ) + { + gxTv_SdtEventMessage_Eventmessageversion = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessage" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + oWriter.writeElement("EventMessageId", gxTv_SdtEventMessage_Eventmessageid); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + if ( GXutil.dateCompare(GXutil.nullDate(), gxTv_SdtEventMessage_Eventmessagedate) && ( gxTv_SdtEventMessage_Eventmessagedate_N == 1 ) ) + { + oWriter.writeElement("EventMessageDate", ""); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + } + else + { + sDateCnv = "" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.year( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "0000", 1, 4-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.month( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.day( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "T" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.hour( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.minute( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.second( gxTv_SdtEventMessage_Eventmessagedate), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + oWriter.writeElement("EventMessageDate", sDateCnv); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + } + oWriter.writeElement("EventMessageSourceType", gxTv_SdtEventMessage_Eventmessagesourcetype); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeElement("EventMessageData", gxTv_SdtEventMessage_Eventmessagedata); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + if ( gxTv_SdtEventMessage_Eventmessageproperties != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessage_Eventmessageproperties.writexmlcollection(oWriter, "EventMessageProperties", sNameSpace1, "EventMessageProperty", sNameSpace1); + } + oWriter.writeElement("EventMessageVersion", gxTv_SdtEventMessage_Eventmessageversion); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessage_Eventmessageid_N != 1 ) + { + AddObjectProperty("EventMessageId", gxTv_SdtEventMessage_Eventmessageid, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagedate_N != 1 ) + { + datetime_STZ = gxTv_SdtEventMessage_Eventmessagedate ; + sDateCnv = "" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.year( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "0000", 1, 4-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.month( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "-" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.day( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += "T" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.hour( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.minute( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + sDateCnv += ":" ; + sNumToPad = GXutil.trim( GXutil.str( GXutil.second( datetime_STZ), 10, 0)) ; + sDateCnv += GXutil.substring( "00", 1, 2-GXutil.len( sNumToPad)) + sNumToPad ; + AddObjectProperty("EventMessageDate", sDateCnv, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagesourcetype_N != 1 ) + { + AddObjectProperty("EventMessageSourceType", gxTv_SdtEventMessage_Eventmessagesourcetype, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessagedata_N != 1 ) + { + AddObjectProperty("EventMessageData", gxTv_SdtEventMessage_Eventmessagedata, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessageproperties != null ) + { + AddObjectProperty("EventMessageProperties", gxTv_SdtEventMessage_Eventmessageproperties, false, false); + } + if ( gxTv_SdtEventMessage_Eventmessageversion_N != 1 ) + { + AddObjectProperty("EventMessageVersion", gxTv_SdtEventMessage_Eventmessageversion, false, false); + } + } + + public String getgxTv_SdtEventMessage_Eventmessageid( ) + { + return gxTv_SdtEventMessage_Eventmessageid ; + } + + public void setgxTv_SdtEventMessage_Eventmessageid( String value ) + { + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageid = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageid_N( ) + { + return gxTv_SdtEventMessage_Eventmessageid_N ; + } + + public java.util.Date getgxTv_SdtEventMessage_Eventmessagedate( ) + { + return gxTv_SdtEventMessage_Eventmessagedate ; + } + + public void setgxTv_SdtEventMessage_Eventmessagedate( java.util.Date value ) + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagedate_N( ) + { + return gxTv_SdtEventMessage_Eventmessagedate_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessagesourcetype( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype ; + } + + public void setgxTv_SdtEventMessage_Eventmessagesourcetype( String value ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagesourcetype_N( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessagedata( ) + { + return gxTv_SdtEventMessage_Eventmessagedata ; + } + + public void setgxTv_SdtEventMessage_Eventmessagedata( String value ) + { + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedata = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessagedata_N( ) + { + return gxTv_SdtEventMessage_Eventmessagedata_N ; + } + + public GXBaseCollection getgxTv_SdtEventMessage_Eventmessageproperties( ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + gxTv_SdtEventMessage_Eventmessageproperties = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + } + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessage_Eventmessageproperties ; + } + + public void setgxTv_SdtEventMessage_Eventmessageproperties( GXBaseCollection value ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageproperties = value ; + } + + public void setgxTv_SdtEventMessage_Eventmessageproperties_SetNull( ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties = null ; + } + + public boolean getgxTv_SdtEventMessage_Eventmessageproperties_IsNull( ) + { + if ( gxTv_SdtEventMessage_Eventmessageproperties == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageproperties_N( ) + { + return gxTv_SdtEventMessage_Eventmessageproperties_N ; + } + + public String getgxTv_SdtEventMessage_Eventmessageversion( ) + { + return gxTv_SdtEventMessage_Eventmessageversion ; + } + + public void setgxTv_SdtEventMessage_Eventmessageversion( String value ) + { + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageversion = value ; + } + + public byte getgxTv_SdtEventMessage_Eventmessageversion_N( ) + { + return gxTv_SdtEventMessage_Eventmessageversion_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessage_Eventmessageid = "" ; + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedate = GXutil.resetTime( GXutil.nullDate() ); + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = "" ; + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedata = "" ; + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageversion = "" ; + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(1) ; + sTagName = "" ; + sDateCnv = "" ; + sNumToPad = "" ; + datetime_STZ = GXutil.resetTime( GXutil.nullDate() ); + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessage Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessage)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessage struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessage_Eventmessageid(struct.getEventmessageid()); + if ( struct.gxTv_SdtEventMessage_Eventmessagedate_N == 0 ) + { + setgxTv_SdtEventMessage_Eventmessagedate(struct.getEventmessagedate()); + } + setgxTv_SdtEventMessage_Eventmessagesourcetype(struct.getEventmessagesourcetype()); + setgxTv_SdtEventMessage_Eventmessagedata(struct.getEventmessagedata()); + GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessageProperty.class, "EventMessageProperty", "ServerlessAPI", remoteHandle); + Vector gxTv_SdtEventMessage_Eventmessageproperties_aux1 = struct.getEventmessageproperties(); + if (gxTv_SdtEventMessage_Eventmessageproperties_aux1 != null) + { + for (int i = 0; i < gxTv_SdtEventMessage_Eventmessageproperties_aux1.size(); i++) + { + gxTv_SdtEventMessage_Eventmessageproperties_aux.add(new com.genexus.genexusserverlessapi.SdtEventMessageProperty(gxTv_SdtEventMessage_Eventmessageproperties_aux1.elementAt(i))); + } + } + setgxTv_SdtEventMessage_Eventmessageproperties(gxTv_SdtEventMessage_Eventmessageproperties_aux); + setgxTv_SdtEventMessage_Eventmessageversion(struct.getEventmessageversion()); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessage getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessage struct = new com.genexus.genexusserverlessapi.StructSdtEventMessage (); + struct.setEventmessageid(getgxTv_SdtEventMessage_Eventmessageid()); + if ( gxTv_SdtEventMessage_Eventmessagedate_N == 0 ) + { + struct.setEventmessagedate(getgxTv_SdtEventMessage_Eventmessagedate()); + } + struct.setEventmessagesourcetype(getgxTv_SdtEventMessage_Eventmessagesourcetype()); + struct.setEventmessagedata(getgxTv_SdtEventMessage_Eventmessagedata()); + struct.setEventmessageproperties(getgxTv_SdtEventMessage_Eventmessageproperties().getStruct()); + struct.setEventmessageversion(getgxTv_SdtEventMessage_Eventmessageversion()); + return struct ; + } + + protected byte gxTv_SdtEventMessage_Eventmessageid_N ; + protected byte sdtIsNull ; + protected byte gxTv_SdtEventMessage_Eventmessagedate_N ; + protected byte gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedata_N ; + protected byte gxTv_SdtEventMessage_Eventmessageproperties_N ; + protected byte gxTv_SdtEventMessage_Eventmessageversion_N ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected String sDateCnv ; + protected String sNumToPad ; + protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate ; + protected java.util.Date datetime_STZ ; + protected boolean readElement ; + protected boolean formatError ; + protected String gxTv_SdtEventMessage_Eventmessagedata ; + protected String gxTv_SdtEventMessage_Eventmessageid ; + protected String gxTv_SdtEventMessage_Eventmessagesourcetype ; + protected String gxTv_SdtEventMessage_Eventmessageversion ; + protected GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties=null ; + protected GXBaseCollection gxTv_SdtEventMessage_Eventmessageproperties_aux ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java new file mode 100644 index 000000000..918a9c215 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageProperty.java @@ -0,0 +1,225 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessageProperty extends GxUserType +{ + public SdtEventMessageProperty( ) + { + this( new ModelContext(SdtEventMessageProperty.class)); + } + + public SdtEventMessageProperty( ModelContext context ) + { + super( context, "SdtEventMessageProperty"); + } + + public SdtEventMessageProperty( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessageProperty"); + } + + public SdtEventMessageProperty( StructSdtEventMessageProperty struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "PropertyId") ) + { + gxTv_SdtEventMessageProperty_Propertyid = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "PropertyValue") ) + { + gxTv_SdtEventMessageProperty_Propertyvalue = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessageProperty" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + oWriter.writeElement("PropertyId", gxTv_SdtEventMessageProperty_Propertyid); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeElement("PropertyValue", gxTv_SdtEventMessageProperty_Propertyvalue); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + AddObjectProperty("PropertyId", gxTv_SdtEventMessageProperty_Propertyid, false, false); + AddObjectProperty("PropertyValue", gxTv_SdtEventMessageProperty_Propertyvalue, false, false); + } + + public String getgxTv_SdtEventMessageProperty_Propertyid( ) + { + return gxTv_SdtEventMessageProperty_Propertyid ; + } + + public void setgxTv_SdtEventMessageProperty_Propertyid( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyid = value ; + } + + public String getgxTv_SdtEventMessageProperty_Propertyvalue( ) + { + return gxTv_SdtEventMessageProperty_Propertyvalue ; + } + + public void setgxTv_SdtEventMessageProperty_Propertyvalue( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyvalue = value ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessageProperty_Propertyid = "" ; + sdtIsNull = (byte)(1) ; + gxTv_SdtEventMessageProperty_Propertyvalue = "" ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessageProperty Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessageProperty)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessageProperty struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessageProperty_Propertyid(struct.getPropertyid()); + setgxTv_SdtEventMessageProperty_Propertyvalue(struct.getPropertyvalue()); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessageProperty getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessageProperty struct = new com.genexus.genexusserverlessapi.StructSdtEventMessageProperty (); + struct.setPropertyid(getgxTv_SdtEventMessageProperty_Propertyid()); + struct.setPropertyvalue(getgxTv_SdtEventMessageProperty_Propertyvalue()); + return struct ; + } + + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String gxTv_SdtEventMessageProperty_Propertyid ; + protected String gxTv_SdtEventMessageProperty_Propertyvalue ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java new file mode 100644 index 000000000..c0eed2752 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessageResponse.java @@ -0,0 +1,224 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessageResponse extends GxUserType +{ + public SdtEventMessageResponse( ) + { + this( new ModelContext(SdtEventMessageResponse.class)); + } + + public SdtEventMessageResponse( ModelContext context ) + { + super( context, "SdtEventMessageResponse"); + } + + public SdtEventMessageResponse( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessageResponse"); + } + + public SdtEventMessageResponse( StructSdtEventMessageResponse struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "HandleFailure") ) + { + gxTv_SdtEventMessageResponse_Handlefailure = (boolean)((((GXutil.strcmp(oReader.getValue(), "true")==0)||(GXutil.strcmp(oReader.getValue(), "1")==0) ? 1 : 0)==0)?false:true) ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "ErrorMessage") ) + { + gxTv_SdtEventMessageResponse_Errormessage = oReader.getValue() ; + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + GXSoapError = oReader.read() ; + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessageResponse" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + oWriter.writeElement("HandleFailure", GXutil.booltostr( gxTv_SdtEventMessageResponse_Handlefailure)); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeElement("ErrorMessage", gxTv_SdtEventMessageResponse_Errormessage); + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") != 0 ) + { + oWriter.writeAttribute("xmlns", "ServerlessAPI"); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + AddObjectProperty("HandleFailure", gxTv_SdtEventMessageResponse_Handlefailure, false, false); + AddObjectProperty("ErrorMessage", gxTv_SdtEventMessageResponse_Errormessage, false, false); + } + + public boolean getgxTv_SdtEventMessageResponse_Handlefailure( ) + { + return gxTv_SdtEventMessageResponse_Handlefailure ; + } + + public void setgxTv_SdtEventMessageResponse_Handlefailure( boolean value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageResponse_Handlefailure = value ; + } + + public String getgxTv_SdtEventMessageResponse_Errormessage( ) + { + return gxTv_SdtEventMessageResponse_Errormessage ; + } + + public void setgxTv_SdtEventMessageResponse_Errormessage( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageResponse_Errormessage = value ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + sdtIsNull = (byte)(1) ; + gxTv_SdtEventMessageResponse_Errormessage = "" ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessageResponse Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessageResponse)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessageResponse struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessageResponse_Handlefailure(struct.getHandlefailure()); + setgxTv_SdtEventMessageResponse_Errormessage(struct.getErrormessage()); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessageResponse getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessageResponse struct = new com.genexus.genexusserverlessapi.StructSdtEventMessageResponse (); + struct.setHandlefailure(getgxTv_SdtEventMessageResponse_Handlefailure()); + struct.setErrormessage(getgxTv_SdtEventMessageResponse_Errormessage()); + return struct ; + } + + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected boolean gxTv_SdtEventMessageResponse_Handlefailure ; + protected boolean readElement ; + protected boolean formatError ; + protected String gxTv_SdtEventMessageResponse_Errormessage ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java new file mode 100644 index 000000000..6ef489957 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessages.java @@ -0,0 +1,253 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessages extends GxUserType +{ + public SdtEventMessages( ) + { + this( new ModelContext(SdtEventMessages.class)); + } + + public SdtEventMessages( ModelContext context ) + { + super( context, "SdtEventMessages"); + } + + public SdtEventMessages( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessages"); + } + + public SdtEventMessages( StructSdtEventMessages struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessage") ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + gxTv_SdtEventMessages_Eventmessage = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessages_Eventmessage.readxmlcollection(oReader, "EventMessage", "EventMessage") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "EventMessage") ) + { + GXSoapError = oReader.read() ; + } + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessages" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + if ( gxTv_SdtEventMessages_Eventmessage != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessages_Eventmessage.writexmlcollection(oWriter, "EventMessage", sNameSpace1, "EventMessage", sNameSpace1); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessages_Eventmessage != null ) + { + AddObjectProperty("EventMessage", gxTv_SdtEventMessages_Eventmessage, false, false); + } + } + + public GXBaseCollection getgxTv_SdtEventMessages_Eventmessage( ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + gxTv_SdtEventMessages_Eventmessage = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + } + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessages_Eventmessage ; + } + + public void setgxTv_SdtEventMessages_Eventmessage( GXBaseCollection value ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessages_Eventmessage = value ; + } + + public void setgxTv_SdtEventMessages_Eventmessage_SetNull( ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + gxTv_SdtEventMessages_Eventmessage = null ; + } + + public boolean getgxTv_SdtEventMessages_Eventmessage_IsNull( ) + { + if ( gxTv_SdtEventMessages_Eventmessage == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessages_Eventmessage_N( ) + { + return gxTv_SdtEventMessages_Eventmessage_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessages Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessages)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessages struct ) + { + if ( struct != null ) + { + GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux = new GXBaseCollection(com.genexus.genexusserverlessapi.SdtEventMessage.class, "EventMessage", "ServerlessAPI", remoteHandle); + Vector gxTv_SdtEventMessages_Eventmessage_aux1 = struct.getEventmessage(); + if (gxTv_SdtEventMessages_Eventmessage_aux1 != null) + { + for (int i = 0; i < gxTv_SdtEventMessages_Eventmessage_aux1.size(); i++) + { + gxTv_SdtEventMessages_Eventmessage_aux.add(new com.genexus.genexusserverlessapi.SdtEventMessage(gxTv_SdtEventMessages_Eventmessage_aux1.elementAt(i))); + } + } + setgxTv_SdtEventMessages_Eventmessage(gxTv_SdtEventMessages_Eventmessage_aux); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessages getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessages struct = new com.genexus.genexusserverlessapi.StructSdtEventMessages (); + struct.setEventmessage(getgxTv_SdtEventMessages_Eventmessage().getStruct()); + return struct ; + } + + protected byte gxTv_SdtEventMessages_Eventmessage_N ; + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; + protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage=null ; + protected GXBaseCollection gxTv_SdtEventMessages_Eventmessage_aux ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java new file mode 100644 index 000000000..423e6c68f --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/SdtEventMessagesList.java @@ -0,0 +1,243 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; +import com.genexus.*; +import com.genexus.xml.*; +import com.genexus.search.*; +import com.genexus.webpanels.*; +import java.util.*; + +public final class SdtEventMessagesList extends GxUserType +{ + public SdtEventMessagesList( ) + { + this( new ModelContext(SdtEventMessagesList.class)); + } + + public SdtEventMessagesList( ModelContext context ) + { + super( context, "SdtEventMessagesList"); + } + + public SdtEventMessagesList( int remoteHandle , + ModelContext context ) + { + super( remoteHandle, context, "SdtEventMessagesList"); + } + + public SdtEventMessagesList( StructSdtEventMessagesList struct ) + { + this(); + setStruct(struct); + } + + private static java.util.HashMap mapper = new java.util.HashMap(); + static + { + } + + public String getJsonMap( String value ) + { + return (String) mapper.get(value); + } + + public short readxml( com.genexus.xml.XMLReader oReader , + String sName ) + { + short GXSoapError = 1; + formatError = false ; + sTagName = oReader.getName() ; + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = oReader.read() ; + nOutParmCount = (short)(0) ; + while ( ( ( GXutil.strcmp(oReader.getName(), sTagName) != 0 ) || ( oReader.getNodeType() == 1 ) ) && ( GXSoapError > 0 ) ) + { + readOk = (short)(0) ; + readElement = false ; + if ( GXutil.strcmp2( oReader.getLocalName(), "items") ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + gxTv_SdtEventMessagesList_Items = new GXSimpleCollection(String.class, "internal", ""); + } + if ( oReader.getIsSimple() == 0 ) + { + GXSoapError = gxTv_SdtEventMessagesList_Items.readxmlcollection(oReader, "items", "Item") ; + } + readElement = true ; + if ( GXSoapError > 0 ) + { + readOk = (short)(1) ; + } + if ( GXutil.strcmp2( oReader.getLocalName(), "items") ) + { + GXSoapError = oReader.read() ; + } + } + if ( ! readElement ) + { + readOk = (short)(1) ; + GXSoapError = oReader.read() ; + } + nOutParmCount = (short)(nOutParmCount+1) ; + if ( ( readOk == 0 ) || formatError ) + { + context.globals.sSOAPErrMsg += "Error reading " + sTagName + GXutil.newLine( ) ; + context.globals.sSOAPErrMsg += "Message: " + oReader.readRawXML() ; + GXSoapError = (short)(nOutParmCount*-1) ; + } + } + } + return GXSoapError ; + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace ) + { + writexml(oWriter, sName, sNameSpace, true); + } + + public void writexml( com.genexus.xml.XMLWriter oWriter , + String sName , + String sNameSpace , + boolean sIncludeState ) + { + if ( (GXutil.strcmp("", sName)==0) ) + { + sName = "EventMessagesList" ; + } + if ( (GXutil.strcmp("", sNameSpace)==0) ) + { + sNameSpace = "ServerlessAPI" ; + } + oWriter.writeStartElement(sName); + if ( GXutil.strcmp(GXutil.left( sNameSpace, 10), "[*:nosend]") != 0 ) + { + oWriter.writeAttribute("xmlns", sNameSpace); + } + else + { + sNameSpace = GXutil.right( sNameSpace, GXutil.len( sNameSpace)-10) ; + } + if ( gxTv_SdtEventMessagesList_Items != null ) + { + String sNameSpace1; + if ( GXutil.strcmp(sNameSpace, "ServerlessAPI") == 0 ) + { + sNameSpace1 = "[*:nosend]" + "ServerlessAPI" ; + } + else + { + sNameSpace1 = "ServerlessAPI" ; + } + gxTv_SdtEventMessagesList_Items.writexmlcollection(oWriter, "items", sNameSpace1, "Item", sNameSpace1); + } + oWriter.writeEndElement(); + } + + public void tojson( ) + { + tojson( true) ; + } + + public void tojson( boolean includeState ) + { + tojson( includeState, true) ; + } + + public void tojson( boolean includeState , + boolean includeNonInitialized ) + { + if ( gxTv_SdtEventMessagesList_Items != null ) + { + AddObjectProperty("items", gxTv_SdtEventMessagesList_Items, false, false); + } + } + + public GXSimpleCollection getgxTv_SdtEventMessagesList_Items( ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + gxTv_SdtEventMessagesList_Items = new GXSimpleCollection(String.class, "internal", ""); + } + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + return gxTv_SdtEventMessagesList_Items ; + } + + public void setgxTv_SdtEventMessagesList_Items( GXSimpleCollection value ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessagesList_Items = value ; + } + + public void setgxTv_SdtEventMessagesList_Items_SetNull( ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + gxTv_SdtEventMessagesList_Items = null ; + } + + public boolean getgxTv_SdtEventMessagesList_Items_IsNull( ) + { + if ( gxTv_SdtEventMessagesList_Items == null ) + { + return true ; + } + return false ; + } + + public byte getgxTv_SdtEventMessagesList_Items_N( ) + { + return gxTv_SdtEventMessagesList_Items_N ; + } + + public void initialize( int remoteHandle ) + { + initialize( ) ; + } + + public void initialize( ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + sdtIsNull = (byte)(1) ; + sTagName = "" ; + } + + public byte isNull( ) + { + return sdtIsNull ; + } + + public com.genexus.genexusserverlessapi.SdtEventMessagesList Clone( ) + { + return (com.genexus.genexusserverlessapi.SdtEventMessagesList)(clone()) ; + } + + public void setStruct( com.genexus.genexusserverlessapi.StructSdtEventMessagesList struct ) + { + if ( struct != null ) + { + setgxTv_SdtEventMessagesList_Items(new GXSimpleCollection(String.class, "internal", "", struct.getItems())); + } + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.StructSdtEventMessagesList getStruct( ) + { + com.genexus.genexusserverlessapi.StructSdtEventMessagesList struct = new com.genexus.genexusserverlessapi.StructSdtEventMessagesList (); + struct.setItems(getgxTv_SdtEventMessagesList_Items().getStruct()); + return struct ; + } + + protected byte gxTv_SdtEventMessagesList_Items_N ; + protected byte sdtIsNull ; + protected short readOk ; + protected short nOutParmCount ; + protected String sTagName ; + protected boolean readElement ; + protected boolean formatError ; + protected GXSimpleCollection gxTv_SdtEventMessagesList_Items=null ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java new file mode 100644 index 000000000..13b9c7e68 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessage.java @@ -0,0 +1,126 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessage implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessage( ) + { + this( -1, new ModelContext( StructSdtEventMessage.class )); + } + + public StructSdtEventMessage( int remoteHandle , + ModelContext context ) + { + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.set(1, 0, 1, 0, 0, 0); + cal.set(java.util.Calendar.MILLISECOND, 0); + gxTv_SdtEventMessage_Eventmessageid = "" ; + gxTv_SdtEventMessage_Eventmessagedate = cal.getTime() ; + gxTv_SdtEventMessage_Eventmessagesourcetype = "" ; + gxTv_SdtEventMessage_Eventmessagedata = "" ; + gxTv_SdtEventMessage_Eventmessageversion = "" ; + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(1) ; + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public String getEventmessageid( ) + { + return gxTv_SdtEventMessage_Eventmessageid ; + } + + public void setEventmessageid( String value ) + { + gxTv_SdtEventMessage_Eventmessageid_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageid = value ; + } + + public java.util.Date getEventmessagedate( ) + { + return gxTv_SdtEventMessage_Eventmessagedate ; + } + + public void setEventmessagedate( java.util.Date value ) + { + gxTv_SdtEventMessage_Eventmessagedate_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedate = value ; + } + + public String getEventmessagesourcetype( ) + { + return gxTv_SdtEventMessage_Eventmessagesourcetype ; + } + + public void setEventmessagesourcetype( String value ) + { + gxTv_SdtEventMessage_Eventmessagesourcetype_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagesourcetype = value ; + } + + public String getEventmessagedata( ) + { + return gxTv_SdtEventMessage_Eventmessagedata ; + } + + public void setEventmessagedata( String value ) + { + gxTv_SdtEventMessage_Eventmessagedata_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessagedata = value ; + } + + public java.util.Vector getEventmessageproperties( ) + { + return gxTv_SdtEventMessage_Eventmessageproperties ; + } + + public void setEventmessageproperties( java.util.Vector value ) + { + gxTv_SdtEventMessage_Eventmessageproperties_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageproperties = value ; + } + + public String getEventmessageversion( ) + { + return gxTv_SdtEventMessage_Eventmessageversion ; + } + + public void setEventmessageversion( String value ) + { + gxTv_SdtEventMessage_Eventmessageversion_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessage_Eventmessageversion = value ; + } + + protected byte gxTv_SdtEventMessage_Eventmessageid_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedate_N ; + protected byte gxTv_SdtEventMessage_Eventmessagesourcetype_N ; + protected byte gxTv_SdtEventMessage_Eventmessagedata_N ; + protected byte gxTv_SdtEventMessage_Eventmessageproperties_N ; + protected byte gxTv_SdtEventMessage_Eventmessageversion_N ; + protected byte sdtIsNull ; + protected String gxTv_SdtEventMessage_Eventmessagedata ; + protected String gxTv_SdtEventMessage_Eventmessageid ; + protected String gxTv_SdtEventMessage_Eventmessagesourcetype ; + protected String gxTv_SdtEventMessage_Eventmessageversion ; + protected java.util.Date gxTv_SdtEventMessage_Eventmessagedate ; + protected java.util.Vector gxTv_SdtEventMessage_Eventmessageproperties=null ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java new file mode 100644 index 000000000..543aaeb2f --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageProperty.java @@ -0,0 +1,54 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessageProperty implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessageProperty( ) + { + this( -1, new ModelContext( StructSdtEventMessageProperty.class )); + } + + public StructSdtEventMessageProperty( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessageProperty_Propertyid = "" ; + gxTv_SdtEventMessageProperty_Propertyvalue = "" ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public String getPropertyid( ) + { + return gxTv_SdtEventMessageProperty_Propertyid ; + } + + public void setPropertyid( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyid = value ; + } + + public String getPropertyvalue( ) + { + return gxTv_SdtEventMessageProperty_Propertyvalue ; + } + + public void setPropertyvalue( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageProperty_Propertyvalue = value ; + } + + protected byte sdtIsNull ; + protected String gxTv_SdtEventMessageProperty_Propertyid ; + protected String gxTv_SdtEventMessageProperty_Propertyvalue ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java new file mode 100644 index 000000000..f390dd9c2 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessageResponse.java @@ -0,0 +1,53 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessageResponse implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessageResponse( ) + { + this( -1, new ModelContext( StructSdtEventMessageResponse.class )); + } + + public StructSdtEventMessageResponse( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessageResponse_Errormessage = "" ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public boolean getHandlefailure( ) + { + return gxTv_SdtEventMessageResponse_Handlefailure ; + } + + public void setHandlefailure( boolean value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageResponse_Handlefailure = value ; + } + + public String getErrormessage( ) + { + return gxTv_SdtEventMessageResponse_Errormessage ; + } + + public void setErrormessage( String value ) + { + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessageResponse_Errormessage = value ; + } + + protected byte sdtIsNull ; + protected boolean gxTv_SdtEventMessageResponse_Handlefailure ; + protected String gxTv_SdtEventMessageResponse_Errormessage ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java new file mode 100644 index 000000000..e1ac05e3b --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessages.java @@ -0,0 +1,43 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessages implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessages( ) + { + this( -1, new ModelContext( StructSdtEventMessages.class )); + } + + public StructSdtEventMessages( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public java.util.Vector getEventmessage( ) + { + return gxTv_SdtEventMessages_Eventmessage ; + } + + public void setEventmessage( java.util.Vector value ) + { + gxTv_SdtEventMessages_Eventmessage_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessages_Eventmessage = value ; + } + + protected byte gxTv_SdtEventMessages_Eventmessage_N ; + protected byte sdtIsNull ; + protected java.util.Vector gxTv_SdtEventMessages_Eventmessage=null ; +} + diff --git a/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java new file mode 100644 index 000000000..a770155e1 --- /dev/null +++ b/gxazureserverless/src/test/java/com/genexus/genexusserverlessapi/StructSdtEventMessagesList.java @@ -0,0 +1,43 @@ +package com.genexus.genexusserverlessapi ; +import com.genexus.*; + +public final class StructSdtEventMessagesList implements Cloneable, java.io.Serializable +{ + public StructSdtEventMessagesList( ) + { + this( -1, new ModelContext( StructSdtEventMessagesList.class )); + } + + public StructSdtEventMessagesList( int remoteHandle , + ModelContext context ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(1) ; + } + + public Object clone() + { + Object cloned = null; + try + { + cloned = super.clone(); + }catch (CloneNotSupportedException e){ ; } + return cloned; + } + + public java.util.Vector getItems( ) + { + return gxTv_SdtEventMessagesList_Items ; + } + + public void setItems( java.util.Vector value ) + { + gxTv_SdtEventMessagesList_Items_N = (byte)(0) ; + sdtIsNull = (byte)(0) ; + gxTv_SdtEventMessagesList_Items = value ; + } + + protected byte gxTv_SdtEventMessagesList_Items_N ; + protected byte sdtIsNull ; + protected java.util.Vector gxTv_SdtEventMessagesList_Items=null ; +} + diff --git a/gxazureserverless/src/test/java/com/gx/serverless/test/GXApplication.java b/gxazureserverless/src/test/java/com/gx/serverless/test/GXApplication.java new file mode 100644 index 000000000..68d0b5544 --- /dev/null +++ b/gxazureserverless/src/test/java/com/gx/serverless/test/GXApplication.java @@ -0,0 +1,18 @@ +package com.gx.serverless.test; + +import com.genexus.webpanels.WebUtils; + +import javax.ws.rs.core.Application; +import java.util.HashSet; +import java.util.Set; + +public final class GXApplication extends Application { + public Set> getClasses() { + Set> rrcs = new HashSet>(); + WebUtils.getGXApplicationClasses(getClass(), rrcs); + WebUtils.AddExternalServices(getClass(), rrcs); + return rrcs; + } + +} + diff --git a/gxazureserverless/src/test/java/com/gx/serverless/test/GXcfg.java b/gxazureserverless/src/test/java/com/gx/serverless/test/GXcfg.java new file mode 100644 index 000000000..ac01107f7 --- /dev/null +++ b/gxazureserverless/src/test/java/com/gx/serverless/test/GXcfg.java @@ -0,0 +1,12 @@ +package com.gx.serverless.test; + +import com.genexus.GXutil; + +public final class GXcfg { + public static int strcmp(String Left, + String Right) { + return GXutil.rtrim(Left).compareTo(GXutil.rtrim(Right)); + } + +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/SdtUser.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/SdtUser.java new file mode 100644 index 000000000..4ab00bb6f --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/SdtUser.java @@ -0,0 +1,242 @@ +package com.unittest.eventdriven; + +import com.genexus.GXutil; +import com.genexus.GxSilentTrnSdt; +import com.genexus.ModelContext; + +import java.util.Date; +import java.util.HashMap; +import java.util.UUID; + +public final class SdtUser extends GxSilentTrnSdt { + public SdtUser(int remoteHandle) { + this(remoteHandle, new ModelContext(SdtUser.class)); + } + + public SdtUser(int remoteHandle, + ModelContext context) { + super(remoteHandle, context, "SdtUser"); + initialize(); + } + + public SdtUser(int remoteHandle, + StructSdtUser struct) { + this(remoteHandle); + setStruct(struct); + } + + private static HashMap mapper = new HashMap(); + + static { + } + + public String getJsonMap(String value) { + return (String) mapper.get(value); + } + + public UUID getgxTv_SdtUser_Userid() { + return gxTv_SdtUser_Userid; + } + + public void setgxTv_SdtUser_Userid(UUID value) { + gxTv_SdtUser_N = (byte) (0); + if (!(gxTv_SdtUser_Userid.equals(value))) { + gxTv_SdtUser_Mode = "INS"; + this.setgxTv_SdtUser_Userid_Z_SetNull(); + this.setgxTv_SdtUser_Username_Z_SetNull(); + this.setgxTv_SdtUser_Userregistereddatetime_Z_SetNull(); + } + SetDirty("Userid"); + gxTv_SdtUser_Userid = value; + } + + public String getgxTv_SdtUser_Username() { + return gxTv_SdtUser_Username; + } + + public void setgxTv_SdtUser_Username(String value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Username"); + gxTv_SdtUser_Username = value; + } + + public Date getgxTv_SdtUser_Userregistereddatetime() { + return gxTv_SdtUser_Userregistereddatetime; + } + + public void setgxTv_SdtUser_Userregistereddatetime(Date value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Userregistereddatetime"); + gxTv_SdtUser_Userregistereddatetime = value; + } + + public String getgxTv_SdtUser_Usereventmessagedata() { + return gxTv_SdtUser_Usereventmessagedata; + } + + public void setgxTv_SdtUser_Usereventmessagedata(String value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Usereventmessagedata"); + gxTv_SdtUser_Usereventmessagedata = value; + } + + public String getgxTv_SdtUser_Mode() { + return gxTv_SdtUser_Mode; + } + + public void setgxTv_SdtUser_Mode(String value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Mode"); + gxTv_SdtUser_Mode = value; + } + + public void setgxTv_SdtUser_Mode_SetNull() { + gxTv_SdtUser_Mode = ""; + SetDirty("Mode"); + } + + public boolean getgxTv_SdtUser_Mode_IsNull() { + return false; + } + + public short getgxTv_SdtUser_Initialized() { + return gxTv_SdtUser_Initialized; + } + + public void setgxTv_SdtUser_Initialized(short value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Initialized"); + gxTv_SdtUser_Initialized = value; + } + + public void setgxTv_SdtUser_Initialized_SetNull() { + gxTv_SdtUser_Initialized = (short) (0); + SetDirty("Initialized"); + } + + public boolean getgxTv_SdtUser_Initialized_IsNull() { + return false; + } + + public UUID getgxTv_SdtUser_Userid_Z() { + return gxTv_SdtUser_Userid_Z; + } + + public void setgxTv_SdtUser_Userid_Z(UUID value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Userid_Z"); + gxTv_SdtUser_Userid_Z = value; + } + + public void setgxTv_SdtUser_Userid_Z_SetNull() { + gxTv_SdtUser_Userid_Z = UUID.fromString("00000000-0000-0000-0000-000000000000"); + SetDirty("Userid_Z"); + } + + public boolean getgxTv_SdtUser_Userid_Z_IsNull() { + return false; + } + + public String getgxTv_SdtUser_Username_Z() { + return gxTv_SdtUser_Username_Z; + } + + public void setgxTv_SdtUser_Username_Z(String value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Username_Z"); + gxTv_SdtUser_Username_Z = value; + } + + public void setgxTv_SdtUser_Username_Z_SetNull() { + gxTv_SdtUser_Username_Z = ""; + SetDirty("Username_Z"); + } + + public boolean getgxTv_SdtUser_Username_Z_IsNull() { + return false; + } + + public Date getgxTv_SdtUser_Userregistereddatetime_Z() { + return gxTv_SdtUser_Userregistereddatetime_Z; + } + + public void setgxTv_SdtUser_Userregistereddatetime_Z(Date value) { + gxTv_SdtUser_N = (byte) (0); + SetDirty("Userregistereddatetime_Z"); + gxTv_SdtUser_Userregistereddatetime_Z = value; + } + + public void setgxTv_SdtUser_Userregistereddatetime_Z_SetNull() { + gxTv_SdtUser_Userregistereddatetime_Z = GXutil.resetTime(GXutil.nullDate()); + SetDirty("Userregistereddatetime_Z"); + } + + public boolean getgxTv_SdtUser_Userregistereddatetime_Z_IsNull() { + return false; + } + + + public void initialize() { + gxTv_SdtUser_Userid = UUID.fromString("00000000-0000-0000-0000-000000000000"); + gxTv_SdtUser_N = (byte) (1); + gxTv_SdtUser_Username = ""; + gxTv_SdtUser_Userregistereddatetime = GXutil.resetTime(GXutil.nullDate()); + gxTv_SdtUser_Usereventmessagedata = ""; + gxTv_SdtUser_Mode = ""; + gxTv_SdtUser_Userid_Z = UUID.fromString("00000000-0000-0000-0000-000000000000"); + gxTv_SdtUser_Username_Z = ""; + gxTv_SdtUser_Userregistereddatetime_Z = GXutil.resetTime(GXutil.nullDate()); + sTagName = ""; + sDateCnv = ""; + sNumToPad = ""; + datetime_STZ = GXutil.resetTime(GXutil.nullDate()); + } + + public byte isNull() { + return gxTv_SdtUser_N; + } + + + public void setStruct(StructSdtUser struct) { + setgxTv_SdtUser_Userid(struct.getUserid()); + setgxTv_SdtUser_Username(struct.getUsername()); + setgxTv_SdtUser_Userregistereddatetime(struct.getUserregistereddatetime()); + setgxTv_SdtUser_Usereventmessagedata(struct.getUsereventmessagedata()); + setgxTv_SdtUser_Mode(struct.getMode()); + setgxTv_SdtUser_Initialized(struct.getInitialized()); + setgxTv_SdtUser_Userid_Z(struct.getUserid_Z()); + setgxTv_SdtUser_Username_Z(struct.getUsername_Z()); + setgxTv_SdtUser_Userregistereddatetime_Z(struct.getUserregistereddatetime_Z()); + } + + @SuppressWarnings("unchecked") + public StructSdtUser getStruct() { + StructSdtUser struct = new StructSdtUser(); + struct.setUserid(getgxTv_SdtUser_Userid()); + struct.setUsername(getgxTv_SdtUser_Username()); + struct.setUserregistereddatetime(getgxTv_SdtUser_Userregistereddatetime()); + struct.setUsereventmessagedata(getgxTv_SdtUser_Usereventmessagedata()); + struct.setMode(getgxTv_SdtUser_Mode()); + struct.setInitialized(getgxTv_SdtUser_Initialized()); + struct.setUserid_Z(getgxTv_SdtUser_Userid_Z()); + struct.setUsername_Z(getgxTv_SdtUser_Username_Z()); + struct.setUserregistereddatetime_Z(getgxTv_SdtUser_Userregistereddatetime_Z()); + return struct; + } + + private byte gxTv_SdtUser_N; + private short gxTv_SdtUser_Initialized; + private String gxTv_SdtUser_Username; + private String gxTv_SdtUser_Mode; + private String gxTv_SdtUser_Username_Z; + private String sTagName; + private String sDateCnv; + private String sNumToPad; + private Date gxTv_SdtUser_Userregistereddatetime; + private Date gxTv_SdtUser_Userregistereddatetime_Z; + private Date datetime_STZ; + private String gxTv_SdtUser_Usereventmessagedata; + private UUID gxTv_SdtUser_Userid; + private UUID gxTv_SdtUser_Userid_Z; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/StructSdtUser.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/StructSdtUser.java new file mode 100644 index 000000000..45040abff --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/StructSdtUser.java @@ -0,0 +1,127 @@ +package com.unittest.eventdriven; + +import com.genexus.ModelContext; + +public final class StructSdtUser implements Cloneable, java.io.Serializable { + public StructSdtUser() { + this(-1, new ModelContext(StructSdtUser.class)); + } + + public StructSdtUser(int remoteHandle, + ModelContext context) { + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.set(1, 0, 1, 0, 0, 0); + cal.set(java.util.Calendar.MILLISECOND, 0); + gxTv_SdtUser_Userid = java.util.UUID.fromString("00000000-0000-0000-0000-000000000000"); + gxTv_SdtUser_Username = ""; + gxTv_SdtUser_Userregistereddatetime = cal.getTime(); + gxTv_SdtUser_Usereventmessagedata = ""; + gxTv_SdtUser_Mode = ""; + gxTv_SdtUser_Userid_Z = java.util.UUID.fromString("00000000-0000-0000-0000-000000000000"); + gxTv_SdtUser_Username_Z = ""; + gxTv_SdtUser_Userregistereddatetime_Z = cal.getTime(); + } + + public Object clone() { + Object cloned = null; + try { + cloned = super.clone(); + } catch (CloneNotSupportedException e) { + ; + } + return cloned; + } + + public java.util.UUID getUserid() { + return gxTv_SdtUser_Userid; + } + + public void setUserid(java.util.UUID value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Userid = value; + } + + public String getUsername() { + return gxTv_SdtUser_Username; + } + + public void setUsername(String value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Username = value; + } + + public java.util.Date getUserregistereddatetime() { + return gxTv_SdtUser_Userregistereddatetime; + } + + public void setUserregistereddatetime(java.util.Date value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Userregistereddatetime = value; + } + + public String getUsereventmessagedata() { + return gxTv_SdtUser_Usereventmessagedata; + } + + public void setUsereventmessagedata(String value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Usereventmessagedata = value; + } + + public String getMode() { + return gxTv_SdtUser_Mode; + } + + public void setMode(String value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Mode = value; + } + + public short getInitialized() { + return gxTv_SdtUser_Initialized; + } + + public void setInitialized(short value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Initialized = value; + } + + public java.util.UUID getUserid_Z() { + return gxTv_SdtUser_Userid_Z; + } + + public void setUserid_Z(java.util.UUID value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Userid_Z = value; + } + + public String getUsername_Z() { + return gxTv_SdtUser_Username_Z; + } + + public void setUsername_Z(String value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Username_Z = value; + } + + public java.util.Date getUserregistereddatetime_Z() { + return gxTv_SdtUser_Userregistereddatetime_Z; + } + + public void setUserregistereddatetime_Z(java.util.Date value) { + gxTv_SdtUser_N = (byte) (0); + gxTv_SdtUser_Userregistereddatetime_Z = value; + } + + private byte gxTv_SdtUser_N; + protected short gxTv_SdtUser_Initialized; + protected String gxTv_SdtUser_Username; + protected String gxTv_SdtUser_Mode; + protected String gxTv_SdtUser_Username_Z; + protected String gxTv_SdtUser_Usereventmessagedata; + protected java.util.UUID gxTv_SdtUser_Userid; + protected java.util.UUID gxTv_SdtUser_Userid_Z; + protected java.util.Date gxTv_SdtUser_Userregistereddatetime; + protected java.util.Date gxTv_SdtUser_Userregistereddatetime_Z; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/cosmosdb/handlecosmosdbazure.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/cosmosdb/handlecosmosdbazure.java new file mode 100644 index 000000000..f08511e42 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/cosmosdb/handlecosmosdbazure.java @@ -0,0 +1,103 @@ +package com.unittest.eventdriven.cosmosdb; + +import com.genexus.GXBaseCollection; +import com.genexus.GXProcedure; +import com.genexus.ModelContext; +import com.genexus.SdtMessages_Message; + +public final class handlecosmosdbazure extends GXProcedure { + public handlecosmosdbazure(int remoteHandle) { + super(remoteHandle, new ModelContext(handlecosmosdbazure.class), ""); + } + + public handlecosmosdbazure(int remoteHandle, + ModelContext context) { + super(remoteHandle, context, ""); + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.SdtEventMessageResponse executeUdp(com.genexus.genexusserverlessapi.SdtEventMessagesList aP0) { + handlecosmosdbazure.this.aP1 = new com.genexus.genexusserverlessapi.SdtEventMessageResponse[]{new com.genexus.genexusserverlessapi.SdtEventMessageResponse()}; + execute_int(aP0, aP1); + return aP1[0]; + } + + public void execute(com.genexus.genexusserverlessapi.SdtEventMessagesList aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(com.genexus.genexusserverlessapi.SdtEventMessagesList aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + handlecosmosdbazure.this.AV17EventMessagesList = aP0; + handlecosmosdbazure.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START CosmosDB Event received"); + System.out.println(AV17EventMessagesList.toJSonString(false, true)); + AV16GXV1 = 1; + while ( AV16GXV1 <= AV17EventMessagesList.getgxTv_SdtEventMessagesList_Items().size() ) + { + AV8EventMessage = (String)AV17EventMessagesList.getgxTv_SdtEventMessagesList_Items().elementAt(-1+AV16GXV1) ; + System.out.println(AV8EventMessage); + //httpContext.GX_msglist.addItem(AV8EventMessage); + + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(!AV11UserSDT.fromJSonString(AV8EventMessage)); + if (AV9EventMessageResponse.getgxTv_SdtEventMessageResponse_Handlefailure()) { + System.out.println("Event Message Data could not be parsed: " + AV8EventMessage); + System.out.println(AV12OutMessages.toJSonString(false)); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Errormessage(AV12OutMessages.toJSonString(false)); + returnInSub = true; + cleanup(); + if (true) return; + } + System.out.println("UserSDT Processed OK: " + AV11UserSDT.toJSonString(false, true)); + AV16GXV1 = (int)(AV16GXV1+1) ; + } + + System.out.println("END CosmosDB Event received"); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handlecosmosdbazure.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV8EventMessage = ""; + AV9EventMessageResponse = new com.genexus.genexusserverlessapi.SdtEventMessageResponse(remoteHandle, context); + AV15Pgmname = ""; + AV10EventMessage = new com.genexus.genexusserverlessapi.SdtEventMessage(remoteHandle, context); + AV12OutMessages = new GXBaseCollection(SdtMessages_Message.class, "Message", "GeneXus", remoteHandle); + AV11UserSDT = new com.unittest.eventdriven.SdtUser(remoteHandle); + AV15Pgmname = "EventDriven.CosmosDB.HandleCosmosDBEvent"; + /* GeneXus formulas. */ + AV15Pgmname = "EventDriven.Queue.CosmosDB.HandleCosmosDBEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private int AV16GXV1; + private String AV15Pgmname; + private boolean returnInSub; + private com.unittest.eventdriven.SdtUser AV11UserSDT; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1; + private GXBaseCollection AV12OutMessages; + private com.genexus.genexusserverlessapi.SdtEventMessages AV8EventMessages; + private com.genexus.genexusserverlessapi.SdtEventMessage AV10EventMessage; + private com.genexus.genexusserverlessapi.SdtEventMessagesList AV17EventMessagesList; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse AV9EventMessageResponse; + private String AV8EventMessage ; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgrid/handleeventgridazure.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgrid/handleeventgridazure.java new file mode 100644 index 000000000..d93e5c9a7 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgrid/handleeventgridazure.java @@ -0,0 +1,64 @@ +package com.unittest.eventdriven.eventgrid; + +import com.genexus.GXProcedure; +import com.genexus.GXutil; +import com.genexus.ModelContext; +import com.genexus.genexusserverlessapi.SdtEventMessageResponse; + +public final class handleeventgridazure extends GXProcedure { + public handleeventgridazure(int remoteHandle) { + super(remoteHandle, new ModelContext(handleeventgridazure.class), ""); + } + + public handleeventgridazure(int remoteHandle, ModelContext context) { + super(remoteHandle, context, ""); + } + + + public void execute(String aP0, SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(String aP0, SdtEventMessageResponse[] aP1) { + handleeventgridazure.this.AV13RAWMessage = aP0; + handleeventgridazure.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Event Grid - Event received"); + System.out.println("Raw message: " + AV13RAWMessage); + System.out.println("END Event Grid - Event received"); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure((GXutil.len(AV13RAWMessage) == 0)); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handleeventgridazure.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new SdtEventMessageResponse(remoteHandle, context); + AV16Pgmname = ""; + AV16Pgmname = "EventDriven.ServiceBus.HandleEventGridAzureEvent"; + /* GeneXus formulas. */ + AV16Pgmname = "EventDriven.ServiceBus.HandleEventGridAzureEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private String AV13RAWMessage; + private String AV16Pgmname; + private SdtEventMessageResponse[] aP1; + private SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgridcloud/handleeventgridcloudazure.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgridcloud/handleeventgridcloudazure.java new file mode 100644 index 000000000..67ee10159 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/eventgridcloud/handleeventgridcloudazure.java @@ -0,0 +1,94 @@ +package com.unittest.eventdriven.eventgridcloud; + +import com.genexus.GXBaseCollection; +import com.genexus.GXProcedure; +import com.genexus.ModelContext; +import com.genexus.SdtMessages_Message; + +public final class handleeventgridcloudazure extends GXProcedure { + public handleeventgridcloudazure(int remoteHandle) { + super(remoteHandle, new ModelContext(handleeventgridcloudazure.class), ""); + } + + public handleeventgridcloudazure(int remoteHandle, + ModelContext context) { + super(remoteHandle, context, ""); + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.SdtEventMessageResponse executeUdp(com.genexus.genexusserverlessapi.SdtEventMessages aP0) { + handleeventgridcloudazure.this.aP1 = new com.genexus.genexusserverlessapi.SdtEventMessageResponse[]{new com.genexus.genexusserverlessapi.SdtEventMessageResponse()}; + execute_int(aP0, aP1); + return aP1[0]; + } + + public void execute(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + handleeventgridcloudazure.this.AV8EventMessages = aP0; + handleeventgridcloudazure.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Event Grid - CloudEvent received"); + + AV16GXV1 = 1; + while (AV16GXV1 <= AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().size()) { + AV10EventMessage = (com.genexus.genexusserverlessapi.SdtEventMessage) ((com.genexus.genexusserverlessapi.SdtEventMessage) AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().elementAt(-1 + AV16GXV1)); + System.out.println("MessageData: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata()); + System.out.println("MessageId: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessageid()); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata() == ""); + if (AV9EventMessageResponse.getgxTv_SdtEventMessageResponse_Handlefailure()) { + System.out.println("EventMessageData could not be parsed."); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Errormessage(AV12OutMessages.toJSonString(false)); + returnInSub = true; + cleanup(); + if (true) return; + } + AV16GXV1 = (int) (AV16GXV1 + 1); + } + System.out.println("END Event Grid - CloudEvent received"); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handleeventgridcloudazure.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new com.genexus.genexusserverlessapi.SdtEventMessageResponse(remoteHandle, context); + AV15Pgmname = ""; + AV10EventMessage = new com.genexus.genexusserverlessapi.SdtEventMessage(remoteHandle, context); + AV12OutMessages = new GXBaseCollection(SdtMessages_Message.class, "Message", "GeneXus", remoteHandle); + + AV15Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent2"; + /* GeneXus formulas. */ + AV15Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent2"; + Gx_err = (short) (0); + } + + private short Gx_err; + private int AV16GXV1; + private String AV15Pgmname; + private boolean returnInSub; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1; + private GXBaseCollection AV12OutMessages; + private com.genexus.genexusserverlessapi.SdtEventMessages AV8EventMessages; + private com.genexus.genexusserverlessapi.SdtEventMessage AV10EventMessage; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent.java new file mode 100644 index 000000000..0d38e2201 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent.java @@ -0,0 +1,64 @@ +package com.unittest.eventdriven.queue; + +import com.genexus.GXProcedure; +import com.genexus.GXutil; +import com.genexus.ModelContext; +import com.genexus.genexusserverlessapi.SdtEventMessageResponse; + +public final class handlequeueazureevent extends GXProcedure { + public handlequeueazureevent(int remoteHandle) { + super(remoteHandle, new ModelContext(handlequeueazureevent.class), ""); + } + + public handlequeueazureevent(int remoteHandle, ModelContext context) { + super(remoteHandle, context, ""); + } + + + public void execute(String aP0, SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(String aP0, SdtEventMessageResponse[] aP1) { + handlequeueazureevent.this.AV13RAWMessage = aP0; + handlequeueazureevent.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Queue Event received"); + System.out.println("Raw message: " +AV13RAWMessage); + System.out.println("END Queue Event received"); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(!AV13RAWMessage.startsWith("Test message")); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handlequeueazureevent.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new SdtEventMessageResponse(remoteHandle, context); + AV16Pgmname = ""; + AV16Pgmname = "EventDriven.Queue.HandleQueueAzureEvent"; + /* GeneXus formulas. */ + AV16Pgmname = "EventDriven.Queue.HandleQueueAzureEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private String AV13RAWMessage; + private String AV16Pgmname; + private SdtEventMessageResponse[] aP1; + private SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent2.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent2.java new file mode 100644 index 000000000..6db1aac24 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/queue/handlequeueazureevent2.java @@ -0,0 +1,97 @@ +package com.unittest.eventdriven.queue; + +import com.genexus.GXBaseCollection; +import com.genexus.GXProcedure; +import com.genexus.ModelContext; +import com.genexus.SdtMessages_Message; + +public final class handlequeueazureevent2 extends GXProcedure { + public handlequeueazureevent2(int remoteHandle) { + super(remoteHandle, new ModelContext(handlequeueazureevent2.class), ""); + } + + public handlequeueazureevent2(int remoteHandle, + ModelContext context) { + super(remoteHandle, context, ""); + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.SdtEventMessageResponse executeUdp(com.genexus.genexusserverlessapi.SdtEventMessages aP0) { + handlequeueazureevent2.this.aP1 = new com.genexus.genexusserverlessapi.SdtEventMessageResponse[]{new com.genexus.genexusserverlessapi.SdtEventMessageResponse()}; + execute_int(aP0, aP1); + return aP1[0]; + } + + public void execute(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + handlequeueazureevent2.this.AV8EventMessages = aP0; + handlequeueazureevent2.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Queue Event received"); + System.out.println(AV8EventMessages.toJSonString(false, true)); + + AV16GXV1 = 1; + while (AV16GXV1 <= AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().size()) { + AV10EventMessage = (com.genexus.genexusserverlessapi.SdtEventMessage) ((com.genexus.genexusserverlessapi.SdtEventMessage) AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().elementAt(-1 + AV16GXV1)); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(!AV11UserSDT.fromJSonString(AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata(), AV12OutMessages)); + if (AV9EventMessageResponse.getgxTv_SdtEventMessageResponse_Handlefailure()) { + System.out.println("EventMessageData could not be parsed: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata()); + System.out.println(AV12OutMessages.toJSonString(false)); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Errormessage(AV12OutMessages.toJSonString(false)); + returnInSub = true; + cleanup(); + if (true) return; + } + System.out.println("UserSDT Processed OK: " + AV11UserSDT.toJSonString(false, true)); + ; + AV16GXV1 = (int) (AV16GXV1 + 1); + } + System.out.println("END Queue Event received"); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handlequeueazureevent2.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new com.genexus.genexusserverlessapi.SdtEventMessageResponse(remoteHandle, context); + AV15Pgmname = ""; + AV10EventMessage = new com.genexus.genexusserverlessapi.SdtEventMessage(remoteHandle, context); + AV12OutMessages = new GXBaseCollection(SdtMessages_Message.class, "Message", "GeneXus", remoteHandle); + AV11UserSDT = new com.unittest.eventdriven.SdtUser(remoteHandle); + AV15Pgmname = "EventDriven.Queue.HandleSimpleUserQueueEvent"; + /* GeneXus formulas. */ + AV15Pgmname = "EventDriven.Queue.HandleSimpleUserQueueEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private int AV16GXV1; + private String AV15Pgmname; + private boolean returnInSub; + private com.unittest.eventdriven.SdtUser AV11UserSDT; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1; + private GXBaseCollection AV12OutMessages; + private com.genexus.genexusserverlessapi.SdtEventMessages AV8EventMessages; + private com.genexus.genexusserverlessapi.SdtEventMessage AV10EventMessage; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent.java new file mode 100644 index 000000000..77991048f --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent.java @@ -0,0 +1,64 @@ +package com.unittest.eventdriven.servicebus; + +import com.genexus.GXProcedure; + +import com.genexus.ModelContext; +import com.genexus.genexusserverlessapi.SdtEventMessageResponse; + +public final class handlesbqueueazureevent extends GXProcedure { + public handlesbqueueazureevent(int remoteHandle) { + super(remoteHandle, new ModelContext(handlesbqueueazureevent.class), ""); + } + + public handlesbqueueazureevent(int remoteHandle, ModelContext context) { + super(remoteHandle, context, ""); + } + + + public void execute(String aP0, SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(String aP0, SdtEventMessageResponse[] aP1) { + handlesbqueueazureevent.this.AV13RAWMessage = aP0; + handlesbqueueazureevent.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Service Bus Event received"); + System.out.println("Raw message: " +AV13RAWMessage); + System.out.println("END Service Bus Event received"); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(false); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handlesbqueueazureevent.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new SdtEventMessageResponse(remoteHandle, context); + AV16Pgmname = ""; + AV16Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent"; + /* GeneXus formulas. */ + AV16Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private String AV13RAWMessage; + private String AV16Pgmname; + private SdtEventMessageResponse[] aP1; + private SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent2.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent2.java new file mode 100644 index 000000000..64ca592a0 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/servicebus/handlesbqueueazureevent2.java @@ -0,0 +1,95 @@ +package com.unittest.eventdriven.servicebus; + +import com.genexus.GXBaseCollection; +import com.genexus.GXProcedure; +import com.genexus.ModelContext; +import com.genexus.SdtMessages_Message; + +public final class handlesbqueueazureevent2 extends GXProcedure { + public handlesbqueueazureevent2(int remoteHandle) { + super(remoteHandle, new ModelContext(handlesbqueueazureevent2.class), ""); + } + + public handlesbqueueazureevent2(int remoteHandle, + ModelContext context) { + super(remoteHandle, context, ""); + } + + @SuppressWarnings("unchecked") + public com.genexus.genexusserverlessapi.SdtEventMessageResponse executeUdp(com.genexus.genexusserverlessapi.SdtEventMessages aP0) { + handlesbqueueazureevent2.this.aP1 = new com.genexus.genexusserverlessapi.SdtEventMessageResponse[]{new com.genexus.genexusserverlessapi.SdtEventMessageResponse()}; + execute_int(aP0, aP1); + return aP1[0]; + } + + public void execute(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(com.genexus.genexusserverlessapi.SdtEventMessages aP0, + com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1) { + handlesbqueueazureevent2.this.AV8EventMessages = aP0; + handlesbqueueazureevent2.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Service Bus Event received"); + + AV16GXV1 = 1; + while (AV16GXV1 <= AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().size()) { + AV10EventMessage = (com.genexus.genexusserverlessapi.SdtEventMessage) ((com.genexus.genexusserverlessapi.SdtEventMessage) AV8EventMessages.getgxTv_SdtEventMessages_Eventmessage().elementAt(-1 + AV16GXV1)); + System.out.println("MessageData: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata()); + System.out.println("MessageId: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessageid()); + System.out.println("MessageDate: " + AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedate()); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(AV10EventMessage.getgxTv_SdtEventMessage_Eventmessagedata() == ""); + if (AV9EventMessageResponse.getgxTv_SdtEventMessageResponse_Handlefailure()) { + System.out.println("EventMessageData could not be parsed."); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Errormessage(AV12OutMessages.toJSonString(false)); + returnInSub = true; + cleanup(); + if (true) return; + } + AV16GXV1 = (int) (AV16GXV1 + 1); + } + System.out.println("END Service Bus Event received"); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handlesbqueueazureevent2.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new com.genexus.genexusserverlessapi.SdtEventMessageResponse(remoteHandle, context); + AV15Pgmname = ""; + AV10EventMessage = new com.genexus.genexusserverlessapi.SdtEventMessage(remoteHandle, context); + AV12OutMessages = new GXBaseCollection(SdtMessages_Message.class, "Message", "GeneXus", remoteHandle); + + AV15Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent2"; + /* GeneXus formulas. */ + AV15Pgmname = "EventDriven.ServiceBus.HandleSBQueueAzureEvent2"; + Gx_err = (short) (0); + } + + private short Gx_err; + private int AV16GXV1; + private String AV15Pgmname; + private boolean returnInSub; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse[] aP1; + private GXBaseCollection AV12OutMessages; + private com.genexus.genexusserverlessapi.SdtEventMessages AV8EventMessages; + private com.genexus.genexusserverlessapi.SdtEventMessage AV10EventMessage; + private com.genexus.genexusserverlessapi.SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/com/unittest/eventdriven/timer/handletimerazureevent.java b/gxazureserverless/src/test/java/com/unittest/eventdriven/timer/handletimerazureevent.java new file mode 100644 index 000000000..55ca9aca5 --- /dev/null +++ b/gxazureserverless/src/test/java/com/unittest/eventdriven/timer/handletimerazureevent.java @@ -0,0 +1,64 @@ +package com.unittest.eventdriven.timer; + +import com.genexus.GXProcedure; +import com.genexus.GXutil; +import com.genexus.ModelContext; +import com.genexus.genexusserverlessapi.SdtEventMessageResponse; + +public final class handletimerazureevent extends GXProcedure { + public handletimerazureevent(int remoteHandle) { + super(remoteHandle, new ModelContext(handletimerazureevent.class), ""); + } + + public handletimerazureevent(int remoteHandle, ModelContext context) { + super(remoteHandle, context, ""); + } + + + public void execute(String aP0, SdtEventMessageResponse[] aP1) { + execute_int(aP0, aP1); + } + + private void execute_int(String aP0, SdtEventMessageResponse[] aP1) { + handletimerazureevent.this.AV13RAWMessage = aP0; + handletimerazureevent.this.aP1 = aP1; + initialize(); + /* GeneXus formulas */ + /* Output device settings */ + privateExecute(); + } + + protected void privateExecute() { + System.out.println("START Timer Event received"); + System.out.println("Raw message: " + AV13RAWMessage); + System.out.println("END Timer Event received"); + AV9EventMessageResponse.setgxTv_SdtEventMessageResponse_Handlefailure(false); + cleanup(); + } + + protected void cleanup() { + this.aP1[0] = handletimerazureevent.this.AV9EventMessageResponse; + CloseOpenCursors(); + exitApp(); + } + + protected void CloseOpenCursors() { + } + + /* Aggregate/select formulas */ + public void initialize() { + AV9EventMessageResponse = new SdtEventMessageResponse(remoteHandle, context); + AV16Pgmname = ""; + AV16Pgmname = "EventDriven.Timer.HandleTimerAzureEvent"; + /* GeneXus formulas. */ + AV16Pgmname = "EventDriven.Timer.HandleTimerAzureEvent"; + Gx_err = (short) (0); + } + + private short Gx_err; + private String AV13RAWMessage; + private String AV16Pgmname; + private SdtEventMessageResponse[] aP1; + private SdtEventMessageResponse AV9EventMessageResponse; +} + diff --git a/gxazureserverless/src/test/java/log4j2.xml b/gxazureserverless/src/test/java/log4j2.xml new file mode 100644 index 000000000..2ff3a3346 --- /dev/null +++ b/gxazureserverless/src/test/java/log4j2.xml @@ -0,0 +1,39 @@ + + + + ${main:0:-.}${sys:file.separator}logs${sys:file.separator} + + ${logBaseDir}client.log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gxserverlesscommon/pom.xml b/gxserverlesscommon/pom.xml new file mode 100644 index 000000000..df54f6449 --- /dev/null +++ b/gxserverlesscommon/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + + com.genexus + parent + ${revision}${changelist} + + + gxserverlesscommon + GeneXus Serverless Common + + + + ${project.groupId} + gxclassR + ${project.version} + + + + ${project.groupId} + gxcommon + ${project.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + org.glassfish.jersey.core + jersey-server + ${jersey.javax.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.17.2 + compile + + + + + + gx-serverless-common + + + + + + com.github.spotbugs + spotbugs-maven-plugin + 3.1.10 + + + + diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java similarity index 69% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java index dda50cc8e..6035b22d2 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/GXProcedureExecutor.java @@ -7,6 +7,7 @@ import com.genexus.ModelContext; import com.genexus.cloud.serverless.model.EventMessageResponse; import com.genexus.cloud.serverless.model.EventMessages; +import com.genexus.cloud.serverless.model.EventMessagesList; import com.genexus.db.DynamicExecute; import org.apache.commons.lang3.NotImplementedException; @@ -19,21 +20,27 @@ public class GXProcedureExecutor { protected Class entryPointClass; - private Class[][] supportedMethodSignatures = new Class[5][]; - private int methodSignatureIdx = -1; + protected int methodSignatureIdx = -1; protected static final String MESSAGE_COLLECTION_INPUT_CLASS_NAME = "com.genexus.genexusserverlessapi.SdtEventMessages"; protected static final String MESSAGE_OUTPUT_COLLECTION_CLASS_NAME = "com.genexus.genexusserverlessapi.SdtEventMessageResponse"; + protected static final String MESSAGE_COLLECTION_LIST_CLASS_NAME = "com.genexus.genexusserverlessapi.SdtEventMessagesList"; + + public int getMethodSignatureIdx() { + return methodSignatureIdx; + } public GXProcedureExecutor(Class entryPointClassParms) throws ClassNotFoundException, NotImplementedException { entryPointClass = entryPointClassParms; + Class[][] supportedMethodSignatures = new Class[6][]; supportedMethodSignatures[0] = new Class[]{Class.forName(MESSAGE_COLLECTION_INPUT_CLASS_NAME), Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME)}; supportedMethodSignatures[1] = new Class[]{String.class, Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME)}; supportedMethodSignatures[2] = new Class[]{String.class}; supportedMethodSignatures[3] = new Class[]{Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME)}; - supportedMethodSignatures[4] = new Class[]{}; //No inputs, no outputs + supportedMethodSignatures[4] = new Class[]{Class.forName(MESSAGE_COLLECTION_LIST_CLASS_NAME), Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME)}; + supportedMethodSignatures[5] = new Class[]{}; //No inputs, no outputs - Optional executeMethodOpt = Arrays.stream(this.entryPointClass.getDeclaredMethods()).filter(m -> m.getName() == DynamicExecute.METHOD_EXECUTE).findFirst(); + Optional executeMethodOpt = Arrays.stream(this.entryPointClass.getDeclaredMethods()).filter(m -> m.getName().equals(DynamicExecute.METHOD_EXECUTE)).findFirst(); if (!executeMethodOpt.isPresent()) { throw new NotImplementedException(String.format("EXECUTE Method not implemented on Class '%s'", entryPointClass.getName())); @@ -46,7 +53,7 @@ public GXProcedureExecutor(Class entryPointClassParms) throws ClassNotFoundExcep if (supportedMethodSignatures[i].length != parametersTypes.length) { continue; } - Class[] listParameters = (Class[]) supportedMethodSignatures[i]; + Class[] listParameters = supportedMethodSignatures[i]; boolean isMatch = true; for (int j = 0; j < listParameters.length && isMatch; j++) { isMatch = listParameters[j] == parametersTypes[j] || listParameters[j] == parametersTypes[j].getComponentType(); @@ -58,10 +65,9 @@ public GXProcedureExecutor(Class entryPointClassParms) throws ClassNotFoundExcep if (methodSignatureIdx < 0) { throw new NotImplementedException("Expected signature method did not match"); } - } - public EventMessageResponse execute(ModelContext modelContext, EventMessages msgs, String rawJsonEvent) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, JsonProcessingException { + public EventMessageResponse execute(ModelContext modelContext, EventMessages msgs, EventMessagesList msgsList, String rawJsonEvent) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, JsonProcessingException { EventMessageResponse response = new EventMessageResponse(); Object[] parameters; @@ -71,7 +77,7 @@ public EventMessageResponse execute(ModelContext modelContext, EventMessages msg Class inputClass = Class.forName(MESSAGE_COLLECTION_INPUT_CLASS_NAME); Object msgsInput = inputClass.getConstructor().newInstance(); if (GxUserType.class.isAssignableFrom(inputClass)) { - ((GxUserType) msgsInput).fromJSonString(Helper.toJSONString(msgs)); + ((GxUserType) msgsInput).fromJSonString(JSONHelper.toJSONString(msgs)); } parameters = new Object[]{msgsInput, new Object[]{}}; break; @@ -85,6 +91,14 @@ public EventMessageResponse execute(ModelContext modelContext, EventMessages msg case 3: parameters = new Object[]{new Object[]{}}; break; + case 4: + Class inputListClass = Class.forName(MESSAGE_COLLECTION_LIST_CLASS_NAME); + Object msgsListInput = inputListClass.getConstructor().newInstance(); + if (GxUserType.class.isAssignableFrom(inputListClass)) { + ((GxUserType) msgsListInput).fromJSonString(JSONHelper.toJSONString(msgsList)); + } + parameters = new Object[]{msgsListInput, new Object[]{}}; + break; default: parameters = new Object[]{}; returnsValue = false; @@ -93,12 +107,12 @@ public EventMessageResponse execute(ModelContext modelContext, EventMessages msg Object[] paramOutArray = null; if (returnsValue) { - parameters[parameters.length - 1] = (Object[]) Array.newInstance(Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME), 1); + parameters[parameters.length - 1] = Array.newInstance(Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME), 1); paramOutArray = (Object[]) parameters[parameters.length - 1]; paramOutArray[0] = Class.forName(MESSAGE_OUTPUT_COLLECTION_CLASS_NAME).getConstructor(int.class, ModelContext.class).newInstance(-1, modelContext); } - com.genexus.db.DynamicExecute.dynamicExecute(modelContext, -1, entryPointClass, "", entryPointClass.getName(), parameters); + DynamicExecute.dynamicExecute(modelContext, -1, entryPointClass, "", entryPointClass.getName(), parameters); if (paramOutArray != null) { GxUserType handlerOutput = (GxUserType) paramOutArray[0]; diff --git a/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/JSONHelper.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/JSONHelper.java new file mode 100644 index 000000000..e67359e64 --- /dev/null +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/JSONHelper.java @@ -0,0 +1,36 @@ +package com.genexus.cloud.serverless; + +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.genexus.cloud.serverless.model.EventMessage; +import com.genexus.cloud.serverless.model.EventMessageProperty; +import com.genexus.diagnostics.core.ILogger; +import com.genexus.diagnostics.core.LogManager; + +import java.text.SimpleDateFormat; + +public class JSONHelper { + + private static final ILogger logger = LogManager.getLogger(JSONHelper.class); + + public static String toJSONString(Object dtoObject) { + try { + + JsonMapper jsonMapper = new JsonMapper(); + jsonMapper.registerModule(new JavaTimeModule()); + jsonMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); + jsonMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + String json = jsonMapper.writeValueAsString(dtoObject); + return json; + } + catch (Exception e) { + logger.error("Failed to serialize object to jsonString", e); + } + return ""; + } + + public static void addEventMessageProperty(EventMessage msg, String key, String value) { + msg.getMessageProperties().add(new EventMessageProperty(key, value)); + } +} diff --git a/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessBaseEventHandler.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessBaseEventHandler.java new file mode 100644 index 000000000..69ddeeb1b --- /dev/null +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessBaseEventHandler.java @@ -0,0 +1,85 @@ +package com.genexus.cloud.serverless; + +import com.genexus.ApplicationContext; +import com.genexus.ModelContext; +import com.genexus.cloud.serverless.model.EventMessageResponse; +import com.genexus.cloud.serverless.model.EventMessages; +import com.genexus.cloud.serverless.model.EventMessagesList; +import com.genexus.diagnostics.core.ILogger; +import com.genexus.specific.java.Connect; +import com.genexus.util.IniFile; + +public abstract class ServerlessBaseEventHandler { + + protected T functionConfiguration; + protected static ILogger logger = null; + protected Class entryPointClass = null; + protected static GXProcedureExecutor executor; + private static final String GX_APPLICATION_CLASS = "GXcfg"; + + protected abstract T createFunctionConfiguration(); + protected abstract T createFunctionConfiguration(String className); + protected abstract T createFunctionConfiguration(String functionName, String className); + + protected abstract void InitializeServerlessConfig() throws Exception; + public ServerlessBaseEventHandler() throws Exception { + this.functionConfiguration = createFunctionConfiguration(); + initialize(); + } + public ServerlessBaseEventHandler(String className) throws Exception { + this.functionConfiguration = createFunctionConfiguration(className); + initialize(); + } + public ServerlessBaseEventHandler(String functionName, String className) throws Exception { + this.functionConfiguration = createFunctionConfiguration(functionName,className); + initialize(); + } + private void initialize() throws Exception { + + logger = com.genexus.specific.java.LogManager.initialize(".", ServerlessBaseEventHandler.class); + Connect.init(); + + IniFile config = com.genexus.ConfigFileFinder.getConfigFile(null, "client.cfg", null); + String packageName = config.getProperty("Client", "PACKAGE", null); + String cfgClassName = packageName.isEmpty() ? GX_APPLICATION_CLASS : String.format("%s.%s", packageName, GX_APPLICATION_CLASS); + try { + Class cfgClass; + cfgClass = Class.forName(cfgClassName); + logger.debug("Finished loading cfgClassName " + cfgClassName); + com.genexus.Application.init(cfgClass); + ApplicationContext.getInstance().setPoolConnections(true); + } catch (Exception e) { + logger.error(String.format("Failed to initialize GX AppConfig Class: %s", cfgClassName), e); + throw e; + } + InitializeServerlessConfig(); + } + + protected EventMessageResponse dispatchEvent(EventMessages eventMessages, String rawMessageBody) throws Exception { + EventMessagesList eventMessagesList = new EventMessagesList(); + return dispatchEvent(eventMessages,eventMessagesList,rawMessageBody); + } + + protected EventMessageResponse dispatchEvent(EventMessages eventMessages, EventMessagesList eventMessagesList, String rawMessageBody) throws Exception { + String jsonStringMessages = JSONHelper.toJSONString(eventMessages); + + if (logger.isDebugEnabled()) { + logger.debug(String.format("dispatchEventMessages (%s) - serialized messages: %s", functionConfiguration.getGXClassName(), jsonStringMessages)); + } + ModelContext modelContext = new ModelContext(entryPointClass); + EventMessageResponse response; + try { + response = executor.execute(modelContext, eventMessages, eventMessagesList, rawMessageBody); + } catch (Exception e) { + logger.error(String.format("dispatchEventmessages - program '%s' execution error", entryPointClass.getName()), e); + throw e; + } + if (response.hasFailed()) { + logger.info("dispatchEventmessages - messages not handled with success: " + response.getErrorMessage()); + } else { + logger.debug("dispatchEventmessages - message handled with success"); + } + return response; + } +} + diff --git a/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessFunctionConfiguration.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessFunctionConfiguration.java new file mode 100644 index 000000000..e68ca8d28 --- /dev/null +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/ServerlessFunctionConfiguration.java @@ -0,0 +1,7 @@ +package com.genexus.cloud.serverless; + +public abstract class ServerlessFunctionConfiguration { + public ServerlessFunctionConfiguration() {} + public abstract boolean isValidConfiguration(); + public abstract String getGXClassName(); +} diff --git a/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java new file mode 100644 index 000000000..c4e395ca2 --- /dev/null +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/exception/FunctionConfigurationException.java @@ -0,0 +1,7 @@ +package com.genexus.cloud.serverless.exception; + +public class FunctionConfigurationException extends Exception { + public FunctionConfigurationException(String exceptionMessage) { + super(exceptionMessage); + } +} diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java similarity index 86% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java index bdbdc5b84..b90f6ec60 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessage.java @@ -1,13 +1,17 @@ package com.genexus.cloud.serverless.model; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; public class EventMessage { @JsonProperty("EventMessageId") private String messageId; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "UTC") @JsonProperty("EventMessageDate") private Date messageDate; diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageProperty.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageProperty.java similarity index 100% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageProperty.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageProperty.java diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageResponse.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageResponse.java similarity index 100% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageResponse.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageResponse.java diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java similarity index 78% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java index 8421202d2..f5af48b0f 100644 --- a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessageSourceType.java @@ -5,4 +5,6 @@ public class EventMessageSourceType { public static String SERVICE_BUS_MESSAGE = "ServiceBusMessage"; public static String TIMER = "Timer"; public static String STREAM_MESSAGE = "StreamMessage"; + public static String BLOB = "Blob"; + public static String COSMOSDB = "CosmosDB"; } diff --git a/gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessages.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessages.java similarity index 100% rename from gxawsserverless/src/main/java/com/genexus/cloud/serverless/model/EventMessages.java rename to gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessages.java diff --git a/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessagesList.java b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessagesList.java new file mode 100644 index 000000000..698539d15 --- /dev/null +++ b/gxserverlesscommon/src/main/java/com/genexus/cloud/serverless/model/EventMessagesList.java @@ -0,0 +1,15 @@ +package com.genexus.cloud.serverless.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.ArrayList; +import java.util.List; + +public class EventMessagesList { + @JsonProperty("items") + List items = new ArrayList(); + + public void addItem(String item) { + items.add(item); + } +} diff --git a/java/sample.db b/java/sample.db index ac3e81ee8..0b345c000 100644 Binary files a/java/sample.db and b/java/sample.db differ diff --git a/java/src/main/java/com/genexus/GxRestService.java b/java/src/main/java/com/genexus/GxRestService.java index 72d1ff71a..b78b71769 100644 --- a/java/src/main/java/com/genexus/GxRestService.java +++ b/java/src/main/java/com/genexus/GxRestService.java @@ -5,6 +5,7 @@ import java.util.Date; import com.genexus.diagnostics.core.ILogger; +import com.genexus.diagnostics.core.LogManager; import com.genexus.internet.MsgList; import com.genexus.security.GXResult; import com.genexus.security.GXSecurityProvider; @@ -80,7 +81,7 @@ public void init(String requestMethod, IHttpServletRequest myServletRequest, IHt private void initLogger(IServletContext myContext) { if (logger == null) { - logger = com.genexus.specific.java.LogManager.initialize(myContext.getRealPath("/"), GxRestService.class); + logger = LogManager.getLogger(GxRestService.class); } } diff --git a/pom.xml b/pom.xml index 7f3873ca0..c3721d457 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,8 @@ gxwebsocket gxwebsocketjakarta gxawsserverless + gxserverlesscommon + gxazureserverless androidreports gxqueue gxqueue-awssqs