/* * Copyright 2013 Cloudera Inc. * * Licensed 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 com.cloudera.cdk.morphline.api; import java.util.Collection; import com.typesafe.config.Config; /** * Interface to create instances of morphline commands. */ public interface CommandBuilder { /** * Returns the names with which this command can be invoked. * * The returned set can contain synonyms to enable backwards compatible name changes. */ Collection<String> getNames(); /** * Creates and returns a command rooted at the given morphline JSON <code>config</code>. * * The command will feed records into <code>child</code>. The command will have * <code>parent</code> as it's parent. Additional parameters can be passed via the morphline * <code>context</code>. */ Command build(Config config, Command parent, Command child, MorphlineContext context); }