public DataFlowOperator operator(DataFlowOpInitializeContext context) { return new FilterOp(this, context.getAgentInstanceContext()); }
private static <T> T tryParameterProvider(String name, DataFlowOpInitializeContext context, Class<T> clazz) throws EPException { if (context.getAdditionalParameters() != null && context.getAdditionalParameters().containsKey(name)) { return (T) context.getAdditionalParameters().get(name); } if (context.getParameterProvider() == null) { return null; } EPDataFlowOperatorParameterProviderContext ctx = new EPDataFlowOperatorParameterProviderContext(context, name); Object value = context.getParameterProvider().provide(ctx); if (value == null) { return null; } if (JavaClassHelper.isAssignmentCompatible(value.getClass(), clazz)) { return (T) value; } throw new EPException("Parameter provider provided an unexpected object for parameter '" + name + "' of type '" + value.getClass().getName() + "', expected type '" + clazz.getName() + "'"); } }
/** * Ctor. * * @param initializeContext context * @param parameterName parameter name */ public EPDataFlowOperatorParameterProviderContext(DataFlowOpInitializeContext initializeContext, String parameterName) { this.operatorName = initializeContext.getOperatorName(); this.parameterName = parameterName; this.factory = initializeContext.getDataFlowOperatorFactory(); this.operatorNum = initializeContext.getOperatorNumber(); this.dataFlowName = initializeContext.getDataFlowName(); }
assertEquals(1, events.size()); DataFlowOpInitializeContext opCtx = (DataFlowOpInitializeContext) events.get(0); assertEquals("MyDataFlow", opCtx.getDataFlowName()); assertEquals("id1", opCtx.getDataFlowInstanceId()); assertNotNull(opCtx.getAgentInstanceContext()); assertEquals("myobject", opCtx.getDataflowInstanceUserObject()); assertEquals(0, opCtx.getOperatorNumber()); assertEquals("SupportGraphSource", opCtx.getOperatorName());
public DataFlowOperator operator(DataFlowOpInitializeContext context) { String titleText = DataFlowParameterResolution.resolveStringOptional("title", title, context); String layoutText = DataFlowParameterResolution.resolveStringOptional("layout", layout, context); boolean logFlag = DataFlowParameterResolution.resolveWithDefault("log", log, true, Boolean.class, context); boolean linefeedFlag = DataFlowParameterResolution.resolveWithDefault("linefeed", linefeed, true, Boolean.class, context); ConsoleOpRenderer renderer; String formatText = DataFlowParameterResolution.resolveStringOptional("format", format, context); if (formatText == null) { renderer = new ConsoleOpRendererSummary(); } else { LogSinkOutputFormat formatEnum = LogSinkOutputFormat.valueOf(formatText.trim().toLowerCase(Locale.ENGLISH)); if (formatEnum == LogSinkOutputFormat.summary) { renderer = new ConsoleOpRendererSummary(); } else if (formatEnum == LogSinkOutputFormat.json || formatEnum == LogSinkOutputFormat.xml) { renderer = new ConsoleOpRendererXmlJSon(formatEnum, context.getAgentInstanceContext().getEPRuntimeRenderEvent()); } else { throw new EPException("Format '" + formatText + "' is not supported, expecting any of " + Arrays.toString(LogSinkOutputFormat.values())); } } return new LogSinkOp(this, context.getDataFlowInstanceId(), renderer, titleText, layoutText, logFlag, linefeedFlag); }
public DataFlowOperator operator(DataFlowOpInitializeContext context) { long iterationsCount = DataFlowParameterResolution.resolveNumber("iterations", iterations, 0, context).longValue(); double initialDelaySec = DataFlowParameterResolution.resolveNumber("initialDelay", initialDelay, 0, context).doubleValue(); long initialDelayMSec = (long) (initialDelaySec * 1000); double intervalSec = DataFlowParameterResolution.resolveNumber("interval", interval, 0, context).doubleValue(); long intervalMSec = (long) (intervalSec * 1000); return new BeaconSourceOp(this, iterationsCount, initialDelayMSec, intervalMSec, context.getAdditionalParameters()); }
operator = operatorFactory.operator(new DataFlowOpInitializeContext(dataflow.getDataflowName(), metadata.getOperatorName(), operatorNum, agentInstanceContext, additionalParameters, options.getDataFlowInstanceId(), options.getParameterProvider(), operatorFactory, options.getDataFlowInstanceUserObject())); } catch (Throwable t) {
public DataFlowOperator operator(DataFlowOpInitializeContext context) { return new SelectOp(this, context.getAgentInstanceContext()); }
public DataFlowOperator operator(DataFlowOpInitializeContext context) { EPDataFlowEventBeanCollector collectorInstance = DataFlowParameterResolution.resolveOptionalInstance("collector", collector, EPDataFlowEventBeanCollector.class, context); return new EventBusSourceOp(this, context.getAgentInstanceContext(), collectorInstance); }
public DataFlowOperator operator(DataFlowOpInitializeContext context) { EPDataFlowEventCollector collectorInstance = DataFlowParameterResolution.resolveOptionalInstance("collector", collector, EPDataFlowEventCollector.class, context); return new EventBusSinkOp(this, context.getAgentInstanceContext(), collectorInstance); }
/** * Resolve all entries in the map by first looking at the parameter value provider and by using the evaluator if one was provided * or returning the provided value if no evaluator was found. * * @param name parameter name * @param evals map of properties with either evaluator or constant type * @param context initialization context * @return value */ public static Map<String, Object> resolveMap(String name, Map<String, Object> evals, DataFlowOpInitializeContext context) { if (evals == null) { return null; } if (evals.isEmpty()) { return Collections.emptyMap(); } Map<String, Object> map = new LinkedHashMap<>(); for (Map.Entry<String, Object> entry : evals.entrySet()) { if (entry.getValue() instanceof ExprEvaluator) { try { map.put(name, ((ExprEvaluator) entry.getValue()).evaluate(null, true, context.getAgentInstanceContext())); } catch (Throwable t) { throw new EPException("Failed to evaluate value for parameter '" + name + "' for entry key '" + entry.getKey() + "': " + t.getMessage(), t); } } else { map.put(name, entry.getValue()); } } return map; }
/** * Resolve a string value by first looking at the parameter value provider and by using the evaluator if one was provided * or returning null if no value was found. * * @param name parameter name * @param optionalEvaluator evaluator * @param context initialization context * @return value * @throws EPException if no value was found */ public static String resolveStringOptional(String name, ExprEvaluator optionalEvaluator, DataFlowOpInitializeContext context) { String resolvedFromProvider = tryParameterProvider(name, context, String.class); if (resolvedFromProvider != null) { return resolvedFromProvider; } if (optionalEvaluator == null) { return null; } return (String) optionalEvaluator.evaluate(null, true, context.getAgentInstanceContext()); }
private FileBeginEndProcessor getBeginEndProcessor(DataFlowOpInitializeContext context, int outputPort) { EventType portEventType = factory.getOutputPortTypes()[outputPort]; Set<WriteablePropertyDescriptor> writeables = EventTypeUtility.getWriteableProperties(portEventType, false, false); List<WriteablePropertyDescriptor> writeableList = new ArrayList<WriteablePropertyDescriptor>(); EventBeanManufacturer manufacturer; if (propertyNameFile != null) { WriteablePropertyDescriptor writeableFile = EventTypeUtility.findWritable(propertyNameFile, writeables); if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?"); } writeableList.add(writeableFile); } try { manufacturer = EventTypeUtility.getManufacturer(portEventType, writeableList.toArray(new WriteablePropertyDescriptor[writeableList.size()]), context.getAgentInstanceContext().getClasspathImportServiceRuntime(), false, context.getAgentInstanceContext().getEventTypeAvroHandler()).getManufacturer(context.getAgentInstanceContext().getEventBeanTypedEventFactory()); } catch (EventBeanManufactureException e) { throw new EPException("Event type '" + portEventType.getName() + "' cannot be written to: " + e.getMessage(), e); } return new FileBeginEndProcessorGeneralPurpose(manufacturer); }
/** * Resolve a number value by first looking at the parameter value provider and by using the evaluator if one was provided, * returning the default value if no value was found and no evaluator was provided. * * @param name parameter name * @param optionalEvaluator evaluator * @param defaultValue default * @param context initialization context * @return value */ public static Number resolveNumber(String name, ExprEvaluator optionalEvaluator, Number defaultValue, DataFlowOpInitializeContext context) { Number resolvedFromProvider = tryParameterProvider(name, context, Number.class); if (resolvedFromProvider != null) { return resolvedFromProvider; } if (optionalEvaluator == null) { return defaultValue; } Number value = (Number) optionalEvaluator.evaluate(null, true, context.getAgentInstanceContext()); if (value == null) { throw new EPException("Parameter '" + name + "' is null and is expected to have a value"); } return value; }
private FileBeginEndProcessor getBeginEndProcessor(DataFlowOpInitializeContext context, int outputPort) { EventType portEventType = factory.getOutputPortTypes()[outputPort]; Set<WriteablePropertyDescriptor> writeables = EventTypeUtility.getWriteableProperties(portEventType, false); List<WriteablePropertyDescriptor> writeableList = new ArrayList<WriteablePropertyDescriptor>(); EventBeanManufacturer manufacturer; if (propertyNameFile != null) { WriteablePropertyDescriptor writeableFile = EventTypeUtility.findWritable(propertyNameFile, writeables); if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?"); } writeableList.add(writeableFile); } try { manufacturer = EventTypeUtility.getManufacturer(portEventType, writeableList.toArray(new WriteablePropertyDescriptor[writeableList.size()]), context.getAgentInstanceContext().getClasspathImportServiceRuntime(), false, context.getAgentInstanceContext().getEventTypeAvroHandler()).getManufacturer(context.getAgentInstanceContext().getEventBeanTypedEventFactory()); } catch (EventBeanManufactureException e) { throw new EPException("Event type '" + portEventType.getName() + "' cannot be written to: " + e.getMessage(), e); } return new FileBeginEndProcessorGeneralPurpose(manufacturer); }
/** * Resolve a string value by first looking at the parameter value provider and by using the evaluator if one was provided, * throwing an exception if no value was provided. * * @param name parameter name * @param optionalEvaluator evaluator * @param context initialization context * @return value * @throws EPException if no value was found */ public static String resolveStringRequired(String name, ExprEvaluator optionalEvaluator, DataFlowOpInitializeContext context) { String resolvedFromProvider = tryParameterProvider(name, context, String.class); if (resolvedFromProvider != null) { return resolvedFromProvider; } if (optionalEvaluator == null) { throw new EPException("Parameter by name '" + name + "' has no value"); } String value = (String) optionalEvaluator.evaluate(null, true, context.getAgentInstanceContext()); if (value == null) { throw new EPException("Parameter by name '" + name + "' has a null value"); } return value; }
public DataFlowOperator operator(DataFlowOpInitializeContext context) { String statementDeploymentIdParam = DataFlowParameterResolution.resolveStringOptional("statementDeploymentId", statementDeploymentId, context); String statementNameParam = DataFlowParameterResolution.resolveStringOptional("statementName", statementName, context); EPDataFlowEPStatementFilter statementFilterInstance = DataFlowParameterResolution.resolveOptionalInstance("statementFilter", statementFilter, EPDataFlowEPStatementFilter.class, context); EPDataFlowIRStreamCollector collectorInstance = DataFlowParameterResolution.resolveOptionalInstance("collector", collector, EPDataFlowIRStreamCollector.class, context); if (statementNameParam == null && statementFilterInstance == null) { throw new EPException("Failed to find required 'statementName' or 'statementFilter' parameter"); } return new EPStatementSourceOp(this, context.getAgentInstanceContext(), statementDeploymentIdParam, statementNameParam, statementFilterInstance, collectorInstance); }
return defaultValue; T result = (T) optionalEvaluator.evaluate(null, true, context.getAgentInstanceContext()); if (result == null) { return defaultValue;
public FileSourceCSV(FileSourceFactory factory, DataFlowOpInitializeContext context, AdapterInputSource adapterInputSource, boolean hasHeaderLine, boolean hasTitleLine, Integer numLoops, String[] propertyNames, String dateFormat) { this.factory = factory; this.adapterInputSource = adapterInputSource; this.hasHeaderLine = hasHeaderLine; this.hasTitleLine = hasTitleLine; this.numLoops = numLoops; this.dateFormat = dateFormat; statementContext = context.getAgentInstanceContext().getStatementContext(); // use event type's full list of properties if (!hasTitleLine) { if (propertyNames != null) { parseMake = setupProperties(false, propertyNames, factory.getOutputEventType(), statementContext, dateFormat); } else { parseMake = setupProperties(false, factory.getOutputEventType().getPropertyNames(), factory.getOutputEventType(), statementContext, dateFormat); } } }
public FileSourceCSV(FileSourceFactory factory, DataFlowOpInitializeContext context, AdapterInputSource adapterInputSource, boolean hasHeaderLine, boolean hasTitleLine, Integer numLoops, String[] propertyNames, String dateFormat) { this.factory = factory; this.adapterInputSource = adapterInputSource; this.hasHeaderLine = hasHeaderLine; this.hasTitleLine = hasTitleLine; this.numLoops = numLoops; this.dateFormat = dateFormat; statementContext = context.getAgentInstanceContext().getStatementContext(); // use event type's full list of properties if (!hasTitleLine) { if (propertyNames != null) { parseMake = setupProperties(false, propertyNames, factory.getOutputEventType(), statementContext, dateFormat); } else { parseMake = setupProperties(false, factory.getOutputEventType().getPropertyNames(), factory.getOutputEventType(), statementContext, dateFormat); } } }