From c458c06df0560e0db3dc956ba3a1097ca5ca2281 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Fri, 27 Nov 2020 23:18:37 +0530 Subject: [PATCH 01/17] Added templates and action for queue generation --- resources/META-INF/plugin.xml | 1 + .../Magento Queue Communication XML.xml.ft | 9 + .../Magento Queue Communication XML.xml.html | 0 .../Magento Queue Consumer XML.xml.ft | 11 + .../Magento Queue Consumer XML.xml.html | 0 .../Magento Queue Publisher XML.xml.ft | 7 + .../Magento Queue Publisher XML.xml.html | 0 .../Magento Queue Topology XML.xml.ft | 10 + .../Magento Queue Topology XML.xml.html | 0 resources/magento2/validation.properties | 2 + .../generation/NewMessageQueueAction.java | 52 +++++ .../dialog/NewMessageQueueDialog.form | 54 +++++ .../dialog/NewMessageQueueDialog.java | 188 ++++++++++++++++++ .../validator/annotation/RuleRegistry.java | 4 + .../validator/rule/AlphaWithDashRule.java | 17 ++ .../validator/rule/AlphaWithPeriodRule.java | 17 ++ .../idea/magento2plugin/util/RegExUtil.java | 6 + 17 files changed, 378 insertions(+) create mode 100644 resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft create mode 100644 resources/fileTemplates/internal/Magento Queue Communication XML.xml.html create mode 100644 resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft create mode 100644 resources/fileTemplates/internal/Magento Queue Consumer XML.xml.html create mode 100644 resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft create mode 100644 resources/fileTemplates/internal/Magento Queue Publisher XML.xml.html create mode 100644 resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft create mode 100644 resources/fileTemplates/internal/Magento Queue Topology XML.xml.html create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index cb127831f..6f18c514e 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -69,6 +69,7 @@ + diff --git a/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft new file mode 100644 index 000000000..aa106733e --- /dev/null +++ b/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft @@ -0,0 +1,9 @@ + + + + + + diff --git a/resources/fileTemplates/internal/Magento Queue Communication XML.xml.html b/resources/fileTemplates/internal/Magento Queue Communication XML.xml.html new file mode 100644 index 000000000..e69de29bb diff --git a/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft new file mode 100644 index 000000000..db2cfd377 --- /dev/null +++ b/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft @@ -0,0 +1,11 @@ + + + + diff --git a/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.html b/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.html new file mode 100644 index 000000000..e69de29bb diff --git a/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft new file mode 100644 index 000000000..c5903a107 --- /dev/null +++ b/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft @@ -0,0 +1,7 @@ + + + + + + diff --git a/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.html b/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.html new file mode 100644 index 000000000..e69de29bb diff --git a/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft new file mode 100644 index 000000000..1c4438438 --- /dev/null +++ b/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft @@ -0,0 +1,10 @@ + + + + + + diff --git a/resources/fileTemplates/internal/Magento Queue Topology XML.xml.html b/resources/fileTemplates/internal/Magento Queue Topology XML.xml.html new file mode 100644 index 000000000..e69de29bb diff --git a/resources/magento2/validation.properties b/resources/magento2/validation.properties index d836d2655..6aa21ac95 100644 --- a/resources/magento2/validation.properties +++ b/resources/magento2/validation.properties @@ -3,6 +3,8 @@ validator.box.notEmpty=The {0} field must contain a valid selection from the dro validator.package.validPath=Please specify a valid Magento 2 installation path validator.alphaNumericCharacters=The {0} field must contain letters and numbers only validator.alphaNumericAndUnderscoreCharacters={0} must contain letters, numbers and underscores only +validator.alphaAndPeriodCharacters=The {0} field must contain alphabets and periods only +validator.alphaAndDashCharacters=The {0} field must contain alphabets and dashes only validator.alreadyDeclared={0} is already declared in the {1} module validator.startWithNumberOrCapitalLetter=The {0} field must start with a number or a capital letter validator.onlyNumbers=The {0} field must contain numbers only diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java new file mode 100644 index 000000000..40352699b --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java @@ -0,0 +1,52 @@ +package com.magento.idea.magento2plugin.actions.generation; + +import com.intellij.ide.IdeView; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDirectory; +import com.magento.idea.magento2plugin.MagentoIcons; +import com.magento.idea.magento2plugin.actions.generation.dialog.NewMessageQueueDialog; +import org.jetbrains.annotations.NotNull; + +public class NewMessageQueueAction extends AnAction { + public static final String ACTION_NAME = "Magento 2 Message Queue"; + public static final String ACTION_DESCRIPTION = "Create a new Magento 2 Message Queue"; + + /** + * Constructor. + */ + public NewMessageQueueAction() { + super(ACTION_NAME, ACTION_DESCRIPTION, MagentoIcons.MODULE); + } + + @Override + public void actionPerformed(@NotNull final AnActionEvent event) { + final DataContext dataContext = event.getDataContext(); + + final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext); + if (view == null) { + return; + } + + final Project project = CommonDataKeys.PROJECT.getData(dataContext); + if (project == null) { + return; + } + + final PsiDirectory directory = view.getOrChooseDirectory(); + if (directory == null) { + return; + } + + NewMessageQueueDialog.open(project, directory); + } + + @Override + public boolean isDumbAware() { + return false; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form new file mode 100644 index 000000000..4525dee87 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form @@ -0,0 +1,54 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java new file mode 100644 index 000000000..39a006c19 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -0,0 +1,188 @@ +package com.magento.idea.magento2plugin.actions.generation.dialog; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDirectory; +import com.magento.idea.magento2plugin.actions.generation.NewDataModelAction; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithDashRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithPeriodRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericWithUnderscoreRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.Lowercase; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; +import com.magento.idea.magento2plugin.bundles.CommonBundle; +import com.magento.idea.magento2plugin.bundles.ValidatorBundle; +import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.KeyStroke; + +public class NewMessageQueueDialog extends AbstractDialog { + private static final String TOPIC_NAME = "Topic Name"; + private static final String HANDLER_NAME = "Handler Name"; + private static final String HANDLER_TYPE = "Handler Type"; + private static final String HANDLER_METHOD = "Handler Method"; + private static final String CONSUMER_NAME = "Consumer Name"; + private static final String MAX_MESSAGES = "Maximum Messages"; + private static final String CONSUMER_TYPE = "Consumer Type"; + private static final String CONNECTION_NAME = "Connection Name"; + private static final String EXCHANGE_NAME = "Exchange Name"; + private static final String QUEUE_NAME = "Queue Name"; + + /* TODO: Improve validation */ + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, TOPIC_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, + message = {AlphaWithPeriodRule.MESSAGE, TOPIC_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, + message = {Lowercase.MESSAGE, TOPIC_NAME}) + private JTextField topicName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, HANDLER_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHANUMERIC_WITH_UNDERSCORE, + message = {AlphanumericWithUnderscoreRule.MESSAGE, HANDLER_NAME}) + private JTextField handlerName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, + message = {PhpClassRule.MESSAGE, HANDLER_TYPE}) + private JTextField handlerType; + + /* TODO: Rule to validate PHP method? */ + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, HANDLER_METHOD}) + private JTextField handlerMethod; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, CONSUMER_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, + message = {AlphaWithPeriodRule.MESSAGE, CONSUMER_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, + message = {Lowercase.MESSAGE, CONSUMER_NAME}) + private JTextField consumerName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, MAX_MESSAGES}) + @FieldValidation(rule = RuleRegistry.NUMERIC, + message = {NumericRule.MESSAGE, MAX_MESSAGES}) + private JTextField maxMessages; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, CONSUMER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, + message = {PhpClassRule.MESSAGE, CONSUMER_TYPE}) + private JTextField consumerType; + + /* TODO: Can this be made a dropdown? */ + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, CONNECTION_NAME}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, + message = {PhpClassRule.MESSAGE, CONNECTION_NAME}) + private JTextField connectionName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHA_WITH_DASH, + message = {AlphaWithDashRule.MESSAGE, EXCHANGE_NAME}) + private JTextField exchangeName; + + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, + message = {AlphaWithPeriodRule.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, + message = {Lowercase.MESSAGE, QUEUE_NAME}) + private JTextField queueName; + + private JPanel contentPanel; + private JButton buttonOK; + private JButton buttonCancel; + + private final Project project; + private final String moduleName; + private final ValidatorBundle validatorBundle; + private final CommonBundle commonBundle; + + /** + * Constructor. + */ + public NewMessageQueueDialog(Project project, PsiDirectory directory) { + super(); + + this.project = project; + this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); + this.validatorBundle = new ValidatorBundle(); + this.commonBundle = new CommonBundle(); + + setContentPane(contentPanel); + setModal(true); + setTitle(NewDataModelAction.ACTION_DESCRIPTION); + getRootPane().setDefaultButton(buttonOK); + + buttonOK.addActionListener((final ActionEvent event) -> onOK()); + buttonCancel.addActionListener((final ActionEvent event) -> onCancel()); + + // call onCancel() on dialog close + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(final WindowEvent event) { + onCancel(); + } + }); + + // call onCancel() on ESCAPE KEY press + contentPanel.registerKeyboardAction( + (final ActionEvent event) -> onCancel(), + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT + ); + } + + /** + * Opens the dialog window. + */ + public static void open(final Project project, final PsiDirectory directory) { + final NewMessageQueueDialog dialog = new NewMessageQueueDialog(project, directory); + dialog.pack(); + dialog.centerDialog(dialog); + dialog.setVisible(true); + } + + @Override + public void onCancel() { + dispose(); + } + + private void onOK() { + if (validateFormFields()) { + generateCommunication(); + generateConsumer(); + generateTopology(); + generatePublisher(); + this.setVisible(false); + } + } + + private void generateCommunication() { + } + + private void generateConsumer() { + } + + private void generateTopology() { + } + + private void generatePublisher() { + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java index e0b7fa5bd..0e08ea0ec 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java @@ -6,6 +6,8 @@ package com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AclResourceIdRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithDashRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithPeriodRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphanumericWithUnderscoreRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.BoxNotEmptyRule; @@ -30,6 +32,8 @@ public enum RuleRegistry { ROUTE_ID(RouteIdRule.class), ALPHANUMERIC(AlphanumericRule.class), ALPHANUMERIC_WITH_UNDERSCORE(AlphanumericWithUnderscoreRule.class), + ALPHA_WITH_PERIOD(AlphaWithPeriodRule.class), + ALPHA_WITH_DASH(AlphaWithDashRule.class), DIRECTORY(DirectoryRule.class), PHP_DIRECTORY(PhpDirectoryRule.class), IDENTIFIER(IdentifierRule.class), diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java new file mode 100644 index 000000000..15fbd0ccf --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java @@ -0,0 +1,17 @@ +package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; + +import com.magento.idea.magento2plugin.util.RegExUtil; + +public class AlphaWithDashRule implements ValidationRule { + public static final String MESSAGE = "validator.alphaAndDashCharacters"; + private static final ValidationRule INSTANCE = new AlphaWithDashRule(); + + @Override + public boolean check(final String value) { + return value.matches(RegExUtil.ALPHA_WITH_DASH); + } + + public static ValidationRule getInstance() { + return INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java new file mode 100644 index 000000000..599420bf9 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java @@ -0,0 +1,17 @@ +package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; + +import com.magento.idea.magento2plugin.util.RegExUtil; + +public class AlphaWithPeriodRule implements ValidationRule { + public static final String MESSAGE = "validator.alphaAndPeriodCharacters"; + private static final ValidationRule INSTANCE = new AlphaWithPeriodRule(); + + @Override + public boolean check(final String value) { + return value.matches(RegExUtil.ALPHA_WITH_PERIOD); + } + + public static ValidationRule getInstance() { + return INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/util/RegExUtil.java b/src/com/magento/idea/magento2plugin/util/RegExUtil.java index 2ca243d6a..96b57d73a 100644 --- a/src/com/magento/idea/magento2plugin/util/RegExUtil.java +++ b/src/com/magento/idea/magento2plugin/util/RegExUtil.java @@ -16,6 +16,12 @@ public class RegExUtil { public static final String ALPHANUMERIC_WITH_UNDERSCORE = "[a-zA-Z0-9_]*"; + public static final String ALPHA_WITH_PERIOD + = "[a-zA-Z.]*"; + + public static final String ALPHA_WITH_DASH + = "[a-zA-Z-]*"; + public static final String NUMERIC = "[0-9]*"; From d04537a14824d3e7bbe4abaa4cfc4bea3a37ccd8 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 28 Nov 2020 19:50:39 +0530 Subject: [PATCH 02/17] Added data models for queue generator --- .../data/QueueCommunicationData.java | 36 ++++++ .../generation/data/QueueConsumerData.java | 43 +++++++ .../generation/data/QueuePublisherData.java | 25 ++++ .../generation/data/QueueTopologyData.java | 31 +++++ .../dialog/NewMessageQueueDialog.java | 114 ++++++++++++++++-- 5 files changed, 237 insertions(+), 12 deletions(-) create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java new file mode 100644 index 000000000..21089f9ac --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java @@ -0,0 +1,36 @@ +package com.magento.idea.magento2plugin.actions.generation.data; + +public class QueueCommunicationData { + private String topicName; + private String handlerName; + private String handlerType; + private String handlerMethod; + + public QueueCommunicationData( + String topicName, + String handlerName, + String handlerType, + String handlerMethod + ) { + this.topicName = topicName; + this.handlerName = handlerName; + this.handlerType = handlerType; + this.handlerMethod = handlerMethod; + } + + public String getTopicName() { + return topicName; + } + + public String getHandlerName() { + return handlerName; + } + + public String getHandlerType() { + return handlerType; + } + + public String getHandlerMethod() { + return handlerMethod; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java new file mode 100644 index 000000000..15a678d35 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java @@ -0,0 +1,43 @@ +package com.magento.idea.magento2plugin.actions.generation.data; + +public class QueueConsumerData { + private String consumerName; + private String queueName; + private String consumerType; + private String maxMessages; + private String connectionName; + + public QueueConsumerData( + String consumerName, + String queueName, + String consumerType, + String maxMessages, + String connectionName + ) { + this.consumerName = consumerName; + this.queueName = queueName; + this.consumerType = consumerType; + this.maxMessages = maxMessages; + this.connectionName = connectionName; + } + + public String getConsumerName() { + return consumerName; + } + + public String getQueueName() { + return queueName; + } + + public String getConsumerType() { + return consumerType; + } + + public String getMaxMessages() { + return maxMessages; + } + + public String getConnectionName() { + return connectionName; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java new file mode 100644 index 000000000..9071e95cd --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java @@ -0,0 +1,25 @@ +package com.magento.idea.magento2plugin.actions.generation.data; + +public class QueuePublisherData { + private String topicName; + private String connectionName; + private String exchangeName; + + public QueuePublisherData(String topicName, String connectionName, String exchangeName) { + this.topicName = topicName; + this.connectionName = connectionName; + this.exchangeName = exchangeName; + } + + public String getTopicName() { + return topicName; + } + + public String getConnectionName() { + return connectionName; + } + + public String getExchangeName() { + return exchangeName; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java new file mode 100644 index 000000000..b1d5b7a7c --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -0,0 +1,31 @@ +package com.magento.idea.magento2plugin.actions.generation.data; + +public class QueueTopologyData { + private String exchangeName; + private String bindingId; + private String bindingTopic; + private String bindingQueue; + + public QueueTopologyData(String exchangeName, String bindingId, String bindingTopic, String bindingQueue) { + this.exchangeName = exchangeName; + this.bindingId = bindingId; + this.bindingTopic = bindingTopic; + this.bindingQueue = bindingQueue; + } + + public String getExchangeName() { + return exchangeName; + } + + public String getBindingId() { + return bindingId; + } + + public String getBindingTopic() { + return bindingTopic; + } + + public String getBindingQueue() { + return bindingQueue; + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index 39a006c19..acc4afeee 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -3,6 +3,11 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDirectory; import com.magento.idea.magento2plugin.actions.generation.NewDataModelAction; +import com.magento.idea.magento2plugin.actions.generation.NewMessageQueueAction; +import com.magento.idea.magento2plugin.actions.generation.data.QueueCommunicationData; +import com.magento.idea.magento2plugin.actions.generation.data.QueueConsumerData; +import com.magento.idea.magento2plugin.actions.generation.data.QueuePublisherData; +import com.magento.idea.magento2plugin.actions.generation.data.QueueTopologyData; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.FieldValidation; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.annotation.RuleRegistry; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.AlphaWithDashRule; @@ -31,11 +36,13 @@ public class NewMessageQueueDialog extends AbstractDialog { private static final String HANDLER_TYPE = "Handler Type"; private static final String HANDLER_METHOD = "Handler Method"; private static final String CONSUMER_NAME = "Consumer Name"; - private static final String MAX_MESSAGES = "Maximum Messages"; + private static final String QUEUE_NAME = "Queue Name"; private static final String CONSUMER_TYPE = "Consumer Type"; + private static final String MAX_MESSAGES = "Maximum Messages"; private static final String CONNECTION_NAME = "Connection Name"; private static final String EXCHANGE_NAME = "Exchange Name"; - private static final String QUEUE_NAME = "Queue Name"; + private static final String BINDING_ID = "Binding ID"; + private static final String BINDING_TOPIC = "Binding Topic"; /* TODO: Improve validation */ @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -72,10 +79,12 @@ public class NewMessageQueueDialog extends AbstractDialog { private JTextField consumerName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, MAX_MESSAGES}) - @FieldValidation(rule = RuleRegistry.NUMERIC, - message = {NumericRule.MESSAGE, MAX_MESSAGES}) - private JTextField maxMessages; + message = {NotEmptyRule.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, + message = {AlphaWithPeriodRule.MESSAGE, QUEUE_NAME}) + @FieldValidation(rule = RuleRegistry.LOWERCASE, + message = {Lowercase.MESSAGE, QUEUE_NAME}) + private JTextField queueName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONSUMER_TYPE}) @@ -83,6 +92,12 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {PhpClassRule.MESSAGE, CONSUMER_TYPE}) private JTextField consumerType; + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, MAX_MESSAGES}) + @FieldValidation(rule = RuleRegistry.NUMERIC, + message = {NumericRule.MESSAGE, MAX_MESSAGES}) + private JTextField maxMessages; + /* TODO: Can this be made a dropdown? */ @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONNECTION_NAME}) @@ -97,12 +112,15 @@ public class NewMessageQueueDialog extends AbstractDialog { private JTextField exchangeName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, QUEUE_NAME}) - @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, - message = {AlphaWithPeriodRule.MESSAGE, QUEUE_NAME}) - @FieldValidation(rule = RuleRegistry.LOWERCASE, - message = {Lowercase.MESSAGE, QUEUE_NAME}) - private JTextField queueName; + message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) + @FieldValidation(rule = RuleRegistry.ALPHANUMERIC_WITH_UNDERSCORE, + message = {AlphaWithDashRule.MESSAGE, EXCHANGE_NAME}) + private JTextField bindingId; + + /* TODO: New validation rule */ + @FieldValidation(rule = RuleRegistry.NOT_EMPTY, + message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) + private JTextField bindingTopic; private JPanel contentPanel; private JButton buttonOK; @@ -175,14 +193,86 @@ private void onOK() { } private void generateCommunication() { + new QueueCommunicationGenerator(project, new QueueCommunicationData( + getTopicName(), + getHandlerName(), + getHandlerType(), + getHandlerMethod() + )).generate(NewMessageQueueAction.ACTION_NAME, true); } private void generateConsumer() { + new QueueConsumerGenerator(project, new QueueConsumerData( + getConsumerName(), + getQueueName(), + getConsumerType(), + getMaxMessages(), + getConnectionName() + )).generate(NewMessageQueueAction.ACTION_NAME, true); } private void generateTopology() { + new QueueTopologyGenerator(project, new QueueTopologyData( + getExchangeName(), + getBindingId(), + getBindingTopic(), + getQueueName() + )).generate(NewMessageQueueAction.ACTION_NAME, true); } private void generatePublisher() { + new QueuePublisherGenerator(project, new QueuePublisherData( + getTopicName(), + getConnectionName(), + getExchangeName() + )).generate(NewMessageQueueAction.ACTION_NAME, true); + } + + public String getTopicName() { + return topicName.getText().trim(); + } + + public String getHandlerName() { + return handlerName.getText().trim(); + } + + public String getHandlerType() { + return handlerType.getText().trim(); + } + + public String getHandlerMethod() { + return handlerMethod.getText().trim(); + } + + public String getConsumerName() { + return consumerName.getText().trim(); + } + + public String getQueueName() { + return queueName.getText().trim(); + } + + public String getConsumerType() { + return consumerType.getText().trim(); + } + + public String getMaxMessages() { + return maxMessages.getText().trim(); + } + + public String getConnectionName() { + return connectionName.getText().trim(); + } + + public String getExchangeName() { + return exchangeName.getText().trim(); + } + + public String getBindingId() { + return bindingId.getText().trim(); + } + + public String getBindingTopic() { + return bindingTopic.getText().trim(); } } From 96b5816dbab13c01be047aac5e80dce32e990702 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Thu, 3 Dec 2020 20:16:57 +0530 Subject: [PATCH 03/17] Added generator for communication.xml --- .../Magento Queue Communication XML.xml.ft | 5 - .../data/QueueCommunicationData.java | 9 +- .../generation/data/QueueConsumerData.java | 9 +- .../generation/data/QueuePublisherData.java | 13 +- .../generation/data/QueueTopologyData.java | 14 +- .../dialog/NewMessageQueueDialog.form | 231 ++++++++++++++++-- .../dialog/NewMessageQueueDialog.java | 33 +-- .../QueueCommunicationGenerator.java | 101 ++++++++ .../util/FindOrCreateCommunicationXml.java | 19 ++ .../util/FindOrCreateQueueConsumerXml.java | 19 ++ .../util/FindOrCreateQueuePublisherXml.java | 19 ++ .../util/FindOrCreateQueueTopologyXml.java | 19 ++ .../generator/util/FindOrCreateQueueXml.java | 70 ++++++ .../magento/files/QueueCommunicationXml.java | 24 ++ .../magento/files/QueueConsumerXml.java | 24 ++ .../magento/files/QueuePublisherXml.java | 24 ++ .../magento/files/QueueTopologyXml.java | 24 ++ 17 files changed, 619 insertions(+), 38 deletions(-) create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java create mode 100644 src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java create mode 100644 src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java create mode 100644 src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java create mode 100644 src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java diff --git a/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft index aa106733e..efc3ec094 100644 --- a/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft +++ b/resources/fileTemplates/internal/Magento Queue Communication XML.xml.ft @@ -1,9 +1,4 @@ - - - diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java index 21089f9ac..6b20bb980 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java @@ -5,17 +5,20 @@ public class QueueCommunicationData { private String handlerName; private String handlerType; private String handlerMethod; + private String moduleName; public QueueCommunicationData( String topicName, String handlerName, String handlerType, - String handlerMethod + String handlerMethod, + String moduleName ) { this.topicName = topicName; this.handlerName = handlerName; this.handlerType = handlerType; this.handlerMethod = handlerMethod; + this.moduleName = moduleName; } public String getTopicName() { @@ -33,4 +36,8 @@ public String getHandlerType() { public String getHandlerMethod() { return handlerMethod; } + + public String getModuleName() { + return moduleName; + } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java index 15a678d35..1c09448a8 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java @@ -6,19 +6,22 @@ public class QueueConsumerData { private String consumerType; private String maxMessages; private String connectionName; + private String moduleName; public QueueConsumerData( String consumerName, String queueName, String consumerType, String maxMessages, - String connectionName + String connectionName, + String moduleName ) { this.consumerName = consumerName; this.queueName = queueName; this.consumerType = consumerType; this.maxMessages = maxMessages; this.connectionName = connectionName; + this.moduleName = moduleName; } public String getConsumerName() { @@ -40,4 +43,8 @@ public String getMaxMessages() { public String getConnectionName() { return connectionName; } + + public String getModuleName() { + return moduleName; + } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java index 9071e95cd..7abc8a0a1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java @@ -4,11 +4,18 @@ public class QueuePublisherData { private String topicName; private String connectionName; private String exchangeName; + private String moduleName; - public QueuePublisherData(String topicName, String connectionName, String exchangeName) { + public QueuePublisherData( + String topicName, + String connectionName, + String exchangeName, + String moduleName + ) { this.topicName = topicName; this.connectionName = connectionName; this.exchangeName = exchangeName; + this.moduleName = moduleName; } public String getTopicName() { @@ -22,4 +29,8 @@ public String getConnectionName() { public String getExchangeName() { return exchangeName; } + + public String getModuleName() { + return moduleName; + } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java index b1d5b7a7c..6404eb43c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -5,12 +5,20 @@ public class QueueTopologyData { private String bindingId; private String bindingTopic; private String bindingQueue; + private String moduleName; - public QueueTopologyData(String exchangeName, String bindingId, String bindingTopic, String bindingQueue) { + public QueueTopologyData( + String exchangeName, + String bindingId, + String bindingTopic, + String bindingQueue, + String moduleName + ) { this.exchangeName = exchangeName; this.bindingId = bindingId; this.bindingTopic = bindingTopic; this.bindingQueue = bindingQueue; + this.moduleName = moduleName; } public String getExchangeName() { @@ -28,4 +36,8 @@ public String getBindingTopic() { public String getBindingQueue() { return bindingQueue; } + + public String getModuleName() { + return moduleName; + } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form index 4525dee87..852059489 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.form @@ -1,14 +1,18 @@
- - + + - + - + + + + + - + @@ -16,33 +20,232 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index acc4afeee..b993cc643 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -17,6 +17,9 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule; +import com.magento.idea.magento2plugin.actions.generation.generator.QueueCommunicationGenerator; +import com.magento.idea.magento2plugin.actions.generation.generator.QueueConsumerGenerator; import com.magento.idea.magento2plugin.bundles.CommonBundle; import com.magento.idea.magento2plugin.bundles.ValidatorBundle; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; @@ -61,15 +64,10 @@ public class NewMessageQueueDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, HANDLER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_NAMESPACE_NAME, + message = {PhpNamespaceNameRule.MESSAGE, HANDLER_TYPE}) private JTextField handlerType; - /* TODO: Rule to validate PHP method? */ - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, HANDLER_METHOD}) - private JTextField handlerMethod; - @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONSUMER_NAME}) @FieldValidation(rule = RuleRegistry.ALPHA_WITH_PERIOD, @@ -98,7 +96,7 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {NumericRule.MESSAGE, MAX_MESSAGES}) private JTextField maxMessages; - /* TODO: Can this be made a dropdown? */ + // TODO: Can this be made a dropdown? @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONNECTION_NAME}) @FieldValidation(rule = RuleRegistry.PHP_CLASS, @@ -117,7 +115,7 @@ public class NewMessageQueueDialog extends AbstractDialog { message = {AlphaWithDashRule.MESSAGE, EXCHANGE_NAME}) private JTextField bindingId; - /* TODO: New validation rule */ + // TODO: New validation rule @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) private JTextField bindingTopic; @@ -186,8 +184,8 @@ private void onOK() { if (validateFormFields()) { generateCommunication(); generateConsumer(); - generateTopology(); - generatePublisher(); + /*generateTopology(); + generatePublisher();*/ this.setVisible(false); } } @@ -197,7 +195,8 @@ private void generateCommunication() { getTopicName(), getHandlerName(), getHandlerType(), - getHandlerMethod() + getHandlerMethod(), + getModuleName() )).generate(NewMessageQueueAction.ACTION_NAME, true); } @@ -211,7 +210,7 @@ private void generateConsumer() { )).generate(NewMessageQueueAction.ACTION_NAME, true); } - private void generateTopology() { + /*private void generateTopology() { new QueueTopologyGenerator(project, new QueueTopologyData( getExchangeName(), getBindingId(), @@ -226,7 +225,7 @@ private void generatePublisher() { getConnectionName(), getExchangeName() )).generate(NewMessageQueueAction.ACTION_NAME, true); - } + }*/ public String getTopicName() { return topicName.getText().trim(); @@ -241,7 +240,7 @@ public String getHandlerType() { } public String getHandlerMethod() { - return handlerMethod.getText().trim(); + return "execute"; } public String getConsumerName() { @@ -275,4 +274,8 @@ public String getBindingId() { public String getBindingTopic() { return bindingTopic.getText().trim(); } + + public String getModuleName() { + return moduleName; + } } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java new file mode 100644 index 000000000..dbbd5e88b --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -0,0 +1,101 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.magento.idea.magento2plugin.actions.generation.data.QueueCommunicationData; +import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateCommunicationXml; +import com.magento.idea.magento2plugin.actions.generation.generator.util.GetCodeTemplate; +import com.magento.idea.magento2plugin.actions.generation.generator.util.XmlFilePositionUtil; +import java.util.Properties; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class QueueCommunicationGenerator extends FileGenerator { + private final QueueCommunicationData communicationData; + private final Project project; + private final GetCodeTemplate getCodeTemplate; + private final FindOrCreateCommunicationXml findOrCreateCommunicationXml; + private final XmlFilePositionUtil positionUtil; + + public QueueCommunicationGenerator( + final Project project, + final @NotNull QueueCommunicationData communicationData + ) { + super(project); + + this.communicationData = communicationData; + this.project = project; + this.getCodeTemplate = GetCodeTemplate.getInstance(project); + this.findOrCreateCommunicationXml = new FindOrCreateCommunicationXml(project); + this.positionUtil = XmlFilePositionUtil.getInstance(); + } + + @Override + public PsiFile generate(String actionName) { + final XmlFile communicationXml = (XmlFile) findOrCreateCommunicationXml.execute( + actionName, + communicationData.getModuleName() + ); + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document document = psiDocumentManager.getDocument(communicationXml); + + WriteCommandAction.runWriteCommandAction(project, () -> { + final XmlTag rootTag = communicationXml.getRootTag(); + if (rootTag == null) { + return; + } + XmlTag[] topicTags = rootTag.findSubTags("topic"); + boolean topicTagIsGenerated = true; + XmlTag topicTag = null; + for (final XmlTag tag: topicTags) { + if (communicationData.getTopicName().equals(tag.getAttribute("name").getValue())) { + topicTagIsGenerated = false; + topicTag = tag; + break; + } + } + if (topicTagIsGenerated) { + topicTag = rootTag.createChildTag("topic", null, "", false); + topicTag.setAttribute("name", communicationData.getTopicName()); + topicTag.setAttribute("request", "string"); + topicTag.setAttribute("response", "string"); + } + + @NotNull final XmlTag[] handlerTags = topicTag.findSubTags("handler"); + boolean isDeclared = false; + for (final XmlTag handlerTag: handlerTags) { + @Nullable final XmlAttribute handlerName = handlerTag.getAttribute("name"); + if (communicationData.getHandlerName().equals(handlerName.getValue())) { + isDeclared = true; + } + } + + if (!isDeclared) { + final XmlTag handlerTag = topicTag.createChildTag("handler", null, null, false); + + handlerTag.setAttribute("name", communicationData.getHandlerName()); + handlerTag.setAttribute("type",communicationData.getHandlerType()); + handlerTag.setAttribute("method",communicationData.getHandlerMethod()); + + topicTag.addSubTag(handlerTag, false); + + if (topicTagIsGenerated) { + rootTag.addSubTag(topicTag, false); + } + } + + psiDocumentManager.commitDocument(document); + }); + + return communicationXml; + } + + @Override + protected void fillAttributes(Properties attributes) {}//NOPMD +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java new file mode 100644 index 000000000..6d52ce23c --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java @@ -0,0 +1,19 @@ +package com.magento.idea.magento2plugin.actions.generation.generator.util; + +import com.intellij.openapi.project.Project; +import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.QueueCommunicationXml; + +public class FindOrCreateCommunicationXml extends FindOrCreateQueueXml { + /** + * Constructor. + */ + public FindOrCreateCommunicationXml(Project project) { + super(project); + } + + @Override + protected ModuleFileInterface instantiateXmlFile() { + return new QueueCommunicationXml(); + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java new file mode 100644 index 000000000..b1b62bd8b --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java @@ -0,0 +1,19 @@ +package com.magento.idea.magento2plugin.actions.generation.generator.util; + +import com.intellij.openapi.project.Project; +import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.QueueConsumerXml; + +public class FindOrCreateQueueConsumerXml extends FindOrCreateQueueXml { + /** + * Constructor. + */ + public FindOrCreateQueueConsumerXml(Project project) { + super(project); + } + + @Override + protected ModuleFileInterface instantiateXmlFile() { + return new QueueConsumerXml(); + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java new file mode 100644 index 000000000..d46d0f029 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java @@ -0,0 +1,19 @@ +package com.magento.idea.magento2plugin.actions.generation.generator.util; + +import com.intellij.openapi.project.Project; +import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.QueuePublisherXml; + +public class FindOrCreateQueuePublisherXml extends FindOrCreateQueueXml { + /** + * Constructor. + */ + public FindOrCreateQueuePublisherXml(Project project) { + super(project); + } + + @Override + protected ModuleFileInterface instantiateXmlFile() { + return new QueuePublisherXml(); + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java new file mode 100644 index 000000000..9e8be9356 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java @@ -0,0 +1,19 @@ +package com.magento.idea.magento2plugin.actions.generation.generator.util; + +import com.intellij.openapi.project.Project; +import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.files.QueueTopologyXml; + +public class FindOrCreateQueueTopologyXml extends FindOrCreateQueueXml { + /** + * Constructor. + */ + public FindOrCreateQueueTopologyXml(Project project) { + super(project); + } + + @Override + protected ModuleFileInterface instantiateXmlFile() { + return new QueueTopologyXml(); + } +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java new file mode 100644 index 000000000..493e7b18a --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java @@ -0,0 +1,70 @@ +package com.magento.idea.magento2plugin.actions.generation.generator.util; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import com.magento.idea.magento2plugin.indexes.ModuleIndex; +import com.magento.idea.magento2plugin.magento.files.ModuleFileInterface; +import com.magento.idea.magento2plugin.magento.packages.Areas; +import com.magento.idea.magento2plugin.magento.packages.Package; +import com.magento.idea.magento2plugin.util.magento.FileBasedIndexUtil; +import java.util.ArrayList; +import java.util.Properties; + +abstract public class FindOrCreateQueueXml { + private final Project project; + private final DirectoryGenerator directoryGenerator; + private final FileFromTemplateGenerator fileFromTemplateGenerator; + private final ModuleIndex moduleIndex; + + /** + * Constructor. + */ + public FindOrCreateQueueXml(final Project project) { + this.project = project; + + this.directoryGenerator = DirectoryGenerator.getInstance(); + this.fileFromTemplateGenerator = FileFromTemplateGenerator.getInstance(project); + this.moduleIndex = ModuleIndex.getInstance(project); + } + + public PsiFile execute(final String actionName, final String moduleName) { + PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); + final ArrayList fileDirectories = new ArrayList<>(); + + fileDirectories.add(Package.moduleBaseAreaDir); + + for (final String fileDirectory: fileDirectories) { + parentDirectory = this.directoryGenerator.findOrCreateSubdirectory( + parentDirectory, + fileDirectory + ); + } + + final ModuleFileInterface xml = instantiateXmlFile(); + + PsiFile xmlFile = FileBasedIndexUtil.findModuleConfigFile( + xml.getFileName(), + Areas.base, + moduleName, + project + ); + + // crontab.xml is already declared + if (xmlFile != null) { + return xmlFile; + } + + // create a new empty XML file + xmlFile = fileFromTemplateGenerator.generate( + xml, + new Properties(), + parentDirectory, + actionName + ); + + return xmlFile; + } + + protected abstract ModuleFileInterface instantiateXmlFile(); +} diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java new file mode 100644 index 000000000..b247f5719 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java @@ -0,0 +1,24 @@ +package com.magento.idea.magento2plugin.magento.files; + +import com.intellij.lang.Language; +import com.intellij.lang.xml.XMLLanguage; + +public class QueueCommunicationXml implements ModuleFileInterface { + public static String fileName = "communication.xml"; + public static String template = "Magento Queue Communication XML"; + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getTemplate() { + return template; + } + + @Override + public Language getLanguage() { + return XMLLanguage.INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java new file mode 100644 index 000000000..a4148830f --- /dev/null +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java @@ -0,0 +1,24 @@ +package com.magento.idea.magento2plugin.magento.files; + +import com.intellij.lang.Language; +import com.intellij.lang.xml.XMLLanguage; + +public class QueueConsumerXml implements ModuleFileInterface { + public static String fileName = "queue_consumer.xml"; + public static String template = "Magento Queue Consumer XML"; + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getTemplate() { + return template; + } + + @Override + public Language getLanguage() { + return XMLLanguage.INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java new file mode 100644 index 000000000..74c294ef3 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java @@ -0,0 +1,24 @@ +package com.magento.idea.magento2plugin.magento.files; + +import com.intellij.lang.Language; +import com.intellij.lang.xml.XMLLanguage; + +public class QueuePublisherXml implements ModuleFileInterface { + public static String fileName = "queue_publisher.xml"; + public static String template = "Magento Queue Publisher XML"; + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getTemplate() { + return template; + } + + @Override + public Language getLanguage() { + return XMLLanguage.INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java new file mode 100644 index 000000000..7bf9641c9 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java @@ -0,0 +1,24 @@ +package com.magento.idea.magento2plugin.magento.files; + +import com.intellij.lang.Language; +import com.intellij.lang.xml.XMLLanguage; + +public class QueueTopologyXml implements ModuleFileInterface { + public static String fileName = "queue_topology.xml"; + public static String template = "Magento Queue Topology XML"; + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getTemplate() { + return template; + } + + @Override + public Language getLanguage() { + return XMLLanguage.INSTANCE; + } +} From 2968fa815d498ad62e42beb6de434f47c8a69be5 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 11:47:56 +0530 Subject: [PATCH 04/17] Added generators for queue configuration --- .../Magento Queue Consumer XML.xml.ft | 7 -- .../Magento Queue Publisher XML.xml.ft | 3 - .../Magento Queue Topology XML.xml.ft | 6 -- .../generation/data/QueueTopologyData.java | 7 ++ .../dialog/NewMessageQueueDialog.java | 28 +++--- .../QueueCommunicationGenerator.java | 6 -- .../generator/QueueConsumerGenerator.java | 68 ++++++++++++++ .../generator/QueuePublisherGenerator.java | 93 ++++++++++++++++++ .../generator/QueueTopologyGenerator.java | 94 +++++++++++++++++++ 9 files changed, 275 insertions(+), 37 deletions(-) create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java diff --git a/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft index db2cfd377..a20377ed1 100644 --- a/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft +++ b/resources/fileTemplates/internal/Magento Queue Consumer XML.xml.ft @@ -1,11 +1,4 @@ - diff --git a/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft index c5903a107..bd8c544e5 100644 --- a/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft +++ b/resources/fileTemplates/internal/Magento Queue Publisher XML.xml.ft @@ -1,7 +1,4 @@ - - - diff --git a/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft b/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft index 1c4438438..f316f98b7 100644 --- a/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft +++ b/resources/fileTemplates/internal/Magento Queue Topology XML.xml.ft @@ -1,10 +1,4 @@ - - - diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java index 6404eb43c..d283f953f 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -2,6 +2,7 @@ public class QueueTopologyData { private String exchangeName; + private String connectionName; private String bindingId; private String bindingTopic; private String bindingQueue; @@ -9,12 +10,14 @@ public class QueueTopologyData { public QueueTopologyData( String exchangeName, + String connectionName, String bindingId, String bindingTopic, String bindingQueue, String moduleName ) { this.exchangeName = exchangeName; + this.connectionName = connectionName; this.bindingId = bindingId; this.bindingTopic = bindingTopic; this.bindingQueue = bindingQueue; @@ -25,6 +28,10 @@ public String getExchangeName() { return exchangeName; } + public String getConnectionName() { + return connectionName; + } + public String getBindingId() { return bindingId; } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index b993cc643..e0fb767eb 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -20,8 +20,8 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule; import com.magento.idea.magento2plugin.actions.generation.generator.QueueCommunicationGenerator; import com.magento.idea.magento2plugin.actions.generation.generator.QueueConsumerGenerator; -import com.magento.idea.magento2plugin.bundles.CommonBundle; -import com.magento.idea.magento2plugin.bundles.ValidatorBundle; +import com.magento.idea.magento2plugin.actions.generation.generator.QueuePublisherGenerator; +import com.magento.idea.magento2plugin.actions.generation.generator.QueueTopologyGenerator; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -99,8 +99,6 @@ public class NewMessageQueueDialog extends AbstractDialog { // TODO: Can this be made a dropdown? @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONNECTION_NAME}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, CONNECTION_NAME}) private JTextField connectionName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -126,8 +124,6 @@ public class NewMessageQueueDialog extends AbstractDialog { private final Project project; private final String moduleName; - private final ValidatorBundle validatorBundle; - private final CommonBundle commonBundle; /** * Constructor. @@ -137,8 +133,6 @@ public NewMessageQueueDialog(Project project, PsiDirectory directory) { this.project = project; this.moduleName = GetModuleNameByDirectoryUtil.execute(directory, project); - this.validatorBundle = new ValidatorBundle(); - this.commonBundle = new CommonBundle(); setContentPane(contentPanel); setModal(true); @@ -184,8 +178,8 @@ private void onOK() { if (validateFormFields()) { generateCommunication(); generateConsumer(); - /*generateTopology(); - generatePublisher();*/ + generateTopology(); + generatePublisher(); this.setVisible(false); } } @@ -206,16 +200,19 @@ private void generateConsumer() { getQueueName(), getConsumerType(), getMaxMessages(), - getConnectionName() + getConnectionName(), + getModuleName() )).generate(NewMessageQueueAction.ACTION_NAME, true); } - /*private void generateTopology() { + private void generateTopology() { new QueueTopologyGenerator(project, new QueueTopologyData( getExchangeName(), + getConnectionName(), getBindingId(), getBindingTopic(), - getQueueName() + getQueueName(), + getModuleName() )).generate(NewMessageQueueAction.ACTION_NAME, true); } @@ -223,9 +220,10 @@ private void generatePublisher() { new QueuePublisherGenerator(project, new QueuePublisherData( getTopicName(), getConnectionName(), - getExchangeName() + getExchangeName(), + getModuleName() )).generate(NewMessageQueueAction.ACTION_NAME, true); - }*/ + } public String getTopicName() { return topicName.getText().trim(); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java index dbbd5e88b..9bc19b2be 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -10,8 +10,6 @@ import com.intellij.psi.xml.XmlTag; import com.magento.idea.magento2plugin.actions.generation.data.QueueCommunicationData; import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateCommunicationXml; -import com.magento.idea.magento2plugin.actions.generation.generator.util.GetCodeTemplate; -import com.magento.idea.magento2plugin.actions.generation.generator.util.XmlFilePositionUtil; import java.util.Properties; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,9 +17,7 @@ public class QueueCommunicationGenerator extends FileGenerator { private final QueueCommunicationData communicationData; private final Project project; - private final GetCodeTemplate getCodeTemplate; private final FindOrCreateCommunicationXml findOrCreateCommunicationXml; - private final XmlFilePositionUtil positionUtil; public QueueCommunicationGenerator( final Project project, @@ -31,9 +27,7 @@ public QueueCommunicationGenerator( this.communicationData = communicationData; this.project = project; - this.getCodeTemplate = GetCodeTemplate.getInstance(project); this.findOrCreateCommunicationXml = new FindOrCreateCommunicationXml(project); - this.positionUtil = XmlFilePositionUtil.getInstance(); } @Override diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java new file mode 100644 index 000000000..f246e1f77 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java @@ -0,0 +1,68 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.magento.idea.magento2plugin.actions.generation.data.QueueConsumerData; +import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateQueueConsumerXml; +import java.util.Properties; + +public class QueueConsumerGenerator extends FileGenerator { + private final QueueConsumerData consumerData; + private final Project project; + private final FindOrCreateQueueConsumerXml findOrCreateQueueConsumerXml; + + public QueueConsumerGenerator(Project project, QueueConsumerData consumerData) { + super(project); + + this.consumerData = consumerData; + this.project = project; + this.findOrCreateQueueConsumerXml = new FindOrCreateQueueConsumerXml(project); + } + + @Override + public PsiFile generate(String actionName) { + final XmlFile consumerXml = (XmlFile) findOrCreateQueueConsumerXml.execute( + actionName, + consumerData.getModuleName() + ); + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document document = psiDocumentManager.getDocument(consumerXml); + + WriteCommandAction.runWriteCommandAction(project, () -> { + final XmlTag rootTag = consumerXml.getRootTag(); + if (rootTag == null) { + return; + } + XmlTag[] consumerTags = rootTag.findSubTags("consumer"); + boolean tagIsGenerated = true; + for (final XmlTag tag: consumerTags) { + if (consumerData.getConsumerName().equals(tag.getAttribute("name").getValue())) { + tagIsGenerated = false; + break; + } + } + if (tagIsGenerated) { + XmlTag consumerTag = rootTag.createChildTag("consumer", null, null, false); + consumerTag.setAttribute("name", consumerData.getConsumerName()); + consumerTag.setAttribute("queue", consumerData.getQueueName()); + consumerTag.setAttribute("consumerInstance", consumerData.getConsumerType()); + consumerTag.setAttribute("connection", consumerData.getConnectionName()); + consumerTag.setAttribute("maxMessages", consumerData.getMaxMessages()); + + rootTag.addSubTag(consumerTag, false); + } + + psiDocumentManager.commitDocument(document); + }); + + return consumerXml; + } + + @Override + protected void fillAttributes(Properties attributes) {} +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java new file mode 100644 index 000000000..26cf34012 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java @@ -0,0 +1,93 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.magento.idea.magento2plugin.actions.generation.data.QueuePublisherData; +import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateQueuePublisherXml; +import java.util.Properties; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class QueuePublisherGenerator extends FileGenerator { + private final QueuePublisherData publisherData; + private final Project project; + private final FindOrCreateQueuePublisherXml findOrCreateQueuePublisherXml; + + public QueuePublisherGenerator( + final Project project, + final QueuePublisherData publisherData + ) { + super(project); + + this.publisherData = publisherData; + this.project = project; + this.findOrCreateQueuePublisherXml = new FindOrCreateQueuePublisherXml(project); + } + + @Override + public PsiFile generate(String actionName) { + final XmlFile publisherXml = (XmlFile) findOrCreateQueuePublisherXml.execute( + actionName, + publisherData.getModuleName() + ); + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document document = psiDocumentManager.getDocument(publisherXml); + + WriteCommandAction.runWriteCommandAction(project, () -> { + final XmlTag rootTag = publisherXml.getRootTag(); + if (rootTag == null) { + return; + } + XmlTag[] publisherTags = rootTag.findSubTags("publisher"); + boolean publisherTagIsGenerated = true; + XmlTag publisherTag = null; + for (final XmlTag tag: publisherTags) { + if (publisherData.getTopicName().equals(tag.getAttribute("topic").getValue())) { + publisherTagIsGenerated = false; + publisherTag = tag; + break; + } + } + if (publisherTagIsGenerated) { + publisherTag = rootTag.createChildTag("publisher", null, "", false); + + publisherTag.setAttribute("topic", publisherData.getTopicName()); + } + + @NotNull final XmlTag[] connectionTags = publisherTag.findSubTags("connection"); + boolean isDeclared = false; + for (final XmlTag connectionTag: connectionTags) { + @Nullable final XmlAttribute connectionName = connectionTag.getAttribute("name"); + if (publisherData.getConnectionName().equals(connectionName.getValue())) { + isDeclared = true; + } + } + + if (!isDeclared) { + final XmlTag connectionTag = publisherTag.createChildTag("connection", null, null, false); + + connectionTag.setAttribute("name", publisherData.getConnectionName()); + connectionTag.setAttribute("exchange",publisherData.getExchangeName()); + + publisherTag.addSubTag(connectionTag, false); + + if (publisherTagIsGenerated) { + rootTag.addSubTag(publisherTag, false); + } + } + + psiDocumentManager.commitDocument(document); + }); + + return publisherXml; + } + + @Override + protected void fillAttributes(Properties attributes) {} +} diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java new file mode 100644 index 000000000..c8314b796 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java @@ -0,0 +1,94 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; +import com.magento.idea.magento2plugin.actions.generation.data.QueueTopologyData; +import com.magento.idea.magento2plugin.actions.generation.generator.util.FindOrCreateQueueTopologyXml; +import java.util.Properties; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class QueueTopologyGenerator extends FileGenerator { + private final QueueTopologyData topologyData; + private final Project project; + private final FindOrCreateQueueTopologyXml findOrCreateQueueTopologyXml; + + public QueueTopologyGenerator(Project project, QueueTopologyData topologyData) { + super(project); + + this.topologyData = topologyData; + this.project = project; + this.findOrCreateQueueTopologyXml = new FindOrCreateQueueTopologyXml(project); + } + + @Override + public PsiFile generate(String actionName) { + final XmlFile topologyXml = (XmlFile) findOrCreateQueueTopologyXml.execute( + actionName, + topologyData.getModuleName() + ); + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document document = psiDocumentManager.getDocument(topologyXml); + + WriteCommandAction.runWriteCommandAction(project, () -> { + final XmlTag rootTag = topologyXml.getRootTag(); + if (rootTag == null) { + return; + } + XmlTag[] exchangeTags = rootTag.findSubTags("exchange"); + boolean exchangeTagIsGenerated = true; + XmlTag exchangeTag = null; + for (final XmlTag tag: exchangeTags) { + if (topologyData.getExchangeName().equals(tag.getAttribute("name").getValue())) { + exchangeTagIsGenerated = false; + exchangeTag = tag; + break; + } + } + if (exchangeTagIsGenerated) { + exchangeTag = rootTag.createChildTag("exchange", null, "", false); + + exchangeTag.setAttribute("name", topologyData.getExchangeName()); + exchangeTag.setAttribute("type", "topic"); + exchangeTag.setAttribute("connection", topologyData.getConnectionName()); + } + + @NotNull final XmlTag[] bindingTags = exchangeTag.findSubTags("binding"); + boolean isDeclared = false; + for (final XmlTag bindingTag: bindingTags) { + @Nullable final XmlAttribute bindingId = bindingTag.getAttribute("id"); + if (topologyData.getBindingId().equals(bindingId.getValue())) { + isDeclared = true; + } + } + + if (!isDeclared) { + final XmlTag bindingTag = exchangeTag.createChildTag("binding", null, null, false); + + bindingTag.setAttribute("id", topologyData.getBindingId()); + bindingTag.setAttribute("topic", topologyData.getBindingTopic()); + bindingTag.setAttribute("destinationType", "queue"); + bindingTag.setAttribute("destination", topologyData.getBindingQueue()); + + exchangeTag.addSubTag(bindingTag, false); + + if (exchangeTagIsGenerated) { + rootTag.addSubTag(exchangeTag, false); + } + } + + psiDocumentManager.commitDocument(document); + }); + + return topologyXml; + } + + @Override + protected void fillAttributes(Properties attributes) {} +} From b3bcb46326f18d110b6e64c3781931866a4fe3c5 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 12:04:04 +0530 Subject: [PATCH 05/17] Fixed validation messages --- .../actions/generation/dialog/NewMessageQueueDialog.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index e0fb767eb..f34357045 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -37,7 +37,6 @@ public class NewMessageQueueDialog extends AbstractDialog { private static final String TOPIC_NAME = "Topic Name"; private static final String HANDLER_NAME = "Handler Name"; private static final String HANDLER_TYPE = "Handler Type"; - private static final String HANDLER_METHOD = "Handler Method"; private static final String CONSUMER_NAME = "Consumer Name"; private static final String QUEUE_NAME = "Queue Name"; private static final String CONSUMER_TYPE = "Consumer Type"; @@ -108,14 +107,14 @@ public class NewMessageQueueDialog extends AbstractDialog { private JTextField exchangeName; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) + message = {NotEmptyRule.MESSAGE, BINDING_ID}) @FieldValidation(rule = RuleRegistry.ALPHANUMERIC_WITH_UNDERSCORE, - message = {AlphaWithDashRule.MESSAGE, EXCHANGE_NAME}) + message = {AlphaWithDashRule.MESSAGE, BINDING_ID}) private JTextField bindingId; // TODO: New validation rule @FieldValidation(rule = RuleRegistry.NOT_EMPTY, - message = {NotEmptyRule.MESSAGE, EXCHANGE_NAME}) + message = {NotEmptyRule.MESSAGE, BINDING_TOPIC}) private JTextField bindingTopic; private JPanel contentPanel; From 2e3964322d1b0f9966a76d68503c517c939cb01e Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 12:12:23 +0530 Subject: [PATCH 06/17] Fixed validation --- .../actions/generation/dialog/NewMessageQueueDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index f34357045..8ed57e334 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -63,8 +63,8 @@ public class NewMessageQueueDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) - @FieldValidation(rule = RuleRegistry.PHP_NAMESPACE_NAME, - message = {PhpNamespaceNameRule.MESSAGE, HANDLER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS, + message = {PhpClassRule.MESSAGE, HANDLER_TYPE}) private JTextField handlerType; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, From 371d8038c1ea4160030862a278ccdd4186aa6c00 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 12:47:59 +0530 Subject: [PATCH 07/17] Added validation for PHP Class FQN --- resources/magento2/validation.properties | 1 + .../dialog/NewMessageQueueDialog.java | 11 +++++------ .../validator/annotation/RuleRegistry.java | 2 ++ .../dialog/validator/rule/PhpClassFqnRule.java | 17 +++++++++++++++++ .../idea/magento2plugin/util/RegExUtil.java | 3 +++ 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java diff --git a/resources/magento2/validation.properties b/resources/magento2/validation.properties index 6aa21ac95..5637532ea 100644 --- a/resources/magento2/validation.properties +++ b/resources/magento2/validation.properties @@ -11,6 +11,7 @@ validator.onlyNumbers=The {0} field must contain numbers only validator.mustNotBeNegative={0} must not be negative validator.identifier=The {0} field must contain letters, numbers, dashes, and underscores only validator.class.isNotValid=The {0} field does not contain a valid class name +validator.fqn.isNotValid=The {0} field does not contain a valid fully qualified class name validator.class.shouldBeUnique=Duplicated class {0} validator.namespace.isNotValid=The {0} field does not contain a valid namespace validator.directory.isNotValid=The {0} field does not contain a valid directory diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index 8ed57e334..70c81e328 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -16,8 +16,7 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.Lowercase; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; -import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; -import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassFqnRule; import com.magento.idea.magento2plugin.actions.generation.generator.QueueCommunicationGenerator; import com.magento.idea.magento2plugin.actions.generation.generator.QueueConsumerGenerator; import com.magento.idea.magento2plugin.actions.generation.generator.QueuePublisherGenerator; @@ -63,8 +62,8 @@ public class NewMessageQueueDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, HANDLER_TYPE}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, HANDLER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS_FQN, + message = {PhpClassFqnRule.MESSAGE, HANDLER_TYPE}) private JTextField handlerType; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, @@ -85,8 +84,8 @@ public class NewMessageQueueDialog extends AbstractDialog { @FieldValidation(rule = RuleRegistry.NOT_EMPTY, message = {NotEmptyRule.MESSAGE, CONSUMER_TYPE}) - @FieldValidation(rule = RuleRegistry.PHP_CLASS, - message = {PhpClassRule.MESSAGE, CONSUMER_TYPE}) + @FieldValidation(rule = RuleRegistry.PHP_CLASS_FQN, + message = {PhpClassFqnRule.MESSAGE, CONSUMER_TYPE}) private JTextField consumerType; @FieldValidation(rule = RuleRegistry.NOT_EMPTY, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java index 0e08ea0ec..ea59eb0b1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java @@ -20,6 +20,7 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassFqnRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpDirectoryRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.RouteIdRule; @@ -29,6 +30,7 @@ public enum RuleRegistry { NOT_EMPTY(NotEmptyRule.class), BOX_NOT_EMPTY(BoxNotEmptyRule.class), PHP_CLASS(PhpClassRule.class), + PHP_CLASS_FQN(PhpClassFqnRule.class), ROUTE_ID(RouteIdRule.class), ALPHANUMERIC(AlphanumericRule.class), ALPHANUMERIC_WITH_UNDERSCORE(AlphanumericWithUnderscoreRule.class), diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java new file mode 100644 index 000000000..2ed93c1a8 --- /dev/null +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java @@ -0,0 +1,17 @@ +package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; + +import com.magento.idea.magento2plugin.util.RegExUtil; + +public class PhpClassFqnRule implements ValidationRule { + public static final String MESSAGE = "validator.fqn.isNotValid"; + private static final ValidationRule INSTANCE = new PhpClassFqnRule(); + + @Override + public boolean check(final String value) { + return value.matches(RegExUtil.Magento.PHP_CLASS_FQN); + } + + public static ValidationRule getInstance() { + return INSTANCE; + } +} diff --git a/src/com/magento/idea/magento2plugin/util/RegExUtil.java b/src/com/magento/idea/magento2plugin/util/RegExUtil.java index 96b57d73a..86f135e9e 100644 --- a/src/com/magento/idea/magento2plugin/util/RegExUtil.java +++ b/src/com/magento/idea/magento2plugin/util/RegExUtil.java @@ -44,6 +44,9 @@ public static class Magento { public static final String PHP_CLASS = "[A-Z][a-zA-Z0-9]+"; + public static final String PHP_CLASS_FQN + = "(" + PHP_CLASS + ")?(\\" + PHP_CLASS + ")+"; + public static final String MODULE_NAME = "[A-Z][a-zA-Z0-9]+_[A-Z][a-zA-Z0-9]+"; From 165d6443ae2af1d1b1c6b04a7204ea2f97f16aa8 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 12:48:30 +0530 Subject: [PATCH 08/17] Added test for QueueCommunicationGenerator --- .../communication.xml | 7 ++++ .../QueueCommunicationGeneratorTest.java | 39 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 testData/actions/generation/generator/QueueCommunicationGenerator/generateCommunicationXmlFile/communication.xml create mode 100644 tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java diff --git a/testData/actions/generation/generator/QueueCommunicationGenerator/generateCommunicationXmlFile/communication.xml b/testData/actions/generation/generator/QueueCommunicationGenerator/generateCommunicationXmlFile/communication.xml new file mode 100644 index 000000000..a1614910f --- /dev/null +++ b/testData/actions/generation/generator/QueueCommunicationGenerator/generateCommunicationXmlFile/communication.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java new file mode 100644 index 000000000..983efb845 --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java @@ -0,0 +1,39 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.magento.idea.magento2plugin.actions.generation.NewMessageQueueAction; +import com.magento.idea.magento2plugin.actions.generation.data.QueueCommunicationData; +import com.magento.idea.magento2plugin.magento.files.QueueCommunicationXml; + +public class QueueCommunicationGeneratorTest extends BaseGeneratorTestCase { + private static final String TOPIC_NAME = "topic.name"; + private static final String HANDLER_NAME = "handlerName"; + private static final String HANDLER_TYPE = "Foo\\Bar\\Model\\Handler"; + private static final String HANDLER_METHOD = "execute"; + private static final String MODULE_NAME = "Foo_Bar"; + private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/etc"; + + /** + * Tests for generation of communication.xml file. + */ + public void testGenerateCommunicationXmlFile() { + final String filePath = this.getFixturePath(QueueCommunicationXml.fileName); + final PsiFile expectedFile = myFixture.configureByFile(filePath); + final Project project = myFixture.getProject(); + final QueueCommunicationGenerator communicationGenerator = new QueueCommunicationGenerator( + project, + new QueueCommunicationData( + TOPIC_NAME, + HANDLER_NAME, + HANDLER_TYPE, + HANDLER_METHOD, + MODULE_NAME + ) + ); + + final PsiFile file = communicationGenerator.generate(NewMessageQueueAction.ACTION_NAME); + + assertGeneratedFileIsCorrect(expectedFile, EXPECTED_DIRECTORY, file); + } +} From c72914a71a547c1449ebe71cab7fa20fce5c5da9 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 12:56:57 +0530 Subject: [PATCH 09/17] Added test for QueueConsumerGenerator --- .../queue_consumer.xml | 6 +++ .../generator/QueueConsumerGeneratorTest.java | 41 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 testData/actions/generation/generator/QueueConsumerGenerator/generateConsumerXmlFile/queue_consumer.xml create mode 100644 tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java diff --git a/testData/actions/generation/generator/QueueConsumerGenerator/generateConsumerXmlFile/queue_consumer.xml b/testData/actions/generation/generator/QueueConsumerGenerator/generateConsumerXmlFile/queue_consumer.xml new file mode 100644 index 000000000..ca08e43aa --- /dev/null +++ b/testData/actions/generation/generator/QueueConsumerGenerator/generateConsumerXmlFile/queue_consumer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java new file mode 100644 index 000000000..e45ae254e --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java @@ -0,0 +1,41 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.magento.idea.magento2plugin.actions.generation.NewMessageQueueAction; +import com.magento.idea.magento2plugin.actions.generation.data.QueueConsumerData; +import com.magento.idea.magento2plugin.magento.files.QueueConsumerXml; + +public class QueueConsumerGeneratorTest extends BaseGeneratorTestCase { + private static final String CONSUMER_NAME = "consumer.name"; + private static final String QUEUE_NAME = "queue.name"; + private static final String CONSUMER_TYPE = "Foo\\Bar\\Model\\Consumer"; + private static final String MAX_MESSAGES = "100"; + private static final String CONNECTION_NAME = "amqp"; + private static final String MODULE_NAME = "Foo_Bar"; + private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/etc"; + + /** + * Tests for generation of queue_consumer.xml file. + */ + public void testGenerateConsumerXmlFile() { + final String filePath = this.getFixturePath(QueueConsumerXml.fileName); + final PsiFile expectedFile = myFixture.configureByFile(filePath); + final Project project = myFixture.getProject(); + final QueueConsumerGenerator consumerGenerator = new QueueConsumerGenerator( + project, + new QueueConsumerData( + CONSUMER_NAME, + QUEUE_NAME, + CONSUMER_TYPE, + MAX_MESSAGES, + CONNECTION_NAME, + MODULE_NAME + ) + ); + + final PsiFile file = consumerGenerator.generate(NewMessageQueueAction.ACTION_NAME); + + assertGeneratedFileIsCorrect(expectedFile, EXPECTED_DIRECTORY, file); + } +} From d4a1c56eae369c95be369b01acca100bf02500a8 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:02:47 +0530 Subject: [PATCH 10/17] Added test for QueueTopologyGenerator --- .../queue_topology.xml | 7 ++++ .../generator/QueueTopologyGeneratorTest.java | 41 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 testData/actions/generation/generator/QueueTopologyGenerator/generateTopologyXmlFile/queue_topology.xml create mode 100644 tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java diff --git a/testData/actions/generation/generator/QueueTopologyGenerator/generateTopologyXmlFile/queue_topology.xml b/testData/actions/generation/generator/QueueTopologyGenerator/generateTopologyXmlFile/queue_topology.xml new file mode 100644 index 000000000..a355bc8b5 --- /dev/null +++ b/testData/actions/generation/generator/QueueTopologyGenerator/generateTopologyXmlFile/queue_topology.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java new file mode 100644 index 000000000..51c00efc4 --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java @@ -0,0 +1,41 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.magento.idea.magento2plugin.actions.generation.NewMessageQueueAction; +import com.magento.idea.magento2plugin.actions.generation.data.QueueTopologyData; +import com.magento.idea.magento2plugin.magento.files.QueueTopologyXml; + +public class QueueTopologyGeneratorTest extends BaseGeneratorTestCase { + private static final String EXCHANGE_NAME = "exchange-name"; + private static final String BINDING_ID = "bindingId"; + private static final String BINDING_TOPIC = "topic.name"; + private static final String BINDING_QUEUE = "queue.name"; + private static final String CONNECTION_NAME = "amqp"; + private static final String MODULE_NAME = "Foo_Bar"; + private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/etc"; + + /** + * Tests for generation of queue_topology.xml file. + */ + public void testGenerateTopologyXmlFile() { + final String filePath = this.getFixturePath(QueueTopologyXml.fileName); + final PsiFile expectedFile = myFixture.configureByFile(filePath); + final Project project = myFixture.getProject(); + final QueueTopologyGenerator topologyGenerator = new QueueTopologyGenerator( + project, + new QueueTopologyData( + EXCHANGE_NAME, + CONNECTION_NAME, + BINDING_ID, + BINDING_TOPIC, + BINDING_QUEUE, + MODULE_NAME + ) + ); + + final PsiFile file = topologyGenerator.generate(NewMessageQueueAction.ACTION_NAME); + + assertGeneratedFileIsCorrect(expectedFile, EXPECTED_DIRECTORY, file); + } +} \ No newline at end of file From 133b2c6367836cbfb26489487c4f042183b90be1 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:06:28 +0530 Subject: [PATCH 11/17] Added test for QueuePublisherGenerator --- .../queue_publisher.xml | 7 ++++ .../QueuePublisherGeneratorTest.java | 37 +++++++++++++++++++ .../generator/QueueTopologyGeneratorTest.java | 2 +- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 testData/actions/generation/generator/QueuePublisherGenerator/generatePublisherXmlFile/queue_publisher.xml create mode 100644 tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java diff --git a/testData/actions/generation/generator/QueuePublisherGenerator/generatePublisherXmlFile/queue_publisher.xml b/testData/actions/generation/generator/QueuePublisherGenerator/generatePublisherXmlFile/queue_publisher.xml new file mode 100644 index 000000000..b15fbee1c --- /dev/null +++ b/testData/actions/generation/generator/QueuePublisherGenerator/generatePublisherXmlFile/queue_publisher.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java new file mode 100644 index 000000000..29160309a --- /dev/null +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java @@ -0,0 +1,37 @@ +package com.magento.idea.magento2plugin.actions.generation.generator; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.magento.idea.magento2plugin.actions.generation.NewMessageQueueAction; +import com.magento.idea.magento2plugin.actions.generation.data.QueuePublisherData; +import com.magento.idea.magento2plugin.magento.files.QueuePublisherXml; + +public class QueuePublisherGeneratorTest extends BaseGeneratorTestCase { + private static final String EXCHANGE_NAME = "exchange-name"; + private static final String TOPIC_NAME = "topic.name"; + private static final String CONNECTION_NAME = "amqp"; + private static final String MODULE_NAME = "Foo_Bar"; + private static final String EXPECTED_DIRECTORY = "src/app/code/Foo/Bar/etc"; + + /** + * Tests for generation of queue_publisher.xml file. + */ + public void testGeneratePublisherXmlFile() { + final String filePath = this.getFixturePath(QueuePublisherXml.fileName); + final PsiFile expectedFile = myFixture.configureByFile(filePath); + final Project project = myFixture.getProject(); + final QueuePublisherGenerator publisherGenerator = new QueuePublisherGenerator( + project, + new QueuePublisherData( + TOPIC_NAME, + CONNECTION_NAME, + EXCHANGE_NAME, + MODULE_NAME + ) + ); + + final PsiFile file = publisherGenerator.generate(NewMessageQueueAction.ACTION_NAME); + + assertGeneratedFileIsCorrect(expectedFile, EXPECTED_DIRECTORY, file); + } +} diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java index 51c00efc4..2afcef3ea 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java @@ -38,4 +38,4 @@ public void testGenerateTopologyXmlFile() { assertGeneratedFileIsCorrect(expectedFile, EXPECTED_DIRECTORY, file); } -} \ No newline at end of file +} From 0cfc46fd3b2ae525f4ff7c51292f7afc4b288538 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:22:55 +0530 Subject: [PATCH 12/17] Fixed CheckStyle issues --- .../actions/generation/data/QueueCommunicationData.java | 3 +++ .../actions/generation/data/QueueConsumerData.java | 3 +++ .../actions/generation/data/QueuePublisherData.java | 3 +++ .../actions/generation/data/QueueTopologyData.java | 3 +++ .../dialog/validator/annotation/RuleRegistry.java | 2 +- .../generation/generator/QueueCommunicationGenerator.java | 3 +++ .../generation/generator/QueueConsumerGenerator.java | 3 +++ .../generation/generator/QueuePublisherGenerator.java | 7 ++++++- .../generation/generator/QueueTopologyGenerator.java | 3 +++ .../generation/generator/util/FindOrCreateQueueXml.java | 5 ++++- 10 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java index 6b20bb980..a45cc1832 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java @@ -7,6 +7,9 @@ public class QueueCommunicationData { private String handlerMethod; private String moduleName; + /** + * Constructor. + */ public QueueCommunicationData( String topicName, String handlerName, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java index 1c09448a8..0f7fd78c9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java @@ -8,6 +8,9 @@ public class QueueConsumerData { private String connectionName; private String moduleName; + /** + * Constructor. + */ public QueueConsumerData( String consumerName, String queueName, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java index 7abc8a0a1..1cc4ee1c2 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java @@ -6,6 +6,9 @@ public class QueuePublisherData { private String exchangeName; private String moduleName; + /** + * Constructor. + */ public QueuePublisherData( String topicName, String connectionName, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java index d283f953f..e3906b5e9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -8,6 +8,9 @@ public class QueueTopologyData { private String bindingQueue; private String moduleName; + /** + * Constructor. + */ public QueueTopologyData( String exchangeName, String connectionName, diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java index ea59eb0b1..ce444dc66 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/annotation/RuleRegistry.java @@ -19,8 +19,8 @@ import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.Lowercase; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NotEmptyRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.NumericRule; -import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassFqnRule; +import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpClassRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpDirectoryRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.PhpNamespaceNameRule; import com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule.RouteIdRule; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java index 9bc19b2be..2c001a2bd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -19,6 +19,9 @@ public class QueueCommunicationGenerator extends FileGenerator { private final Project project; private final FindOrCreateCommunicationXml findOrCreateCommunicationXml; + /** + * Constructor. + */ public QueueCommunicationGenerator( final Project project, final @NotNull QueueCommunicationData communicationData diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java index f246e1f77..2db2af6c7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java @@ -16,6 +16,9 @@ public class QueueConsumerGenerator extends FileGenerator { private final Project project; private final FindOrCreateQueueConsumerXml findOrCreateQueueConsumerXml; + /** + * Constructor. + */ public QueueConsumerGenerator(Project project, QueueConsumerData consumerData) { super(project); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java index 26cf34012..925a68b1c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java @@ -19,6 +19,9 @@ public class QueuePublisherGenerator extends FileGenerator { private final Project project; private final FindOrCreateQueuePublisherXml findOrCreateQueuePublisherXml; + /** + * Constructor. + */ public QueuePublisherGenerator( final Project project, final QueuePublisherData publisherData @@ -70,7 +73,9 @@ public PsiFile generate(String actionName) { } if (!isDeclared) { - final XmlTag connectionTag = publisherTag.createChildTag("connection", null, null, false); + final XmlTag connectionTag = publisherTag.createChildTag( + "connection", null, null, false + ); connectionTag.setAttribute("name", publisherData.getConnectionName()); connectionTag.setAttribute("exchange",publisherData.getExchangeName()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java index c8314b796..436d6fd78 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java @@ -19,6 +19,9 @@ public class QueueTopologyGenerator extends FileGenerator { private final Project project; private final FindOrCreateQueueTopologyXml findOrCreateQueueTopologyXml; + /** + * Constructor. + */ public QueueTopologyGenerator(Project project, QueueTopologyData topologyData) { super(project); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java index 493e7b18a..dc42176b5 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import java.util.Properties; -abstract public class FindOrCreateQueueXml { +public abstract class FindOrCreateQueueXml { private final Project project; private final DirectoryGenerator directoryGenerator; private final FileFromTemplateGenerator fileFromTemplateGenerator; @@ -28,6 +28,9 @@ public FindOrCreateQueueXml(final Project project) { this.moduleIndex = ModuleIndex.getInstance(project); } + /** + * Finds or creates message queue XML file. + */ public PsiFile execute(final String actionName, final String moduleName) { PsiDirectory parentDirectory = this.moduleIndex.getModuleDirectoryByModuleName(moduleName); final ArrayList fileDirectories = new ArrayList<>(); From 312ba7dd5ba088d8fc0d440b06d2314276488347 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:26:11 +0530 Subject: [PATCH 13/17] Added Magento copyrights --- .../actions/generation/NewMessageQueueAction.java | 5 +++++ .../actions/generation/data/QueueCommunicationData.java | 5 +++++ .../actions/generation/data/QueueConsumerData.java | 5 +++++ .../actions/generation/data/QueuePublisherData.java | 5 +++++ .../actions/generation/data/QueueTopologyData.java | 5 +++++ .../actions/generation/dialog/NewMessageQueueDialog.java | 5 +++++ .../generation/generator/QueueCommunicationGenerator.java | 5 +++++ .../actions/generation/generator/QueueConsumerGenerator.java | 5 +++++ .../generation/generator/QueuePublisherGenerator.java | 5 +++++ .../actions/generation/generator/QueueTopologyGenerator.java | 5 +++++ .../generator/util/FindOrCreateQueueConsumerXml.java | 5 +++++ .../generator/util/FindOrCreateQueuePublisherXml.java | 5 +++++ .../generator/util/FindOrCreateQueueTopologyXml.java | 5 +++++ .../generation/generator/util/FindOrCreateQueueXml.java | 5 +++++ .../generator/QueueCommunicationGeneratorTest.java | 5 +++++ .../generation/generator/QueueConsumerGeneratorTest.java | 5 +++++ .../generation/generator/QueuePublisherGeneratorTest.java | 5 +++++ .../generation/generator/QueueTopologyGeneratorTest.java | 5 +++++ 18 files changed, 90 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java index 40352699b..d562f076a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewMessageQueueAction.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation; import com.intellij.ide.IdeView; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java index a45cc1832..eb83a8694 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.data; public class QueueCommunicationData { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java index 0f7fd78c9..9c7db0ee9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.data; public class QueueConsumerData { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java index 1cc4ee1c2..94f6130b7 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.data; public class QueuePublisherData { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java index e3906b5e9..3bd81a353 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.data; public class QueueTopologyData { diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index 70c81e328..4e0f2f190 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.dialog; import com.intellij.openapi.project.Project; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java index 2c001a2bd..8985ad7cc 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.command.WriteCommandAction; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java index 2db2af6c7..d10d35e4a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.command.WriteCommandAction; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java index 925a68b1c..e8fc95354 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.command.WriteCommandAction; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java index 436d6fd78..08642cd51 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.command.WriteCommandAction; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java index b1b62bd8b..8498b83f1 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.openapi.project.Project; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java index d46d0f029..3a4309961 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.openapi.project.Project; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java index 9e8be9356..6994df35a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.openapi.project.Project; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java index dc42176b5..0f9e47d5c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.openapi.project.Project; diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java index 983efb845..72b53a621 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGeneratorTest.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java index e45ae254e..65613f482 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGeneratorTest.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java index 29160309a..f761c65e2 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGeneratorTest.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; diff --git a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java index 2afcef3ea..df01ec4f4 100644 --- a/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java +++ b/tests/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGeneratorTest.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator; import com.intellij.openapi.project.Project; From 25ccdb40b54f257c49099f5d30ae4ff1527bc13a Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:32:12 +0530 Subject: [PATCH 14/17] Fixed PMD issues --- .../data/QueueCommunicationData.java | 20 ++++++++-------- .../generation/data/QueueConsumerData.java | 24 +++++++++---------- .../generation/data/QueuePublisherData.java | 16 ++++++------- .../generation/data/QueueTopologyData.java | 24 +++++++++---------- .../dialog/NewMessageQueueDialog.java | 6 ++++- .../QueueCommunicationGenerator.java | 13 +++++----- .../generator/QueueConsumerGenerator.java | 6 ++--- .../generator/QueuePublisherGenerator.java | 6 ++--- .../generator/QueueTopologyGenerator.java | 8 +++---- 9 files changed, 64 insertions(+), 59 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java index eb83a8694..ad7bd0afd 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueCommunicationData.java @@ -6,21 +6,21 @@ package com.magento.idea.magento2plugin.actions.generation.data; public class QueueCommunicationData { - private String topicName; - private String handlerName; - private String handlerType; - private String handlerMethod; - private String moduleName; + private final String topicName; + private final String handlerName; + private final String handlerType; + private final String handlerMethod; + private final String moduleName; /** * Constructor. */ public QueueCommunicationData( - String topicName, - String handlerName, - String handlerType, - String handlerMethod, - String moduleName + final String topicName, + final String handlerName, + final String handlerType, + final String handlerMethod, + final String moduleName ) { this.topicName = topicName; this.handlerName = handlerName; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java index 9c7db0ee9..6724f2481 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueConsumerData.java @@ -6,23 +6,23 @@ package com.magento.idea.magento2plugin.actions.generation.data; public class QueueConsumerData { - private String consumerName; - private String queueName; - private String consumerType; - private String maxMessages; - private String connectionName; - private String moduleName; + private final String consumerName; + private final String queueName; + private final String consumerType; + private final String maxMessages; + private final String connectionName; + private final String moduleName; /** * Constructor. */ public QueueConsumerData( - String consumerName, - String queueName, - String consumerType, - String maxMessages, - String connectionName, - String moduleName + final String consumerName, + final String queueName, + final String consumerType, + final String maxMessages, + final String connectionName, + final String moduleName ) { this.consumerName = consumerName; this.queueName = queueName; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java index 94f6130b7..7eaff709a 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueuePublisherData.java @@ -6,19 +6,19 @@ package com.magento.idea.magento2plugin.actions.generation.data; public class QueuePublisherData { - private String topicName; - private String connectionName; - private String exchangeName; - private String moduleName; + private final String topicName; + private final String connectionName; + private final String exchangeName; + private final String moduleName; /** * Constructor. */ public QueuePublisherData( - String topicName, - String connectionName, - String exchangeName, - String moduleName + final String topicName, + final String connectionName, + final String exchangeName, + final String moduleName ) { this.topicName = topicName; this.connectionName = connectionName; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java index 3bd81a353..bbf85b8e4 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/data/QueueTopologyData.java @@ -6,23 +6,23 @@ package com.magento.idea.magento2plugin.actions.generation.data; public class QueueTopologyData { - private String exchangeName; - private String connectionName; - private String bindingId; - private String bindingTopic; - private String bindingQueue; - private String moduleName; + private final String exchangeName; + private final String connectionName; + private final String bindingId; + private final String bindingTopic; + private final String bindingQueue; + private final String moduleName; /** * Constructor. */ public QueueTopologyData( - String exchangeName, - String connectionName, - String bindingId, - String bindingTopic, - String bindingQueue, - String moduleName + final String exchangeName, + final String connectionName, + final String bindingId, + final String bindingTopic, + final String bindingQueue, + final String moduleName ) { this.exchangeName = exchangeName; this.connectionName = connectionName; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java index 4e0f2f190..fa108e58e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewMessageQueueDialog.java @@ -37,6 +37,10 @@ import javax.swing.JTextField; import javax.swing.KeyStroke; +@SuppressWarnings({ + "PMD.TooManyFields", + "PMD.ExcessiveImports", +}) public class NewMessageQueueDialog extends AbstractDialog { private static final String TOPIC_NAME = "Topic Name"; private static final String HANDLER_NAME = "Handler Name"; @@ -131,7 +135,7 @@ public class NewMessageQueueDialog extends AbstractDialog { /** * Constructor. */ - public NewMessageQueueDialog(Project project, PsiDirectory directory) { + public NewMessageQueueDialog(final Project project, final PsiDirectory directory) { super(); this.project = project; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java index 8985ad7cc..5ef6ee679 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.Nullable; public class QueueCommunicationGenerator extends FileGenerator { + public static final String ATTRIBUTE_NAME = "name"; private final QueueCommunicationData communicationData; private final Project project; private final FindOrCreateCommunicationXml findOrCreateCommunicationXml; @@ -39,7 +40,7 @@ public QueueCommunicationGenerator( } @Override - public PsiFile generate(String actionName) { + public PsiFile generate(final String actionName) { final XmlFile communicationXml = (XmlFile) findOrCreateCommunicationXml.execute( actionName, communicationData.getModuleName() @@ -52,11 +53,11 @@ public PsiFile generate(String actionName) { if (rootTag == null) { return; } - XmlTag[] topicTags = rootTag.findSubTags("topic"); + final XmlTag[] topicTags = rootTag.findSubTags("topic"); boolean topicTagIsGenerated = true; XmlTag topicTag = null; for (final XmlTag tag: topicTags) { - if (communicationData.getTopicName().equals(tag.getAttribute("name").getValue())) { + if (communicationData.getTopicName().equals(tag.getAttribute(ATTRIBUTE_NAME).getValue())) { topicTagIsGenerated = false; topicTag = tag; break; @@ -64,7 +65,7 @@ public PsiFile generate(String actionName) { } if (topicTagIsGenerated) { topicTag = rootTag.createChildTag("topic", null, "", false); - topicTag.setAttribute("name", communicationData.getTopicName()); + topicTag.setAttribute(ATTRIBUTE_NAME, communicationData.getTopicName()); topicTag.setAttribute("request", "string"); topicTag.setAttribute("response", "string"); } @@ -72,7 +73,7 @@ public PsiFile generate(String actionName) { @NotNull final XmlTag[] handlerTags = topicTag.findSubTags("handler"); boolean isDeclared = false; for (final XmlTag handlerTag: handlerTags) { - @Nullable final XmlAttribute handlerName = handlerTag.getAttribute("name"); + @Nullable final XmlAttribute handlerName = handlerTag.getAttribute(ATTRIBUTE_NAME); if (communicationData.getHandlerName().equals(handlerName.getValue())) { isDeclared = true; } @@ -81,7 +82,7 @@ public PsiFile generate(String actionName) { if (!isDeclared) { final XmlTag handlerTag = topicTag.createChildTag("handler", null, null, false); - handlerTag.setAttribute("name", communicationData.getHandlerName()); + handlerTag.setAttribute(ATTRIBUTE_NAME, communicationData.getHandlerName()); handlerTag.setAttribute("type",communicationData.getHandlerType()); handlerTag.setAttribute("method",communicationData.getHandlerMethod()); diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java index d10d35e4a..f8c9b6ef9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java @@ -46,7 +46,7 @@ public PsiFile generate(String actionName) { if (rootTag == null) { return; } - XmlTag[] consumerTags = rootTag.findSubTags("consumer"); + final XmlTag[] consumerTags = rootTag.findSubTags("consumer"); boolean tagIsGenerated = true; for (final XmlTag tag: consumerTags) { if (consumerData.getConsumerName().equals(tag.getAttribute("name").getValue())) { @@ -55,7 +55,7 @@ public PsiFile generate(String actionName) { } } if (tagIsGenerated) { - XmlTag consumerTag = rootTag.createChildTag("consumer", null, null, false); + final XmlTag consumerTag = rootTag.createChildTag("consumer", null, null, false); consumerTag.setAttribute("name", consumerData.getConsumerName()); consumerTag.setAttribute("queue", consumerData.getQueueName()); consumerTag.setAttribute("consumerInstance", consumerData.getConsumerType()); @@ -72,5 +72,5 @@ public PsiFile generate(String actionName) { } @Override - protected void fillAttributes(Properties attributes) {} + protected void fillAttributes(Properties attributes) {}//NOPMD } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java index e8fc95354..e202c4182 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueuePublisherGenerator.java @@ -39,7 +39,7 @@ public QueuePublisherGenerator( } @Override - public PsiFile generate(String actionName) { + public PsiFile generate(final String actionName) { final XmlFile publisherXml = (XmlFile) findOrCreateQueuePublisherXml.execute( actionName, publisherData.getModuleName() @@ -52,7 +52,7 @@ public PsiFile generate(String actionName) { if (rootTag == null) { return; } - XmlTag[] publisherTags = rootTag.findSubTags("publisher"); + final XmlTag[] publisherTags = rootTag.findSubTags("publisher"); boolean publisherTagIsGenerated = true; XmlTag publisherTag = null; for (final XmlTag tag: publisherTags) { @@ -99,5 +99,5 @@ public PsiFile generate(String actionName) { } @Override - protected void fillAttributes(Properties attributes) {} + protected void fillAttributes(final Properties attributes) {}//NOPMD } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java index 08642cd51..bb22d991e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueTopologyGenerator.java @@ -27,7 +27,7 @@ public class QueueTopologyGenerator extends FileGenerator { /** * Constructor. */ - public QueueTopologyGenerator(Project project, QueueTopologyData topologyData) { + public QueueTopologyGenerator(final Project project, final QueueTopologyData topologyData) { super(project); this.topologyData = topologyData; @@ -36,7 +36,7 @@ public QueueTopologyGenerator(Project project, QueueTopologyData topologyData) { } @Override - public PsiFile generate(String actionName) { + public PsiFile generate(final String actionName) { final XmlFile topologyXml = (XmlFile) findOrCreateQueueTopologyXml.execute( actionName, topologyData.getModuleName() @@ -49,7 +49,7 @@ public PsiFile generate(String actionName) { if (rootTag == null) { return; } - XmlTag[] exchangeTags = rootTag.findSubTags("exchange"); + final XmlTag[] exchangeTags = rootTag.findSubTags("exchange"); boolean exchangeTagIsGenerated = true; XmlTag exchangeTag = null; for (final XmlTag tag: exchangeTags) { @@ -98,5 +98,5 @@ public PsiFile generate(String actionName) { } @Override - protected void fillAttributes(Properties attributes) {} + protected void fillAttributes(Properties attributes) {}//NOPMD } From ddc271bde7c177a45585f44905f8e35ef9288187 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:35:31 +0530 Subject: [PATCH 15/17] Added missing Magento copyrights --- .../generation/dialog/validator/rule/AlphaWithDashRule.java | 5 +++++ .../dialog/validator/rule/AlphaWithPeriodRule.java | 5 +++++ .../generation/dialog/validator/rule/PhpClassFqnRule.java | 5 +++++ .../generator/util/FindOrCreateCommunicationXml.java | 5 +++++ .../magento2plugin/magento/files/QueueCommunicationXml.java | 5 +++++ .../idea/magento2plugin/magento/files/QueueConsumerXml.java | 5 +++++ .../idea/magento2plugin/magento/files/QueuePublisherXml.java | 5 +++++ .../idea/magento2plugin/magento/files/QueueTopologyXml.java | 5 +++++ 8 files changed, 40 insertions(+) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java index 15fbd0ccf..a9e9b877b 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithDashRule.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; import com.magento.idea.magento2plugin.util.RegExUtil; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java index 599420bf9..806e59795 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/AlphaWithPeriodRule.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; import com.magento.idea.magento2plugin.util.RegExUtil; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java index 2ed93c1a8..31e906220 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/validator/rule/PhpClassFqnRule.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.dialog.validator.rule; import com.magento.idea.magento2plugin.util.RegExUtil; diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java index 6d52ce23c..6b7896680 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.actions.generation.generator.util; import com.intellij.openapi.project.Project; diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java index b247f5719..76598b78e 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueCommunicationXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.magento.files; import com.intellij.lang.Language; diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java index a4148830f..31ccba1a5 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueConsumerXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.magento.files; import com.intellij.lang.Language; diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java index 74c294ef3..789cc9000 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java +++ b/src/com/magento/idea/magento2plugin/magento/files/QueuePublisherXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.magento.files; import com.intellij.lang.Language; diff --git a/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java b/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java index 7bf9641c9..6a6451bc8 100644 --- a/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java +++ b/src/com/magento/idea/magento2plugin/magento/files/QueueTopologyXml.java @@ -1,3 +1,8 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + package com.magento.idea.magento2plugin.magento.files; import com.intellij.lang.Language; From 667217234b7424a6bb9e72b17907e167680c4f6d Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 13:38:47 +0530 Subject: [PATCH 16/17] Fixed CheckStyle issues --- .../generation/generator/QueueCommunicationGenerator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java index 5ef6ee679..b1bba1831 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueCommunicationGenerator.java @@ -57,7 +57,9 @@ public PsiFile generate(final String actionName) { boolean topicTagIsGenerated = true; XmlTag topicTag = null; for (final XmlTag tag: topicTags) { - if (communicationData.getTopicName().equals(tag.getAttribute(ATTRIBUTE_NAME).getValue())) { + if (communicationData.getTopicName().equals( + tag.getAttribute(ATTRIBUTE_NAME).getValue()) + ) { topicTagIsGenerated = false; topicTag = tag; break; From 3648d77d5835790f84da28f2e7a988cb9e79c7b7 Mon Sep 17 00:00:00 2001 From: Adarsh Manickam Date: Sat, 5 Dec 2020 16:29:00 +0530 Subject: [PATCH 17/17] Fixed PMD issues --- .../actions/generation/generator/QueueConsumerGenerator.java | 4 ++-- .../generator/util/FindOrCreateCommunicationXml.java | 2 +- .../generator/util/FindOrCreateQueueConsumerXml.java | 2 +- .../generator/util/FindOrCreateQueuePublisherXml.java | 2 +- .../generator/util/FindOrCreateQueueTopologyXml.java | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java index f8c9b6ef9..961b55bfa 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/QueueConsumerGenerator.java @@ -24,7 +24,7 @@ public class QueueConsumerGenerator extends FileGenerator { /** * Constructor. */ - public QueueConsumerGenerator(Project project, QueueConsumerData consumerData) { + public QueueConsumerGenerator(final Project project, final QueueConsumerData consumerData) { super(project); this.consumerData = consumerData; @@ -33,7 +33,7 @@ public QueueConsumerGenerator(Project project, QueueConsumerData consumerData) { } @Override - public PsiFile generate(String actionName) { + public PsiFile generate(final String actionName) { final XmlFile consumerXml = (XmlFile) findOrCreateQueueConsumerXml.execute( actionName, consumerData.getModuleName() diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java index 6b7896680..5cd1d1f73 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateCommunicationXml.java @@ -13,7 +13,7 @@ public class FindOrCreateCommunicationXml extends FindOrCreateQueueXml { /** * Constructor. */ - public FindOrCreateCommunicationXml(Project project) { + public FindOrCreateCommunicationXml(final Project project) { super(project); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java index 8498b83f1..137f518a9 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueConsumerXml.java @@ -13,7 +13,7 @@ public class FindOrCreateQueueConsumerXml extends FindOrCreateQueueXml { /** * Constructor. */ - public FindOrCreateQueueConsumerXml(Project project) { + public FindOrCreateQueueConsumerXml(final Project project) { super(project); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java index 3a4309961..e37690773 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueuePublisherXml.java @@ -13,7 +13,7 @@ public class FindOrCreateQueuePublisherXml extends FindOrCreateQueueXml { /** * Constructor. */ - public FindOrCreateQueuePublisherXml(Project project) { + public FindOrCreateQueuePublisherXml(final Project project) { super(project); } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java index 6994df35a..616102507 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/generator/util/FindOrCreateQueueTopologyXml.java @@ -13,7 +13,7 @@ public class FindOrCreateQueueTopologyXml extends FindOrCreateQueueXml { /** * Constructor. */ - public FindOrCreateQueueTopologyXml(Project project) { + public FindOrCreateQueueTopologyXml(final Project project) { super(project); }