Skip to content

Commit cb388f2

Browse files
committed
wip
1 parent 2a82f2b commit cb388f2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+4773
-7
lines changed

devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,7 @@ public void execute() throws MojoExecutionException {
346346
}
347347

348348
static ExtensionCatalog resolveExtensionsCatalog(AbstractMojo mojo, String groupId, String artifactId, String version,
349-
ExtensionCatalogResolver catalogResolver, MavenArtifactResolver artifactResolver, MessageWriter log)
350-
throws MojoExecutionException {
349+
ExtensionCatalogResolver catalogResolver, MavenArtifactResolver artifactResolver, MessageWriter log) {
351350

352351
if (catalogResolver.hasRegistries()) {
353352
try {

independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ModelResolutionTaskRunner.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* Task runner
55
*/
6-
interface ModelResolutionTaskRunner {
6+
public interface ModelResolutionTaskRunner {
77

88
/**
99
* Returns an instance of a non-blocking task runner.

independent-projects/tools/devtools-common/pom.xml

+51
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,59 @@
2424
</testResource>
2525
</testResources>
2626
</build>
27+
<!--
28+
<dependencyManagement>
29+
<dependencies>
30+
<dependency>
31+
<groupId>org.openrewrite.recipe</groupId>
32+
<artifactId>rewrite-recipe-bom</artifactId>
33+
<version>1.14.0</version>
34+
<type>pom</type>
35+
<scope>import</scope>
36+
</dependency>
2737
38+
<dependency>
39+
<groupId>org.jboss.spec.javax.xml.bind</groupId>
40+
<artifactId>jboss-jaxb-api_2.3_spec</artifactId>
41+
<version>${jboss-jaxb-api_2.3_spec.version}</version>
42+
</dependency>
43+
44+
</dependencies>
45+
</dependencyManagement>
46+
-->
2847
<dependencies>
48+
<!--
49+
<dependency>
50+
<groupId>org.openrewrite</groupId>
51+
<artifactId>rewrite-maven</artifactId>
52+
<exclusions>
53+
<exclusion>
54+
<groupId>org.glassfish</groupId>
55+
<artifactId>javax.json</artifactId>
56+
</exclusion>
57+
<exclusion>
58+
<groupId>org.jboss</groupId>
59+
<artifactId>jandex</artifactId>
60+
</exclusion>
61+
<exclusion>
62+
<groupId>org.checkerframework</groupId>
63+
<artifactId>checker-qual</artifactId>
64+
</exclusion>
65+
<exclusion>
66+
<groupId>jakarta.xml.bind</groupId>
67+
<artifactId>jakarta.xml.bind-api</artifactId>
68+
</exclusion>
69+
<exclusion>
70+
<groupId>jakarta.activation</groupId>
71+
<artifactId>jakarta.activation-api</artifactId>
72+
</exclusion>
73+
</exclusions>
74+
</dependency>
75+
<dependency>
76+
<groupId>org.jboss.spec.javax.xml.bind</groupId>
77+
<artifactId>jboss-jaxb-api_2.3_spec</artifactId>
78+
</dependency>
79+
-->
2980
<dependency>
3081
<groupId>io.quarkus</groupId>
3182
<artifactId>quarkus-devtools-registry-client</artifactId>

independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/CreateProjectCommandHandler.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private static void setQuarkusProperties(QuarkusCommandInvocation invocation, Ex
173173
});
174174
}
175175

176-
private List<Extension> computeRequiredExtensions(ExtensionCatalog catalog,
176+
private static List<Extension> computeRequiredExtensions(ExtensionCatalog catalog,
177177
final Set<String> extensionsQuery, MessageWriter log) throws QuarkusCommandException {
178178
final List<Extension> extensionsToAdd = computeExtensionsFromQuery(catalog, extensionsQuery, log);
179179
if (extensionsToAdd == null) {
@@ -182,8 +182,7 @@ private List<Extension> computeRequiredExtensions(ExtensionCatalog catalog,
182182
return extensionsToAdd;
183183
}
184184

185-
private static List<ExtensionCatalog> getExtensionOrigins(ExtensionCatalog extensionCatalog,
186-
List<Extension> extensionsToAdd)
185+
static List<ExtensionCatalog> getExtensionOrigins(ExtensionCatalog extensionCatalog, List<Extension> extensionsToAdd)
187186
throws QuarkusCommandException {
188187

189188
if (extensionsToAdd.isEmpty() && extensionCatalog.isPlatform()) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package io.quarkus.devtools.commands.handlers;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collection;
5+
import java.util.HashMap;
6+
import java.util.List;
7+
import java.util.Map;
8+
9+
import io.quarkus.devtools.commands.data.QuarkusCommandException;
10+
import io.quarkus.maven.dependency.ArtifactKey;
11+
import io.quarkus.registry.CatalogMergeUtility;
12+
import io.quarkus.registry.catalog.Extension;
13+
import io.quarkus.registry.catalog.ExtensionCatalog;
14+
15+
public class RegistryProjectInfo {
16+
17+
public static RegistryProjectInfo fromCatalogWithKeys(ExtensionCatalog registryCatalog,
18+
Collection<ArtifactKey> extensionKeys)
19+
throws QuarkusCommandException {
20+
return fromCatalogWithExtensions(registryCatalog, collectExtensions(registryCatalog, extensionKeys));
21+
}
22+
23+
public static RegistryProjectInfo fromCatalogWithExtensions(ExtensionCatalog registryCatalog, List<Extension> extensions)
24+
throws QuarkusCommandException {
25+
final List<ExtensionCatalog> extensionOrigins = CreateProjectCommandHandler.getExtensionOrigins(registryCatalog,
26+
extensions);
27+
28+
ExtensionCatalog primaryCatalog = registryCatalog;
29+
if (!extensionOrigins.isEmpty()) {
30+
// necessary to set the versions from the selected origins
31+
final ExtensionCatalog mergedCatalog = CatalogMergeUtility.merge(extensionOrigins);
32+
extensions = syncWithCatalog(mergedCatalog, extensions);
33+
primaryCatalog = getPrimaryCatalog(extensionOrigins);
34+
} else {
35+
extensions = syncWithCatalog(primaryCatalog, extensions);
36+
}
37+
38+
return new RegistryProjectInfo(primaryCatalog, extensionOrigins, extensions);
39+
}
40+
41+
private static ExtensionCatalog getPrimaryCatalog(List<ExtensionCatalog> extensionOrigins) {
42+
ExtensionCatalog primaryCatalog;
43+
primaryCatalog = null;
44+
for (ExtensionCatalog c : extensionOrigins) {
45+
if (c.isPlatform()) {
46+
if (c.getBom().getArtifactId().equals("quarkus-bom")) {
47+
primaryCatalog = c;
48+
break;
49+
} else if (primaryCatalog == null) {
50+
primaryCatalog = c;
51+
}
52+
}
53+
}
54+
return primaryCatalog;
55+
}
56+
57+
private static List<Extension> collectExtensions(ExtensionCatalog catalog, Collection<ArtifactKey> extensionKeys) {
58+
var result = new ArrayList<Extension>(extensionKeys.size());
59+
var catalogExtensions = toMap(catalog.getExtensions());
60+
for (var key : extensionKeys) {
61+
var catalogExt = catalogExtensions.get(key);
62+
if (catalogExt == null) {
63+
throw new IllegalArgumentException("Failed to locate " + key + " in the catalog");
64+
}
65+
result.add(catalogExt);
66+
}
67+
return result;
68+
}
69+
70+
private static List<Extension> syncWithCatalog(ExtensionCatalog catalog, List<Extension> extensions) {
71+
var result = new ArrayList<Extension>(extensions.size());
72+
var catalogExtensions = toMap(catalog.getExtensions());
73+
for (var e : extensions) {
74+
var catalogExt = catalogExtensions.get(e.getArtifact().getKey());
75+
result.add(catalogExt == null ? e : catalogExt);
76+
}
77+
return result;
78+
}
79+
80+
private static Map<ArtifactKey, Extension> toMap(Collection<Extension> extensions) {
81+
var result = new HashMap<ArtifactKey, Extension>(extensions.size());
82+
for (var e : extensions) {
83+
result.put(e.getArtifact().getKey(), e);
84+
}
85+
return result;
86+
}
87+
88+
private final ExtensionCatalog primaryPlatformBom;
89+
private final List<ExtensionCatalog> extensionOrigins;
90+
private final List<Extension> extensions;
91+
92+
public RegistryProjectInfo(ExtensionCatalog primaryPlatformBom, List<ExtensionCatalog> extensionOrigins,
93+
List<Extension> extensions) {
94+
this.primaryPlatformBom = primaryPlatformBom;
95+
this.extensionOrigins = extensionOrigins;
96+
this.extensions = extensions;
97+
}
98+
99+
public ExtensionCatalog getPrimaryPlatformBom() {
100+
return primaryPlatformBom;
101+
}
102+
103+
public List<ExtensionCatalog> getExtensionOrigins() {
104+
return extensionOrigins;
105+
}
106+
107+
public List<Extension> getExtensions() {
108+
return extensions;
109+
}
110+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.quarkus.devtools.project.configuration;
2+
3+
import java.nio.file.Path;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import io.quarkus.bootstrap.workspace.WorkspaceModuleId;
8+
9+
public class ConfiguredApplication {
10+
11+
private final WorkspaceModuleId id;
12+
private final Path moduleConfigFile;
13+
private final List<ConfiguredBom> boms = new ArrayList<>();
14+
private final List<ConfiguredArtifact> topExtensions = new ArrayList<>();
15+
private ConfiguredArtifact quarkusPlugin;
16+
17+
public ConfiguredApplication(WorkspaceModuleId id, Path moduleDir) {
18+
this.id = id;
19+
this.moduleConfigFile = moduleDir;
20+
}
21+
22+
public WorkspaceModuleId getId() {
23+
return id;
24+
}
25+
26+
public Path getModuleConfigFile() {
27+
return moduleConfigFile;
28+
}
29+
30+
public List<ConfiguredBom> getPlatformBoms() {
31+
return boms;
32+
}
33+
34+
public void addPlatformBom(ConfiguredBom platformBom) {
35+
boms.add(platformBom);
36+
}
37+
38+
public List<ConfiguredArtifact> getTopExtensionDependencies() {
39+
return topExtensions;
40+
}
41+
42+
public void addTopExtensionDependency(ConfiguredArtifact topExtensionDep) {
43+
topExtensions.add(topExtensionDep);
44+
}
45+
46+
public void setQuarkusPlugin(ConfiguredArtifact quarkusPlugin) {
47+
this.quarkusPlugin = quarkusPlugin;
48+
}
49+
50+
public ConfiguredArtifact getQuarkusPlugin() {
51+
return quarkusPlugin;
52+
}
53+
}

0 commit comments

Comments
 (0)