Skip to content

Commit

Permalink
refactor: made compat with IC-2023.1 (#751)
Browse files Browse the repository at this point in the history
Signed-off-by: Andre Dietisheim <adietish@redhat.com>
  • Loading branch information
adietish committed Mar 29, 2023
1 parent 7fd6ce9 commit c2ad35d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/IJ.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
IJ: [IC-2020.3, IC-2021.1, IC-2021.2, IC-2021.3, IC-2022.1, IC-2022.2, IC-2022.3]
IJ: [IC-2020.3, IC-2021.1, IC-2021.2, IC-2021.3, IC-2022.1, IC-2022.2, IC-2022.3, IC-2023.1]

steps:
- uses: actions/checkout@v2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
Expand Down Expand Up @@ -133,7 +135,7 @@ private List<MavenArtifact> ensureDownloaded(Module module, MavenProject mavenPr
List<MavenArtifact> result = new ArrayList<>();
long start = System.currentTimeMillis();
try {
MavenEmbedderWrapper serverWrapper = MavenServerManager.getInstance().createEmbedder(module.getProject(), false, mavenProject.getDirectory(), mavenProject.getDirectory());
MavenEmbedderWrapper serverWrapper = createEmbedderWrapper(module.getProject(), mavenProject.getDirectory());
if (classifier != null) {
for(MavenId id : deploymentIds) {
result.add(serverWrapper.resolve(new MavenArtifactInfo(id, "jar", classifier), mavenProject.getRemoteRepositories()));
Expand All @@ -148,6 +150,49 @@ private List<MavenArtifact> ensureDownloaded(Module module, MavenProject mavenPr
return result;
}

/**
* Returns a {@code MavenEmbedderWrapper} instance for the given project and working directory.
* This code is using reflection to get the instance of the {@code MavenServerManager} and calls
* {@code createEmbedder} on it (MavenServerManager.getInstance().createEmbedder()).
* The instance that is created is then returned.
*
* This code can be removed once the minimum version gets IC-2023.1.
*
* <ul>
* <li>< IC-2023.1: MavenServerManager is an abstract class</li>
* <li>>= IC-2023.1: MavenServerManager is an interface</li>
* </ul>
*
* @param project
* @param workingDirectory
* @return
*/
private MavenEmbedderWrapper createEmbedderWrapper(Project project, String workingDirectory) {
try {
Class<?> clazz = Class.forName("org.jetbrains.idea.maven.server.MavenServerManager");
Object manager = clazz
.getMethod("getInstance")
.invoke(clazz);
if (manager == null) {
return null;
}
Method createEmbedderMethod = clazz.getMethod(
"createEmbedder",
Project.class,
Boolean.TYPE,
String.class,
String.class);
return (MavenEmbedderWrapper) createEmbedderMethod.invoke(
manager,
project,
false,
workingDirectory,
workingDirectory);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}

@Override
public RunnerAndConfigurationSettings getConfigurationDelegate(Module module, QuarkusRunConfiguration configuration) {
RunnerAndConfigurationSettings settings = RunManager.getInstance(module.getProject()).createConfiguration(module.getName() + " Quarkus (Maven)", MavenRunConfigurationType.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public boolean isApplicable(MavenProject mavenProject) {
}

@Override
public void getSupportedPackagings(Collection<String> result) {
public void getSupportedPackagings(Collection result) {
result.addAll(SUPPORTED_PACKAGINGS);
}

Expand Down

0 comments on commit c2ad35d

Please sign in to comment.