Skip to content

Commit 60b2609

Browse files
committed
feat: Roq Data file support
Signed-off-by: azerr <[email protected]>
1 parent e2116bb commit 60b2609

File tree

13 files changed

+511
-258
lines changed

13 files changed

+511
-258
lines changed

build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,13 @@ configurations {
215215
}
216216
}
217217

218+
configurations.all {
219+
resolutionStrategy {
220+
cacheChangingModulesFor(0, "seconds")
221+
cacheDynamicVersionsFor(0, "seconds")
222+
}
223+
}
224+
218225
testlogger {
219226
theme = ThemeType.STANDARD
220227
showExceptions = true

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ quteLsVersion=0.23.1-SNAPSHOT
2525
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
2626
kotlin.stdlib.default.dependency=false
2727
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
28-
org.gradle.configuration-cache=true
28+
org.gradle.configuration-cache=false
2929
# Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html
30-
org.gradle.caching=true
30+
org.gradle.caching=false
3131
# Enable Gradle Kotlin DSL Lazy Property Assignment -> https://docs.gradle.org/current/userguide/kotlin_dsl.html#kotdsl:assignment
3232
systemProp.org.gradle.unsafe.kotlin.assignment=true
3333

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
/*******************************************************************************
2-
* Copyright (c) 2026 Red Hat Inc. and others.
3-
* All rights reserved. This program and the accompanying materials
4-
* which accompanies this distribution, and is available at
5-
* http://www.eclipse.org/legal/epl-v20.html
6-
*
7-
* SPDX-License-Identifier: EPL-2.0
8-
*
9-
* Contributors:
10-
* Red Hat Inc. - initial API and implementation
11-
*******************************************************************************/
2+
* Copyright (c) 2026 Red Hat Inc. and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* which accompanies this distribution, and is available at
5+
* http://www.eclipse.org/legal/epl-v20.html
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Red Hat Inc. - initial API and implementation
11+
*******************************************************************************/
1212
package com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde;
1313

1414

@@ -37,38 +37,37 @@
3737

3838
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeJavaConstants.RENARDE_CONTROLLER_TYPE;
3939
import static com.redhat.devtools.intellij.qute.psi.internal.QuteJavaConstants.JAVA_LANG_OBJECT_TYPE;
40+
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeUtils.isRenardeProject;
4041

4142
/**
4243
* m renarde support.
43-
*
44+
*
4445
* @author Angelo ZERR
45-
*
4646
* @see <a href=
47-
* "https://docs.quarkiverse.io/quarkus-renarde/dev/advanced.html#localisation">Localisation
48-
* / Internationalisation</a>
47+
* "https://docs.quarkiverse.io/quarkus-renarde/dev/advanced.html#localisation">Localisation
48+
* / Internationalisation</a>
4949
*
5050
*/
5151
public class MNamespaceResolverSupport extends AbstractDataModelProvider {
5252

53-
@Override
54-
protected boolean isNamespaceAvailable(String namespace, SearchContext context, ProgressIndicator monitor) {
55-
// m namespace is available only for renarde project
56-
Module javaProject = context.getJavaProject();
57-
return PsiTypeUtils.findType(javaProject, RENARDE_CONTROLLER_TYPE) != null;
58-
}
53+
@Override
54+
protected boolean isNamespaceAvailable(String namespace, SearchContext context, ProgressIndicator monitor) {
55+
// m namespace is available only for renarde project
56+
return isRenardeProject(context.getJavaProject());
57+
}
5958

60-
@Override
61-
public void collectDataModel(Object match, SearchContext context, ProgressIndicator monitor) {
59+
@Override
60+
public void collectDataModel(Object match, SearchContext context, ProgressIndicator monitor) {
6261

63-
}
62+
}
6463

65-
@Override
66-
protected String[] getPatterns() {
67-
return null;
68-
}
64+
@Override
65+
protected String[] getPatterns() {
66+
return null;
67+
}
6968

70-
@Override
71-
protected Query<? extends Object> createSearchPattern(SearchContext context, String pattern) {
72-
return null;
73-
}
69+
@Override
70+
protected Query<? extends Object> createSearchPattern(SearchContext context, String pattern) {
71+
return null;
72+
}
7473
}

src/main/java/com/redhat/devtools/intellij/qute/psi/internal/extensions/renarde/RenardeJavaConstants.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
*******************************************************************************/
1212
package com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde;
1313

14+
import java.util.Collection;
15+
import java.util.List;
16+
1417
/**
1518
* Renarde Java constants.
1619
*
@@ -21,4 +24,8 @@ public class RenardeJavaConstants {
2124

2225
public static final String RENARDE_CONTROLLER_TYPE = "io.quarkiverse.renarde.Controller";
2326

27+
public static final String RENARDE_ARTIFACT_ID = "quarkus-renarde";
28+
29+
public static final Collection<String> RENARDE_MAVEN_COORS = List.of("io.quarkiverse.renarde:quarkus-renarde");
30+
2431
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2026 Red Hat Inc. and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* which accompanies this distribution, and is available at
5+
* http://www.eclipse.org/legal/epl-v20.html
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Red Hat Inc. - initial API and implementation
11+
*******************************************************************************/
12+
package com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde;
13+
14+
import com.intellij.openapi.module.Module;
15+
import com.redhat.devtools.intellij.qute.psi.template.project.IProjectFeatureProvider;
16+
import com.redhat.qute.commons.ProjectFeature;
17+
import org.jetbrains.annotations.NotNull;
18+
19+
import java.util.Set;
20+
21+
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeUtils.isRenardeProject;
22+
23+
/**
24+
* Renarde project feature.
25+
*/
26+
public class RenardeProjectFeatureProvider implements IProjectFeatureProvider {
27+
28+
@Override
29+
public void collectProjectFeatures(@NotNull Module javaProject, Set<ProjectFeature> projectFeatures) {
30+
if (isRenardeProject(javaProject)) {
31+
projectFeatures.add(ProjectFeature.Renarde);
32+
}
33+
34+
}
35+
36+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2026 Red Hat Inc. and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* which accompanies this distribution, and is available at
5+
* http://www.eclipse.org/legal/epl-v20.html
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Red Hat Inc. - initial API and implementation
11+
*******************************************************************************/
12+
package com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde;
13+
14+
import com.intellij.java.library.JavaLibraryUtil;
15+
import com.intellij.openapi.module.Module;
16+
import com.intellij.openapi.module.ModuleUtilCore;
17+
import org.jetbrains.annotations.NotNull;
18+
19+
import java.util.HashSet;
20+
import java.util.Set;
21+
22+
/**
23+
* Renarde project utilities.
24+
*/
25+
public class RenardeUtils {
26+
27+
public static boolean isRenardeProject(@NotNull Module module) {
28+
if (JavaLibraryUtil.hasAnyLibraryJar(module, RenardeJavaConstants.RENARDE_MAVEN_COORS)) {
29+
return true;
30+
}
31+
32+
Set<Module> projectDependencies = new HashSet<>();
33+
ModuleUtilCore.getDependencies(module, projectDependencies);
34+
return projectDependencies
35+
.stream()
36+
.anyMatch(m -> RenardeJavaConstants.RENARDE_ARTIFACT_ID.equals(m.getName()));
37+
}
38+
}

src/main/java/com/redhat/devtools/intellij/qute/psi/internal/extensions/renarde/UriNamespaceResolverSupport.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeJavaConstants.RENARDE_CONTROLLER_TYPE;
3838
import static com.redhat.devtools.intellij.qute.psi.internal.QuteJavaConstants.JAVA_LANG_OBJECT_TYPE;
39-
39+
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeUtils.isRenardeProject;
4040
/**
4141
* uri, uriabs renarde support.
4242
*
@@ -147,8 +147,7 @@ private static void addRenardeController(String namespace, PsiClass controllerTy
147147
@Override
148148
protected boolean isNamespaceAvailable(String namespace, SearchContext context, ProgressIndicator monitor) {
149149
// uri, and uriabs are available only for renarde project
150-
Module javaProject = context.getJavaProject();
151-
return PsiTypeUtils.findType(javaProject, RENARDE_CONTROLLER_TYPE) != null;
150+
return isRenardeProject(context.getJavaProject());
152151
}
153152

154153
@Override
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2026 Red Hat Inc. and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* which accompanies this distribution, and is available at
5+
* http://www.eclipse.org/legal/epl-v20.html
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Red Hat Inc. - initial API and implementation
11+
*******************************************************************************/
12+
package com.redhat.devtools.intellij.qute.psi.internal.extensions.roq;
13+
14+
import com.intellij.openapi.module.Module;
15+
import com.redhat.devtools.intellij.qute.psi.template.project.IProjectFeatureProvider;
16+
import com.redhat.qute.commons.ProjectFeature;
17+
import org.jetbrains.annotations.NotNull;
18+
19+
import java.util.Set;
20+
21+
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.renarde.RenardeUtils.isRenardeProject;
22+
import static com.redhat.devtools.intellij.qute.psi.internal.extensions.roq.RoqUtils.isRoqProject;
23+
24+
/**
25+
* Roq project feature.
26+
*/
27+
public class RoqProjectFeatureProvider implements IProjectFeatureProvider {
28+
29+
@Override
30+
public void collectProjectFeatures(@NotNull Module javaProject, Set<ProjectFeature> projectFeatures) {
31+
if (isRoqProject(javaProject)) {
32+
projectFeatures.add(ProjectFeature.Roq);
33+
}
34+
35+
}
36+
37+
}

0 commit comments

Comments
 (0)