[ https://issues.apache.org/jira/browse/MINIFI-41?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15360314#comment-15360314 ]
ASF GitHub Bot commented on MINIFI-41: -------------------------------------- Github user brosander commented on a diff in the pull request: https://github.com/apache/nifi-minifi/pull/21#discussion_r69382132 --- Diff: minifi-toolkit/minifi-toolkit-configuration/src/main/java/org/apache/nifi/minifi/toolkit/configuration/ConfigMain.java --- @@ -0,0 +1,342 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.nifi.minifi.toolkit.configuration; + +import org.apache.nifi.controller.Template; +import org.apache.nifi.minifi.commons.schema.ConfigSchema; +import org.apache.nifi.minifi.commons.schema.SecurityPropertiesSchema; +import org.apache.nifi.minifi.commons.schema.common.BaseSchema; +import org.apache.nifi.minifi.commons.schema.serialization.SchemaLoader; +import org.apache.nifi.minifi.commons.schema.serialization.SchemaSaver; +import org.apache.nifi.minifi.commons.schema.exception.SchemaLoaderException; +import org.apache.nifi.ssl.StandardSSLContextService; +import org.apache.nifi.web.api.dto.ConnectableDTO; +import org.apache.nifi.web.api.dto.ConnectionDTO; +import org.apache.nifi.web.api.dto.ControllerServiceDTO; +import org.apache.nifi.web.api.dto.FlowSnippetDTO; +import org.apache.nifi.web.api.dto.NiFiComponentDTO; +import org.apache.nifi.web.api.dto.PortDTO; +import org.apache.nifi.web.api.dto.ProcessorDTO; +import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO; +import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO; +import org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO; +import org.apache.nifi.web.api.dto.TemplateDTO; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class ConfigMain { + public static final int ERR_INVALID_ARGS = 1; + public static final int ERR_UNABLE_TO_OPEN_OUTPUT = 2; + public static final int ERR_UNABLE_TO_OPEN_INPUT = 3; + public static final int ERR_UNABLE_TO_READ_TEMPLATE = 4; + public static final int ERR_UNABLE_TO_TRANFORM_TEMPLATE = 5; + public static final int ERR_UNABLE_TO_PARSE_CONFIG = 6; + public static final int ERR_INVALID_CONFIG = 7; + + public static final int SUCCESS = 0; + + public static final String TRANSFORM = "transform"; + public static final String VALIDATE = "validate"; + + private final Map<String, Command> commandMap; + private final PathInputStreamFactory pathInputStreamFactory; + private final PathOutputStreamFactory pathOutputStreamFactory; + + public ConfigMain() { + this(FileInputStream::new, FileOutputStream::new); + } + + public ConfigMain(PathInputStreamFactory pathInputStreamFactory, PathOutputStreamFactory pathOutputStreamFactory) { + this.pathInputStreamFactory = pathInputStreamFactory; + this.pathOutputStreamFactory = pathOutputStreamFactory; + this.commandMap = createCommandMap(); + } + + public static void main(String[] args) { + System.exit(new ConfigMain().execute(args)); + } + + public static void printValidateUsage() { + System.out.println("Validate Usage:"); + System.out.println(); + System.out.print("java "); + System.out.print(ConfigMain.class.getCanonicalName()); + System.out.println(" validate INPUT_FILE"); + System.out.println(); + } + + public int validate(String[] args) { + if (args.length != 2) { + printValidateUsage(); + return ERR_INVALID_ARGS; + } + try (InputStream inputStream = pathInputStreamFactory.create(args[1])) { + try { + ConfigSchema configSchema = SchemaLoader.loadConfigSchemaFromYaml(inputStream); + if (!configSchema.isValid()) { --- End diff -- Added a print statement when schema is valid > Command Line Configuration Utility > ---------------------------------- > > Key: MINIFI-41 > URL: https://issues.apache.org/jira/browse/MINIFI-41 > Project: Apache NiFi MiNiFi > Issue Type: New Feature > Reporter: Bryan Rosander > > It would really increase usability if we had a way to transform template xmls > into configuration YAML files for consumption by MiNiFi. > The utility should: > 1. Transform template xmls exported from NiFi into configuration YAML files. > 2. Validate the contents of a given YAML file in the same way MiNiFi does at > runtime. -- This message was sent by Atlassian JIRA (v6.3.4#6332)