forked from redhat-developer/quarkus-ls
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Easily generate all-quarkus-properties.json
Fixes redhat-developer#182 Signed-off-by: azerr <azerr@redhat.com>
- Loading branch information
1 parent
63364fa
commit c00db08
Showing
4 changed files
with
6,434 additions
and
4,884 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
154 changes: 154 additions & 0 deletions
154
...rofile.jdt.test/src/main/java/com/redhat/microprofile/jdt/core/GenerateAllDefinition.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
package com.redhat.microprofile.jdt.core; | ||
|
||
import java.nio.file.Files; | ||
import java.nio.file.Paths; | ||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.stream.Collectors; | ||
|
||
import org.eclipse.core.resources.IFile; | ||
import org.eclipse.core.runtime.CoreException; | ||
import org.eclipse.core.runtime.NullProgressMonitor; | ||
import org.eclipse.jdt.core.IJavaProject; | ||
import org.eclipse.jdt.core.JavaModelException; | ||
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin; | ||
import org.eclipse.lsp4j.ClientCapabilities; | ||
import org.eclipse.lsp4j.Location; | ||
import org.junit.Test; | ||
|
||
import com.google.gson.Gson; | ||
import com.google.gson.GsonBuilder; | ||
import com.redhat.microprofile.commons.ClasspathKind; | ||
import com.redhat.microprofile.commons.DocumentFormat; | ||
import com.redhat.microprofile.commons.MicroProfileProjectInfo; | ||
import com.redhat.microprofile.commons.MicroProfilePropertiesScope; | ||
import com.redhat.microprofile.jdt.core.utils.IJDTUtils; | ||
import com.redhat.microprofile.jdt.internal.core.ls.JDTUtilsLSImpl; | ||
|
||
public class GenerateAllDefinition extends BasePropertiesManagerTest { | ||
|
||
class PropertyDefinition { | ||
|
||
private String sourceType; | ||
|
||
private String sourceField; | ||
|
||
private String sourceMethod; | ||
|
||
private Location location; | ||
|
||
public String getSourceType() { | ||
return sourceType; | ||
} | ||
|
||
public void setSourceType(String sourceType) { | ||
this.sourceType = sourceType; | ||
} | ||
|
||
public String getSourceField() { | ||
return sourceField; | ||
} | ||
|
||
public void setSourceField(String sourceField) { | ||
this.sourceField = sourceField; | ||
} | ||
|
||
public String getSourceMethod() { | ||
return sourceMethod; | ||
} | ||
|
||
public void setSourceMethod(String sourceMethod) { | ||
this.sourceMethod = sourceMethod; | ||
} | ||
|
||
public Location getLocation() { | ||
return location; | ||
} | ||
|
||
public void setLocation(Location location) { | ||
this.location = location; | ||
} | ||
} | ||
|
||
@Test | ||
public void generateAllQuarkusExtensionProperties() throws JavaModelException, CoreException, Exception { | ||
generateJsonFiles(MavenProjectName.all_quarkus_extensions, JDTUtilsLSImpl.getInstance(), false); | ||
} | ||
|
||
@Test | ||
public void generateAllQuarkusExtensionPropertiesAndDefinitions() | ||
throws JavaModelException, CoreException, Exception { | ||
generateJsonFiles(MavenProjectName.all_quarkus_extensions, JDTUtilsLSImpl.getInstance(), true); | ||
} | ||
|
||
private void generateJsonFiles(MavenProjectName mavenProject, IJDTUtils utils, boolean generateDefinition) | ||
throws JavaModelException, CoreException, Exception { | ||
|
||
Gson gson = new GsonBuilder().setPrettyPrinting().create(); | ||
|
||
long start = System.currentTimeMillis(); | ||
System.out.println("Start generating all-quarkus-properties.json"); | ||
IJavaProject javaProject = loadMavenProject(mavenProject); | ||
MicroProfileProjectInfo info = PropertiesManager.getInstance().getMicroProfileProjectInfo(javaProject, | ||
MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES, ClasspathKind.SRC, utils, DocumentFormat.Markdown, | ||
new NullProgressMonitor()); | ||
|
||
String baseDir = "../../microprofile.ls/com.redhat.microprofile.ls/src/test/resources/com/redhat/microprofile/services/"; | ||
// Generate all-quarkus-properties.json | ||
String propertiesAsJson = gson.toJson(info); | ||
Files.write(Paths.get(baseDir + "all-quarkus-properties.json"), propertiesAsJson.getBytes()); | ||
|
||
System.out.println( | ||
"End generating all-quarkus-properties.json in " + (System.currentTimeMillis() - start) + "ms"); | ||
|
||
if (generateDefinition) { | ||
start = System.currentTimeMillis(); | ||
System.out.println("Start generating all-quarkus-definitions.json"); | ||
// Generate all-quarkus-definitions.json | ||
|
||
// Enable classFileContentsSupport to generate jdt Location | ||
enableClassFileContentsSupport(); | ||
|
||
IFile applicationPropertiesFile = javaProject.getProject() | ||
.getFile("src/main/resources/application.properties"); | ||
List<PropertyDefinition> definitions = info.getProperties().stream().map(item -> { | ||
PropertyDefinition definition = new PropertyDefinition(); | ||
Location location = null; | ||
try { | ||
location = PropertiesManager.getInstance().findPropertyLocation(applicationPropertiesFile, | ||
item.getSourceType(), item.getSourceField(), item.getSourceMethod(), utils, | ||
new NullProgressMonitor()); | ||
} catch (CoreException e) { | ||
e.printStackTrace(); | ||
} | ||
definition.setSourceType(item.getSourceType()); | ||
definition.setSourceField(item.getSourceField()); | ||
definition.setSourceMethod(item.getSourceMethod()); | ||
definition.setLocation(location); | ||
return definition; | ||
}).collect(Collectors.toList()); | ||
|
||
String definitionsAsJson = gson.toJson(definitions); | ||
Files.write(Paths.get(baseDir + "all-quarkus-definitions.json"), definitionsAsJson.getBytes()); | ||
|
||
System.out.println( | ||
"End generating all-quarkus-definitions.json in " + (System.currentTimeMillis() - start) + "ms"); | ||
} | ||
} | ||
|
||
@Test | ||
public void generateAllDefinitions() throws JavaModelException, CoreException, Exception { | ||
MicroProfileProjectInfo info = getMicroProfileProjectInfoFromMavenProject( | ||
MavenProjectName.all_quarkus_extensions, MicroProfilePropertiesScope.SOURCES_AND_DEPENDENCIES); | ||
String s = new Gson().toJson(info); | ||
System.err.println(s); | ||
} | ||
|
||
private static void enableClassFileContentsSupport() { | ||
Map<String, Object> extendedClientCapabilities = new HashMap<>(); | ||
extendedClientCapabilities.put("classFileContentsSupport", "true"); | ||
JavaLanguageServerPlugin.getPreferencesManager().updateClientPrefences(new ClientCapabilities(), | ||
extendedClientCapabilities); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.