This is an automated email from the ASF dual-hosted git repository.
mbien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 8af5722b38 adding initial support for jakarta EE 10 transformer
new d848cb34e3 Merge pull request #5847 from
breakponchito/FISH-6771-support-transformation-jakartaee8-to-jakartaee10
8af5722b38 is described below
commit 8af5722b38aebfcb123ac98a92891f5a515f1af4
Author: Alfonso Altamirano <[email protected]>
AuthorDate: Tue Apr 4 16:16:40 2023 -0600
adding initial support for jakarta EE 10 transformer
Co-authored-by: Michael Bien <[email protected]>
---
.gitignore | 3 +
enterprise/jakarta.transformer/build.xml | 25 ++
enterprise/jakarta.transformer/licenseinfo.xml | 29 ++
enterprise/jakarta.transformer/manifest.mf | 7 +
.../nbproject/project.properties | 20 +
.../jakarta.transformer/nbproject/project.xml | 175 +++++++++
.../payara/jakarta/transformer/BannerJakarta.png | Bin 0 -> 7953 bytes
.../payara/jakarta/transformer/Bundle.properties | 33 ++
.../payara/jakarta/transformer/JakartaEEIcon.png | Bin 0 -> 319 bytes
.../jakarta/transformer/TransformerConstants.java | 73 ++++
.../transformer/TransformerPanelVisual.form | 155 ++++++++
.../transformer/TransformerPanelVisual.java | 299 +++++++++++++++
.../transformer/TransformerWizardIterator.java | 421 +++++++++++++++++++++
.../transformer/TransformerWizardPanel.java | 118 ++++++
.../fish/payara/jakarta/transformer/layer.xml | 26 ++
.../fish/payara/jakarta/transformer/pom.txt | 34 ++
.../transformer/transformerDescription.html | 28 ++
enterprise/maven.j2ee/nbproject/project.xml | 1 +
ide/swing.validation/nbproject/project.xml | 1 +
.../netbeans/modules/nbcode/integration/layer.xml | 1 +
.../nbcode/nbproject/platform.properties | 1 +
java/maven.embedder/nbproject/project.xml | 1 +
java/maven.indexer/nbproject/project.xml | 1 +
java/maven.model/nbproject/project.xml | 1 +
java/maven/nbproject/project.xml | 1 +
nbbuild/cluster.properties | 1 +
26 files changed, 1455 insertions(+)
diff --git a/.gitignore b/.gitignore
index 947a17a673..05acc82fe5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -111,3 +111,6 @@ derby.log
/java/languages.antlr/external/LexerAdaptor.java
/ide/languages.hcl/src/org/netbeans/modules/languages/hcl/grammar/*.java
+
+# idea
+.idea
diff --git a/enterprise/jakarta.transformer/build.xml
b/enterprise/jakarta.transformer/build.xml
new file mode 100644
index 0000000000..a3df84e2e1
--- /dev/null
+++ b/enterprise/jakarta.transformer/build.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project basedir="." default="build" name="enterprise/jakarta.transformer">
+ <description>Builds, tests, and runs the project
org.netbeans.modules.jakarta.transformer</description>
+ <import file="../../nbbuild/templates/projectized.xml"/>
+</project>
diff --git a/enterprise/jakarta.transformer/licenseinfo.xml
b/enterprise/jakarta.transformer/licenseinfo.xml
new file mode 100644
index 0000000000..0b231928a2
--- /dev/null
+++ b/enterprise/jakarta.transformer/licenseinfo.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<licenseinfo>
+ <fileset>
+
<file>src/org/netbeans/modules/fish/payara/jakarta/transformer/BannerJakarta.png</file>
+
<file>src/org/netbeans/modules/fish/payara/jakarta/transformer/JakartaEEIcon.png</file>
+ <license ref="EPL-v20" />
+ <comment type="COMMENT_UNSUPPORTED" />
+ </fileset>
+</licenseinfo>
diff --git a/enterprise/jakarta.transformer/manifest.mf
b/enterprise/jakarta.transformer/manifest.mf
new file mode 100644
index 0000000000..a95676309c
--- /dev/null
+++ b/enterprise/jakarta.transformer/manifest.mf
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.netbeans.modules.jakarta.transformer/0
+OpenIDE-Module-Layer:
org/netbeans/modules/fish/payara/jakarta/transformer/layer.xml
+OpenIDE-Module-Localizing-Bundle:
org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties
+AutoUpdate-Show-In-Client: true
+OpenIDE-Module-Specification-Version: 2.15
+
diff --git a/enterprise/jakarta.transformer/nbproject/project.properties
b/enterprise/jakarta.transformer/nbproject/project.properties
new file mode 100644
index 0000000000..ba9fea65f9
--- /dev/null
+++ b/enterprise/jakarta.transformer/nbproject/project.properties
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+javac.source=1.8
+javac.compilerargs=-Xlint -Xlint:-serial
diff --git a/enterprise/jakarta.transformer/nbproject/project.xml
b/enterprise/jakarta.transformer/nbproject/project.xml
new file mode 100644
index 0000000000..1547eeaeee
--- /dev/null
+++ b/enterprise/jakarta.transformer/nbproject/project.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.apisupport.project</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+
<code-name-base>org.netbeans.modules.jakarta.transformer</code-name-base>
+ <module-dependencies>
+ <dependency>
+
<code-name-base>org.netbeans.modules.maven.indexer</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>2</release-version>
+ <specification-version>2.52</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.netbeans.api.maven</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>1.18</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.netbeans.api.templates</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>1.7.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.netbeans.modules.maven</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>2</release-version>
+ <specification-version>2.133</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+
<code-name-base>org.netbeans.modules.maven.embedder</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>2</release-version>
+ <specification-version>2.58</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+
<code-name-base>org.netbeans.modules.maven.j2ee</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.65</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+
<code-name-base>org.netbeans.modules.maven.model</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.49</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+
<code-name-base>org.netbeans.modules.projectapi</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.72</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+
<code-name-base>org.netbeans.modules.projectuiapi</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.88.1.8</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.awt</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>7.67.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.dialogs</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>7.42.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.execution</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>9.3.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.filesystems</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>9.10.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.loaders</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>7.66.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>9.7.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util.lookup</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>8.33.1</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.openide.util.ui</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>9.6.1</specification-version>
+ </run-dependency>
+ </dependency>
+ </module-dependencies>
+ <public-packages/>
+ </data>
+ </configuration>
+</project>
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/BannerJakarta.png
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/BannerJakarta.png
new file mode 100644
index 0000000000..d7dcb77b03
Binary files /dev/null and
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/BannerJakarta.png
differ
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties
new file mode 100644
index 0000000000..029182443c
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties
@@ -0,0 +1,33 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+LBL_CreateProjectStep=Select Source to transform
+OpenIDE-Module-Display-Category=Java EE
+OpenIDE-Module-Long-Description=\
+ The jakarta transformer plugin enables you to transform applications from
Jakarta EE 8 to Jakarta EE 10.
+OpenIDE-Module-Name=Jakarta Transformer
+OpenIDE-Module-Short-Description=Jakarta transformer support for Jakarta EE
projects.
+# new properties for new UI design
+transformerPanelVisual.jLabel1.text=Source:
+transformerPanelVisual.jLabel2.text=Target:
+transformerPanelVisual.selectSourceFolder.text=Browse...
+transformerPanelVisual.selectTargetFolder.text=Browse...
+transformerPanelVisual.selectSourceFolder.actionCommand=BROWSE
+transformerPanelVisual.selectTargetFolder.actionCommand=BROWSE
+transformerPanelVisual.overrideCheckBox.text=Override
+transformerPanelVisual.overrideCheckBox.tooltip=Transform Source in-place
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/JakartaEEIcon.png
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/JakartaEEIcon.png
new file mode 100644
index 0000000000..3487295426
Binary files /dev/null and
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/JakartaEEIcon.png
differ
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerConstants.java
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerConstants.java
new file mode 100644
index 0000000000..8b0f017797
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerConstants.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.fish.payara.jakarta.transformer;
+
+/**
+ *
+ * @author alfon
+ */
+public class TransformerConstants {
+
+ public static final String PAYARA_TRANSFORMER_GROUP_ID =
"fish.payara.transformer";
+
+ public static final String PAYARA_TRANSFORMER_ARTIFACT_ID =
"fish.payara.transformer.maven";
+
+ public static final String PAYARA_TRANSFORMER_VERSION = "0.2.13";
+
+ public static final String PAYARA_TRANSFORMER_GOAL = "run";
+
+ public static final String SELECTED_SOURCE_PROPERTY_NAME =
"selectedSource";
+
+ public static final String SELECTED_TARGET_PROPERTY_NAME =
"selectedTarget";
+
+ public static final String PROJECT_NAME = "jakartaee-transformed-sample";
+
+ public static final String TARGET_FOLDER_NAME = "target";
+
+ public static final String POM_FILE_NAME = "pom.xml";
+
+ public static final String PACKAGE_PHASE = "package";
+
+ public static final String BANNER_IMAGE =
"org/netbeans/modules/fish/payara/jakarta/transformer/BannerJakarta.png";
+
+ public static final String INFORMATION_MESSAGE = "After transforming "
+ + "application you should need to apply pom configuration "
+ + "files manually. The suggested dependencies for Jakarta EE 10
are:";
+
+ public static final String ERROR_MESSAGE_DIALOG_TARGET = "The selected
target folder is not valid, " +
+ "please try again with a valid folder.";
+
+ public static final String ERROR_MESSAGE_DIALOG_SOURCE = "The selected
source is not valid, " +
+ "please try again with a valid source folder or file.";
+
+ public static final String JAKARTA_10_DEPENDENCY_EE_API =
+ "\n <dependency>"+
+ "\n \t \t <groupId>jakarta.platform</groupId>"+
+ "\n \t \t <artifactId>jakarta.jakartaee-api</artifactId>"+
+ "\n \t \t <version>10.0.0</version>"+
+ "\n \t \t <scope>provided</scope>"+
+ "\n</dependency> \n";
+ public static final String JAKARTA_10_DEPENDENCY_WEB_API =
+ "\n <dependency>"+
+ "\n \t \t <groupId>jakarta.platform</groupId>"+
+ "\n \t \t <artifactId>jakarta.jakartaee-web-api</artifactId>"+
+ "\n \t \t <version>10.0.0</version>"+
+ "\n \t \t <scope>provided</scope>"+
+ "\n </dependency>";
+}
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.form
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.form
new file mode 100644
index 0000000000..cf754965aa
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.form
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+<Form version="1.5" maxVersion="1.9"
type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer"
value="1"/>
+ <AuxValue name="FormSettings_autoSetComponentName"
type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean"
value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode"
type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean"
value="true"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer"
value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle"
type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean"
value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer"
value="2"/>
+ </AuxValues>
+
+ <Layout>
+ <DimensionLayout dim="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="jLabel1" alignment="1" min="-2"
max="-2" attributes="0"/>
+ <Component id="jLabel2" alignment="1" min="-2"
max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="source" pref="310" max="32767"
attributes="0"/>
+ <Component id="target" max="32767" attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="selectSourceButton" alignment="1"
min="-2" max="-2" attributes="0"/>
+ <Component id="selectTargetButton" alignment="1"
min="-2" max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ <Group type="102" alignment="0" attributes="0">
+ <Component id="overrideCheckBox" min="-2" max="-2"
attributes="0"/>
+ <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ <DimensionLayout dim="1">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="3" attributes="0">
+ <Component id="jLabel1" alignment="3" min="-2" max="-2"
attributes="0"/>
+ <Component id="selectSourceButton" alignment="3" min="-2"
max="-2" attributes="0"/>
+ <Component id="source" alignment="3" min="-2" max="-2"
attributes="0"/>
+ </Group>
+ <EmptySpace type="separate" max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="3" attributes="0">
+ <Component id="jLabel2" alignment="3" min="-2" max="-2"
attributes="0"/>
+ <Component id="target" alignment="3" min="-2" max="-2"
attributes="0"/>
+ <Component id="selectTargetButton" alignment="3" min="-2"
max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace type="separate" max="-2" attributes="0"/>
+ <Component id="overrideCheckBox" min="-2" max="-2"
attributes="0"/>
+ <EmptySpace max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel1">
+ <Properties>
+ <Property name="text" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.jLabel1.text"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel2">
+ <Properties>
+ <Property name="text" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.jLabel2.text"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JButton" name="selectSourceButton">
+ <Properties>
+ <Property name="text" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.selectSourceFolder.text"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ <Property name="actionCommand" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.selectSourceFolder.actionCommand"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent"
handler="selectSourceButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JTextField" name="source">
+ <Properties>
+ <Property name="name" type="java.lang.String" value="source"
noResource="true"/>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JTextField" name="target">
+ <Properties>
+ <Property name="name" type="java.lang.String" value="target"
noResource="true"/>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JButton" name="selectTargetButton">
+ <Properties>
+ <Property name="text" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.selectTargetFolder.text"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ <Property name="actionCommand" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.selectTargetFolder.actionCommand"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent"
handler="selectTargetButtonActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JCheckBox" name="overrideCheckBox">
+ <Properties>
+ <Property name="text" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.overrideCheckBox.text"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ <Property name="toolTipText" type="java.lang.String"
editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString
bundle="org/netbeans/modules/fish/payara/jakarta/transformer/Bundle.properties"
key="transformerPanelVisual.overrideCheckBox.tooltip"
replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class,
"{key}")"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed"
listener="java.awt.event.ActionListener"
parameters="java.awt.event.ActionEvent"
handler="overrideCheckBoxActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
+</Form>
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.java
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.java
new file mode 100644
index 0000000000..0d238ae154
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerPanelVisual.java
@@ -0,0 +1,299 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.fish.payara.jakarta.transformer;
+
+import java.io.File;
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import org.openide.WizardDescriptor;
+import org.openide.WizardValidationException;
+import org.openide.filesystems.FileUtil;
+
+public class TransformerPanelVisual extends JPanel {
+
+ private final TransformerWizardPanel panel;
+
+ private boolean override;
+
+ public TransformerPanelVisual(TransformerWizardPanel panel) {
+ initComponents();
+ this.panel = panel;
+
+ DocumentListener updateListener = new DocumentListener() {
+ @Override public void insertUpdate(DocumentEvent e) {
panel.fireChangeEvent(); }
+ @Override public void removeUpdate(DocumentEvent e) {
panel.fireChangeEvent(); }
+ @Override public void changedUpdate(DocumentEvent e) {
panel.fireChangeEvent(); }
+ };
+ this.source.getDocument().addDocumentListener(updateListener);
+ this.target.getDocument().addDocumentListener(updateListener);
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the
form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed" desc="Generated
Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jLabel1 = new javax.swing.JLabel();
+ jLabel2 = new javax.swing.JLabel();
+ selectSourceButton = new javax.swing.JButton();
+ source = new javax.swing.JTextField();
+ target = new javax.swing.JTextField();
+ selectTargetButton = new javax.swing.JButton();
+ overrideCheckBox = new javax.swing.JCheckBox();
+
+ org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.jLabel1.text")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(jLabel2,
org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.jLabel2.text")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(selectSourceButton,
org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.selectSourceFolder.text")); // NOI18N
+
selectSourceButton.setActionCommand(org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.selectSourceFolder.actionCommand")); // NOI18N
+ selectSourceButton.addActionListener(new
java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ selectSourceButtonActionPerformed(evt);
+ }
+ });
+
+ source.setName("source"); // NOI18N
+
+ target.setName("target"); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(selectTargetButton,
org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.selectTargetFolder.text")); // NOI18N
+
selectTargetButton.setActionCommand(org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.selectTargetFolder.actionCommand")); // NOI18N
+ selectTargetButton.addActionListener(new
java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ selectTargetButtonActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(overrideCheckBox,
org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.overrideCheckBox.text")); // NOI18N
+
overrideCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(TransformerPanelVisual.class,
"transformerPanelVisual.overrideCheckBox.tooltip")); // NOI18N
+ overrideCheckBox.addActionListener(new java.awt.event.ActionListener()
{
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ overrideCheckBoxActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel1,
javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jLabel2,
javax.swing.GroupLayout.Alignment.TRAILING))
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(source,
javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
+ .addComponent(target))
+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(selectSourceButton,
javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(selectTargetButton,
javax.swing.GroupLayout.Alignment.TRAILING)))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(overrideCheckBox)
+ .addGap(0, 0, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel1)
+ .addComponent(selectSourceButton)
+ .addComponent(source,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(18, 18, 18)
+
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel2)
+ .addComponent(target,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(selectTargetButton))
+ .addGap(18, 18, 18)
+ .addComponent(overrideCheckBox)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
+ );
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void selectSourceButtonActionPerformed(java.awt.event.ActionEvent
evt) {//GEN-FIRST:event_selectSourceButtonActionPerformed
+ String command = evt.getActionCommand();
+ if ("BROWSE".equals(command)) {
+ JFileChooser chooser = new JFileChooser();
+ //FileUtil.preventFileChooserSymlinkTraversal(chooser, null);
+ chooser.setCurrentDirectory(chooser.getCurrentDirectory());
+ chooser.setDialogTitle("Select source to transform");
+ chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+ String path = this.source.getText();
+ if (path.length() > 0) {
+ File f = new File(path);
+ if (f.exists()) {
+ chooser.setSelectedFile(f);
+ }
+ }
+ if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
+ File projectDir = chooser.getSelectedFile();
+
source.setText(FileUtil.normalizeFile(projectDir).getAbsolutePath());
+ }
+ panel.fireChangeEvent();
+ }
+ }//GEN-LAST:event_selectSourceButtonActionPerformed
+
+ private void selectTargetButtonActionPerformed(java.awt.event.ActionEvent
evt) {//GEN-FIRST:event_selectTargetButtonActionPerformed
+ String command = evt.getActionCommand();
+ if ("BROWSE".equals(command)) {
+ JFileChooser chooser = new JFileChooser();
+ //FileUtil.preventFileChooserSymlinkTraversal(chooser, null);
+ chooser.setCurrentDirectory(chooser.getCurrentDirectory());
+ chooser.setDialogTitle("Select Folder to Transform");
+ chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+ String path = this.target.getText();
+ if (path.length() > 0) {
+ File f = new File(path);
+ if (f.exists()) {
+ chooser.setSelectedFile(f);
+ }
+ }
+ if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
+ File projectDir = chooser.getSelectedFile();
+
target.setText(FileUtil.normalizeFile(projectDir).getAbsolutePath());
+ }
+ panel.fireChangeEvent();
+ }
+ }//GEN-LAST:event_selectTargetButtonActionPerformed
+
+ private void overrideCheckBoxActionPerformed(java.awt.event.ActionEvent
evt) {//GEN-FIRST:event_overrideCheckBoxActionPerformed
+ if(evt.getActionCommand().equals("Override")){
+ if(overrideCheckBox.isSelected()){
+ target.setText("");
+ target.setEnabled(false);
+ selectTargetButton.setEnabled(false);
+ override = true;
+ } else {
+ target.setEnabled(true);
+ selectTargetButton.setEnabled(true);
+ override = false;
+ }
+ panel.fireChangeEvent();
+ }
+ }//GEN-LAST:event_overrideCheckBoxActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JCheckBox overrideCheckBox;
+ private javax.swing.JButton selectSourceButton;
+ private javax.swing.JButton selectTargetButton;
+ private javax.swing.JTextField source;
+ private javax.swing.JTextField target;
+ // End of variables declaration//GEN-END:variables
+
+ @Override
+ public void addNotify() {
+ super.addNotify();
+ }
+
+ boolean valid(WizardDescriptor wizardDescriptor) throws
WizardValidationException {
+ return validate(wizardDescriptor);
+ }
+
+ void store(WizardDescriptor d) {
+ d.putProperty("sourceSelected", this.source.getText().trim());
+ d.putProperty("targetSelected", this.target.getText().trim());
+ d.putProperty("override", override);
+ }
+
+ void read(WizardDescriptor settings) {
+
+ }
+
+ boolean validate(WizardDescriptor d) throws WizardValidationException {
+ String source = this.source.getText().trim();
+ String target = this.target.getText().trim();
+ File sourceFile = new File(source);
+ File targetFile = new File(target);
+
+ //checking if the source was selected
+ if(source.isEmpty()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a source folder or file.");
+ return false;
+ }
+
+ if(!sourceFile.exists()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a valid source folder or file.");
+ return false;
+ }
+
+ if(override && target.isEmpty()) {
+ d.putProperty("WizardPanel_errorMessage",
+ null);
+ return true;
+ }
+
+ if(!override && target.isEmpty()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a target folder or file.");
+ return false;
+ }
+
+
+ //validation of second param when folder is selected as the source
+ if(!override && sourceFile.isDirectory()) {
+ if(!targetFile.exists()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a valid target folder.");
+ return false;
+ }
+ if(!targetFile.isDirectory()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a target folder.");
+ return false;
+ }
+ }
+
+ if(!override && sourceFile.isFile()) {
+ if(!targetFile.exists()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a valid target file.");
+ return false;
+ }
+
+ if(!targetFile.isDirectory()) {
+ d.putProperty("WizardPanel_errorMessage",
+ "You must select a target directory.");
+ return false;
+ }
+ }
+
+ if(!source.isEmpty() && !target.isEmpty()) {
+ d.putProperty("WizardPanel_errorMessage",
+ null);
+ }
+
+ return true;
+ }
+
+}
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardIterator.java
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardIterator.java
new file mode 100644
index 0000000000..b7c9b62792
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardIterator.java
@@ -0,0 +1,421 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.fish.payara.jakarta.transformer;
+
+import java.awt.Component;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.NoSuchElementException;
+import java.util.Set;
+import java.util.List;
+import javax.swing.JComponent;
+import javax.swing.event.ChangeListener;
+import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectManager;
+import org.netbeans.api.templates.TemplateRegistration;
+import org.netbeans.modules.maven.api.execute.RunUtils;
+import org.netbeans.modules.maven.execute.ModelRunConfig;
+import org.netbeans.modules.maven.execute.model.NetbeansActionMapping;
+import org.netbeans.spi.project.ui.support.ProjectChooser;
+import org.openide.DialogDisplayer;
+import org.openide.NotifyDescriptor;
+import org.openide.WizardDescriptor;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
+import org.openide.util.NbBundle.Messages;
+import org.netbeans.modules.maven.api.archetype.Archetype;
+import org.apache.maven.artifact.versioning.ComparableVersion;
+import org.netbeans.modules.maven.indexer.api.NBVersionInfo;
+import org.netbeans.modules.maven.indexer.api.RepositoryQueries;
+import org.openide.execution.ExecutorTask;
+
+public final class TransformerWizardIterator implements
WizardDescriptor.BackgroundInstantiatingIterator<WizardDescriptor> {
+
+ private int index;
+ private WizardDescriptor.Panel<WizardDescriptor>[] panels;
+ private WizardDescriptor wizardDescriptor;
+ static final Archetype TRANSFORMER_ARCHETYPE;
+
+ static {
+ TRANSFORMER_ARCHETYPE = new Archetype();
+
TRANSFORMER_ARCHETYPE.setGroupId(TransformerConstants.PAYARA_TRANSFORMER_GROUP_ID);
+
TRANSFORMER_ARCHETYPE.setVersion(TransformerConstants.PAYARA_TRANSFORMER_VERSION);
+
TRANSFORMER_ARCHETYPE.setArtifactId(TransformerConstants.PAYARA_TRANSFORMER_ARTIFACT_ID);
+ }
+
+ public TransformerWizardIterator() {
+ }
+
+ @TemplateRegistration(
+ folder = "Project/Maven2",
+ position = 1010,
+ displayName = "#transformer_displayName",
+ description = "transformerDescription.html",
+ iconBase =
"org/netbeans/modules/fish/payara/jakarta/transformer/JakartaEEIcon.png")
+ @Messages("transformer_displayName=Transform to Jakarta EE 10")
+ public static TransformerWizardIterator createWebAppIterator() {
+ return new TransformerWizardIterator();
+ }
+
+ @SuppressWarnings("rawtypes")
+ private WizardDescriptor.Panel<WizardDescriptor>[] createPanels() {
+ return new WizardDescriptor.Panel[]{new TransformerWizardPanel()};
+ }
+
+ private String[] createSteps() {
+ return new String[]{
+ NbBundle.getMessage(TransformerWizardIterator.class,
"LBL_CreateProjectStep")
+ };
+ }
+
+ @Override
+ public Set<FileObject> instantiate() throws IOException {
+ Set<FileObject> resultSet = new LinkedHashSet<>();
+ //validate condition to identify if the case is to transform a folder
to a new directory
+ String target = (String)
wizardDescriptor.getProperty("targetSelected");
+ String source = (String)
wizardDescriptor.getProperty("sourceSelected");
+ boolean override = (Boolean) wizardDescriptor.getProperty("override");
+ NotifyDescriptor notifyDescriptorTarget = new
NotifyDescriptor.Message(TransformerConstants.ERROR_MESSAGE_DIALOG_TARGET,
+ NotifyDescriptor.ERROR_MESSAGE);
+ NotifyDescriptor notifyDescriptorSource = new
NotifyDescriptor.Message(TransformerConstants.ERROR_MESSAGE_DIALOG_SOURCE,
+ NotifyDescriptor.ERROR_MESSAGE);
+ if (target != null && !target.isEmpty() && source != null &&
!source.isEmpty()) {
+ File targetFile = new File(target);
+ File sourceFile = new File(source);
+
+ if (!sourceFile.exists()) {
+ DialogDisplayer.getDefault().notify(notifyDescriptorSource);
+ }
+
+ if (sourceFile.exists() && sourceFile.isDirectory() &&
targetFile.isDirectory()) {
+ //calling process to transform folder content to a new location
+ return transformFolderToNewDirectory(resultSet, target,
source);
+ } else if (sourceFile.exists() && sourceFile.isDirectory() &&
!targetFile.exists()) {
+ DialogDisplayer.getDefault().notify(notifyDescriptorTarget);
+ }
+
+ //validate condition to identify if the case is to transform a
file to a new directory
+ if (sourceFile.exists() && sourceFile.isFile() &&
targetFile.isDirectory()) {
+ transformFileToNewDirectory(target, source);
+ } else if (sourceFile.exists() && sourceFile.isFile() &&
!targetFile.exists()) {
+ DialogDisplayer.getDefault().notify(notifyDescriptorTarget);
+ }
+
+ }
+
+ //override cases
+ if (source != null && override) {
+ File sourceFile = new File(source);
+
+ if (!sourceFile.exists()) {
+ DialogDisplayer.getDefault().notify(notifyDescriptorSource);
+ }
+
+ //override folder on the same location
+ if (sourceFile.exists() && sourceFile.isDirectory()) {
+ return transformFolderOnSameLocation(resultSet, source);
+ }
+
+ //override file on the same location
+ if (sourceFile.exists() && sourceFile.isFile()) {
+ transformFileOnSameLocation(source);
+ }
+ }
+
+ return Collections.emptySet();
+ }
+
+ public void transformFileOnSameLocation(String source) throws IOException {
+ File fileSource = new File(source);
+ File parentDirectory = new File(fileSource.getParent());
+ String pomFilePath = parentDirectory.getAbsolutePath()
+ + File.separator + TransformerConstants.POM_FILE_NAME;
+ File pomFile = new File(pomFilePath);
+ if (parentDirectory.exists() && parentDirectory.isDirectory()) {
+ FileObject directoryObject =
FileUtil.toFileObject(parentDirectory);
+ if (!pomFile.exists()) {
+ copyTempPomFile(directoryObject);
+ }
+ }
+
+ FileObject p = FileUtil.toFileObject(parentDirectory);
+ if (p != null) {
+ Project project = ProjectManager.getDefault().findProject(p);
+ ExecutorTask task = callMavenProcess(source, source, project);
+ if (task != null) {
+ task.waitFinished();
+ if (pomFile.exists()) {
+ pomFile.delete();
+ }
+ }
+ }
+ }
+
+ public Set<FileObject> transformFolderOnSameLocation(Set<FileObject>
resultSet, String source) throws IOException {
+ File directory = new File(source);
+ String pomFilePath = directory.getAbsolutePath()
+ + File.separator + TransformerConstants.POM_FILE_NAME;
+ File pomFile = new File(pomFilePath);
+ FileObject directoryObject = FileUtil.toFileObject(directory);
+ resultSet.add(directoryObject);
+ ProjectChooser.setProjectsFolder(directory);
+ if (!pomFile.exists()) {
+ copyTempPomFile(directoryObject);
+ }
+
+ if (directoryObject != null) {
+ Project project =
ProjectManager.getDefault().findProject(directoryObject);
+ ExecutorTask task = callMavenProcess(source, source, project);
+ if (task != null) {
+ task.waitFinished();
+ }
+ }
+
+ showJakartaAdviseDialog();
+
+ return resultSet;
+ }
+
+ public void transformFileToNewDirectory(String targetFolder, String
sourceFolder) throws IOException {
+ File directoryFile = createTargetDirectory(targetFolder);
+ FileObject directoryObject = FileUtil.toFileObject(directoryFile);
+ String pomFilePath = directoryFile.getAbsolutePath() + File.separator
+ TransformerConstants.POM_FILE_NAME;
+ File pomFile = new File(pomFilePath);
+ copyTempPomFile(directoryObject);
+
+ File sourceFile = new File(sourceFolder);
+ FileObject sourceToMove = FileUtil.toFileObject(sourceFile);
+ String name = sourceFile.getName();
+ if (name.contains(".")) {
+ String[] parts = name.split("\\.");
+ name = parts[0];
+ }
+ FileUtil.copyFile(sourceToMove, directoryObject, name);
+ FileObject p = FileUtil.toFileObject(directoryFile);
+ if (p != null) {
+ Project project = ProjectManager.getDefault().findProject(p);
+ String directoryName = directoryFile.getPath() + File.separator +
sourceFile.getName();
+ ExecutorTask task = callMavenProcess(directoryName, directoryName,
project);
+ if (task != null) {
+ task.waitFinished();
+ if (pomFile.exists()) {
+ pomFile.delete();
+ }
+ }
+ }
+ }
+
+ public Set<FileObject> transformFolderToNewDirectory(Set<FileObject>
resultSet,
+ String targetFolder,
String sourceFolder) throws IOException {
+ File directoryFile = createTargetDirectory(targetFolder);
+ File tempDirectory = createTempDirectory(targetFolder);
+ FileObject directoryObject = FileUtil.toFileObject(directoryFile);
+ FileObject tempObject = FileUtil.toFileObject(tempDirectory);
+ copyTempPomFile(tempObject);
+ resultSet.add(directoryObject);
+
+ File parent = directoryFile.getParentFile();
+ if (parent != null && parent.exists()) {
+ ProjectChooser.setProjectsFolder(parent);
+ }
+
+ String pomFilePath = tempDirectory.getAbsolutePath() + File.separator
+ TransformerConstants.POM_FILE_NAME;
+ File pomFile = new File(pomFilePath);
+
+ FileObject p = FileUtil.toFileObject(tempDirectory);
+ if (p != null) {
+ Project project = ProjectManager.getDefault().findProject(p);
+ ExecutorTask task = callMavenProcess(sourceFolder,
directoryFile.getPath(), project);
+ if (task != null) {
+ task.waitFinished();
+ if (pomFile.exists()) {
+ pomFile.delete();
+ }
+ if (tempDirectory.exists()) {
+ tempDirectory.delete();
+ }
+ }
+ }
+ showJakartaAdviseDialog();
+ return resultSet;
+ }
+
+ public ExecutorTask callMavenProcess(String source, String target, Project
project) {
+ NetbeansActionMapping mapping = new NetbeansActionMapping();
+ List<String> goals = new ArrayList<>();
+ goals.add(getLastTransformerVersionOfPlugin(TRANSFORMER_ARCHETYPE));
+ mapping.setGoals(goals);
+ mapping.setActionName("Transform source");
+ mapping.addProperty(TransformerConstants.SELECTED_SOURCE_PROPERTY_NAME,
+ source);
+ mapping.addProperty(TransformerConstants.SELECTED_TARGET_PROPERTY_NAME,
+ target);
+ ModelRunConfig rc = new ModelRunConfig(project, mapping,
+ mapping.getActionName(), null,
+ Lookup.EMPTY, false);
+ return RunUtils.run(rc);
+ }
+
+ public void showJakartaAdviseDialog() {
+ DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(
+ TransformerConstants.INFORMATION_MESSAGE + "\n"
+ + TransformerConstants.JAKARTA_10_DEPENDENCY_EE_API +
"\n or \n"
+ + TransformerConstants.JAKARTA_10_DEPENDENCY_WEB_API));
+ }
+
+ public void copyTempPomFile(FileObject directoryObject) throws IOException
{
+ try (InputStream s =
TransformerWizardIterator.class.getResourceAsStream("pom.txt")) {
+ FileObject fo = FileUtil.createData(directoryObject,
TransformerConstants.POM_FILE_NAME);
+ writeFile(s, fo);
+ }
+ }
+
+ public File createTargetDirectory(String targetFolder) {
+ File fileTargetFolder = new File(targetFolder
+ + File.separator + TransformerConstants.PROJECT_NAME);
+ File directoryFile = FileUtil.normalizeFile(fileTargetFolder);
+ directoryFile.mkdirs();
+ return directoryFile;
+ }
+
+ public File createTempDirectory(String targetFolder) {
+ File fileTargetFolder = new File(targetFolder + File.separator +
"temp");
+ File tempFile = FileUtil.normalizeFile(fileTargetFolder);
+ tempFile.mkdirs();
+ return tempFile;
+ }
+
+ private String getLastTransformerVersionOfPlugin(Archetype archetype) {
+ RepositoryQueries.Result<NBVersionInfo> versionsResult =
RepositoryQueries.
+ getVersionsResult(archetype.getGroupId(),
archetype.getArtifactId(), null);
+
+ List<NBVersionInfo> results = versionsResult.getResults();
+ for (NBVersionInfo result : results) {
+ String lastVersion = result.getVersion();
+ if (!lastVersion.contains("SNAPSHOT")) {
+ if (new ComparableVersion(lastVersion).compareTo(new
ComparableVersion(archetype.getVersion())) > 0) {
+ archetype.setVersion(lastVersion);
+ }
+ return archetype.getGroupId() + ":" +
archetype.getArtifactId() + ":"
+ + archetype.getVersion() + ":" +
TransformerConstants.PAYARA_TRANSFORMER_GOAL;
+ }
+ }
+ return archetype.getGroupId() + ":" + archetype.getArtifactId() + ":"
+ + archetype.getVersion() + ":" +
TransformerConstants.PAYARA_TRANSFORMER_GOAL;
+ }
+
+ @Override
+ public void initialize(WizardDescriptor wiz) {
+ this.wizardDescriptor = wiz;
+ index = 0;
+ panels = createPanels();
+ // Make sure list of steps is accurate.
+ String[] steps = createSteps();
+ for (int i = 0; i < panels.length; i++) {
+ Component c = panels[i].getComponent();
+ if (steps[i] == null) {
+ // Default step name to component name of panel.
+ // Mainly useful for getting the name of the target
+ // chooser to appear in the list of steps.
+ steps[i] = c.getName();
+ }
+ if (c instanceof JComponent) { // assume Swing components
+ JComponent jc = (JComponent) c;
+ // Step #.
+ // TODO if using org.openide.dialogs >= 7.8, can use
WizardDescriptor.PROP_*:
+ jc.putClientProperty("WizardPanel_contentSelectedIndex", i);
+ // Step name (actually the whole list for reference).
+ jc.putClientProperty("WizardPanel_contentData", steps);
+ }
+ }
+ wizardDescriptor.putProperty(WizardDescriptor.PROP_IMAGE,
+ ImageUtilities.loadImage(TransformerConstants.BANNER_IMAGE,
true));
+ }
+
+ @Override
+ public void uninitialize(WizardDescriptor wiz) {
+ if (this.wizardDescriptor != null) {
+ this.wizardDescriptor.putProperty("targetSelected", null);
+ this.wizardDescriptor.putProperty("sourceSelected", null);
+ this.wizardDescriptor = null;
+ }
+ panels = null;
+ }
+
+ @Override
+ public String name() {
+ return MessageFormat.format("{0} of {1}",
+ new Object[]{index + 1, panels.length});
+ }
+
+ @Override
+ public boolean hasNext() {
+ return index < panels.length - 1;
+ }
+
+ @Override
+ public boolean hasPrevious() {
+ return index > 0;
+ }
+
+ @Override
+ public void nextPanel() {
+ if (!hasNext()) {
+ throw new NoSuchElementException();
+ }
+ index++;
+ }
+
+ @Override
+ public void previousPanel() {
+ if (!hasPrevious()) {
+ throw new NoSuchElementException();
+ }
+ index--;
+ }
+
+ @Override
+ public WizardDescriptor.Panel<WizardDescriptor> current() {
+ return panels[index];
+ }
+
+ @Override
+ public final void addChangeListener(ChangeListener l) {
+ }
+
+ @Override
+ public final void removeChangeListener(ChangeListener l) {
+ }
+
+ private static void writeFile(InputStream str, FileObject fo) throws
IOException {
+ try (OutputStream out = fo.getOutputStream()) {
+ FileUtil.copy(str, out);
+ }
+ }
+
+}
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardPanel.java
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardPanel.java
new file mode 100644
index 0000000000..24021df3a3
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/TransformerWizardPanel.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.fish.payara.jakarta.transformer;
+
+import java.awt.Component;
+import java.util.HashSet;
+import java.util.Set;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import org.openide.WizardDescriptor;
+import org.openide.WizardValidationException;
+import org.openide.util.Exceptions;
+import org.openide.util.HelpCtx;
+import org.openide.util.NbBundle;
+
+/**
+ * Panel just asking for basic info.
+ */
+public class TransformerWizardPanel implements
WizardDescriptor.Panel<WizardDescriptor>,
+ WizardDescriptor.ValidatingPanel<WizardDescriptor>,
WizardDescriptor.FinishablePanel<WizardDescriptor> {
+
+ private WizardDescriptor wizardDescriptor;
+ private TransformerPanelVisual component;
+
+ public TransformerWizardPanel() {
+ }
+
+ @Override
+ public Component getComponent() {
+ if (component == null) {
+ component = new TransformerPanelVisual(this);
+
component.setName(NbBundle.getMessage(TransformerWizardPanel.class,
"LBL_CreateProjectStep"));
+ }
+ return component;
+ }
+
+ @Override
+ public HelpCtx getHelp() {
+ return new
HelpCtx("org.netbeans.modules.fish.payara.jakarta.transformer.TransformerWizardPanel");
+ }
+
+ @Override
+ public boolean isValid() {
+ getComponent();
+ try {
+ return component.valid(wizardDescriptor);
+ } catch (WizardValidationException ex) {
+ Exceptions.printStackTrace(ex);
+ return false;
+ }
+ }
+
+ private final Set<ChangeListener> listeners = new HashSet<>(1); // or can
use ChangeSupport in NB 6.0
+
+ @Override
+ public final void addChangeListener(ChangeListener l) {
+ synchronized (listeners) {
+ listeners.add(l);
+ }
+ }
+
+ @Override
+ public final void removeChangeListener(ChangeListener l) {
+ synchronized (listeners) {
+ listeners.remove(l);
+ }
+ }
+
+ protected final void fireChangeEvent() {
+ Set<ChangeListener> ls;
+ synchronized (listeners) {
+ ls = new HashSet<>(listeners);
+ }
+ ChangeEvent ev = new ChangeEvent(this);
+ for (ChangeListener l : ls) {
+ l.stateChanged(ev);
+ }
+ }
+
+ @Override
+ public void readSettings(WizardDescriptor settings) {
+ wizardDescriptor = settings;
+ component.read(wizardDescriptor);
+ }
+
+ @Override
+ public void storeSettings(WizardDescriptor settings) {
+ component.store(settings);
+ }
+
+ @Override
+ public boolean isFinishPanel() {
+ return true;
+ }
+
+ @Override
+ public void validate() throws WizardValidationException {
+ getComponent();
+ component.validate(wizardDescriptor);
+ }
+
+}
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/layer.xml
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/layer.xml
new file mode 100644
index 0000000000..ed4acfc2ba
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/layer.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN"
"http://www.netbeans.org/dtds/filesystem-1_2.dtd">
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<filesystem>
+ <folder name="Templates">
+ </folder>
+</filesystem>
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/pom.txt
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/pom.txt
new file mode 100644
index 0000000000..31842844fa
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/pom.txt
@@ -0,0 +1,34 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>jakartaee.transformed.sample</groupId>
+ <artifactId>jakartaee-transformed-sample</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+</project>
\ No newline at end of file
diff --git
a/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/transformerDescription.html
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/transformerDescription.html
new file mode 100644
index 0000000000..34d1f64088
--- /dev/null
+++
b/enterprise/jakarta.transformer/src/org/netbeans/modules/fish/payara/jakarta/transformer/transformerDescription.html
@@ -0,0 +1,28 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ </head>
+ <body>
+ This is to transform an application to Jakarta EE 10
+ </body>
+</html>
diff --git a/enterprise/maven.j2ee/nbproject/project.xml
b/enterprise/maven.j2ee/nbproject/project.xml
index 9fde5ea0bf..8682ebae1c 100644
--- a/enterprise/maven.j2ee/nbproject/project.xml
+++ b/enterprise/maven.j2ee/nbproject/project.xml
@@ -540,6 +540,7 @@
</test-dependencies>
<friend-packages>
<friend>org.netbeans.modules.payara.micro</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<package>org.netbeans.modules.maven.j2ee</package>
<package>org.netbeans.modules.maven.j2ee.execution</package>
<package>org.netbeans.modules.maven.j2ee.utils</package>
diff --git a/ide/swing.validation/nbproject/project.xml
b/ide/swing.validation/nbproject/project.xml
index 1efa8cc75a..1d18485631 100644
--- a/ide/swing.validation/nbproject/project.xml
+++ b/ide/swing.validation/nbproject/project.xml
@@ -68,6 +68,7 @@
<friend>org.netbeans.modules.maven.j2ee</friend>
<friend>org.netbeans.modules.nodejs</friend>
<friend>org.netbeans.modules.payara.micro</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<package>org.netbeans.api.validation.adapters</package>
<package>org.netbeans.validation.api</package>
<package>org.netbeans.validation.api.builtin.indexvalidation</package>
diff --git
a/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
index 44b70b59dd..11e1bf64ab 100644
---
a/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
+++
b/java/java.lsp.server/nbcode/integration/src/org/netbeans/modules/nbcode/integration/layer.xml
@@ -93,6 +93,7 @@
<file name="Import_hidden"/>
<folder name="Maven2">
<file
name="org-netbeans-modules-fish-payara-micro-project-ui-MicroProjectWizardIterator-createWebAppIterator_hidden"/>
+ <file
name="org-netbeans-modules-fish-payara-jakarta-transformer-TransformerWizardIterator-createWebAppIterator_hidden"/>
<file
name="org-netbeans-modules-maven-j2ee-ui-wizard-EAWizardIterator_hidden"/>
<file
name="org-netbeans-modules-maven-j2ee-ui-wizard-EEWizardIterator-createAppClientIterator_hidden"/>
<file
name="org-netbeans-modules-maven-j2ee-ui-wizard-EEWizardIterator-createEJBIterator_hidden"/>
diff --git a/java/java.lsp.server/nbcode/nbproject/platform.properties
b/java/java.lsp.server/nbcode/nbproject/platform.properties
index 2e16c1e7b0..d112b30f15 100644
--- a/java/java.lsp.server/nbcode/nbproject/platform.properties
+++ b/java/java.lsp.server/nbcode/nbproject/platform.properties
@@ -344,6 +344,7 @@ disabled.modules=\
org.netbeans.modules.j2ee.sun.appsrv,\
org.netbeans.modules.j2ee.sun.dd,\
org.netbeans.modules.j2ee.sun.ddui,\
+ org.netbeans.modules.jakarta.transformer,\
org.netbeans.modules.jakarta.web.beans,\
org.netbeans.modules.jakartaee8.api,\
org.netbeans.modules.jakartaee8.platform,\
diff --git a/java/maven.embedder/nbproject/project.xml
b/java/maven.embedder/nbproject/project.xml
index 6003c512ff..cd1c5de37d 100644
--- a/java/maven.embedder/nbproject/project.xml
+++ b/java/maven.embedder/nbproject/project.xml
@@ -175,6 +175,7 @@
<friend>org.vaadin.netbeans.maven</friend>
<friend>org.netbeans.modules.payara.tooling</friend>
<friend>org.netbeans.modules.payara.micro</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<!-- NetBeans support for Google App Engine -->
<friend>org.netbeans.modules.j2ee.appengine</friend>
<friend>org.netbeans.modules.maven.util</friend>
diff --git a/java/maven.indexer/nbproject/project.xml
b/java/maven.indexer/nbproject/project.xml
index 19c22e0642..c995c1f72d 100644
--- a/java/maven.indexer/nbproject/project.xml
+++ b/java/maven.indexer/nbproject/project.xml
@@ -154,6 +154,7 @@
<friend>org.netbeans.modules.maven.search</friend>
<friend>ro.emilianbold.modules.maven.search.remote</friend>
<friend>org.netbeans.modules.payara.tooling</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<package>org.apache.lucene</package>
<package>org.apache.lucene.analysis</package>
<package>org.apache.lucene.analysis.standard</package>
diff --git a/java/maven.model/nbproject/project.xml
b/java/maven.model/nbproject/project.xml
index 9d1c4e6c67..d2faac0f13 100644
--- a/java/maven.model/nbproject/project.xml
+++ b/java/maven.model/nbproject/project.xml
@@ -232,6 +232,7 @@
<!-- [email protected] -->
<friend>org.vaadin.netbeans.maven</friend>
<friend>org.netbeans.modules.payara.micro</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<!-- NetBeans support for Google App Engine -->
<friend>org.netbeans.modules.j2ee.appengine</friend>
<friend>org.netbeans.modules.maven.util</friend>
diff --git a/java/maven/nbproject/project.xml b/java/maven/nbproject/project.xml
index ad4f9c220f..3cce5d8419 100644
--- a/java/maven/nbproject/project.xml
+++ b/java/maven/nbproject/project.xml
@@ -648,6 +648,7 @@
<!-- [email protected] -->
<friend>org.vaadin.netbeans.maven</friend>
<friend>org.netbeans.modules.payara.micro</friend>
+ <friend>org.netbeans.modules.jakarta.transformer</friend>
<!-- NetBeans support for Google App Engine -->
<friend>org.netbeans.modules.j2ee.appengine</friend>
<friend>org.netbeans.modules.maven.util</friend>
diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties
index 0c82f7510a..25f6bb112c 100644
--- a/nbbuild/cluster.properties
+++ b/nbbuild/cluster.properties
@@ -764,6 +764,7 @@ nb.cluster.enterprise=\
j2ee.sun.ddui,\
j2eeapis,\
j2eeserver,\
+ jakarta.transformer,\
jakarta.web.beans,\
jakartaee10.api,\
jakartaee10.platform,\
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists