private void serializeTraversal(ApplicationDetailsDTO applicationDetails, ProjectTraversalReducedDTO parent, PersistedProjectModelTraversalModel traversal) { ProjectTraversalReducedDTO traversalDTO = new ProjectTraversalReducedDTO(); // Add it to a parent if one exists, otherwise add it to the details if (parent != null) parent.getChildren().add(traversalDTO); else applicationDetails.getTraversals().add(traversalDTO); serializeProjectMetadata(traversalDTO, traversal); serializeChildFiles(applicationDetails, traversalDTO, traversal); for (OverviewReportLineMessageModel applicationMessage : traversal.getApplicationMessages()) { ApplicationMessageReducedDTO messageDTO = new ApplicationMessageReducedDTO(applicationMessage.getMessage(), applicationMessage.getRuleID()); traversalDTO.getMessages().add(messageDTO); } for (PersistedProjectModelTraversalModel childTraversal : traversal.getChildren()) { serializeTraversal(applicationDetails, traversalDTO, childTraversal); } }