[ { "path": "model::myProfile", "content": { "_type": "profile", "name": "myProfile", "package": "model", "stereotypes": [ "abstract" ], "tags": [ "doc" ] }, "classifierPath": "meta::pure::metamodel::extension::Profile" }, { "path": "model::target::IncType", "content": { "_type": "Enumeration", "name": "IncType", "package": "model::target", "values": [ { "value": "CO" }, { "value": "LTD" } ] }, "classifierPath": "meta::pure::metamodel::type::Enumeration" }, { "path": "model::Firm", "content": { "_type": "class", "constraints": [ { "functionDefinition": { "_type": "lambda", "body": [ { "_type": "func", "function": "greaterThan", "parameters": [ { "_type": "func", "function": "size", "parameters": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "this" } ], "property": "employees" } ] }, { "_type": "integer", "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "values": [ 2 ] } ] } ], "parameters": [] }, "name": "employeeSize" } ], "name": "Firm", "package": "model", "properties": [ { "multiplicity": { "lowerBound": 1 }, "name": "employees", "type": "model::Person" }, { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "type", "type": "String" } ], "superTypes": [ "model::LegalEntity" ] }, "classifierPath": "meta::pure::metamodel::type::Class" }, { "path": "model::LegalEntity", "content": { "_type": "class", "name": "LegalEntity", "package": "model", "properties": [ { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "name", "type": "String" } ], "stereotypes": [ { "profile": "model::myProfile", "value": "abstract" } ], "taggedValues": [ { "tag": { "profile": "model::myProfile", "value": "doc" }, "value": "trading entity with a name" } ] }, "classifierPath": "meta::pure::metamodel::type::Class" }, { "path": "model::Person", "content": { "_type": "class", "name": "Person", "package": "model", "properties": [ { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "firstName", "type": "String" }, { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "lastName", "type": "String" } ] }, "classifierPath": "meta::pure::metamodel::type::Class" }, { "path": "model::target::_Firm", "content": { "_type": "class", "constraints": [ { "functionDefinition": { "_type": "lambda", "body": [ { "_type": "func", "function": "startsWith", "parameters": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "this" } ], "property": "name" }, { "_type": "string", "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "values": [ "Firm_" ] } ] } ], "parameters": [] }, "name": "isNameValid" } ], "name": "_Firm", "package": "model::target", "properties": [ { "multiplicity": { "lowerBound": 1 }, "name": "employees", "type": "model::target::_Person" }, { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "name", "type": "String" }, { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "incType", "type": "model::target::IncType" } ] }, "classifierPath": "meta::pure::metamodel::type::Class" }, { "path": "model::target::_Person", "content": { "_type": "class", "name": "_Person", "package": "model::target", "properties": [ { "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "name": "fullName", "type": "String" } ] }, "classifierPath": "meta::pure::metamodel::type::Class" }, { "path": "model::myMapping", "content": { "_type": "mapping", "classMappings": [ { "_type": "pureInstance", "class": "model::target::_Person", "propertyMappings": [ { "_type": "purePropertyMapping", "property": { "class": "model::target::_Person", "property": "fullName" }, "source": "model_target__Person", "transform": { "_type": "lambda", "body": [ { "_type": "func", "function": "plus", "parameters": [ { "_type": "collection", "multiplicity": { "lowerBound": 3, "upperBound": 3 }, "values": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "src" } ], "property": "firstName" }, { "_type": "string", "multiplicity": { "lowerBound": 1, "upperBound": 1 }, "values": [ "." ] }, { "_type": "property", "parameters": [ { "_type": "var", "name": "src" } ], "property": "lastName" } ] } ] } ], "parameters": [] } } ], "root": true, "srcClass": "model::Person" }, { "_type": "pureInstance", "class": "model::target::_Firm", "propertyMappings": [ { "_type": "purePropertyMapping", "property": { "class": "model::target::_Firm", "property": "employees" }, "source": "model_target__Firm", "target": "model_target__Person", "transform": { "_type": "lambda", "body": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "src" } ], "property": "employees" } ], "parameters": [] } }, { "_type": "purePropertyMapping", "property": { "class": "model::target::_Firm", "property": "name" }, "source": "model_target__Firm", "transform": { "_type": "lambda", "body": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "src" } ], "property": "name" } ], "parameters": [] } }, { "_type": "purePropertyMapping", "enumMappingId": "model_target_IncType", "property": { "class": "model::target::_Firm", "property": "incType" }, "source": "model_target__Firm", "transform": { "_type": "lambda", "body": [ { "_type": "property", "parameters": [ { "_type": "var", "name": "src" } ], "property": "type" } ], "parameters": [] } } ], "root": true, "srcClass": "model::Firm" } ], "enumerationMappings": [ { "enumeration": "model::target::IncType", "enumValueMappings": [ { "enumValue": "CO", "sourceValues": [ { "_type": "stringSourceValue", "value": "corporation" } ] }, { "enumValue": "LTD", "sourceValues": [ { "_type": "stringSourceValue", "value": "limited" } ] } ] } ], "includedMappings": [], "name": "myMapping", "package": "model", "tests": [ { "assert": { "_type": "expectedOutputMappingTestAssert", "expectedOutput": "{\n \"defects\": [\n\n ],\n \"source\": {\n \"defects\": [\n {\n \"id\": \"employeeSize\",\n \"externalId\": null,\n \"message\": \"Constraint :[employeeSize] violated in the Class Firm\",\n \"enforcementLevel\": \"Error\",\n \"ruleType\": \"ClassConstraint\",\n \"ruleDefinerPath\": \"model::Firm\",\n \"path\": [\n\n ]\n }\n ],\n \"source\": {\n \"number\": 1,\n \"record\": \"{\\\"name\\\":\\\"Firm_X\\\",\\\"employees\\\":[{\\\"firstName\\\":\\\"A\\\",\\\"lastName\\\":\\\"P\\\"}],\\\"type\\\":\\\"corporation\\\"}\"\n },\n \"value\": {\n \"type\": \"corporation\",\n \"name\": \"Firm_X\",\n \"employees\": [\n {\n \"lastName\": \"P\",\n \"firstName\": \"A\"\n }\n ]\n }\n },\n \"value\": {\n \"incType\": \"CO\",\n \"name\": \"Firm_X\",\n \"employees\": [\n {\n \"fullName\": \"A.P\"\n }\n ]\n }\n}" }, "inputData": [ { "_type": "object", "data": "{\"name\":\"Firm_X\",\"employees\":[{\"firstName\":\"A\",\"lastName\":\"P\"}],\"type\":\"corporation\"}", "inputType": "JSON", "sourceClass": "model::Firm" } ], "name": "test_1", "query": { "_type": "lambda", "body": [ { "_type": "func", "function": "serialize", "parameters": [ { "_type": "func", "function": "graphFetchChecked", "parameters": [ { "_type": "func", "function": "getAll", "parameters": [ { "_type": "class", "fullPath": "model::target::_Firm" } ] }, { "_type": "rootGraphFetchTree", "class": "model::target::_Firm", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "incType", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "name", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "employees", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "fullName", "subTrees": [] } ] } ] } ] }, { "_type": "rootGraphFetchTree", "class": "model::target::_Firm", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "incType", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "name", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "employees", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "fullName", "subTrees": [] } ] } ] } ] } ], "parameters": [] } }, { "assert": { "_type": "expectedOutputMappingTestAssert", "expectedOutput": "{\n \"defects\": [\n\n ],\n \"source\": {\n \"defects\": [\n\n ],\n \"source\": {\n \"number\": 1,\n \"record\": \"{\\\"name\\\":\\\"Firm_XY\\\",\\\"employees\\\":[{\\\"firstName\\\":\\\"firstName 87\\\",\\\"lastName\\\":\\\"lastName 89\\\"},{\\\"firstName\\\":\\\"firstName 87\\\",\\\"lastName\\\":\\\"lastName 89\\\"},{\\\"firstName\\\":\\\"firstName 87\\\",\\\"lastName\\\":\\\"lastName 89\\\"}],\\\"type\\\":\\\"limited\\\"}\"\n },\n \"value\": {\n \"type\": \"limited\",\n \"name\": \"Firm_XY\",\n \"employees\": [\n {\n \"firstName\": \"firstName 87\",\n \"lastName\": \"lastName 89\"\n },\n {\n \"firstName\": \"firstName 87\",\n \"lastName\": \"lastName 89\"\n },\n {\n \"firstName\": \"firstName 87\",\n \"lastName\": \"lastName 89\"\n }\n ]\n }\n },\n \"value\": {\n \"incType\": \"LTD\",\n \"name\": \"Firm_XY\",\n \"employees\": [\n {\n \"fullName\": \"firstName 87.lastName 89\"\n },\n {\n \"fullName\": \"firstName 87.lastName 89\"\n },\n {\n \"fullName\": \"firstName 87.lastName 89\"\n }\n ]\n }\n}" }, "inputData": [ { "_type": "object", "data": "{\"name\":\"Firm_XY\",\"employees\":[{\"firstName\":\"firstName 87\",\"lastName\":\"lastName 89\"},{\"firstName\":\"firstName 87\",\"lastName\":\"lastName 89\"},{\"firstName\":\"firstName 87\",\"lastName\":\"lastName 89\"}],\"type\":\"limited\"}", "inputType": "JSON", "sourceClass": "model::Firm" } ], "name": "test_2", "query": { "_type": "lambda", "body": [ { "_type": "func", "function": "serialize", "parameters": [ { "_type": "func", "function": "graphFetchChecked", "parameters": [ { "_type": "func", "function": "getAll", "parameters": [ { "_type": "class", "fullPath": "model::target::_Firm" } ] }, { "_type": "rootGraphFetchTree", "class": "model::target::_Firm", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "incType", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "name", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "employees", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "fullName", "subTrees": [] } ] } ] } ] }, { "_type": "rootGraphFetchTree", "class": "model::target::_Firm", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "incType", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "name", "subTrees": [] }, { "_type": "propertyGraphFetchTree", "parameters": [], "property": "employees", "subTrees": [ { "_type": "propertyGraphFetchTree", "parameters": [], "property": "fullName", "subTrees": [] } ] } ] } ] } ], "parameters": [] } } ] }, "classifierPath": "meta::pure::mapping::Mapping" }, { "path": "model::myDiagram", "content": { "_type": "diagram", "classViews": [ { "class": "model::Firm", "id": "09bee699-d077-4589-9fe2-71979a197281", "position": { "x": 119, "y": 55 }, "rectangle": { "height": 44, "width": 146.5537109375 } }, { "class": "model::LegalEntity", "id": "2299d3c7-3c37-4f62-b532-9b8eb5362f9f", "position": { "x": 379, "y": 116 }, "rectangle": { "height": 72, "width": 204.447265625 } }, { "class": "model::Person", "id": "77eebf6b-6ff0-4518-b585-c9914f20175c", "position": { "x": 306, "y": 312 }, "rectangle": { "height": 58, "width": 124.521484375 } } ], "generalizationViews": [ { "line": { "points": [ { "x": 192.27685546875, "y": 77 }, { "x": 481.2236328125, "y": 152 } ] }, "sourceView": "09bee699-d077-4589-9fe2-71979a197281", "targetView": "2299d3c7-3c37-4f62-b532-9b8eb5362f9f" } ], "name": "myDiagram", "package": "model", "propertyViews": [ { "line": { "points": [ { "x": 192.27685546875, "y": 77 }, { "x": 368.2607421875, "y": 341 } ] }, "property": { "class": "model::Firm", "property": "employees" }, "sourceView": "09bee699-d077-4589-9fe2-71979a197281", "targetView": "77eebf6b-6ff0-4518-b585-c9914f20175c" } ] }, "classifierPath": "meta::pure::metamodel::diagram::Diagram" } ]