@Test void testGetAlgorithm() { assertEquals("$('blah').map({\"Human\":\"1\",\"Orc\":\"2\"}).value();", mapping.getAlgorithm()); assertEquals( "$('blah').map({\"Human\":\"1\",\"Orc\":\"2\"}, \"3\").value();", mappingWithDefault.getAlgorithm()); assertEquals( "$('blah').map({\"Human\":\"1\",\"Orc\":\"2\"}, \"3\", \"5\").value();", mappingWithNullValue.getAlgorithm()); assertEquals( "$('blah').map({\"Human\":\"1\",\"Orc\":\"2\"}, \"3\", null).value();", mappingWithNullValueEqualsNull.getAlgorithm()); }
public String getAlgorithm() { if (!isNullValueUndefined()) { return String.format( "$('%s').map(%s, %s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue()), gson.toJson(getNullValue())); } if (!isDefaultValueUndefined()) { return String.format( "$('%s').map(%s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue())); } return String.format( "$('%s').map(%s).value();", getSourceAttributeName(), gson.toJson(getMap())); }
CategoryMapping { public String getAlgorithm() { if (!isNullValueUndefined()) { return String.format( "$('%s').map(%s, %s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue()), gson.toJson(getNullValue())); } if (!isDefaultValueUndefined()) { return String.format( "$('%s').map(%s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue())); } return String.format( "$('%s').map(%s).value();", getSourceAttributeName(), gson.toJson(getMap())); } }
CategoryMapping { public String getAlgorithm() { if (!isNullValueUndefined()) { return String.format( "$('%s').map(%s, %s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue()), gson.toJson(getNullValue())); } if (!isDefaultValueUndefined()) { return String.format( "$('%s').map(%s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue())); } return String.format( "$('%s').map(%s).value();", getSourceAttributeName(), gson.toJson(getMap())); }  }
CategoryMapping { public String getAlgorithm() { if (!isNullValueUndefined()) { return String.format( "$('%s').map(%s, %s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue()), gson.toJson(getNullValue())); } if (!isDefaultValueUndefined()) { return String.format( "$('%s').map(%s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue())); } return String.format( "$('%s').map(%s).value();", getSourceAttributeName(), gson.toJson(getMap())); }  abstract String getSourceAttributeName(); abstract Map<S, T> getMap(); @Nullable @CheckForNull abstract T getDefaultValue(); abstract boolean isDefaultValueUndefined(); @Nullable @CheckForNull abstract T getNullValue(); abstract boolean isNullValueUndefined(); static CategoryMapping<S, T> create(String sourceAttributeName, Map<S, T> map); static CategoryMapping<S, T> create(
      String sourceAttributeName, Map<S, T> map, T defaultValue); static CategoryMapping<S, T> create(
      String sourceAttributeName, Map<S, T> map, T defaultValue, T nullValue); String getAlgorithm(); static CategoryMapping<S, T> createEmpty(String attributeName); static CategoryMapping<S, T> create(String algorithm); }
CategoryMapping { public String getAlgorithm() { if (!isNullValueUndefined()) { return String.format( "$('%s').map(%s, %s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue()), gson.toJson(getNullValue())); } if (!isDefaultValueUndefined()) { return String.format( "$('%s').map(%s, %s).value();", getSourceAttributeName(), gson.toJson(getMap()), gson.toJson(getDefaultValue())); } return String.format( "$('%s').map(%s).value();", getSourceAttributeName(), gson.toJson(getMap())); }  abstract String getSourceAttributeName(); abstract Map<S, T> getMap(); @Nullable @CheckForNull abstract T getDefaultValue(); abstract boolean isDefaultValueUndefined(); @Nullable @CheckForNull abstract T getNullValue(); abstract boolean isNullValueUndefined(); static CategoryMapping<S, T> create(String sourceAttributeName, Map<S, T> map); static CategoryMapping<S, T> create(
      String sourceAttributeName, Map<S, T> map, T defaultValue); static CategoryMapping<S, T> create(
      String sourceAttributeName, Map<S, T> map, T defaultValue, T nullValue); String getAlgorithm(); static CategoryMapping<S, T> createEmpty(String attributeName); static CategoryMapping<S, T> create(String algorithm);  }