Skip to content
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 @@ -31,7 +31,7 @@
import java.util.Objects;

public abstract class ImportTransformer {
private static final String TRANSFORMER_PARAMETER_SEPARATOR = "\\:";
private static final String TRANSFORMER_PARAMETER_SEPARATOR = "~";

private static final String TRANSFORMER_NAME_ADD = "add";
private static final String TRANSFORMER_NAME_CLEAR_ATTR = "clearAttrValue";
Expand All @@ -49,6 +49,11 @@ protected ImportTransformer(String transformType) {
}

public static ImportTransformer getTransformer(String transformerSpec) throws AtlasBaseException {
if (transformerSpec.contains(":") && !transformerSpec.contains(TRANSFORMER_PARAMETER_SEPARATOR)) {
throw new AtlasBaseException(AtlasErrorCode.INVALID_VALUE,
"Invalid transformer specification. The parameter separator ':' is no longer supported. Use '~' instead. Transformer specification: " + transformerSpec);
}

String[] params = StringUtils.split(transformerSpec, TRANSFORMER_PARAMETER_SEPARATOR);
String key = (params == null || params.length < 1) ? transformerSpec : params[0];

Expand All @@ -66,13 +71,13 @@ public static ImportTransformer getTransformer(String transformerSpec) throws At
} else if (key.equals(TRANSFORMER_NAME_UPPERCASE)) {
ret = new Uppercase();
} else if (key.equals(TRANSFORMER_NAME_REMOVE_CLASSIFICATION)) {
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, ":", 1, params.length);
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, "~", 1, params.length);
ret = new RemoveClassification(name);
} else if (key.equals(TRANSFORMER_NAME_ADD)) {
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, ":", 1, params.length);
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, "~", 1, params.length);
ret = new AddValueToAttribute(name);
} else if (key.equals(TRANSFORMER_NAME_CLEAR_ATTR)) {
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, ":", 1, params.length);
String name = (params == null || params.length < 1) ? "" : StringUtils.join(params, "~", 1, params.length);
ret = new ClearAttributes(name);
} else if (key.equals(TRANSFORMER_SET_DELETED)) {
ret = new SetDeleted();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public void serializeAtlasImportRequstFromJsonWithEmptyTransforms() {

@Test
public void serializeAtlasImportRequstFromJsonWith1Transform() {
String jsonData = "{ \"options\": { \"transforms\": \"{ \\\"hive_db\\\": { \\\"qualifiedName\\\": [ \\\"replace:@cl1:@cl2\\\" ] } }\" } }";
String jsonData = "{ \"options\": { \"transforms\": \"{ \\\"hive_db\\\": { \\\"qualifiedName\\\": [ \\\"replace~@cl1~@cl2\\\" ] } }\" } }";

AtlasImportRequest request = AtlasType.fromJson(jsonData, AtlasImportRequest.class);

Expand All @@ -123,7 +123,7 @@ public void serializeAtlasImportRequstFromJsonWith1Transform() {

@Test
public void serializeAtlasImportRequstFromJson() {
String jsonData = "{ \"options\": { \"transforms\": \"{ \\\"hive_db\\\": { \\\"qualifiedName\\\": [ \\\"replace:@cl1:@cl2\\\" ] }, \\\"hive_table\\\": { \\\"qualifiedName\\\": [ \\\"lowercase\\\", \\\"replace:@cl1:@cl2\\\" ] } }\" } } }";
String jsonData = "{ \"options\": { \"transforms\": \"{ \\\"hive_db\\\": { \\\"qualifiedName\\\": [ \\\"replace~@cl1~@cl2\\\" ] }, \\\"hive_table\\\": { \\\"qualifiedName\\\": [ \\\"lowercase\\\", \\\"replace~@cl1~@cl2\\\" ] } }\" } } }";

AtlasImportRequest request = AtlasType.fromJson(jsonData, AtlasImportRequest.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ public void transformUpdatesForSubTypes(InputStream inputStream) throws IOExcept
loadBaseModel();
loadHiveModel();

String transformJSON = "{ \"Asset\": { \"qualifiedName\":[ \"lowercase\", \"replace:@cl1:@cl2\" ] } }";
String transformJSON = "{ \"Asset\": { \"qualifiedName\":[ \"lowercase\", \"replace~@cl1~@cl2\" ] } }";
ZipSource zipSource = new ZipSource(inputStream);
importService.setImportTransform(zipSource, transformJSON);
ImportTransforms importTransforms = zipSource.getImportTransform();
Expand All @@ -859,7 +859,7 @@ public void transformUpdatesForSubTypesAddsToExistingTransforms(InputStream inpu
loadBaseModel();
loadHiveModel();

String transformJSON = "{ \"Asset\": { \"qualifiedName\":[ \"replace:@cl1:@cl2\" ] }, \"hive_table\": { \"qualifiedName\":[ \"lowercase\" ] } }";
String transformJSON = "{ \"Asset\": { \"qualifiedName\":[ \"replace~@cl1~@cl2\" ] }, \"hive_table\": { \"qualifiedName\":[ \"lowercase\" ] } }";
ZipSource zipSource = new ZipSource(inputStream);
importService.setImportTransform(zipSource, transformJSON);
ImportTransforms importTransforms = zipSource.getImportTransform();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class ImportTransformerJSONTest {
public void createAtlasImportTransformFromJson() throws Exception {
String hiveTableType = "hive_table";
String qualifiedName = "qualifiedName";
String jsonTransforms = "{ \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace:@cl1:@cl2\" ] } }";
String jsonTransforms = "{ \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace~@cl1~@cl2\" ] } }";

ImportTransforms transforms = ImportTransforms.fromJson(jsonTransforms);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void createWithCorrectParameters() throws AtlasBaseException {
String param1 = "@cl1";
String param2 = "@cl2";

ImportTransformer e = ImportTransformer.getTransformer(String.format("%s:%s:%s", "replace", param1, param2));
ImportTransformer e = ImportTransformer.getTransformer(String.format("%s~%s~%s", "replace", param1, param2));

assertTrue(e instanceof ImportTransformer.Replace);
assertEquals(((ImportTransformer.Replace) e).getToFindStr(), param1);
Expand All @@ -42,8 +42,8 @@ public void createSeveralWithCorrectParameters() throws AtlasBaseException {
String param1 = "@cl1";
String param2 = "@cl2";

ImportTransformer e1 = ImportTransformer.getTransformer(String.format("%s:%s:%s", "replace", param1, param2));
ImportTransformer e2 = ImportTransformer.getTransformer("replace:tt1:tt2");
ImportTransformer e1 = ImportTransformer.getTransformer(String.format("%s~%s~%s", "replace", param1, param2));
ImportTransformer e2 = ImportTransformer.getTransformer(String.format("replace~tt1~tt2"));

assertTrue(e1 instanceof ImportTransformer.Replace);
assertEquals(((ImportTransformer.Replace) e1).getToFindStr(), param1);
Expand All @@ -56,7 +56,7 @@ public void createSeveralWithCorrectParameters() throws AtlasBaseException {

@Test
public void createWithDefaultParameters() throws AtlasBaseException {
ImportTransformer e1 = ImportTransformer.getTransformer("replace:@cl1");
ImportTransformer e1 = ImportTransformer.getTransformer("replace~@cl1");
ImportTransformer e2 = ImportTransformer.getTransformer("replace");

assertTrue(e1 instanceof ImportTransformer.Replace);
Expand Down Expand Up @@ -92,7 +92,7 @@ public void applyUppercaseTransformer() throws AtlasBaseException {

@Test
public void applyReplaceTransformer1() throws AtlasBaseException {
ImportTransformer e = ImportTransformer.getTransformer("replace:@cl1:@cl2");
ImportTransformer e = ImportTransformer.getTransformer("replace~@cl1~@cl2");

assertEquals(e.apply("@cl1"), "@cl2");
assertEquals(e.apply("default@cl1"), "default@cl2");
Expand All @@ -105,7 +105,7 @@ public void applyReplaceTransformer1() throws AtlasBaseException {

@Test
public void applyReplaceTransformer2() throws AtlasBaseException {
ImportTransformer e = ImportTransformer.getTransformer("replace:@cl1");
ImportTransformer e = ImportTransformer.getTransformer("replace~@cl1");

assertEquals(e.apply("@cl1"), "");
assertEquals(e.apply("default@cl1"), "default");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ private void assertTag(AtlasEntity entity, String tagName) {
private AtlasImportRequest getImporRequest() {
AtlasImportRequest request = new AtlasImportRequest();

request.getOptions().put("transforms", "{ \"Referenceable\": { \"*\":[ \"addClassification:REPLICATED\" ] } }");
request.getOptions().put("transforms", "{ \"Referenceable\": { \"*\":[ \"addClassification~REPLICATED\" ] } }");

return request;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,16 @@ public class ImportTransformsTest {

private final String lowerCaseCL1 = "@cl1";
private final String lowerCaseCL2 = "@cl2";
private final String jsonLowerCaseReplace = "{ \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace:@cl1:@cl2\" ] } }";
private final String jsonReplaceLowerCase = "{ \"Asset\": { \"qualifiedName\":[ \"replace:@cl1:@cl2\" ] }, \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace:@cl1:@cl2\" ] } }";
private final String jsonReplaceRemoveClassification = "{ \"hive_table\": { \"qualifiedName\":[ \"replace:@%s:@%s\"], \"*\":[ \"removeClassification:%s_to_%s\" ] } }";
private final String jsonReplaceAndAddAttrValue = "{ \"hive_table\": { \"qualifiedName\":[ \"replace:@%s:@%s\"], \"*\":[ \"add:%s=list:%s\" ] } }";
private final String jsonSingleClearAttrValue = "{ \"hive_table\": { \"*\":[ \"clearAttrValue:replicatedToCluster\", \"clearAttrValue:replicatedFromCluster\" ] } }";
private final String jsonMultipleClearAttrValue = "{ \"hive_table\": { \"*\":[ \"clearAttrValue:replicatedToCluster,replicatedFromCluster\" ] } }";
private final String jsonSetDeleted = "{ \"hive_table\": { \"*\":[ \"setDeleted\" ] } }";
private final String jsonAddClasification = "{ \"hive_table\": { \"*\":[ \"addClassification:REPLICATED\" ] } }";
private final String jsonAddClasification2 = "{ \"hive_table\": { \"*\":[ \"addClassification:REPLICATED_2\" ] } }";
private final String jsonAddClasificationScoped = "{ \"hive_column\": { \"*\":[ \"addClassification:REPLICATED_2:topLevel\" ] } }";
private final String jsonLowerCaseReplace = "{ \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace~@cl1~@cl2\" ] } }";
private final String jsonReplaceLowerCase = "{ \"Asset\": { \"qualifiedName\":[ \"replace~@cl1~@cl2\" ] }, \"hive_table\": { \"qualifiedName\":[ \"lowercase\", \"replace~@cl1~@cl2\" ] } }";
private final String jsonReplaceRemoveClassification = "{ \"hive_table\": { \"qualifiedName\":[ \"replace~@%s~@%s\"], \"*\":[ \"removeClassification~%s_to_%s\" ] } }";
private final String jsonReplaceAndAddAttrValue = "{ \"hive_table\": { \"qualifiedName\":[ \"replace~@%s~@%s\"], \"*\":[ \"add~%s=list:%s\" ] } }";
private final String jsonSingleClearAttrValue = "{ \"hive_table\": { \"*\":[ \"clearAttrValue~replicatedToCluster\", \"clearAttrValue~replicatedFromCluster\" ] } }";
private final String jsonMultipleClearAttrValue = "{ \"hive_table\": { \"*\":[ \"clearAttrValue~replicatedToCluster,replicatedFromCluster\" ] } }";
private final String jsonSetDeleted = "{ \"hive_table\": { \"*\":[ \"setDeleted\" ] } }";
private final String jsonAddClasification = "{ \"hive_table\": { \"*\":[ \"addClassification~REPLICATED\" ] } }";
private final String jsonAddClasification2 = "{ \"hive_table\": { \"*\":[ \"addClassification~REPLICATED_2\" ] } }";
private final String jsonAddClasificationScoped = "{ \"hive_column\": { \"*\":[ \"addClassification~REPLICATED_2~topLevel\" ] } }";

private ImportTransforms transform;

Expand Down Expand Up @@ -278,7 +278,7 @@ private void addColumnTransform(ImportTransforms transform) throws AtlasBaseExce
Map<String, List<ImportTransformer>> tr = new HashMap<>();
List<ImportTransformer> trList = new ArrayList<>();

trList.add(ImportTransformer.getTransformer(String.format("replace:%s:%s", lowerCaseCL1, lowerCaseCL2)));
trList.add(ImportTransformer.getTransformer(String.format("replace~%s~%s", lowerCaseCL1, lowerCaseCL2)));
tr.put(ATTR_NAME_QUALIFIED_NAME, trList);

transform.getTransforms().put("hive_column", tr);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,6 @@ private void useCreationOrderToFetchEntitiesWithExtInfo(ZipSource zipSource, Lis
}

private ImportTransforms getTransformForHiveDB() {
return ImportTransforms.fromJson("{ \"hive_db\": { \"qualifiedName\": [ \"replace:@cl1:@cl2\" ] } }");
return ImportTransforms.fromJson("{ \"hive_db\": { \"qualifiedName\": [ \"replace~@cl1~@cl2\" ] } }");
}
}