Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bundles/fish.payara.eclipse.tools.micro/plugin.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ payara.xhtml.BeanWebRegionWizard.description=Create a new XHTML Page
payara.restfulfrompatternlabel=RESTful Web Service from Pattern (Java EE 6)
payara.restfulfrompattern.BeanWebRegionWizard.description=Create RESTful Web Service from Pattern

payara.micro.project.wizard.title=Payara Micro Project
payara.micro.project.wizard.description=Create a Payara Micro Maven project
payara.micro.project.wizard.title=Payara Starter Project
payara.micro.project.wizard.description=Create a Payara Server or Payara Micro Maven project
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ public class Messages extends org.eclipse.osgi.util.NLS {

public static String microSettingsPageTitle;
public static String microSettingsPageDescription;
public static String platformComponentLabel;
public static String platformValidationMessage;
public static String platformMicroOption;
public static String platformServerOption;
public static String contextPathComponentLabel;
public static String microVersionComponentLabel;
public static String autobindComponentLabel;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

microProjectTitle=New Payara Micro project
microProjectTitle=New Payara Starter project
microProjectSettingsPageTitle=Project settings
microProjectSettingsPageDescription=Enter a group id and artifact id of application
groupIdComponentLabel=Group Id:
Expand All @@ -9,23 +9,27 @@ packageComponentLabel=Package:
versionValidationMessage=Enter a version for the application.
packageValidationMessage=Invalid package name

microProjectLocationPageTitle=New Payara Micro project
microProjectLocationPageTitle=New Payara Starter project
microProjectLocationPageDescription=Select project name and location
projectArchetypeJobFailed=Failed to create project "{0}"
projectPomAlreadyExists=A pom.xml file already exists in the destination folder.
projectArchetypeJobCreating=Creating {0}

microSettingsPageTitle=Payara Micro settings
microSettingsPageDescription=Enter the context root of application and Payara Micro version
microSettingsPageTitle=Payara Starter settings
microSettingsPageDescription=Choose the runtime, context root and Payara version
platformComponentLabel=Runtime:
platformValidationMessage=Choose a Payara runtime
platformMicroOption=Payara Micro
platformServerOption=Payara Server
contextPathComponentLabel=Context path:
microVersionComponentLabel=Payara Micro version:
microVersionComponentLabel=Payara version:
autobindComponentLabel=Auto Bind HTTP:
contextPathValidationMessage=Enter the Context path of application
microVersionValidationMessage=Enter the Payara Micro version
microVersionValidationMessage=Enter the Payara version

microProjectTabTitle=Micro Project
projectBuildNotFound=Project build type not detected
buildArtifactComponentLabel=Build Artifact
debugPortComponentLabel=Debug Port
reloadArtifactComponentLabel=Reload Artifact on save
reloadArtifactComponentTooltip=Reload Artifact feature is only available for Exploded War
reloadArtifactComponentTooltip=Reload Artifact feature is only available for Exploded War
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
Expand Down Expand Up @@ -65,6 +64,7 @@

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.XMLConstants;

public class MicroProjectWizard extends Wizard implements INewWizard {

Expand Down Expand Up @@ -92,10 +92,13 @@ public MicroProjectWizard() {
public static final String ARCHETYPE_VERSION_5X = "1.5.0"; //$NON-NLS-1$
public static final String STARTER_ARCHETYPE_GROUP_ID = "fish.payara.starter";
public static final String STARTER_ARCHETYPE_ARTIFACT_ID = "payara-starter-archetype";
public static final String ARCHETYPE_VERSION_6X = "1.0-beta9"; //$NON-NLS-1$
public static final String STARTER_ARCHETYPE_VERSION = "2.2.1"; //$NON-NLS-1$
private static final String ARCHETYPE_JDK_VERSION = "jdkVersion"; //$NON-NLS-1$
private static final String ARCHETYPE_JDK_VERSION_DEFAULT_VALUE = "1.8"; //$NON-NLS-1$
public static final String ARCHETYPE_JAVA_VERSION = "javaVersion"; //$NON-NLS-1$
private static final String ARCHETYPE_JAVA_VERSION_DEFAULT_VALUE = "17"; //$NON-NLS-1$
public static final String ARCHETYPE_MICRO_VERSION = "payaraMicroVersion"; //$NON-NLS-1$
public static final String ARCHETYPE_PAYARA_VERSION = "payaraVersion"; //$NON-NLS-1$
public static final String ARCHETYPE_AUTOBIND_HTTP = "autoBindHttp"; //$NON-NLS-1$
private static final String ARCHETYPE_CONCURRENT_API = "addConcurrentApi"; //$NON-NLS-1$
private static final String ARCHETYPE_RESOURCE_API = "addResourceApi"; //$NON-NLS-1$
Expand All @@ -106,57 +109,80 @@ public MicroProjectWizard() {
public static final String ARCHETYPE_CONTEXT_ROOT = "contextRoot"; //$NON-NLS-1$
private static final String ARCHETYPE_CONTEXT_ROOT_DEFAULT_VALUE = "/"; //$NON-NLS-1$
private static final String ARCHETYPE_DEPLOY_WAR = "deployWar"; //$NON-NLS-1$
public static final String ARCHETYPE_PLATFORM = "platform"; //$NON-NLS-1$
public static final String PLATFORM_SERVER = "server"; //$NON-NLS-1$
public static final String PLATFORM_MICRO = "micro"; //$NON-NLS-1$
private static final String EMPTY = ""; //$NON-NLS-1$


public static final String DEFAULT_REPOSITORY_URL = "https://repo1.maven.org/maven2/"; // NOI18N

private static final String METADATA_URL = "fish/payara/extras/payara-micro/maven-metadata.xml"; // NOI18N
private static final String PAYARA_BOM_METADATA_URL = "fish/payara/api/payara-bom/maven-metadata.xml"; // NOI18N
private static final String PAYARA_MICRO_METADATA_URL = "fish/payara/extras/payara-micro/maven-metadata.xml"; // NOI18N

private static final List<String> versions = new ArrayList<>();
private static final Map<String, List<String>> versions = new HashMap<>();
public static List<String> getVersions() {
if (versions.isEmpty()) {
try {
// Construct the full URL
String urlString = DEFAULT_REPOSITORY_URL + METADATA_URL;
URL url = new URL(urlString);

// Open connection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");

// Read the response
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder xmlResponse = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
xmlResponse.append(line);
}
in.close();

// Parse the XML response
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlResponse.toString())));

String latest = doc.getElementsByTagName("latest").item(0).getTextContent();
// Extract versions
NodeList versionNodes = doc.getElementsByTagName("version");
for (int i = versionNodes.getLength() - 1; i >= 0; i--) {
String version = versionNodes.item(i).getTextContent();
if ((version.contains("Alpha") || version.contains("Beta") || version.contains("SNAPSHOT")) // NOI18N
&& !version.equals(latest)) {
continue;
};
versions.add(version);
}
return getVersions(PLATFORM_MICRO);
}

} catch (Exception e) {
e.printStackTrace();
}
public static List<String> getVersions(String platform) {
return versions.computeIfAbsent(platform, MicroProjectWizard::loadVersions);
}

public static String getDefaultVersion(String platform) {
List<String> resolvedVersions = getVersions(platform);
return resolvedVersions.isEmpty() ? EMPTY : resolvedVersions.get(0);
}

private static List<String> loadVersions(String platform) {
List<String> resolvedVersions = new ArrayList<>();
try {
// Construct the full URL
String metadataUrl = PLATFORM_SERVER.equals(platform) ? PAYARA_BOM_METADATA_URL : PAYARA_MICRO_METADATA_URL;
String urlString = DEFAULT_REPOSITORY_URL + metadataUrl;
URL url = new URL(urlString);

// Open connection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");

// Read the response
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder xmlResponse = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
xmlResponse.append(line);
}
in.close();

// Parse the XML response
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
factory.setFeature("http://xml.org/sax/features/external-general-entities", false); //$NON-NLS-1$
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); //$NON-NLS-1$
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, EMPTY);
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, EMPTY);
factory.setXIncludeAware(false);
factory.setExpandEntityReferences(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlResponse.toString())));

String latest = doc.getElementsByTagName("latest").item(0).getTextContent();
// Extract versions
NodeList versionNodes = doc.getElementsByTagName("version");
for (int i = versionNodes.getLength() - 1; i >= 0; i--) {
String version = versionNodes.item(i).getTextContent();
if ((version.contains("Alpha") || version.contains("Beta") || version.contains("SNAPSHOT")) // NOI18N
&& !version.equals(latest)) {
continue;
};
resolvedVersions.add(version);
}
} catch (Exception e) {
e.printStackTrace();
}
return versions;
return resolvedVersions;
}

@Override
Expand Down Expand Up @@ -190,10 +216,13 @@ private Archetype getArchetype() {
Archetype archetype = new Archetype();
archetype.setGroupId(STARTER_ARCHETYPE_GROUP_ID);
archetype.setArtifactId(STARTER_ARCHETYPE_ARTIFACT_ID);
archetype.setVersion(ARCHETYPE_VERSION_6X);
archetype.setVersion(STARTER_ARCHETYPE_VERSION);
Properties properties = new Properties();
properties.put(ARCHETYPE_JDK_VERSION, ARCHETYPE_JDK_VERSION_DEFAULT_VALUE);
properties.put(ARCHETYPE_MICRO_VERSION, getVersions().get(0));
properties.put(ARCHETYPE_JAVA_VERSION, ARCHETYPE_JAVA_VERSION_DEFAULT_VALUE);
properties.put(ARCHETYPE_PLATFORM, PLATFORM_MICRO);
properties.put(ARCHETYPE_MICRO_VERSION, getDefaultVersion(PLATFORM_MICRO));
properties.put(ARCHETYPE_PAYARA_VERSION, getDefaultVersion(PLATFORM_MICRO));
properties.put(ARCHETYPE_AUTOBIND_HTTP, TRUE.toString());
properties.put(ARCHETYPE_CONCURRENT_API, FALSE.toString());
properties.put(ARCHETYPE_RESOURCE_API, FALSE.toString());
Expand All @@ -210,6 +239,7 @@ private Archetype getArchetype() {
@Override
public boolean performFinish() {
Archetype archetype = microSettingsPage.getArchetype();
microSettingsPage.configureBuildTool();
final String groupId = projectSettingsPage.getGroupId();
final String artifactId = projectSettingsPage.getArtifactId();
final String version = projectSettingsPage.getVersion();
Expand Down
Loading