Skip to content

Commit

Permalink
Support for Vert.x Integration
Browse files Browse the repository at this point in the history
Fixes redhat-developer#1009

Signed-off-by: azerr <azerr@redhat.com>
  • Loading branch information
angelozerr committed Oct 19, 2024
1 parent 0414d3e commit dd24bc5
Show file tree
Hide file tree
Showing 11 changed files with 243 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,17 @@
"{myList.0}"
],
"url": "https://quarkus.io/guides/qute-reference#collections"
},
// ------------- Vert.x Integration --------------
// See https://quarkus.io/guides/qute-reference#vertx_integration
{
"signature": "get(base : io.vertx.core.json.JsonObject, key : java.lang.String) : java.lang.Object",
"matchName": "*",
"url": "https://quarkus.io/guides/qute-reference#vertx_integration"
},
{
"signature": "get(base : io.vertx.core.json.JsonObject, key : java.lang.String) : java.lang.Object",
"url": "https://quarkus.io/guides/qute-reference#vertx_integration"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@
*******************************************************************************/
package com.redhat.qute.project;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;

import com.google.gson.GsonBuilder;
import com.redhat.qute.commons.InvalidMethodReason;
import com.redhat.qute.commons.JavaTypeInfo;
import com.redhat.qute.commons.JavaTypeKind;
import com.redhat.qute.commons.ProjectInfo;
import com.redhat.qute.commons.ResolvedJavaTypeInfo;
import com.redhat.qute.commons.datamodel.DataModelProject;
import com.redhat.qute.commons.datamodel.DataModelTemplate;

/**
* Base class for project which initializes JDK resolved Java types.
Expand All @@ -28,6 +33,20 @@ public abstract class BaseQuteProject extends MockQuteProject {
public BaseQuteProject(ProjectInfo projectInfo, QuteProjectRegistry projectRegistry) {
super(projectInfo, projectRegistry);
}

protected DataModelProject<DataModelTemplate<?>> loadDataModel(String fileName) {
InputStream in = this.getClass().getResourceAsStream(fileName);
return new GsonBuilder().create().fromJson(new InputStreamReader(in),
DataModelProject.class);
}

protected void loadResolvedJavaType(String fileName, List<ResolvedJavaTypeInfo> resolvedJavaTypes) {
InputStream in = this.getClass().getResourceAsStream(fileName);
ResolvedJavaTypeInfo resolvedJavaType = new GsonBuilder().create().fromJson(new InputStreamReader(in),
ResolvedJavaTypeInfo.class);
resolvedJavaTypes.add(resolvedJavaType);
}


@Override
protected void fillJavaTypes(List<JavaTypeInfo> cache) {
Expand All @@ -38,6 +57,8 @@ protected void fillJavaTypes(List<JavaTypeInfo> cache) {
@Override
protected void fillResolvedJavaTypes(List<ResolvedJavaTypeInfo> resolvedJavaTypes) {
createBinaryTypes(resolvedJavaTypes);
// Load JsonObject from vertx
loadResolvedJavaType("JsonObject.json", resolvedJavaTypes);
}

private void createBinaryTypes(List<ResolvedJavaTypeInfo> cache) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,6 @@ public RoqProject(ProjectInfo projectInfo, QuteProjectRegistry projectRegistry)
super(projectInfo, projectRegistry);
}

private DataModelProject<DataModelTemplate<?>> loadDataModel(String fileName) {
InputStream in = this.getClass().getResourceAsStream(fileName);
return new GsonBuilder().create().fromJson(new InputStreamReader(in),
DataModelProject.class);
}

@Override
protected void fillResolvedJavaTypes(List<ResolvedJavaTypeInfo> resolvedJavaTypes) {
super.fillResolvedJavaTypes(resolvedJavaTypes);
Expand All @@ -55,13 +49,6 @@ protected void fillResolvedJavaTypes(List<ResolvedJavaTypeInfo> resolvedJavaType
loadResolvedJavaType("DocumentPage.json", resolvedJavaTypes);
}

private void loadResolvedJavaType(String fileName, List<ResolvedJavaTypeInfo> resolvedJavaTypes) {
InputStream in = this.getClass().getResourceAsStream(fileName);
ResolvedJavaTypeInfo resolvedJavaType = new GsonBuilder().create().fromJson(new InputStreamReader(in),
ResolvedJavaTypeInfo.class);
resolvedJavaTypes.add(resolvedJavaType);
}

@Override
protected void fillTemplates(List<DataModelTemplate<DataModelParameter>> templates) {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*******************************************************************************
* Copyright (c) 2024 Red Hat Inc. and others.
* All rights reserved. This program and the accompanying materials
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Red Hat Inc. - initial API and implementation
*******************************************************************************/
package com.redhat.qute.services.diagnostics.vertx;

import static com.redhat.qute.QuteAssert.testDiagnosticsFor;

import org.junit.jupiter.api.Test;

/**
* Test diagnostics with Vertx extension.
*
* @author Angelo ZERR
*
* @see https://quarkus.io/guides/qute-reference#vertx_integration
*
*/
public class VertxDiagnosticsTest {

@Test
public void noError() throws Exception {
String template = "{@io.vertx.core.json.JsonObject tool}\r\n" + //
"{tool.name}\r\n" + //
"{tool.fieldNames}\r\n" + //
"{tool.fields}\r\n" + //
"{tool.size}\r\n" + //
"{tool.empty}\r\n" + //
"{tool.isEmpty}\r\n" + //
"{tool.get('name')}\r\n" + //
"{tool.containsKey('name')}";
testDiagnosticsFor(template);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
{
"signature": "io.vertx.core.json.JsonObject",
"extendedTypes": [
"java.lang.Object",
"java.lang.Iterable<java.util.Map$Entry<java.lang.String,java.lang.Object>>",
"io.vertx.core.shareddata.ClusterSerializable",
"io.vertx.core.shareddata.Shareable"
],
"fields": [],
"methods": [
{
"signature": "mapTo(type : java.lang.Class<T>) : T"
},
{
"signature": "getString(key : java.lang.String) : java.lang.String"
},
{
"signature": "getNumber(key : java.lang.String) : java.lang.Number"
},
{
"signature": "getInteger(key : java.lang.String) : java.lang.Integer"
},
{
"signature": "getLong(key : java.lang.String) : java.lang.Long"
},
{
"signature": "getDouble(key : java.lang.String) : java.lang.Double"
},
{
"signature": "getFloat(key : java.lang.String) : java.lang.Float"
},
{
"signature": "getBoolean(key : java.lang.String) : java.lang.Boolean"
},
{
"signature": "getJsonObject(key : java.lang.String) : io.vertx.core.json.JsonObject"
},
{
"signature": "getJsonArray(key : java.lang.String) : io.vertx.core.json.JsonArray"
},
{
"signature": "getBinary(key : java.lang.String) : byte[]"
},
{
"signature": "getBuffer(key : java.lang.String) : io.vertx.core.buffer.Buffer"
},
{
"signature": "getInstant(key : java.lang.String) : java.time.Instant"
},
{
"signature": "getValue(key : java.lang.String) : java.lang.Object"
},
{
"signature": "getString(key : java.lang.String, def : java.lang.String) : java.lang.String"
},
{
"signature": "getNumber(key : java.lang.String, def : java.lang.Number) : java.lang.Number"
},
{
"signature": "getInteger(key : java.lang.String, def : java.lang.Integer) : java.lang.Integer"
},
{
"signature": "getLong(key : java.lang.String, def : java.lang.Long) : java.lang.Long"
},
{
"signature": "getDouble(key : java.lang.String, def : java.lang.Double) : java.lang.Double"
},
{
"signature": "getFloat(key : java.lang.String, def : java.lang.Float) : java.lang.Float"
},
{
"signature": "getBoolean(key : java.lang.String, def : java.lang.Boolean) : java.lang.Boolean"
},
{
"signature": "getJsonObject(key : java.lang.String, def : io.vertx.core.json.JsonObject) : io.vertx.core.json.JsonObject"
},
{
"signature": "getJsonArray(key : java.lang.String, def : io.vertx.core.json.JsonArray) : io.vertx.core.json.JsonArray"
},
{
"signature": "getBinary(key : java.lang.String, def : byte[]) : byte[]"
},
{
"signature": "getBuffer(key : java.lang.String, def : io.vertx.core.buffer.Buffer) : io.vertx.core.buffer.Buffer"
},
{
"signature": "getInstant(key : java.lang.String, def : java.time.Instant) : java.time.Instant"
},
{
"signature": "getValue(key : java.lang.String, def : java.lang.Object) : java.lang.Object"
},
{
"signature": "containsKey(key : java.lang.String) : boolean"
},
{
"signature": "fieldNames() : java.util.Set<java.lang.String>"
},
{
"signature": "putNull(key : java.lang.String) : io.vertx.core.json.JsonObject"
},
{
"signature": "put(key : java.lang.String, value : java.lang.Object) : io.vertx.core.json.JsonObject"
},
{
"signature": "remove(key : java.lang.String) : java.lang.Object"
},
{
"signature": "mergeIn(other : io.vertx.core.json.JsonObject) : io.vertx.core.json.JsonObject"
},
{
"signature": "mergeIn(other : io.vertx.core.json.JsonObject, deep : boolean) : io.vertx.core.json.JsonObject"
},
{
"signature": "mergeIn(arg0 : io.vertx.core.json.JsonObject, arg1 : int) : io.vertx.core.json.JsonObject"
},
{
"signature": "encode() : java.lang.String"
},
{
"signature": "encodePrettily() : java.lang.String"
},
{
"signature": "toBuffer() : io.vertx.core.buffer.Buffer"
},
{
"signature": "copy() : io.vertx.core.json.JsonObject"
},
{
"signature": "copy(arg0 : java.util.function.Function<java.lang.Object,?>) : io.vertx.core.json.JsonObject"
},
{
"signature": "getMap() : java.util.Map<java.lang.String,java.lang.Object>"
},
{
"signature": "stream() : java.util.stream.Stream<java.util.Map$Entry<java.lang.String,java.lang.Object>>"
},
{
"signature": "iterator() : java.util.Iterator<java.util.Map$Entry<java.lang.String,java.lang.Object>>"
},
{
"signature": "size() : int"
},
{
"signature": "clear() : io.vertx.core.json.JsonObject"
},
{
"signature": "isEmpty() : boolean"
},
{
"signature": "toString() : java.lang.String"
},
{
"signature": "equals(arg0 : java.lang.Object) : boolean"
},
{
"signature": "hashCode() : int"
},
{
"signature": "readFromBuffer(pos : int, buffer : io.vertx.core.buffer.Buffer) : int"
}
],
"binary": true,
"typeKind": 2,
"invalidMethods": {
"writeToBuffer": 1,
"of": 3,
"mapFrom": 3
}
}

0 comments on commit dd24bc5

Please sign in to comment.