Skip to content

Commit

Permalink
Merge pull request #11 from axonivy-market/beanApi
Browse files Browse the repository at this point in the history
XIVY-12538 migrate to 11.2 program API
  • Loading branch information
ivy-rew committed Nov 9, 2023
2 parents c38f864 + 2637ace commit c08b8e4
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 57 deletions.
32 changes: 16 additions & 16 deletions kafka-connector-demo/processes/Demo.p.json
@@ -1,5 +1,5 @@
{
"$schema" : "https://json-schema.axonivy.com/process/11.2.1/process.json",
"$schema" : "https://json-schema.axonivy.com/process/11.2.2/process.json",
"id" : "18833AFFFC2AC1DD",
"config" : {
"data" : "com.axonivy.connector.kafka.demo.DemoData"
Expand Down Expand Up @@ -36,11 +36,11 @@
"name" : "TopicA",
"config" : {
"javaClass" : "com.axonivy.connector.kafka.KafkaStartEventBean",
"userConfig" : [
"kafkaConfigurationNameField=localhost",
"synchronousField=false",
"topicPatternField=TopicA"
],
"userConfig" : {
"kafkaConfigurationNameField" : "localhost",
"synchronousField" : "false",
"topicPatternField" : "TopicA"
},
"link" : "eventLink.ivp"
},
"visual" : {
Expand All @@ -57,11 +57,11 @@
"name" : "TopicS",
"config" : {
"javaClass" : "com.axonivy.connector.kafka.KafkaStartEventBean",
"userConfig" : [
"kafkaConfigurationNameField=localhost",
"synchronousField=true",
"topicPatternField=TopicS"
],
"userConfig" : {
"kafkaConfigurationNameField" : "localhost",
"synchronousField" : "true",
"topicPatternField" : "TopicS"
},
"link" : "eventLink2.ivp"
},
"visual" : {
Expand All @@ -78,11 +78,11 @@
"name" : "TopicB",
"config" : {
"javaClass" : "com.axonivy.connector.kafka.KafkaStartEventBean",
"userConfig" : [
"kafkaConfigurationNameField=localhost",
"synchronousField=false",
"topicPatternField=TopicB"
],
"userConfig" : {
"kafkaConfigurationNameField" : "localhost",
"synchronousField" : "false",
"topicPatternField" : "TopicB"
},
"link" : "eventLink3.ivp"
},
"visual" : {
Expand Down
@@ -1,5 +1,5 @@
{
"$schema" : "https://json-schema.axonivy.com/process/11.2.1/process.json",
"$schema" : "https://json-schema.axonivy.com/process/11.2.2/process.json",
"id" : "18834AC5BA150030",
"kind" : "HTML_DIALOG",
"config" : {
Expand Down
2 changes: 1 addition & 1 deletion kafka-connector/processes/KafkaConnector.p.json
@@ -1,5 +1,5 @@
{
"$schema" : "https://json-schema.axonivy.com/process/11.2.1/process.json",
"$schema" : "https://json-schema.axonivy.com/process/11.2.2/process.json",
"id" : "188492F5DFE91EDF",
"kind" : "CALLABLE_SUB",
"config" : {
Expand Down
Expand Up @@ -23,13 +23,12 @@
import ch.ivyteam.ivy.process.eventstart.IProcessStartEventBeanRuntime;
import ch.ivyteam.ivy.process.eventstart.IProcessStartEventResponse;
import ch.ivyteam.ivy.process.eventstart.IProcessStarter;
import ch.ivyteam.ivy.process.extension.ProgramConfig;
import ch.ivyteam.ivy.process.extension.ui.ExtensionUiBuilder;
import ch.ivyteam.ivy.process.extension.ui.IUiFieldEditor;
import ch.ivyteam.ivy.process.extension.ui.UiEditorExtension;
import ch.ivyteam.ivy.request.RequestException;
import ch.ivyteam.ivy.service.ServiceException;
import ch.ivyteam.log.Logger;
import ch.ivyteam.util.CleanProperties;

/**
* {@link IProcessStartEventBean} to listen to Apache Kafka topics.
Expand All @@ -38,22 +37,19 @@ public class KafkaStartEventBean extends AbstractProcessStartEventBean {
private static final String KAFKA_CONFIGURATION_NAME_FIELD = "kafkaConfigurationNameField";
private static final String TOPIC_PATTERN_FIELD = "topicPatternField";
private static final String SYNCHRONOUS_FIELD = "synchronousField";
private Properties beanConfiguration;
private KafkaReader reader = new KafkaReader();

public KafkaStartEventBean() {
super("KafkaStartEventBean", "Listen on Kafka topics");
}

@Override
public void initialize(IProcessStartEventBeanRuntime eventRuntime, String configuration) {
public void initialize(IProcessStartEventBeanRuntime eventRuntime, ProgramConfig configuration) {
super.initialize(eventRuntime, configuration);
log().debug("Initializing with configuration: {0}", getConfiguration());
log().debug("Initializing with configuration: {0}", configuration);
eventRuntime.poll().disable();
eventRuntime.threads().boundToEventLifecycle(reader::run);
beanConfiguration = new CleanProperties(getConfiguration()).getWrappedProperties();
}


@Override
public synchronized void start(IProgressMonitor monitor) throws ServiceException {
Expand Down Expand Up @@ -95,15 +91,15 @@ protected Logger log() {
}

protected String getKafkaConfigurationName() {
return beanConfiguration.getProperty(KAFKA_CONFIGURATION_NAME_FIELD);
return getConfig().get(KAFKA_CONFIGURATION_NAME_FIELD);
}

protected String getTopicPattern() {
return beanConfiguration.getProperty(TOPIC_PATTERN_FIELD);
return getConfig().get(TOPIC_PATTERN_FIELD);
}

protected boolean isSynchronous() {
String synchronousString = beanConfiguration.getProperty(SYNCHRONOUS_FIELD);
String synchronousString = getConfig().get(SYNCHRONOUS_FIELD);
return StringUtils.isNotBlank(synchronousString) && Boolean.valueOf(synchronousString);
}

Expand Down Expand Up @@ -227,20 +223,17 @@ private synchronized void closeConsumer() {
* The editor to configure a {@link KafkaStartEventBean}.
*/
public static class Editor extends UiEditorExtension {
private IUiFieldEditor topicPatternField;
private IUiFieldEditor synchronousField;
private IUiFieldEditor kafkaConfigurationNameField;

@Override
public void initUiFields(ExtensionUiBuilder ui) {
ui.label("Topic Pattern:").create();
topicPatternField = ui.textField().create();
ui.textField(TOPIC_PATTERN_FIELD).create();

ui.label("Synchronous:").create();
synchronousField = ui.textField().create();
ui.textField(SYNCHRONOUS_FIELD).create();

ui.label("Configuration Base:").create();
kafkaConfigurationNameField = ui.textField().create();
ui.textField(KAFKA_CONFIGURATION_NAME_FIELD).create();

String helpTopic = String.format("""
Topic pattern:
Expand Down Expand Up @@ -268,28 +261,5 @@ public void initUiFields(ExtensionUiBuilder ui) {
""", KafkaService.get().getKafkaGlobalVariableName());
ui.label(helpTopic).multiline().create();
}

@Override
protected void loadUiDataFromConfiguration() {
topicPatternField.setText(getBeanConfigurationProperty(TOPIC_PATTERN_FIELD));
String synchronous = getBeanConfigurationProperty(SYNCHRONOUS_FIELD);
if(StringUtils.isBlank(synchronous) || !Boolean.valueOf(synchronous)) {
Logger.getLogger(KafkaStartEventBean.class).warn("Correcting synchronous value '" + synchronous + "' to false");
synchronous = "false";
}
synchronousField.setText(synchronous);
kafkaConfigurationNameField.setText(getBeanConfigurationProperty(KAFKA_CONFIGURATION_NAME_FIELD));
}

@Override
protected boolean saveUiDataToConfiguration() {
// Clear the bean configuration and all its properties to flush outdated configurations.
clearBeanConfiguration();

setBeanConfigurationProperty(TOPIC_PATTERN_FIELD, topicPatternField.getText());
setBeanConfigurationProperty(SYNCHRONOUS_FIELD, synchronousField.getText());
setBeanConfigurationProperty(KAFKA_CONFIGURATION_NAME_FIELD, kafkaConfigurationNameField.getText());
return true;
}
}
}

0 comments on commit c08b8e4

Please sign in to comment.