Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor transformation #259

Merged
merged 7 commits into from
May 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import io.smallrye.graphql.schema.ScanningContext;
import io.smallrye.graphql.schema.SchemaBuilderException;
import io.smallrye.graphql.schema.helper.Direction;
import io.smallrye.graphql.schema.helper.FormatHelper;
import io.smallrye.graphql.schema.helper.TypeNameHelper;
import io.smallrye.graphql.schema.model.Reference;
import io.smallrye.graphql.schema.model.ReferenceType;
Expand Down Expand Up @@ -189,6 +190,9 @@ private Reference getReference(Direction direction,
return Scalars.getIDScalar(fieldTypeName);
} else if (Scalars.isScalar(fieldTypeName)) {
// Scalar
if (FormatHelper.hasAnyFormatting(annotations)) {
return Scalars.getFormattedScalar(fieldTypeName);
}
return Scalars.getScalar(fieldTypeName);
} else if (fieldType.kind().equals(Type.Kind.ARRAY)) {
// Array
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@ public class FormatHelper {
private FormatHelper() {
}

/**
* Tests, if any formatting is present.
*
* @param annotations the annotations
* @return if formatting is present
*/
public static boolean hasAnyFormatting(Annotations annotations) {
return getDateFormat(annotations).isPresent()
|| getNumberFormat(annotations).isPresent();
}

/**
* Get the format model object for a certain type.
*
Expand Down
1 change: 1 addition & 0 deletions common/schema-model/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ A Reference contains:
- the classname
- the graphql name
- the reference type
- a classname, into which the referenced class can be converted, which is understood by graphql. Used for transformations.

=== Reference Type

Expand Down
Binary file modified common/schema-model/classdiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion common/schema-model/classdiagram.xml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<mxfile host="www.draw.io" modified="2020-05-11T20:13:09.472Z" agent="5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" etag="z_VCSTGcYXryRwr32Qwn" version="13.1.0" type="device"><diagram id="Q51CJkZVq1hCxGUKNIIE" name="Page-1">7Z1dc5s4F4B/TS6zwzf4Mk6TvtlJ0m6S7W73ZkfBsk2KkRfkJM6vfwVINggJ2wWB09DJTC358GH06OjonCNxYp4vXj/HYDm/QRMYnhja5PXE/HRiGLruOeS/tGad17iGlVfM4mBChbYV98EbpJUarV0FE5iUBDFCIQ6W5UofRRH0cakOxDF6KYtNUVi+6hLMYKXi3gdhtfavYILn7Hdp2vaL/8FgNqeX9mz6xQIwYVqRzMEEvRSqzIsT8zxGCOefFq/nMEwfHnsu+XGXkm83NxbDCO9zwIU9/uuPCanWvt8+mQ/nc2/1x6k1ojeH1+wXwwl5ALSIYjxHMxSB8GJbO47RKprA9LQaKW1lrhFakkqdVD5BjNe0NcEKI1I1x4uQflu9dfprErSKfVh3v5QeDOIZxDWC9ITpjylcgT6ZzxAtII7XRCCGIcDBc7m1AYVmtpHbHPoVBeSeDY0Cbut2fgjF27G08inyG6VHbVvnLI7BuiC2TAUS+XU2/YFdx+Mam5O3bLtOnnzI74CVCs9kW5UBdABM7JrvBSbWVY8GplE3MDlu+TquXg8TDzknrwimd6aZbOe4YHI60kwjm9NMox0wmXadvBqY9H7GOfga4L8Ln7+np/rNpqVPr/TMWWFNCxOQzLNrNsNRt/bmUR8pIfJQkFynDJJhmLUgeWYzeWbCqQWP9Y5uwWsJIme0L0NMufTMkMMxZNIRVcZERd7qhAm9Dya6UUZX/670m2SB75B+upprb29/a/6p7e7LkeEcBUcWr4t0t5YjXt40O+HIfB+6RciEs6/xbR8HEiY3AzOocpQhwctbO2ZsuuY0PMDtRnkZH015ee9NefGGkVVvGPHyHQ2C1ntWXvqeTDB/Vd9I8C28YzjjFEvLlrK4m9HO8wzCFX0K9/4cLkAFk+QlWIQgSnmYoggzYtIW9edBOLkGa7RKGyXBwP/BSuM5ioM3Ig8YC+TrGFNSSNclZwvC8ByFKM6uY04A9KZ+6cj79IyUvhgm5NivjB6dq7oBryXBa5BgWuGjMATLJHjc3PeCcBREY4QxWlChBMfoByzcjuN78HFah+0zjDF8rcWMTcK5qZBLddzL1sVtMK0wL3i3dc/YQebi9Q76GEQz8tu2QxUHlE2HtuL1PMHlmEJlVwMhhnEEMByneiDhoGwHQ7eC4YlBHrn23wrGQRqJOCOFe9LpDSdMsfqyhDHpuSgiFTO8aZ4Cr6RNcKVBI5QDXECOVoEwmEWkGMJpeljaqIEPwjNajVNNN06WwA+i2XUm88na1tzRp5dWIXLsNMxiDvNgMoFRpkExwCAnL8WMag5yo/aY/JFGOE/HVZvc+Dkp69sy+UvFY3yOIvJbQJDRBwnWLzDBQi7rO/puWtdlDHbRyeNShLPEycFQeBIoFiuctf2ARQ9YMEu0NyyY/V3BgjwD8oiBz9TFDVgyLu5xTJojfYqGdsXEHtZLOHCiipN9Bzd1nBhSTpYrvIsRIjLwoZIPXbP6BsSUAAKj1aKejwsiMeChFA+zaqx2jIcuwQOThq/HY0BDKRp2h5apxI3SS84Fc8cxn1uH7jimK3e6Xszj8MbxzjV6AanbuCzulX1xVXG3mbxrd+Lrc/qEtAefMbP4dgc3jiNuaow4l/GOuCkvb/O5h3zsnXcAHSjPcgMUY+r2gelelNUHHHZi5qnRhdUcDs0oc8T4bjnpyOb4M3dksDlurbwqnrxfV+2Jtdm+Y3NXPPJ6ZKO3WuaRz11yd+jPin47UH7XMK9rXsMDuokBfrSsPGvfRBhFHeRw45Xj1HVqMTLNZvKdUMf66rFHnsUE2XsS1FWaMZca7nAKNv9BjRUsn03j2vU5Dby83cX6B505aj6OPntvuTEmF/n2qMEq5YiTNzuZL7Pp44fhaO8cqyMZF3XtQANO13jHy6EHdANeL0lZ3XgThb94tO+MRc1werD64qDQnfpELl7edjuhqFefdB/D4J4QMeOoZ4psl18aVu+Tdoxm8p0YX141f/AygOGkgqKy9MFe0gRlOYtK0wcdzroWREg3C5/KYTBLjnKjOJgnzdCCRJFMbsEC0hQtGhzloPgoodCU+AIU7qWmXV5WekKFkPoe1ySRT8JJc0zOVmihj38E34JvI/3l4eLp+fbzqSzPYhmjJfkV64GTo+BEkNmnjBPxLY8koEQDIFtA1IMgSN3rFgQWL6iAMIGJHwfLLMN34KErHkSpeh0DIRtCYjiF5Pf6VD3cbYoDEUqJ2N/2VESEblZnHnSwQPh2lZ4sBeIRoRCCdDnASeadTg3xwscPCok6LgSpeUIuGD/tc2HJuAD57Delgk7dh9ZvufW9Dmca4tZ3DUnrkwcRJVMUL3ICHljxKpqigYTWp5x633MJ3bOkNuQUrEL8La9PYfjy+JRuYjhQ0DYFZt8TCd3tZbOOxk5xzhGgZf8aOcs3mnF3zMU5jmhfZacpq37rj4p8J8kH7vtcCaACsH43CT0YLy7HwHV34MXJ2+XtGXZuK3mwfDN8ER3TtBA8wjA/ZcHsfXv1n/PK7FNWVw96vl9duWv0sD2E70N7Oj05lu0hTMccmZO6jrN/fGfEKbCRXh09WYyvtD2EZRw8fJIiJeQAP77MovJDkCSDE1+BE3+zS2SzaI+IGsNTZXMZMu9tunCSTr+yBZIDIH0AYgucuR0DYksAmcBlekspIdnYODjtGnp2fwIPttfQLjzUefAMmbM/QvhiscTrwbXbeDL/E2DoIp9Ot2Q4Vd9uvSNvsEqbW6XcjuaGKwj9WAKnjq6QA1neUQoCwIMZ+rPDhdNKcpGIBnUuPrZddgWGEOUvlBlg6AoGUQaRKhiEM1SZYTnMPLrEQJQ/1CkGshDwU4KiMWc9DiioREGYOtTt+MDiVt166BU42Nlj62G5lqQFxE7m2WoB6brTn/Az579y8DOrs+gdbtMBU5TMNRJM7LzD++guP7OEAZkHIF9XwBCrupwHV4AqPyNTPs1mBiKq2pgmCq0A2f59uabd6KnBmbQvQZtBrEiQpo4gUTKhKoLq188XGCpsMT04m9oemqx9hiZX5Gzi37PX3qIU2db0B0U9fxUV0GwQMVpxL4naX9n0QepdAnT8oDvBXgfJZhf6rQnMtoAVjyoZRWn/DSLSyA8bH0VhFYP8QDZiZUeAZB35H3aYUoefyKElws9rIVZ68/l58f306R/DufO/jKEzjmN4alQa9aj3RmSLMt5JDpjl1b6v+VB5NSmGgoUu2+3HBxOkdRPEKJsg7P1uJR0g2m3aVZUvYcoskGE1ZNVWOdQmMVsxSTrdfdyURT+ziupLcTbOkWE/eiVAiIyEToHYzKyLL3EDIYiT3gaIX/gtbvyWrY5gfBC9Vo1h0rqNKPNzEQssx4CbVQwh0ANdV+34Pvd51V57nqsKE/Kl8YPR2NxoNLnFG2wztp1JUpqqvZkMiVYYkvWVubfa0BKdxsalibYDHg2yJNqwHzvFQLauB1c9koPtoJqGLpOnxB7v6myivvm7sh+gPrGhezT2w8hxTeC0Yz84Lm8/CHSCJrIfdFVxL8Hr765uv/75UAhEPHz/elEoXtz+eVMoXt0+XNxdnp0XRe7Pz67P7j6sAtlTZzitzDdEuHgtWJsv/96OZt8s3/jHQGPr+g19e1oLrc3c+zTXmeeJvVheW6AJDNn3j3EhTBbm/19uD2KVS74iVTWpObvpkM5/K5QLMDOuUFU+9pFV/A6ewUlhF7GkcA+PgvvKL1qprtxcpWJzshsQTQBGWePVXUz4WOTXuU0XPtQ/08LB4u5XiADRrkJK9rb0kIWPTo20U7zMAwzvSX16ipcYLKWdqRiLqurQ7N8JtzlBWvgKcPrW+Xyk1ax21Cy3ga4u8NyMRErWUKVk7epYW3j18OC7a9t3x7/BTBjcEQV4lQV3bJHmHII77RjfdisDaaf5JrZsTj7NtlXnYzt0s/UhtKMGh33zP9ThUA3+X0VkYJyCnidjv/Ag4fEvjdEFa1iESYjKnLn2kAKgcJR4f1mJm822KkAETDtU8wCKaYXDeKEEjP7HC+nK+NRQqDIx2A9KeRA5czvlwarqicFsUGM26Nz2bY63Z+Or2yhDuhf2YDY0Nxs2Xev9mA2WbH+EwWpob5Q4nIverQZLNr0YrIY+eOjfapBZkYgtfqwyUVgXOXChhgvhZhotgUGKMUqDZZvvPsdgOb/JQnXmxf8B</diagram></mxfile>
<mxfile host="www.draw.io" modified="2020-05-16T15:47:28.200Z" agent="5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" etag="oyzQTpSnq5Qfe6gZwi56" version="13.1.2" type="device"><diagram id="Q51CJkZVq1hCxGUKNIIE" name="Page-1">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</diagram></mxfile>
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,32 @@
* @author Phillip Kruger ([email protected])
*/
public class Reference implements Serializable {
private String graphQlClassName;
private String className;
private String name;
private ReferenceType type;

public Reference() {
}

public Reference(String javaName, String name, ReferenceType type) {
public Reference(String javaName, String name, ReferenceType type, String graphQlClassName) {
this.className = javaName;
this.name = name;
this.type = type;
this.graphQlClassName = graphQlClassName;
}

public Reference(String javaName, String name, ReferenceType type) {
this(javaName, name, type, javaName);
}

public Reference(final Reference reference) {
this.className = reference.className;
this.name = reference.name;
this.type = reference.type;
this(reference.className, reference.name, reference.type, reference.graphQlClassName);
}

/**
* This represent the Java Class Name
*
*
* @return String full class name
*/
public String getClassName() {
Expand All @@ -57,7 +61,7 @@ public void setName(String name) {

/**
* This represent the GraphQL Type
*
*
* @return
*/
public ReferenceType getType() {
Expand All @@ -67,4 +71,18 @@ public ReferenceType getType() {
public void setType(ReferenceType type) {
this.type = type;
}

/**
* The class into which this reference can be converted, which can be handled by graphql
*
* For example, String for Dates or formatted Numbers, BigInteger for long and BigInteger.
*
* Used for transforming.
*
* @return full class name
*/
public String getGraphQlClassName() {
return graphQlClassName;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
*/
public class Scalars {
private static final Map<String, Reference> scalarMap = new HashMap<>();
private static final Map<String, Reference> formattedScalarMap = new HashMap<>();
private static final String STRING = "String";
private static final String BOOLEAN = "Boolean";
private static final String INTEGER = "Int";
Expand All @@ -50,61 +51,70 @@ public static Reference getScalar(String className) {
return scalarMap.get(className);
}

public static Reference getFormattedScalar(String className) {
return formattedScalarMap.get(className);
}

public static Reference getIDScalar(String className) {
return new Reference(className, "ID", ReferenceType.SCALAR);
return new Reference(className, "ID", ReferenceType.SCALAR, className);
}

static {
populateScalar(char.class.getName(), STRING);
populateScalar(Character.class.getName(), STRING);
populateScalar(String.class.getName(), STRING);
populateScalar(UUID.class.getName(), STRING);
populateScalar(char.class.getName(), STRING, String.class.getName());
populateScalar(Character.class.getName(), STRING, String.class.getName());
populateScalar(String.class.getName(), STRING, String.class.getName());
populateScalar(UUID.class.getName(), STRING, String.class.getName());

populateScalar(URL.class.getName(), STRING);
populateScalar(URI.class.getName(), STRING);
populateScalar(URL.class.getName(), STRING, String.class.getName());
populateScalar(URI.class.getName(), STRING, String.class.getName());

populateScalar(Boolean.class.getName(), BOOLEAN);
populateScalar(boolean.class.getName(), BOOLEAN);

populateScalar(Integer.class.getName(), INTEGER);
populateScalar(int.class.getName(), INTEGER);
populateScalar(Short.class.getName(), INTEGER);
populateScalar(short.class.getName(), INTEGER);
populateScalar(Byte.class.getName(), INTEGER);
populateScalar(byte.class.getName(), INTEGER);

populateScalar(Float.class.getName(), FLOAT);
populateScalar(float.class.getName(), FLOAT);
populateScalar(Double.class.getName(), FLOAT);
populateScalar(double.class.getName(), FLOAT);
populateScalar(Integer.class.getName(), INTEGER, Integer.class.getName());
populateScalar(int.class.getName(), INTEGER, Integer.class.getName());
populateScalar(Short.class.getName(), INTEGER, Integer.class.getName());
populateScalar(short.class.getName(), INTEGER, Integer.class.getName());
populateScalar(Byte.class.getName(), INTEGER, Integer.class.getName());
populateScalar(byte.class.getName(), INTEGER, Integer.class.getName());

populateScalar(BigInteger.class.getName(), BIGINTEGER);
populateScalar(Long.class.getName(), BIGINTEGER);
populateScalar(long.class.getName(), BIGINTEGER);
populateScalar(Float.class.getName(), FLOAT, Float.class.getName());
populateScalar(float.class.getName(), FLOAT, Float.class.getName());
populateScalar(Double.class.getName(), FLOAT, Float.class.getName());
populateScalar(double.class.getName(), FLOAT, Float.class.getName());

populateScalar(BigDecimal.class.getName(), BIGDECIMAL);
populateScalar(BigInteger.class.getName(), BIGINTEGER, BigInteger.class.getName());
populateScalar(Long.class.getName(), BIGINTEGER, BigInteger.class.getName());
populateScalar(long.class.getName(), BIGINTEGER, BigInteger.class.getName());

populateScalar(LocalDate.class.getName(), DATE);
populateScalar(Date.class.getName(), DATE);
populateScalar(BigDecimal.class.getName(), BIGDECIMAL, BigDecimal.class.getName());

populateScalar(LocalTime.class.getName(), TIME);
populateScalar(Time.class.getName(), TIME);
populateScalar(OffsetTime.class.getName(), TIME);
populateScalar(LocalDate.class.getName(), DATE, String.class.getName());
populateScalar(Date.class.getName(), DATE, String.class.getName());

populateScalar(LocalDateTime.class.getName(), DATETIME);
populateScalar(java.util.Date.class.getName(), DATETIME);
populateScalar(Timestamp.class.getName(), DATETIME);
populateScalar(ZonedDateTime.class.getName(), DATETIME);
populateScalar(OffsetDateTime.class.getName(), DATETIME);
populateScalar(LocalTime.class.getName(), TIME, String.class.getName());
populateScalar(Time.class.getName(), TIME, String.class.getName());
populateScalar(OffsetTime.class.getName(), TIME, String.class.getName());

populateScalar(Duration.class.getName(), DURATION);
populateScalar(Period.class.getName(), PERIOD);
populateScalar(LocalDateTime.class.getName(), DATETIME, String.class.getName());
populateScalar(java.util.Date.class.getName(), DATETIME, String.class.getName());
populateScalar(Timestamp.class.getName(), DATETIME, String.class.getName());
populateScalar(ZonedDateTime.class.getName(), DATETIME, String.class.getName());
populateScalar(OffsetDateTime.class.getName(), DATETIME, String.class.getName());

populateScalar(ID, ID);
populateScalar(Duration.class.getName(), DURATION, String.class.getName());
populateScalar(Period.class.getName(), PERIOD, String.class.getName());
}

private static void populateScalar(String className, String scalarName) {
scalarMap.put(className, new Reference(className, scalarName, ReferenceType.SCALAR));
populateScalar(className, scalarName, className);
}

private static void populateScalar(String className, String scalarName, String externalClassName) {
scalarMap.put(className, new Reference(className, scalarName, ReferenceType.SCALAR, externalClassName));

//Currently, each scalar is formatted as String
formattedScalarMap.put(className, new Reference(className, STRING, ReferenceType.SCALAR, String.class.getName()));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public void testSchemaModelCreation() throws IOException {

// Test default value
Assert.assertTrue("Problem with Default value in mutation operation argument",
lines.contains("updateItemPowerLevel(itemID: BigInteger!, powerLevel: Int = \"5\"): Item"));
lines.contains("updateItemPowerLevel(itemID: BigInteger!, powerLevel: Int = 5): Item"));

Assert.assertTrue("Problem with Default value in query operation argument",
lines.contains("allHeroesIn(city: String = \"New York, NY\"): [SuperHero]"));
Expand Down
7 changes: 7 additions & 0 deletions server/implementation/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,13 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>


<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
Expand Down
Loading