/** * This method will trigger the flow in an Async matter. * * @param compilationArtifact the artifact to trigger * @param inputs : flow inputs * @return executionId */ @Override public Long trigger(CompilationArtifact compilationArtifact, Map<String, Value> inputs, Set<SystemProperty> systemProperties) { return slang.run(compilationArtifact, inputs, systemProperties); }
public void subscribe(ScoreEventListener eventHandler, Set<String> eventTypes) { slang.subscribeOnEvents(eventHandler, eventTypes); }
public Set<SystemProperty> parseProperties(String fileName) { Set<SystemProperty> result = new HashSet<>(); File file = new File(fileName); Extension.validatePropertiesFileExtension(file.getName()); SlangSource source = SlangSource.fromFile(new File(fileName)); result.addAll(slang.loadSystemProperties(source)); return result; } }
slang.subscribeOnEvents(finishListener, FINISHED_EVENTS); long executionId = slang.run(compilationArtifact, userInputs, systemProperties); throw new RuntimeException(languageEvent.getException()); slang.unSubscribeOnEvents(finishListener); return event; } catch (InterruptedException e) {
public List<ScoreEvent> runAndCollectAllEvents( CompilationArtifact compilationArtifact, Map<String, Value> userInputs, Set<SystemProperty> systemProperties) { final List<ScoreEvent> events = Collections.synchronizedList(new ArrayList<ScoreEvent>()); ScoreEventListener allEventsListener = new ScoreEventListener() { @Override public synchronized void onEvent(ScoreEvent event) throws InterruptedException { events.add(event); } }; slang.subscribeOnEvents(allEventsListener, ALL_CLOUDSLANG_EVENTS); ScoreEvent finishEvent = runSync(compilationArtifact, userInputs, systemProperties, false); slang.unSubscribeOnEvents(allEventsListener); // make sure finish event is saved for (ScoreEvent scoreEvent : events) { String eventType = scoreEvent.getEventType(); if (ScoreLangConstants.SLANG_EXECUTION_EXCEPTION.equals(eventType) || ScoreLangConstants.EVENT_EXECUTION_FINISHED.equals(eventType)) { return events; } } events.add(finishEvent); return events; } }
@Override public List<CompilationModellingResult> compileFolders(final List<String> foldersPaths, final CompilationHelper compilationHelper) { List<CompilationModellingResult> results = new ArrayList<>(); try { Set<SlangSource> dependencySources = getSourcesFromFolders(foldersPaths); for (SlangSource dependencySource : dependencySources) { File file = getFile(dependencySource.getFilePath()); compilationHelper.onEveryFile(file); try { CompilationModellingResult result = slang.compileSource(dependencySource, dependencySources, PrecompileStrategy.WITH_CACHE); result.setFile(file); results.add(result); } catch (Exception e) { logger.error("Failed compilation for file : " + file.getName() + " ,Exception is : " + e.getMessage()); } } } finally { compilationHelper.onCompilationFinish(); slang.invalidateAllInPreCompileCache(); } return results; }
@Override public CompilationModellingResult compileSource(String filePath, List<String> dependencies) { File file = slangCompilationService.getFile(filePath); try { return slang.compileSource(SlangSource.fromFile(file), getDependencySources(dependencies, file)); } catch (Exception e) { handleException(file, e); return null; } }
private static void registerEventHandlers(Slang slang) { slang.subscribeOnAllEvents(new ScoreEventListener() { @Override public synchronized void onEvent(ScoreEvent event) { logEvent(event); } }); }
@Override public String extractMetadata(File file) { Validate.notNull(file, "File can not be null"); Validate.notNull(file.getAbsolutePath(), "File path can not be null"); Validate.isTrue(file.isFile(), "File: " + file.getName() + " was not found"); Metadata metadata = slang.extractMetadata(SlangSource.fromFile(file)); return prettyPrint(metadata); }
@Override public CompilationArtifact compile(String filePath, List<String> dependencies) { File file = slangCompilationService.getFile(filePath); try { return slang.compile(SlangSource.fromFile(file), getDependencySources(dependencies, file)); } catch (Exception e) { handleException(file, e); return null; } }
slang.subscribeOnEvents(testsEventListener, createListenerEventTypesSet()); Long executionId = slang.run(compilationArtifact, inputs, systemProperties); slang.unSubscribeOnEvents(testsEventListener);
public RuntimeInformation runWithData( CompilationArtifact compilationArtifact, Map<String, Value> userInputs, Set<SystemProperty> systemProperties) { RunDataAggregatorListener runDataAggregatorListener = new RunDataAggregatorListener(); slang.subscribeOnEvents(runDataAggregatorListener, STEP_EVENTS); BranchAggregatorListener branchAggregatorListener = new BranchAggregatorListener(); slang.subscribeOnEvents(branchAggregatorListener, BRANCH_EVENTS); JoinAggregatorListener joinAggregatorListener = new JoinAggregatorListener(); slang.subscribeOnEvents(joinAggregatorListener, PARALLEL_LOOP_EVENTS); runSync(compilationArtifact, userInputs, systemProperties); Map<String, StepData> steps = runDataAggregatorListener.aggregate(); Map<String, List<StepData>> branchesByPath = branchAggregatorListener.aggregate(); Map<String, StepData> parallelSteps = joinAggregatorListener.aggregate(); final RuntimeInformation runtimeInformation = new RuntimeInformation(steps, branchesByPath, parallelSteps); slang.unSubscribeOnEvents(joinAggregatorListener); slang.unSubscribeOnEvents(branchAggregatorListener); slang.unSubscribeOnEvents(runDataAggregatorListener); return runtimeInformation; }
autowireCapableBeanFactory.autowireBean(scoreEventListener); scoreEventListener.setIsDebugMode(debug); slang.subscribeOnEvents(scoreEventListener, handlerTypes); slang.unSubscribeOnEvents(scoreEventListener);
String flowName = testCase.getTestFlowPath(); Long executionId = slang.run(compilationArtifact, inputs, systemProperties);
private Set<SystemProperty> loadPropertiesFromFiles(List<File> files, String[] extensions, String directory) { Collection<File> fileCollection; if (CollectionUtils.isEmpty(files)) { fileCollection = loadDefaultFiles(extensions, directory, true); if (CollectionUtils.isEmpty(fileCollection)) { return new HashSet<>(); } } else { fileCollection = files; for (File propertyFileCandidate : fileCollection) { Extension.validatePropertiesFileExtension(propertyFileCandidate.getName()); } } Map<File, Set<SystemProperty>> loadedProperties = new HashMap<>(); for (File propFile : fileCollection) { try { SlangSource source = SlangSource.fromFile(propFile); logger.info("Loading file: " + propFile); Set<SystemProperty> propsFromFile = slang.loadSystemProperties(source); mergeSystemProperties(loadedProperties, propsFromFile, propFile); } catch (Throwable ex) { String errorMessage = "Error loading file: " + propFile + " nested exception is " + ex.getMessage(); logger.error(errorMessage, ex); throw new RuntimeException(errorMessage, ex); } } return SetUtils.mergeSets(loadedProperties.values()); }
slang.subscribeOnEvents(multiTriggerTestCaseEventListener, createListenerEventTypesSet()); try { Map<SlangTestCase, Future<?>> testCaseFutures = new LinkedHashMap<>(); slang.unSubscribeOnEvents(multiTriggerTestCaseEventListener);