001/* 002 * Copyright (c) 2016-2017 Chris K Wensel <chris@wensel.net>. All Rights Reserved. 003 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved. 004 * 005 * Project and contact information: http://www.cascading.org/ 006 * 007 * This file is part of the Cascading project. 008 * 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 */ 021 022package cascading.flow.planner; 023 024import java.util.Set; 025 026import cascading.property.ConfigDef; 027import cascading.tuple.Fields; 028 029/** 030 * 031 */ 032public interface ScopedElement 033 { 034 /** 035 * Method outgoingScopeFor returns the Scope this FlowElement hands off to the next FlowElement. 036 * 037 * @param incomingScopes of type Set 038 * @return Scope 039 */ 040 Scope outgoingScopeFor( Set<Scope> incomingScopes ); 041 042 /** 043 * Method resolveIncomingOperationArgumentFields returns the Fields outgoing from the previous FlowElement that 044 * are consumable by this FlowElement when preparing Operation arguments. 045 * 046 * @param incomingScope of type Scope 047 * @return Fields 048 */ 049 Fields resolveIncomingOperationArgumentFields( Scope incomingScope ); 050 051 /** 052 * Method resolveIncomingOperationPassThroughFields returns the Fields outgoing from the previous FlowElement that 053 * are consumable by this FlowElement when preparing the Pipe outgoing tuple. 054 * 055 * @param incomingScope of type Scope 056 * @return Fields 057 */ 058 Fields resolveIncomingOperationPassThroughFields( Scope incomingScope ); 059 060 ConfigDef getConfigDef(); 061 062 boolean hasConfigDef(); 063 064 ConfigDef getNodeConfigDef(); 065 066 boolean hasNodeConfigDef(); 067 068 ConfigDef getStepConfigDef(); 069 070 boolean hasStepConfigDef(); 071 }