DefaultPropertyMapper implements PropertyMapper { @Override public String toFullyQualifiedName(String propName, String type) { HierarchicalType dataType = getDataType(type); String replacement = m_cleanToQualifiedMap.get(propName); if (replacement == null && dataType != null) { FieldMapping fieldMap = dataType.fieldMapping(); if (fieldMap.fields.containsKey(propName)) { try { replacement = dataType.getQualifiedName(propName); } catch (AtlasException e) { throw new CatalogRuntimeException(String.format( "Unable to resolve fully qualified property name for type '%s': %s", type, e), e); } } } if (replacement == null) { replacement = propName; } return replacement; } DefaultPropertyMapper();  DefaultPropertyMapper(Map<String, String> qualifiedToCleanMap,
                                 Map<String, String> cleanToQualifiedMap); @Override String toCleanName(String propName, String type); @Override String toFullyQualifiedName(String propName, String type);  }
@Test public void testToQualifiedName_defaultMappings() throws Exception { String typeName = "testType"; HierarchicalType dataType = createNiceMock(HierarchicalType.class); Map<String, AttributeInfo> fields = new HashMap<>(); fields.put("foo", null); fields.put("prop", null); FieldMapping fieldMapping = new FieldMapping(fields, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); expect(dataType.fieldMapping()).andReturn(fieldMapping).anyTimes(); expect(dataType.getQualifiedName("foo")).andReturn("foo"); expect(dataType.getQualifiedName("prop")).andReturn("Prefix.prop"); replay(dataType); PropertyMapper propertyMapper = new TestDefaultPropertyMapper(dataType); assertEquals(propertyMapper.toFullyQualifiedName("foo", typeName), "foo"); assertEquals(propertyMapper.toFullyQualifiedName("prop", typeName), "Prefix.prop"); assertEquals(propertyMapper.toFullyQualifiedName("other", typeName), "other"); assertEquals(propertyMapper.toFullyQualifiedName("Prefix.other", typeName), "Prefix.other"); verify(dataType); }
@Test public void testToQualifiedName_specifiedMappings() throws Exception { String typeName = "testType"; HierarchicalType dataType = createNiceMock(HierarchicalType.class); Map<String, AttributeInfo> fields = new HashMap<>(); fields.put("foo", null); fields.put("prop", null); FieldMapping fieldMapping = new FieldMapping(fields, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); expect(dataType.fieldMapping()).andReturn(fieldMapping).anyTimes(); expect(dataType.getQualifiedName("foo")).andReturn("foo"); expect(dataType.getQualifiedName("prop")).andReturn("Prefix.prop"); replay(dataType); Map<String, String> cleanToQualifiedMap = new HashMap<>(); cleanToQualifiedMap.put("prop1", "property_1"); Map<String, String> qualifiedToCleanMap = new HashMap<>(); qualifiedToCleanMap.put("property_1", "prop1"); PropertyMapper propertyMapper = new TestDefaultPropertyMapper( typeName, qualifiedToCleanMap, cleanToQualifiedMap, dataType); assertEquals(propertyMapper.toFullyQualifiedName("prop1", typeName), "property_1"); assertEquals(propertyMapper.toFullyQualifiedName("foo", typeName), "foo"); assertEquals(propertyMapper.toFullyQualifiedName("prop", typeName), "Prefix.prop"); assertEquals(propertyMapper.toFullyQualifiedName("other", typeName), "other"); assertEquals(propertyMapper.toFullyQualifiedName("Prefix.other", typeName), "Prefix.other"); verify(dataType); }