Skip to content

Commit

Permalink
Merge branch 'release/0.12.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
pmlopes committed May 22, 2020
2 parents 8acd610 + f8e299d commit 2cbde71
Show file tree
Hide file tree
Showing 1,122 changed files with 132,793 additions and 133,232 deletions.
2 changes: 1 addition & 1 deletion .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
37 changes: 6 additions & 31 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,43 +38,24 @@ matrix:
install: . ./install-jdk.sh --url "https://api.adoptopenjdk.net/v2/binary/releases/openjdk14?openjdk_impl=hotspot&os=linux&type=jdk&release=latest&heap_size=normal&arch=x64"
# GraalVM
- env:
- JDK='GraalVM 19.3.1 (8) LTS'
- JDK='GraalVM 20.1.0 (8)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-19.3.1/graalvm-ce-java8-linux-amd64-19.3.1.tar.gz"
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java8-linux-amd64-20.1.0.tar.gz"
- env:
- JDK='GraalVM 19.3.1 (11) LTS'
- JDK='GraalVM 20.1.0 (11)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-19.3.1/graalvm-ce-java11-linux-amd64-19.3.1.tar.gz"
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz"
- env:
- JDK='GraalVM 19.3.1 (11) LTS'
- JDK='GraalVM 20.1.0 (11)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
arch: arm64
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-19.3.1/graalvm-ce-java11-linux-aarch64-19.3.1.tar.gz"
- env:
- JDK='GraalVM 20.0.0 (8)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.0.0/graalvm-ce-java8-linux-amd64-20.0.0.tar.gz"
- env:
- JDK='GraalVM 20.0.0 (11)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.0.0/graalvm-ce-java11-linux-amd64-20.0.0.tar.gz"
- env:
- JDK='GraalVM 20.0.0 (11)'
- SKIP_JACOCO='true'
os: linux
dist: xenial
arch: arm64
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.0.0/graalvm-ce-java11-linux-aarch64-20.0.0.tar.gz"
install: . ./install-jdk.sh --url "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-aarch64-20.1.0.tar.gz"
# OpenJ9
- env:
- JDK='OpenJ9 11'
Expand All @@ -95,12 +76,6 @@ matrix:
- env:
- JDK='OpenJ9 14'
- SKIP_JACOCO='true'
- env:
- JDK='GraalVM 20.0.0 (8)'
- SKIP_JACOCO='true'
- env:
- JDK='GraalVM 20.0.0 (11)'
- SKIP_JACOCO='true'

script:
- ./mvnw clean verify
Expand Down
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,20 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [0.11.0] -
## [0.12.0] - 2020-05-21
- Upgraded vert.x to 3.9.1
- Upgraded graalvm to 20.1.0
- PM can generate `security.policy` files to sandbox an application
- Allow `.d.ts` generation from plain java classes
- Added interop for `byte` type
- Docgen fixed `enum` to use proper enums, not string values
- Added interop with `Set`
- Fixed overrides on `pg-sqlclient`
- Added support for graphql vert.x module
- Replaced complex console code (which didn't work properly) with a logger
- All logging is now happening with loggers, so they can be enabled or disabled

## [0.11.0] - 2020-03-30
- Upgraded vert.x to 3.9.0
- Added `typedef` to generated js files to better hint IDE support
- Correctly identify graal 20 so `jvmci` hiperf compile is activated
Expand Down
10 changes: 6 additions & 4 deletions codegen/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,26 @@
<parent>
<groupId>io.reactiverse</groupId>
<artifactId>es4x-parent</artifactId>
<version>0.11.0</version>
<version>0.12.0</version>
<relativePath>..</relativePath>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>es4x-codegen</artifactId>
<version>0.11.0</version>
<version>0.12.0</version>

<properties>
<tools.jar>${java.home}/../lib/tools.jar</tools.jar>
</properties>

<profiles>
<profile>
<id>java8</id>
<id>tools.jar</id>
<activation>
<jdk>1.8</jdk>
<file>
<exists>${tools.jar}</exists>
</file>
</activation>
<dependencies>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
import java.util.HashSet;
import java.util.Map;

import static io.reactiverse.es4x.codegen.generator.Util.generateDoc;
import static io.reactiverse.es4x.codegen.generator.Util.isBlacklistedClass;
import static io.reactiverse.es4x.codegen.generator.Util.*;

public class EnumDTS extends Generator<EnumModel> {

Expand Down Expand Up @@ -55,6 +54,8 @@ public String render(EnumModel model, int index, int size, Map<String, Object> s

if (index == 0) {
Util.generateLicense(writer);
// include a file if present
writer.print(includeFileIfPresent("enum.include.d.ts"));
} else {
writer.print("\n");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ public String render(ClassModel model, int index, int size, Map<String, Object>

if (index == 0) {
Util.generateLicense(writer);
registerJvmClasses();
for (Object fqcn : jvmClasses()) {
JVMClass.generateDTS(writer, fqcn.toString());
}

// include a file if present
writer.print(includeFileIfPresent("index.include.d.ts"));

Expand Down Expand Up @@ -182,6 +187,10 @@ public String render(ClassModel model, int index, int size, Map<String, Object>
boolean hasStaticMethodsInInterface = false;

for (MethodInfo method : model.getMethods()) {
if (isBlacklisted(type.getSimpleName(), method.getName(), method.getParams())) {
continue;
}

if (!model.isConcrete() && method.isStaticMethod()) {
hasStaticMethodsInInterface = true;
continue;
Expand All @@ -198,6 +207,10 @@ public String render(ClassModel model, int index, int size, Map<String, Object>
// BEGIN of non polyglot methods...

for (MethodInfo method : model.getAnyJavaTypeMethods()) {
if (isBlacklisted(type.getSimpleName(), method.getName(), method.getParams())) {
continue;
}

if (moreMethods || moreConstants) {
writer.print("\n");
}
Expand Down Expand Up @@ -245,6 +258,10 @@ public String render(ClassModel model, int index, int size, Map<String, Object>

moreMethods = false;
for (MethodInfo method : model.getMethods()) {
if (isBlacklisted(type.getSimpleName(), method.getName(), method.getParams())) {
continue;
}

if (!method.isStaticMethod()) {
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import java.util.HashSet;
import java.util.Map;

import static io.reactiverse.es4x.codegen.generator.Util.getNPMScope;
import static io.reactiverse.es4x.codegen.generator.Util.includeFileIfPresent;
import static io.reactiverse.es4x.codegen.generator.Util.*;
import static io.reactiverse.es4x.codegen.generator.Util.jvmClasses;

public class IndexJS extends Generator<ClassModel> {

Expand Down Expand Up @@ -57,6 +57,13 @@ public String render(ClassModel model, int index, int size, Map<String, Object>
" * @typedef { import(\"es4x\") } Java\n" +
" */\n");
writer.print("module.exports = {\n");

registerJvmClasses();
for (Object fqcn : jvmClasses()) {
JVMClass.generateJS(writer, fqcn.toString());
writer.println(',');
}

// include a file if present
writer.print(includeFileIfPresent("index.include.js"));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
package io.reactiverse.es4x.codegen.generator;

import java.io.PrintWriter;
import java.lang.reflect.*;
import java.util.Arrays;

import static io.reactiverse.es4x.codegen.generator.Util.genType;
import static io.reactiverse.es4x.codegen.generator.Util.isBlacklisted;

public class JVMClass {

private static String getSimpleName(Class<?> clazz) {
String name = clazz.getName();
int idx = name.lastIndexOf('.');
return name.substring(idx + 1);
}

public static void generateJS(PrintWriter writer, String fqcn) {

final Class<?> clazz;

try {
clazz = Class.forName(fqcn);
} catch (ClassNotFoundException e) {
System.err.println("Can't process: " + fqcn);
return;
}

writer.printf(" %s: Java.type('%s')", getSimpleName(clazz), clazz.getName());
}

public static void generateMJS(PrintWriter writer, String fqcn) {

final Class<?> clazz;

try {
clazz = Class.forName(fqcn);
} catch (ClassNotFoundException e) {
System.err.println("Can't process: " + fqcn);
return;
}

writer.printf("export const %s = Java.type('%s');", getSimpleName(clazz), clazz.getName());
}

public static void generateDTS(PrintWriter writer, String fqcn) {

final Class<?> clazz;

try {
clazz = Class.forName(fqcn);
} catch (ClassNotFoundException e) {
System.err.println("Can't process: " + fqcn);
return;
}

writer.printf("/** Auto-generated from %s %s extends %s\n", Modifier.toString(clazz.getModifiers()), clazz.getName(), clazz.getSuperclass().getName());
// Get the list of implemented interfaces in the form of Class array using getInterface() method
Class<?>[] clazzInterfaces = clazz.getInterfaces();
for (Class<?> c : clazzInterfaces) {
writer.printf(" * implements %s\n", c.getName());
}
if (clazz.isAnnotationPresent(Deprecated.class)) {
writer.println(" * @deprecated");
}
writer.println(" */");
writer.printf("export %s%s %s {\n", Modifier.isAbstract(clazz.getModifiers()) ? "abstract " : "", clazz.isInterface() ? "interface" : "class", getSimpleName(clazz));
writer.println();

// Get the metadata of all the fields of the class

for (Field field : clazz.getFields()) {
if (isBlacklisted(getSimpleName(clazz), field.getName(), null)) {
continue;
}
if (Modifier.isPublic(field.getModifiers())) {
if (field.isAnnotationPresent(Deprecated.class)) {
writer.println(" /** @deprecated */");
}
writer.printf(" %s%s : %s;\n", Modifier.isStatic(field.getModifiers()) ? "static " : "", field.getName(), genType(field.getGenericType().getTypeName()));
writer.println();
}
}

// Get all the constructor information in the Constructor array
for (Constructor<?> constructor : clazz.getConstructors()) {
if (isBlacklisted(getSimpleName(clazz), "<ctor>", Arrays.asList(constructor.getParameterTypes()))) {
continue;
}
if (Modifier.isPublic(constructor.getModifiers())) {
writer.printf(" /** Auto-generated from %s#%s\n", clazz.getName(), constructor.getName());
// Get and print exception thrown by the method
for (Class<?> exception : constructor.getExceptionTypes()) {
writer.printf(" * @throws %s\n", exception.getName());
}
if (constructor.isAnnotationPresent(Deprecated.class)) {
writer.println(" * @deprecated");
}
writer.println(" */");
// Print all name of each constructor
writer.printf(" constructor(%s);\n", getParamDefinition(constructor.getGenericParameterTypes()));
writer.println();
}
}

// Get the metadata or information of all the methods of the class using getDeclaredMethods()
for (Method method : clazz.getMethods()) {
if (isBlacklisted(getSimpleName(clazz), method.getName(), Arrays.asList(method.getParameterTypes()))) {
continue;
}
if (Modifier.isPublic(method.getModifiers())) {

writer.printf(" /** Auto-generated from %s#%s\n", clazz.getName(), method.getName());
// Get and print exception thrown by the method
for (Class<?> exception : method.getExceptionTypes()) {
writer.printf(" * @throws %s\n", exception.getName());
}
if (method.isAnnotationPresent(Deprecated.class)) {
writer.println(" * @deprecated");
}
writer.println(" */");

writer.printf(" %s%s(%s) : %s;\n", Modifier.isStatic(method.getModifiers()) ? "static " : "", method.getName(), getParamDefinition(method.getParameterTypes()), genType(method.getGenericReturnType().getTypeName()));
writer.println();
}
}

writer.println("}");
writer.println();
}

private static CharSequence getParamDefinition(Type[] params) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < params.length; i++) {
if (i != 0) {
sb.append(", ");
}
Type param = params[i];
sb.append("arg");
sb.append(i);
sb.append(": ");
sb.append(genType(param.getTypeName()));
}

return sb;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import java.util.HashSet;
import java.util.Map;

import static io.reactiverse.es4x.codegen.generator.Util.getNPMScope;
import static io.reactiverse.es4x.codegen.generator.Util.includeFileIfPresent;
import static io.reactiverse.es4x.codegen.generator.Util.*;
import static io.reactiverse.es4x.codegen.generator.Util.jvmClasses;

public class ModuleMJS extends Generator<ClassModel> {

Expand Down Expand Up @@ -56,6 +56,13 @@ public String render(ClassModel model, int index, int size, Map<String, Object>
"/**\n" +
" * @typedef { import(\"es4x\") } Java\n" +
" */\n");

registerJvmClasses();
for (Object fqcn : jvmClasses()) {
JVMClass.generateMJS(writer, fqcn.toString());
writer.println();
}

// include a file if present
writer.print(includeFileIfPresent("module.include.mjs"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public String render(DataObjectModel model, int index, int size, Map<String, Obj

if (index == 0) {
Util.generateLicense(writer);
// include a file if present
writer.print(includeFileIfPresent("options.include.d.ts"));
} else {
writer.print("\n");
}
Expand Down
Loading

0 comments on commit 2cbde71

Please sign in to comment.