Skip to content

Commit 06d1b1c

Browse files
committed
[structural view] added jpa stereotypes to set of default stereotypes for non-jmolecules projects
1 parent 6adcff7 commit 06d1b1c

File tree

4 files changed

+58
-11
lines changed

4 files changed

+58
-11
lines changed

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/stereotypes/ProjectBasedCatalogSource.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@
3131
public class ProjectBasedCatalogSource implements CatalogSource {
3232

3333
private static final Logger log = LoggerFactory.getLogger(ProjectBasedCatalogSource.class);
34+
35+
private static final String[] DEFAULT_STEREOTYPE_DEFINITIONS = {
36+
"/stereotype-defaults/spring-jmolecules-stereotypes.json",
37+
"/stereotype-defaults/jpa-jmolecules-stereotypes.json"};
3438

3539
private final IJavaProject project;
3640

@@ -81,14 +85,19 @@ public Stream<URL> getSources() {
8185
}
8286

8387
if (result.size() == 0) {
84-
URL defaultSpringStereotypes = this.getClass().getResource("/stereotype-defaults/jmolecules-stereotypes.json");
8588

86-
if (defaultSpringStereotypes != null) {
87-
log.info("using default stereotypes for project: " + this.project.getElementName());
88-
result.add(defaultSpringStereotypes);
89-
}
90-
else {
91-
log.error("error looking up default stereotypes for project: " + this.project.getElementName());
89+
// use default hard-coded stereotype definitions for projects that don't have jmolecules on the classpath
90+
91+
for (String defaultDefinition : DEFAULT_STEREOTYPE_DEFINITIONS) {
92+
URL defaultStereotypes = this.getClass().getResource(defaultDefinition);
93+
94+
if (defaultStereotypes != null) {
95+
log.info("using default stereotypes " + defaultDefinition + " for project: " + this.project.getElementName());
96+
result.add(defaultStereotypes);
97+
}
98+
else {
99+
log.error("error looking up default stereotypes " + defaultDefinition + " for project: " + this.project.getElementName());
100+
}
92101
}
93102
}
94103

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"stereotypes" : {
3+
"jpa.AttributeConverter" : {
4+
"assignments" : [
5+
"jakarta.persistence.AttributeConverter",
6+
"javax.persistence.AttributeConverter"
7+
],
8+
"groups" : [ "jpa" ]
9+
},
10+
"jpa.Embeddable" : {
11+
"assignments" : [
12+
"@jakarta.persistence.Embeddable",
13+
"@javax.persistence.Embeddable"
14+
],
15+
"groups" : [ "jpa" ]
16+
},
17+
"jpa.Entity" : {
18+
"assignments" : [
19+
"@jakarta.persistence.Entity",
20+
"@javax.persistence.Entity"
21+
],
22+
"groups" : [ "jpa" ]
23+
},
24+
"jpa.MappedSuperclass" : {
25+
"assignments" : [
26+
"@jakarta.persistence.MappedSuperclass",
27+
"@javax.persistence.MappedSuperclass"
28+
],
29+
"groups" : [ "jpa" ]
30+
}
31+
},
32+
"groups" : {
33+
"jpa" : {
34+
"displayName" : "JPA",
35+
"type" : "technology",
36+
"priority" : 20
37+
}
38+
}
39+
}

headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/stereotypes/ProjectBasedCatalogSourceTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
3333
import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest;
3434
import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf;
35-
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
3635
import org.springframework.ide.vscode.commons.java.IJavaProject;
3736
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
3837
import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness;
@@ -50,7 +49,6 @@ public class ProjectBasedCatalogSourceTest {
5049
@Autowired private BootLanguageServerHarness harness;
5150
@Autowired private JavaProjectFinder projectFinder;
5251
@Autowired private SpringSymbolIndex indexer;
53-
@Autowired private SpringMetamodelIndex springIndex;
5452

5553
private File regularProjectDirectory;
5654
private File fallbackProjectDirectory;
@@ -108,8 +106,9 @@ void testCatalogDefaultLookupFromLanguageServer() throws Exception {
108106
Stream<URL> sources = source.getSources();
109107
List<URL> list = sources.toList();
110108

111-
assertEquals(1, list.size());
112-
assertTrue(list.get(0).toString().endsWith("jmolecules-stereotypes.json"));
109+
assertEquals(2, list.size());
110+
assertTrue(list.get(0).toString().endsWith("spring-jmolecules-stereotypes.json"));
111+
assertTrue(list.get(1).toString().endsWith("jpa-jmolecules-stereotypes.json"));
113112
}
114113

115114
}

0 commit comments

Comments
 (0)