private void populateAuditData(AuditActionType auditActionType, AppRegistration appRegistration) { if (appRegistration == null) { logger.error("App registration failed, app not saved into database!"); } else { this.auditRecordService.populateAndSaveAuditRecordUsingMapData(AuditOperationType.APP_REGISTRATION, auditActionType, appRegistration.getName(), this.auditServiceUtils.convertAppRegistrationToAuditData(appRegistration)); } }
@Override public String getMessage() { return String.format("The '%s:%s' application is already registered as %s", previous.getType(), previous.getName(), previous.getUri()); }
public Map<String, Object> convertAppRegistrationToAuditData(AppRegistration appRegistration) { final Map<String, Object> auditData = new HashMap<>(4); auditData.put(APP_NAME, appRegistration.getName()); auditData.put(APP_TYPE, appRegistration.getType()); auditData.put(APP_VERSION, appRegistration.getVersion()); auditData.put(APP_IS_DEFAULT, appRegistration.isDefaultVersion()); auditData.put(APP_URI, appRegistration.getUri()); auditData.put(APP_META_DATA_URI, appRegistration.getMetadataUri()); return auditData; }
public Map<String, Object> convertAppRegistrationToAuditData(AppRegistration appRegistration) { final Map<String, Object> auditData = new HashMap<>(4); auditData.put(APP_NAME, appRegistration.getName()); auditData.put(APP_TYPE, appRegistration.getType()); auditData.put(APP_VERSION, appRegistration.getVersion()); auditData.put(APP_IS_DEFAULT, appRegistration.isDefaultVersion()); auditData.put(APP_URI, appRegistration.getUri()); auditData.put(APP_META_DATA_URI, appRegistration.getMetadataUri()); return auditData; }
@Override public AppRegistrationResource toResource(AppRegistration registration) { return createResourceWithId(String.format("%s/%s/%s", registration.getType(), registration.getName(), registration.getVersion()), registration); }
@Override public boolean addProposals(String text, TaskDefinition taskDefinition, int detailLevel, List<CompletionProposal> collector) { Set<String> parameterNames = new HashSet<>(taskDefinition.getProperties().keySet()); parameterNames.removeAll(CompletionUtils.IMPLICIT_TASK_PARAMETER_NAMES); if (!parameterNames.isEmpty() || !text.endsWith(taskDefinition.getRegisteredAppName())) { return false; } // Actually add completions String alreadyTyped = taskDefinition.getRegisteredAppName(); CompletionProposal.Factory proposals = CompletionProposal.expanding(text); List<ApplicationType> validTypesAtThisPosition = Arrays.asList(ApplicationType.task); for (AppRegistration appRegistration : appRegistry.findAll()) { String candidateName = appRegistration.getName(); if (validTypesAtThisPosition.contains(appRegistration.getType()) && !alreadyTyped.equals(candidateName) && candidateName.startsWith(alreadyTyped)) { String expansion = appRegistration.getName(); collector.add(proposals.withSuffix(expansion.substring(alreadyTyped.length()))); } } return false; } }
@RequestMapping(method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.OK) public void unregisterAll() { List<AppRegistration> appRegistrations = appRegistryService.findAll(); List<AppRegistration> appRegistrationsToUnregister = new ArrayList<>(); for (AppRegistration appRegistration : appRegistrations) { String applicationName = appRegistration.getName(); String applicationVersion = appRegistration.getVersion(); ApplicationType applicationType = appRegistration.getType(); if (applicationType != ApplicationType.task) { String streamWithApp = findStreamContainingAppOf(applicationType, applicationName, applicationVersion); if (streamWithApp == null) { appRegistrationsToUnregister.add(appRegistration); } } else { appRegistrationsToUnregister.add(appRegistration); } } if (!appRegistrationsToUnregister.isEmpty()) { appRegistryService.deleteAll(appRegistrationsToUnregister); } }
protected boolean isOverwrite(AppRegistration app, boolean overwrite) { return overwrite || this.appRegistrationRepository.findAppRegistrationByNameAndTypeAndVersion(app.getName(), app.getType(), app.getVersion()) == null; }
@Override public void addProposals(String dsl, CheckPointedParseException exception, int detailLevel, List<CompletionProposal> proposals) { CompletionProposal.Factory completionFactory = CompletionProposal.expanding(dsl); for (AppRegistration app : this.registry.findAll()) { if (app.getType() == ApplicationType.task) { proposals.add(completionFactory.withSeparateTokens(app.getName(), "Choose a task app")); } } }
String candidateName = appRegistration.getName(); if (validTypesAtThisPosition.contains(appRegistration.getType()) && !alreadyTyped.equals(candidateName) && candidateName.startsWith(alreadyTyped)) { String expansion = CompletionUtils.maybeQualifyWithLabel(appRegistration.getName(), streamDefinition);
@Override public void addProposals(String dsl, IllegalArgumentException exception, int detailLevel, List<CompletionProposal> proposals) { CompletionProposal.Factory completionFactory = CompletionProposal.expanding(dsl); for (AppRegistration app : this.registry.findAll()) { if (app.getType() == ApplicationType.source || app.getType() == ApplicationType.app) { proposals.add(completionFactory.withSeparateTokens(app.getName(), "Start with a source app or an unbounded streaming app")); } } }
@Override public String toString() { return "AppRegistration{" + "name='" + this.getName() + '\'' + ", type='" + this.getType() + '\'' + ", version='" + this.getVersion() + '\'' + ", uri=" + this.getUri() + ", metadataUri=" + this.getMetadataUri() + '}'; }
@Override public void addProposals(String dsl, CheckPointedParseException exception, int detailLevel, List<CompletionProposal> proposals) { CompletionProposal.Factory completionFactory = CompletionProposal.expanding(dsl); for (AppRegistration appRegistration : appRegistry.findAll()) { if (appRegistration.getType() == ApplicationType.processor || appRegistration.getType() == ApplicationType.sink) { proposals.add(completionFactory.withSeparateTokens(appRegistration.getName(), "Wire destination into a " + appRegistration.getType() + " app")); } } }
@Override protected AppRegistrationResource instantiateResource(AppRegistration registration) { return new AppRegistrationResource(registration.getName(), registration.getType().name(), registration.getVersion(), registration.getUri().toString(), registration.isDefaultVersion()); } }
@Override public void addProposals(String dsl, CheckPointedParseException exception, int detailLevel, List<CompletionProposal> collector) { StreamDefinition streamDefinition = new StreamDefinition("__dummy", exception.getExpressionStringUntilCheckpoint()); CompletionProposal.Factory proposals = CompletionProposal.expanding(dsl); for (AppRegistration appRegistration : appRegistryService.findAll()) { if (appRegistration.getType() == ApplicationType.app) { String expansion = CompletionUtils.maybeQualifyWithLabel(appRegistration.getName(), streamDefinition); collector.add(proposals.withSeparateTokens(expansion, "Continue stream definition with a " + appRegistration.getType())); } } } }
@Override public boolean addProposals(String text, StreamDefinition parseResult, int detailLevel, List<CompletionProposal> collector) { if (text.isEmpty() || !text.endsWith(" ")) { return false; } StreamAppDefinition lastApp = parseResult.getDeploymentOrderIterator().next(); // Consider "bar | foo". If there is indeed a sink named foo in the registry, // "foo" may also be a processor, in which case we can continue boolean couldBeASink = appRegistry.find(lastApp.getName(), ApplicationType.sink) != null; if (couldBeASink) { boolean couldBeAProcessor = appRegistry.find(lastApp.getName(), ApplicationType.processor) != null; if (!couldBeAProcessor) { return false; } } CompletionProposal.Factory proposals = CompletionProposal.expanding(text); for (AppRegistration appRegistration : appRegistry.findAll()) { if (appRegistration.getType() == ApplicationType.processor || appRegistration.getType() == ApplicationType.sink) { String expansion = CompletionUtils.maybeQualifyWithLabel(appRegistration.getName(), parseResult); collector.add(proposals.withSeparateTokens("| " + expansion, "Continue stream definition with a " + appRegistration.getType())); } } return false; } }
@Override public void addProposals(String dsl, CheckPointedParseException exception, int detailLevel, List<CompletionProposal> collector) { StreamDefinition streamDefinition = new StreamDefinition("__dummy", exception.getExpressionStringUntilCheckpoint()); CompletionProposal.Factory proposals = CompletionProposal.expanding(dsl); // We only support full streams at the moment, so completions can only be // processor or sink for (AppRegistration appRegistration : appRegistry.findAll()) { if (appRegistration.getType() == ApplicationType.processor || appRegistration.getType() == ApplicationType.sink) { String expansion = CompletionUtils.maybeQualifyWithLabel(appRegistration.getName(), streamDefinition); collector.add(proposals.withSeparateTokens(expansion, "Continue stream definition with a " + appRegistration.getType())); } } } }
@Override public AppRegistration save(AppRegistration app) { AppRegistration createdApp; AppRegistration appRegistration = this.appRegistrationRepository.findAppRegistrationByNameAndTypeAndVersion( app.getName(), app.getType(), app.getVersion()); if (appRegistration != null) { appRegistration.setUri(app.getUri()); appRegistration.setMetadataUri(app.getMetadataUri()); createdApp = this.appRegistrationRepository.save(appRegistration); populateAuditData(AuditActionType.UPDATE, createdApp); } else { if (getDefaultApp(app.getName(), app.getType()) == null) { app.setDefaultVersion(true); } createdApp = this.appRegistrationRepository.save(app); populateAuditData(AuditActionType.CREATE, createdApp); } return createdApp; }
@Override public void setDefaultApp(String name, ApplicationType type, String version) { AppRegistration oldDefault = this.appRegistrationRepository .findAppRegistrationByNameAndTypeAndDefaultVersionIsTrue(name, type); if (oldDefault != null) { oldDefault.setDefaultVersion(false); this.appRegistrationRepository.save(oldDefault); } AppRegistration newDefault = this.appRegistrationRepository .findAppRegistrationByNameAndTypeAndVersion(name, type, version); if (newDefault == null) { throw new NoSuchAppRegistrationException(name, type, version); } newDefault.setDefaultVersion(true); this.appRegistrationRepository.save(newDefault); this.auditRecordService.populateAndSaveAuditRecordUsingMapData(AuditOperationType.APP_REGISTRATION, AuditActionType.UPDATE, newDefault.getName(), this.auditServiceUtils.convertAppRegistrationToAuditData(newDefault)); }