@Test public void testProcess() throws AtlasException { DefaultAtlasSession session = mock(DefaultAtlasSession.class); when(session.getAtlasContext()).thenReturn(context); Head head = mock(Head.class); when(session.head()).thenReturn(head); when(head.setMapping(any(Mapping.class))).thenReturn(head); when(head.setLookupTable(any(LookupTable.class))).thenReturn(head); Field headField = mock(ConstantField.class); when(head.getSourceField()).thenReturn(headField); Audits audits = mock(Audits.class); when(session.getAudits()).thenReturn(audits); Validations validations = mock(Validations.class); when(session.getValidations()).thenReturn(validations); AtlasMapping mapping = mock(AtlasMapping.class); when(session.getMapping()).thenReturn(mapping); when(session.hasErrors()).thenReturn(true); context.process(session); when(session.hasErrors()).thenReturn(false); Mappings mappings = mock(Mappings.class); when(mapping.getMappings()).thenReturn(mappings); List<BaseMapping> baseMappings = new ArrayList<>(); Collection baseMapping = mock(Collection.class); when(baseMapping.getMappingType()).thenReturn(MappingType.COLLECTION); baseMappings.add(baseMapping); when(mappings.getMapping()).thenReturn(baseMappings); Mappings subMappings = mock(Mappings.class); when(baseMapping.getMappings()).thenReturn(subMappings); List<BaseMapping> baseMappingList = new ArrayList<>(); Mapping mappingElement1 = mock(Mapping.class); List<Field> sourceFieldList = new ArrayList<>(); ConstantField sourceField = mock(ConstantField.class); sourceFieldList.add(sourceField); when(sourceField.getPath()).thenReturn("contact.firstName"); when(mappingElement1.getInputField()).thenReturn(sourceFieldList); List<Field> outputFieldList = new ArrayList<>(); Field outputField = mock(Field.class); outputFieldList.add(outputField); when(outputField.getPath()).thenReturn("contact.firstName"); when(mappingElement1.getOutputField()).thenReturn(outputFieldList); when(mappingElement1.getMappingType()).thenReturn(MappingType.ALL); baseMappingList.add(mappingElement1); when(subMappings.getMapping()).thenReturn(baseMappingList); Mapping mappingElement2 = mock(Mapping.class); when(mappingElement2.getMappingType()).thenReturn(MappingType.ALL); baseMappingList.add(mappingElement2); List<Field> sourceFieldList2 = new ArrayList<>(); ConstantField sourceField2 = mock(ConstantField.class); sourceFieldList2.add(sourceField2); when(sourceField2.getPath()).thenReturn("contact[1]"); when(mappingElement2.getInputField()).thenReturn(sourceFieldList2); ConstantModule mockConstantModule = mock(ConstantModule.class); ConstantField clonedField = mock(ConstantField.class); when(clonedField.getPath()).thenReturn("cloned[1]"); when(mockConstantModule.cloneField(any(Field.class))).thenReturn(clonedField); List<Field> mockSourceFieldList = new ArrayList<>(); ConstantField mockSourceField = mock(ConstantField.class); mockSourceFieldList.add(mockSourceField); when(mockSourceField.getPath()).thenReturn("source[1]"); when(mappingElement2.getInputField()).thenReturn(mockSourceFieldList); List<Field> mockOutputFieldList = new ArrayList<>(); ConstantField mockOutputField = mock(ConstantField.class); mockOutputFieldList.add(mockOutputField); when(mockOutputField.getPath()).thenReturn("output[1]"); when(mappingElement2.getOutputField()).thenReturn(mockOutputFieldList); context.getSourceModules().put(DefaultAtlasContext.CONSTANTS_DOCUMENT_ID, mockConstantModule); context.getTargetModules().put(AtlasConstants.DEFAULT_TARGET_DOCUMENT_ID, mockConstantModule); context.process(session); }
@Override public void process(AtlasSession userSession) throws AtlasException { if (!(userSession instanceof DefaultAtlasSession)) { throw new AtlasException(String.format("Unsupported session class '%s'", userSession.getClass().getName())); } if (!this.equals(userSession.getAtlasContext())) { throw new AtlasException("Cannot execute AtlasSession created by the other AtlasContext"); } DefaultAtlasSession session = (DefaultAtlasSession) userSession; if (LOG.isDebugEnabled()) { LOG.debug("Begin process {}", (session == null ? null : session.toString())); } session.head().unset(); session.getAudits().getAudit().clear(); session.getValidations().getValidation().clear(); processValidation(session); for (Validation v : session.getValidations().getValidation()) { AtlasUtil.addAudit(session, v); } Mappings mappings = session.getMapping().getMappings(); if (mappings != null && mappings.getMapping().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Field mappings should not be empty"), null, AuditStatus.WARN, null); } session.getValidations().getValidation().clear(); if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-validation", session.errorCount()); } return; } for (AtlasModule module : getSourceModules().values()) { module.processPreSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPreTargetExecution(session); } if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-execution", session.errorCount()); } return; } for (BaseMapping baseMapping : session.getMapping().getMappings().getMapping()) { for (Mapping mapping : unwrapCollectionMappings(session, baseMapping)) { session.head().setMapping(mapping).setLookupTable(lookupTables.get(mapping.getLookupTableName())); if (mapping.getOutputField() == null || mapping.getOutputField().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Mapping does not contain at least one target field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription()), null, AuditStatus.WARN, null); continue; } try { if (mapping.getInputFieldGroup() != null) { if (mapping.getExpression() != null) { session.head().setSourceField(mapping.getInputFieldGroup()); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { processSourceFieldGroup(session, mapping.getInputFieldGroup()); } } else if (mapping.getInputField() != null && !mapping.getInputField().isEmpty()) { if (mapping.getExpression() != null) { FieldGroup group = new FieldGroup(); group.getField().addAll(mapping.getInputField()); session.head().setSourceField(group); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { applyCopyToActions(mapping.getInputField(), mapping); processSourceFieldMappings(session, mapping.getInputField()); } } else { session.head().addAudit(AuditStatus.WARN, null, null, String.format( "Mapping does not contain expression or at least one source field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription())); } } catch (Exception t) { Field sourceField = session.head().getSourceField(); String docId = sourceField != null ? sourceField.getDocId() : null; String path = sourceField != null ? sourceField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while reading source field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } if (!session.head().hasError()) { try { processTargetFieldMappings(session, mapping); } catch (Exception t) { Field targetField = session.head().getTargetField(); String docId = targetField != null ? targetField.getDocId() : null; String path = targetField != null ? targetField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while populating target field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } } session.getAudits().getAudit().addAll(session.head().getAudits()); session.head().unset(); } } for (AtlasModule module : getSourceModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getSourceModules().values()) { module.processPostSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostTargetExecution(session); } if (LOG.isDebugEnabled()) { LOG.debug("End process {}", session == null ? null : session.toString()); } }
DefaultAtlasContext implements AtlasContext, AtlasContextMXBean { @Override public void process(AtlasSession userSession) throws AtlasException { if (!(userSession instanceof DefaultAtlasSession)) { throw new AtlasException(String.format("Unsupported session class '%s'", userSession.getClass().getName())); } if (!this.equals(userSession.getAtlasContext())) { throw new AtlasException("Cannot execute AtlasSession created by the other AtlasContext"); } DefaultAtlasSession session = (DefaultAtlasSession) userSession; if (LOG.isDebugEnabled()) { LOG.debug("Begin process {}", (session == null ? null : session.toString())); } session.head().unset(); session.getAudits().getAudit().clear(); session.getValidations().getValidation().clear(); processValidation(session); for (Validation v : session.getValidations().getValidation()) { AtlasUtil.addAudit(session, v); } Mappings mappings = session.getMapping().getMappings(); if (mappings != null && mappings.getMapping().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Field mappings should not be empty"), null, AuditStatus.WARN, null); } session.getValidations().getValidation().clear(); if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-validation", session.errorCount()); } return; } for (AtlasModule module : getSourceModules().values()) { module.processPreSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPreTargetExecution(session); } if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-execution", session.errorCount()); } return; } for (BaseMapping baseMapping : session.getMapping().getMappings().getMapping()) { for (Mapping mapping : unwrapCollectionMappings(session, baseMapping)) { session.head().setMapping(mapping).setLookupTable(lookupTables.get(mapping.getLookupTableName())); if (mapping.getOutputField() == null || mapping.getOutputField().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Mapping does not contain at least one target field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription()), null, AuditStatus.WARN, null); continue; } try { if (mapping.getInputFieldGroup() != null) { if (mapping.getExpression() != null) { session.head().setSourceField(mapping.getInputFieldGroup()); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { processSourceFieldGroup(session, mapping.getInputFieldGroup()); } } else if (mapping.getInputField() != null && !mapping.getInputField().isEmpty()) { if (mapping.getExpression() != null) { FieldGroup group = new FieldGroup(); group.getField().addAll(mapping.getInputField()); session.head().setSourceField(group); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { applyCopyToActions(mapping.getInputField(), mapping); processSourceFieldMappings(session, mapping.getInputField()); } } else { session.head().addAudit(AuditStatus.WARN, null, null, String.format( "Mapping does not contain expression or at least one source field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription())); } } catch (Exception t) { Field sourceField = session.head().getSourceField(); String docId = sourceField != null ? sourceField.getDocId() : null; String path = sourceField != null ? sourceField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while reading source field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } if (!session.head().hasError()) { try { processTargetFieldMappings(session, mapping); } catch (Exception t) { Field targetField = session.head().getTargetField(); String docId = targetField != null ? targetField.getDocId() : null; String path = targetField != null ? targetField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while populating target field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } } session.getAudits().getAudit().addAll(session.head().getAudits()); session.head().unset(); } } for (AtlasModule module : getSourceModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getSourceModules().values()) { module.processPostSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostTargetExecution(session); } if (LOG.isDebugEnabled()) { LOG.debug("End process {}", session == null ? null : session.toString()); } } }
DefaultAtlasContext implements AtlasContext, AtlasContextMXBean { @Override public void process(AtlasSession userSession) throws AtlasException { if (!(userSession instanceof DefaultAtlasSession)) { throw new AtlasException(String.format("Unsupported session class '%s'", userSession.getClass().getName())); } if (!this.equals(userSession.getAtlasContext())) { throw new AtlasException("Cannot execute AtlasSession created by the other AtlasContext"); } DefaultAtlasSession session = (DefaultAtlasSession) userSession; if (LOG.isDebugEnabled()) { LOG.debug("Begin process {}", (session == null ? null : session.toString())); } session.head().unset(); session.getAudits().getAudit().clear(); session.getValidations().getValidation().clear(); processValidation(session); for (Validation v : session.getValidations().getValidation()) { AtlasUtil.addAudit(session, v); } Mappings mappings = session.getMapping().getMappings(); if (mappings != null && mappings.getMapping().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Field mappings should not be empty"), null, AuditStatus.WARN, null); } session.getValidations().getValidation().clear(); if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-validation", session.errorCount()); } return; } for (AtlasModule module : getSourceModules().values()) { module.processPreSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPreTargetExecution(session); } if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-execution", session.errorCount()); } return; } for (BaseMapping baseMapping : session.getMapping().getMappings().getMapping()) { for (Mapping mapping : unwrapCollectionMappings(session, baseMapping)) { session.head().setMapping(mapping).setLookupTable(lookupTables.get(mapping.getLookupTableName())); if (mapping.getOutputField() == null || mapping.getOutputField().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Mapping does not contain at least one target field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription()), null, AuditStatus.WARN, null); continue; } try { if (mapping.getInputFieldGroup() != null) { if (mapping.getExpression() != null) { session.head().setSourceField(mapping.getInputFieldGroup()); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { processSourceFieldGroup(session, mapping.getInputFieldGroup()); } } else if (mapping.getInputField() != null && !mapping.getInputField().isEmpty()) { if (mapping.getExpression() != null) { FieldGroup group = new FieldGroup(); group.getField().addAll(mapping.getInputField()); session.head().setSourceField(group); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { applyCopyToActions(mapping.getInputField(), mapping); processSourceFieldMappings(session, mapping.getInputField()); } } else { session.head().addAudit(AuditStatus.WARN, null, null, String.format( "Mapping does not contain expression or at least one source field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription())); } } catch (Exception t) { Field sourceField = session.head().getSourceField(); String docId = sourceField != null ? sourceField.getDocId() : null; String path = sourceField != null ? sourceField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while reading source field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } if (!session.head().hasError()) { try { processTargetFieldMappings(session, mapping); } catch (Exception t) { Field targetField = session.head().getTargetField(); String docId = targetField != null ? targetField.getDocId() : null; String path = targetField != null ? targetField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while populating target field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } } session.getAudits().getAudit().addAll(session.head().getAudits()); session.head().unset(); } } for (AtlasModule module : getSourceModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getSourceModules().values()) { module.processPostSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostTargetExecution(session); } if (LOG.isDebugEnabled()) { LOG.debug("End process {}", session == null ? null : session.toString()); } } DefaultAtlasContext(URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, AtlasMapping mapping);  DefaultAtlasContext(DefaultAtlasContextFactory factory,
            AtlasContextFactory.Format format, InputStream stream); }
DefaultAtlasContext implements AtlasContext, AtlasContextMXBean { @Override public void process(AtlasSession userSession) throws AtlasException { if (!(userSession instanceof DefaultAtlasSession)) { throw new AtlasException(String.format("Unsupported session class '%s'", userSession.getClass().getName())); } if (!this.equals(userSession.getAtlasContext())) { throw new AtlasException("Cannot execute AtlasSession created by the other AtlasContext"); } DefaultAtlasSession session = (DefaultAtlasSession) userSession; if (LOG.isDebugEnabled()) { LOG.debug("Begin process {}", (session == null ? null : session.toString())); } session.head().unset(); session.getAudits().getAudit().clear(); session.getValidations().getValidation().clear(); processValidation(session); for (Validation v : session.getValidations().getValidation()) { AtlasUtil.addAudit(session, v); } Mappings mappings = session.getMapping().getMappings(); if (mappings != null && mappings.getMapping().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Field mappings should not be empty"), null, AuditStatus.WARN, null); } session.getValidations().getValidation().clear(); if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-validation", session.errorCount()); } return; } for (AtlasModule module : getSourceModules().values()) { module.processPreSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPreTargetExecution(session); } if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-execution", session.errorCount()); } return; } for (BaseMapping baseMapping : session.getMapping().getMappings().getMapping()) { for (Mapping mapping : unwrapCollectionMappings(session, baseMapping)) { session.head().setMapping(mapping).setLookupTable(lookupTables.get(mapping.getLookupTableName())); if (mapping.getOutputField() == null || mapping.getOutputField().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Mapping does not contain at least one target field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription()), null, AuditStatus.WARN, null); continue; } try { if (mapping.getInputFieldGroup() != null) { if (mapping.getExpression() != null) { session.head().setSourceField(mapping.getInputFieldGroup()); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { processSourceFieldGroup(session, mapping.getInputFieldGroup()); } } else if (mapping.getInputField() != null && !mapping.getInputField().isEmpty()) { if (mapping.getExpression() != null) { FieldGroup group = new FieldGroup(); group.getField().addAll(mapping.getInputField()); session.head().setSourceField(group); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { applyCopyToActions(mapping.getInputField(), mapping); processSourceFieldMappings(session, mapping.getInputField()); } } else { session.head().addAudit(AuditStatus.WARN, null, null, String.format( "Mapping does not contain expression or at least one source field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription())); } } catch (Exception t) { Field sourceField = session.head().getSourceField(); String docId = sourceField != null ? sourceField.getDocId() : null; String path = sourceField != null ? sourceField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while reading source field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } if (!session.head().hasError()) { try { processTargetFieldMappings(session, mapping); } catch (Exception t) { Field targetField = session.head().getTargetField(); String docId = targetField != null ? targetField.getDocId() : null; String path = targetField != null ? targetField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while populating target field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } } session.getAudits().getAudit().addAll(session.head().getAudits()); session.head().unset(); } } for (AtlasModule module : getSourceModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getSourceModules().values()) { module.processPostSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostTargetExecution(session); } if (LOG.isDebugEnabled()) { LOG.debug("End process {}", session == null ? null : session.toString()); } } DefaultAtlasContext(URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, AtlasMapping mapping);  DefaultAtlasContext(DefaultAtlasContextFactory factory,
            AtlasContextFactory.Format format, InputStream stream); @Override Audits processPreview(Mapping mapping); @Override void process(AtlasSession userSession); @Override void processValidation(AtlasSession userSession); @Override AtlasContextFactory getContextFactory(); AtlasMapping getMapping(); @Override AtlasSession createSession(); AtlasSession createSession(AtlasMapping mappingDefinition); Map<String, AtlasModule> getSourceModules(); void setSourceModules(Map<String, AtlasModule> sourceModules); Map<String, AtlasModule> getTargetModules(); void setTargetModules(Map<String, AtlasModule> targetModules); Map<String, LookupTable> getLookupTables(); void setLookupTables(Map<String, LookupTable> lookupTables); ObjectName getJmxObjectName(); @Override String getUuid(); @Override String getVersion(); @Override String getMappingName(); @Override String getMappingUri(); @Override String getClassName(); @Override String getThreadName(); @Override String toString(); ADMArchiveHandler getADMArchiveHandler(); }
DefaultAtlasContext implements AtlasContext, AtlasContextMXBean { @Override public void process(AtlasSession userSession) throws AtlasException { if (!(userSession instanceof DefaultAtlasSession)) { throw new AtlasException(String.format("Unsupported session class '%s'", userSession.getClass().getName())); } if (!this.equals(userSession.getAtlasContext())) { throw new AtlasException("Cannot execute AtlasSession created by the other AtlasContext"); } DefaultAtlasSession session = (DefaultAtlasSession) userSession; if (LOG.isDebugEnabled()) { LOG.debug("Begin process {}", (session == null ? null : session.toString())); } session.head().unset(); session.getAudits().getAudit().clear(); session.getValidations().getValidation().clear(); processValidation(session); for (Validation v : session.getValidations().getValidation()) { AtlasUtil.addAudit(session, v); } Mappings mappings = session.getMapping().getMappings(); if (mappings != null && mappings.getMapping().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Field mappings should not be empty"), null, AuditStatus.WARN, null); } session.getValidations().getValidation().clear(); if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-validation", session.errorCount()); } return; } for (AtlasModule module : getSourceModules().values()) { module.processPreSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPreTargetExecution(session); } if (session.hasErrors()) { if (LOG.isDebugEnabled()) { LOG.error("Aborting due to {} errors in pre-execution", session.errorCount()); } return; } for (BaseMapping baseMapping : session.getMapping().getMappings().getMapping()) { for (Mapping mapping : unwrapCollectionMappings(session, baseMapping)) { session.head().setMapping(mapping).setLookupTable(lookupTables.get(mapping.getLookupTableName())); if (mapping.getOutputField() == null || mapping.getOutputField().isEmpty()) { AtlasUtil.addAudit(session, null, String.format("Mapping does not contain at least one target field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription()), null, AuditStatus.WARN, null); continue; } try { if (mapping.getInputFieldGroup() != null) { if (mapping.getExpression() != null) { session.head().setSourceField(mapping.getInputFieldGroup()); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { processSourceFieldGroup(session, mapping.getInputFieldGroup()); } } else if (mapping.getInputField() != null && !mapping.getInputField().isEmpty()) { if (mapping.getExpression() != null) { FieldGroup group = new FieldGroup(); group.getField().addAll(mapping.getInputField()); session.head().setSourceField(group); DefaultAtlasExpressionProcessor.processExpression(session, mapping.getExpression()); } else { applyCopyToActions(mapping.getInputField(), mapping); processSourceFieldMappings(session, mapping.getInputField()); } } else { session.head().addAudit(AuditStatus.WARN, null, null, String.format( "Mapping does not contain expression or at least one source field: alias=%s desc=%s", mapping.getAlias(), mapping.getDescription())); } } catch (Exception t) { Field sourceField = session.head().getSourceField(); String docId = sourceField != null ? sourceField.getDocId() : null; String path = sourceField != null ? sourceField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while reading source field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } if (!session.head().hasError()) { try { processTargetFieldMappings(session, mapping); } catch (Exception t) { Field targetField = session.head().getTargetField(); String docId = targetField != null ? targetField.getDocId() : null; String path = targetField != null ? targetField.getPath() : null; session.head().addAudit(AuditStatus.ERROR, docId, path, String.format( "Unexpected exception is thrown while populating target field: %s", t.getMessage())); if (LOG.isDebugEnabled()) { LOG.error("", t); } } } session.getAudits().getAudit().addAll(session.head().getAudits()); session.head().unset(); } } for (AtlasModule module : getSourceModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostValidation(session); } for (AtlasModule module : getSourceModules().values()) { module.processPostSourceExecution(session); } for (AtlasModule module : getTargetModules().values()) { module.processPostTargetExecution(session); } if (LOG.isDebugEnabled()) { LOG.debug("End process {}", session == null ? null : session.toString()); } } DefaultAtlasContext(URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, URI atlasMappingUri);  DefaultAtlasContext(DefaultAtlasContextFactory factory, AtlasMapping mapping);  DefaultAtlasContext(DefaultAtlasContextFactory factory,
            AtlasContextFactory.Format format, InputStream stream); @Override Audits processPreview(Mapping mapping); @Override void process(AtlasSession userSession); @Override void processValidation(AtlasSession userSession); @Override AtlasContextFactory getContextFactory(); AtlasMapping getMapping(); @Override AtlasSession createSession(); AtlasSession createSession(AtlasMapping mappingDefinition); Map<String, AtlasModule> getSourceModules(); void setSourceModules(Map<String, AtlasModule> sourceModules); Map<String, AtlasModule> getTargetModules(); void setTargetModules(Map<String, AtlasModule> targetModules); Map<String, LookupTable> getLookupTables(); void setLookupTables(Map<String, LookupTable> lookupTables); ObjectName getJmxObjectName(); @Override String getUuid(); @Override String getVersion(); @Override String getMappingName(); @Override String getMappingUri(); @Override String getClassName(); @Override String getThreadName(); @Override String toString(); ADMArchiveHandler getADMArchiveHandler(); static final String CONSTANTS_DOCUMENT_ID; static final String PROPERTIES_DOCUMENT_ID; }