org.apache.nifi.processor.exception.ProcessException Java Examples
The following examples show how to use
org.apache.nifi.processor.exception.ProcessException.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PublishAMQP.java From localization_nifi with Apache License 2.0 | 6 votes |
/** * Will construct AMQP message by extracting its body from the incoming * {@link FlowFile}. AMQP Properties will be extracted from the * {@link FlowFile} and converted to {@link BasicProperties} to be sent * along with the message. Upon success the incoming {@link FlowFile} is * transferred to 'success' {@link Relationship} and upon failure FlowFile is * penalized and transferred to the 'failure' {@link Relationship} * <br> * NOTE: Attributes extracted from {@link FlowFile} are considered * candidates for AMQP properties if their names are prefixed with * {@link AMQPUtils#AMQP_PROP_PREFIX} (e.g., amqp$contentType=text/xml) * */ @Override protected void rendezvousWithAmqp(ProcessContext context, ProcessSession processSession) throws ProcessException { FlowFile flowFile = processSession.get(); if (flowFile != null) { BasicProperties amqpProperties = this.extractAmqpPropertiesFromFlowFile(flowFile); String routingKey = context.getProperty(ROUTING_KEY).evaluateAttributeExpressions(flowFile).getValue(); if (routingKey == null){ throw new IllegalArgumentException("Failed to determine 'routing key' with provided value '" + context.getProperty(ROUTING_KEY) + "' after evaluating it as expression against incoming FlowFile."); } String exchange = context.getProperty(EXCHANGE).evaluateAttributeExpressions(flowFile).getValue(); byte[] messageContent = this.extractMessage(flowFile, processSession); try { this.targetResource.publish(messageContent, amqpProperties, routingKey, exchange); processSession.transfer(flowFile, REL_SUCCESS); processSession.getProvenanceReporter().send(flowFile, this.amqpConnection.toString() + "/E:" + exchange + "/RK:" + routingKey); } catch (Exception e) { processSession.transfer(processSession.penalize(flowFile), REL_FAILURE); this.getLogger().error("Failed while sending message to AMQP via " + this.targetResource, e); context.yield(); } } }
Example #2
Source File: ExecuteFlumeSource.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public void onTrigger(ProcessContext context, ProcessSessionFactory sessionFactory) throws ProcessException { if (source instanceof PollableSource) { super.onTrigger(context, sessionFactory); } else if (source instanceof EventDrivenSource) { ProcessSessionFactory old = sessionFactoryRef.getAndSet(sessionFactory); if (old != sessionFactory) { if (runnerRef.get() != null) { stopped(); sessionFactoryRef.set(sessionFactory); } runnerRef.set(new EventDrivenSourceRunner()); eventDrivenSourceChannelRef.set(new NifiSessionFactoryChannel(sessionFactoryRef.get(), SUCCESS)); eventDrivenSourceChannelRef.get().start(); source.setChannelProcessor(new ChannelProcessor( new NifiChannelSelector(eventDrivenSourceChannelRef.get()))); runnerRef.get().setSource(source); runnerRef.get().start(); } } }
Example #3
Source File: ConsumeWindowsEventLog.java From localization_nifi with Apache License 2.0 | 6 votes |
/** * Cleanup */ @OnStopped public void stop() { if (isSubscribed()) { wEvtApi.EvtClose(subscriptionHandle); } subscriptionHandle = null; evtSubscribeCallback = null; if (!renderedXMLs.isEmpty()) { if (sessionFactory != null) { getLogger().info("Finishing processing leftover events"); ProcessSession session = sessionFactory.createSession(); processQueue(session); } else { throw new ProcessException("Stopping the processor but there is no ProcessSessionFactory stored and there are messages in the internal queue. Removing the processor now will " + "clear the queue but will result in DATA LOSS. This is normally due to starting the processor, receiving events and stopping before the onTrigger happens. The messages " + "in the internal queue cannot finish processing until until the processor is triggered to run."); } } sessionFactory = null; provenanceUri = null; renderedXMLs = null; }
Example #4
Source File: PutAzureEventHub.java From localization_nifi with Apache License 2.0 | 6 votes |
protected void sendMessage(final byte[] buffer) throws ProcessException { final EventHubClient sender = senderQueue.poll(); if(null != sender) { try { sender.sendSync(new EventData(buffer)); } catch (final ServiceBusException sbe) { throw new ProcessException("Caught exception trying to send message to eventbus", sbe); } finally { senderQueue.offer(sender); } }else{ throw new ProcessException("No EventHubClients are configured for sending"); } }
Example #5
Source File: GetJMSQueue.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { final ComponentLog logger = getLogger(); WrappedMessageConsumer wrappedConsumer = consumerQueue.poll(); if (wrappedConsumer == null) { try { wrappedConsumer = JmsFactory.createQueueMessageConsumer(context); } catch (JMSException e) { logger.error("Failed to connect to JMS Server due to {}", e); context.yield(); return; } } try { super.consume(context, session, wrappedConsumer); } finally { if (!wrappedConsumer.isClosed()) { consumerQueue.offer(wrappedConsumer); } } }
Example #6
Source File: ScanAttribute.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { final List<FlowFile> flowFiles = session.get(50); if (flowFiles.isEmpty()) { return; } final ComponentLog logger = getLogger(); try { if (fileWatcher.checkAndReset()) { this.dictionaryTerms = createDictionary(context); } } catch (final IOException e) { logger.error("Unable to reload dictionary due to {}", e); } final boolean matchAll = context.getProperty(MATCHING_CRITERIA).getValue().equals(MATCH_CRITERIA_ALL); for (final FlowFile flowFile : flowFiles) { final boolean matched = matchAll ? allMatch(flowFile, attributePattern, dictionaryTerms) : anyMatch(flowFile, attributePattern, dictionaryTerms); final Relationship relationship = matched ? REL_MATCHED : REL_UNMATCHED; session.getProvenanceReporter().route(flowFile, relationship); session.transfer(flowFile, relationship); logger.info("Transferred {} to {}", new Object[]{flowFile, relationship}); } }
Example #7
Source File: AbstractAWSProcessor.java From localization_nifi with Apache License 2.0 | 6 votes |
protected AWSCredentials getCredentials(final ProcessContext context) { final String accessKey = context.getProperty(ACCESS_KEY).evaluateAttributeExpressions().getValue(); final String secretKey = context.getProperty(SECRET_KEY).evaluateAttributeExpressions().getValue(); final String credentialsFile = context.getProperty(CREDENTIALS_FILE).getValue(); if (credentialsFile != null) { try { return new PropertiesCredentials(new File(credentialsFile)); } catch (final IOException ioe) { throw new ProcessException("Could not read Credentials File", ioe); } } if (accessKey != null && secretKey != null) { return new BasicAWSCredentials(accessKey, secretKey); } return new AnonymousAWSCredentials(); }
Example #8
Source File: PutKafka.java From localization_nifi with Apache License 2.0 | 6 votes |
/** * Will rendezvous with Kafka if {@link ProcessSession} contains {@link FlowFile} * producing a result {@link FlowFile}. * <br> * The result {@link FlowFile} that is successful is then transferred to {@link #REL_SUCCESS} * <br> * The result {@link FlowFile} that is failed is then transferred to {@link #REL_FAILURE} * */ @Override protected boolean rendezvousWithKafka(ProcessContext context, ProcessSession session) throws ProcessException { boolean processed = false; FlowFile flowFile = session.get(); if (flowFile != null) { flowFile = this.doRendezvousWithKafka(flowFile, context, session); if (!this.isFailedFlowFile(flowFile)) { session.getProvenanceReporter().send(flowFile, context.getProperty(SEED_BROKERS).getValue() + "/" + context.getProperty(TOPIC).evaluateAttributeExpressions(flowFile).getValue()); session.transfer(flowFile, REL_SUCCESS); } else { session.transfer(session.penalize(flowFile), REL_FAILURE); } processed = true; } return processed; }
Example #9
Source File: HiveConnectionPool.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public Connection getConnection() throws ProcessException { try { if (ugi != null) { return ugi.doAs(new PrivilegedExceptionAction<Connection>() { @Override public Connection run() throws Exception { return dataSource.getConnection(); } }); } else { getLogger().info("Simple Authentication"); return dataSource.getConnection(); } } catch (SQLException | IOException | InterruptedException e) { getLogger().error("Error getting Hive connection", e); throw new ProcessException(e); } }
Example #10
Source File: BaseTransformer.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile flowFile = session.get(); if (flowFile != null) { try { InvocationContextProperties contextProperties = new InvocationContextProperties(context, flowFile); flowFile = this.doTransform(context, session, flowFile, contextProperties); session.transfer(flowFile, REL_SUCCESS); } catch (Exception e) { this.getLogger().error("Failed FlowFile processing, routing to failure. Issue: " + e.getMessage(), e); session.transfer(flowFile, REL_FAILURE); } } else { context.yield(); } }
Example #11
Source File: AttributeRollingWindow.java From localization_nifi with Apache License 2.0 | 6 votes |
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { FlowFile flowFile = session.get(); if (flowFile == null) { return; } try { Long currTime = System.currentTimeMillis(); if(microBatchTime == null){ noMicroBatch(context, session, flowFile, currTime); } else{ microBatch(context, session, flowFile, currTime); } } catch (Exception e) { getLogger().error("Ran into an error while processing {}.", new Object[] { flowFile}, e); session.transfer(flowFile, REL_FAILURE); } }
Example #12
Source File: TestFetchElasticsearch5.java From localization_nifi with Apache License 2.0 | 6 votes |
@Test(expected = ProcessException.class) public void testCreateElasticsearch5ClientWithException() throws ProcessException { FetchElasticsearch5TestProcessor processor = new FetchElasticsearch5TestProcessor(true) { @Override protected Client getTransportClient(Settings.Builder settingsBuilder, String xPackPath, String username, String password, List<InetSocketAddress> esHosts, ComponentLog log) throws MalformedURLException { throw new MalformedURLException(); } }; MockProcessContext context = new MockProcessContext(processor); processor.initialize(new MockProcessorInitializationContext(processor, context)); processor.callCreateElasticsearchClient(context); }
Example #13
Source File: CurrentTestStandardProcessorTestRunner.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { try { // be slow Thread.sleep(50); // make sure we are still scheduled if (isScheduled()) { // increment counter ++counter; } } catch (InterruptedException e) { } }
Example #14
Source File: GetIgniteCache.java From localization_nifi with Apache License 2.0 | 5 votes |
/** * Handle flow file and gets the entry from the cache based on the key attribute */ @Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { FlowFile flowFile = session.get(); if (flowFile == null) { return; } String key = context.getProperty(IGNITE_CACHE_ENTRY_KEY).evaluateAttributeExpressions(flowFile).getValue(); if ( StringUtils.isEmpty(key) ) { flowFile = session.putAttribute(flowFile, IGNITE_GET_FAILED_REASON_ATTRIBUTE_KEY, IGNITE_GET_FAILED_MISSING_KEY_MESSAGE); session.transfer(flowFile, REL_FAILURE); } else { try { byte [] value = getIgniteCache().get(key); if ( value == null || value.length == 0 ) { flowFile = session.putAttribute(flowFile, IGNITE_GET_FAILED_REASON_ATTRIBUTE_KEY, IGNITE_GET_FAILED_MISSING_ENTRY_MESSAGE); session.transfer(flowFile, REL_FAILURE); } else { ByteArrayInputStream bais = new ByteArrayInputStream(value); flowFile = session.importFrom(bais, flowFile); session.transfer(flowFile,REL_SUCCESS); } } catch(Exception exception) { flowFile = session.putAttribute(flowFile, IGNITE_GET_FAILED_REASON_ATTRIBUTE_KEY, IGNITE_GET_FAILED_MESSAGE_PREFIX + exception); getLogger().error("Failed to get value for key {} from IgniteDB due to {}", new Object[] { key, exception }, exception); session.transfer(flowFile, REL_FAILURE); context.yield(); } } }
Example #15
Source File: TestConvertJSONToSQL.java From localization_nifi with Apache License 2.0 | 5 votes |
@Test public void testInsertQuotedIdentifiers() throws InitializationException, ProcessException, SQLException, IOException { final TestRunner runner = TestRunners.newTestRunner(ConvertJSONToSQL.class); final File tempDir = folder.getRoot(); final File dbDir = new File(tempDir, "db"); final DBCPService service = new MockDBCPService(dbDir.getAbsolutePath()); runner.addControllerService("dbcp", service); runner.enableControllerService(service); try (final Connection conn = service.getConnection()) { try (final Statement stmt = conn.createStatement()) { stmt.executeUpdate(createPersons); } } runner.setProperty(ConvertJSONToSQL.CONNECTION_POOL, "dbcp"); runner.setProperty(ConvertJSONToSQL.TABLE_NAME, "PERSONS"); runner.setProperty(ConvertJSONToSQL.STATEMENT_TYPE, "INSERT"); runner.setProperty(ConvertJSONToSQL.QUOTED_IDENTIFIERS, "true"); runner.enqueue(Paths.get("src/test/resources/TestConvertJSONToSQL/person-1.json")); runner.run(); runner.assertTransferCount(ConvertJSONToSQL.REL_ORIGINAL, 1); runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_ORIGINAL).get(0).assertAttributeEquals(FRAGMENT_COUNT.key(), "1"); runner.assertTransferCount(ConvertJSONToSQL.REL_SQL, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_SQL).get(0); out.assertAttributeEquals("sql.args.1.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeEquals("sql.args.1.value", "1"); out.assertAttributeEquals("sql.args.2.type", String.valueOf(java.sql.Types.VARCHAR)); out.assertAttributeEquals("sql.args.2.value", "Mark"); out.assertAttributeEquals("sql.args.3.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeEquals("sql.args.3.value", "48"); out.assertContentEquals("INSERT INTO PERSONS (\"ID\", \"NAME\", \"CODE\") VALUES (?, ?, ?)"); }
Example #16
Source File: TestConvertJSONToSQL.java From localization_nifi with Apache License 2.0 | 5 votes |
@Test public void testUpdateBasedOnPrimaryKey() throws InitializationException, ProcessException, SQLException, IOException { final TestRunner runner = TestRunners.newTestRunner(ConvertJSONToSQL.class); final File tempDir = folder.getRoot(); final File dbDir = new File(tempDir, "db"); final DBCPService service = new MockDBCPService(dbDir.getAbsolutePath()); runner.addControllerService("dbcp", service); runner.enableControllerService(service); try (final Connection conn = service.getConnection()) { try (final Statement stmt = conn.createStatement()) { stmt.executeUpdate(createPersons); } } runner.setProperty(ConvertJSONToSQL.CONNECTION_POOL, "dbcp"); runner.setProperty(ConvertJSONToSQL.TABLE_NAME, "PERSONS"); runner.setProperty(ConvertJSONToSQL.STATEMENT_TYPE, "UPDATE"); runner.enqueue(Paths.get("src/test/resources/TestConvertJSONToSQL/person-1.json")); runner.run(); runner.assertTransferCount(ConvertJSONToSQL.REL_ORIGINAL, 1); runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_ORIGINAL).get(0).assertAttributeEquals(FRAGMENT_COUNT.key(), "1"); runner.assertTransferCount(ConvertJSONToSQL.REL_SQL, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_SQL).get(0); out.assertAttributeEquals("sql.args.1.type", String.valueOf(java.sql.Types.VARCHAR)); out.assertAttributeEquals("sql.args.1.value", "Mark"); out.assertAttributeEquals("sql.args.2.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeEquals("sql.args.2.value", "48"); out.assertAttributeEquals("sql.args.3.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeEquals("sql.args.3.value", "1"); out.assertContentEquals("UPDATE PERSONS SET NAME = ?, CODE = ? WHERE ID = ?"); }
Example #17
Source File: ExecuteFlumeSink.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { channel.setSession(session); try { sink.process(); } catch (EventDeliveryException ex) { throw new ProcessException("Flume event delivery failed", ex); } }
Example #18
Source File: ExecuteFlumeSource.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { if (source instanceof PollableSource) { PollableSource pollableSource = (PollableSource) source; try { pollableSourceChannel.setSession(session); pollableSource.process(); } catch (EventDeliveryException ex) { throw new ProcessException("Error processing pollable source", ex); } } else { throw new ProcessException("Invalid source type: " + source.getClass().getSimpleName()); } }
Example #19
Source File: MockProcessSession.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public MockFlowFile write(final FlowFile flowFile, final StreamCallback callback) { validateState(flowFile); if (callback == null || flowFile == null) { throw new IllegalArgumentException("argument cannot be null"); } if (!(flowFile instanceof MockFlowFile)) { throw new IllegalArgumentException("Cannot export a flow file that I did not create"); } final MockFlowFile mock = (MockFlowFile) flowFile; final ByteArrayInputStream in = new ByteArrayInputStream(mock.getData()); final ByteArrayOutputStream out = new ByteArrayOutputStream(); recursionSet.add(flowFile); try { callback.process(in, out); } catch (final IOException e) { throw new ProcessException(e.toString(), e); } finally { recursionSet.remove(flowFile); } final MockFlowFile newFlowFile = new MockFlowFile(mock.getId(), flowFile); currentVersions.put(newFlowFile.getId(), newFlowFile); newFlowFile.setData(out.toByteArray()); return newFlowFile; }
Example #20
Source File: UpdateAttribute.java From localization_nifi with Apache License 2.0 | 5 votes |
private boolean evaluateCondition(final ProcessContext context, final Condition condition, final FlowFile flowfile, final Map<String, String> statefulAttributes) { try { // evaluate the expression for the given flow file return getPropertyValue(condition.getExpression(), context).evaluateAttributeExpressions(flowfile, null, null, statefulAttributes).asBoolean(); } catch (final ProcessException pe) { throw new ProcessException(String.format("Unable to evaluate condition '%s': %s.", condition.getExpression(), pe), pe); } }
Example #21
Source File: TestConvertJSONToSQL.java From localization_nifi with Apache License 2.0 | 5 votes |
@Test public void testMultipleInserts() throws InitializationException, ProcessException, SQLException, IOException { final TestRunner runner = TestRunners.newTestRunner(ConvertJSONToSQL.class); final File tempDir = folder.getRoot(); final File dbDir = new File(tempDir, "db"); final DBCPService service = new MockDBCPService(dbDir.getAbsolutePath()); runner.addControllerService("dbcp", service); runner.enableControllerService(service); try (final Connection conn = service.getConnection()) { try (final Statement stmt = conn.createStatement()) { stmt.executeUpdate(createPersons); } } runner.setProperty(ConvertJSONToSQL.CONNECTION_POOL, "dbcp"); runner.setProperty(ConvertJSONToSQL.TABLE_NAME, "PERSONS"); runner.setProperty(ConvertJSONToSQL.STATEMENT_TYPE, "INSERT"); runner.enqueue(Paths.get("src/test/resources/TestConvertJSONToSQL/persons.json")); runner.run(); runner.assertTransferCount(ConvertJSONToSQL.REL_ORIGINAL, 1); runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_ORIGINAL).get(0).assertAttributeEquals(FRAGMENT_COUNT.key(), "5"); runner.assertTransferCount(ConvertJSONToSQL.REL_SQL, 5); final List<MockFlowFile> mffs = runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_SQL); for (final MockFlowFile mff : mffs) { mff.assertContentEquals("INSERT INTO PERSONS (ID, NAME, CODE) VALUES (?, ?, ?)"); for (int i=1; i <= 3; i++) { mff.assertAttributeExists("sql.args." + i + ".type"); mff.assertAttributeExists("sql.args." + i + ".value"); } } }
Example #22
Source File: KeyedEncryptor.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public void process(final InputStream in, final OutputStream out) throws IOException { // Initialize cipher provider KeyedCipherProvider cipherProvider = (KeyedCipherProvider) CipherProviderFactory.getCipherProvider(KeyDerivationFunction.NONE); // Generate cipher try { Cipher cipher = cipherProvider.getCipher(encryptionMethod, key, iv, true); cipherProvider.writeIV(cipher.getIV(), out); CipherUtility.processStreams(cipher, in, out); } catch (Exception e) { throw new ProcessException(e); } }
Example #23
Source File: MockProcessSession.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public void remove(final FlowFile flowFile) { validateState(flowFile); final Iterator<MockFlowFile> penalizedItr = penalized.iterator(); while (penalizedItr.hasNext()) { final MockFlowFile ff = penalizedItr.next(); if (Objects.equals(ff.getId(), flowFile.getId())) { penalizedItr.remove(); penalized.remove(ff); break; } } final Iterator<Long> processedItr = beingProcessed.iterator(); while (processedItr.hasNext()) { final Long ffId = processedItr.next(); if (ffId != null && ffId.equals(flowFile.getId())) { processedItr.remove(); beingProcessed.remove(ffId); removedFlowFiles.add(flowFile.getId()); currentVersions.remove(ffId); return; } } throw new ProcessException(flowFile + " not found in queue"); }
Example #24
Source File: UnpackContent.java From localization_nifi with Apache License 2.0 | 5 votes |
@OnScheduled public void onScheduled(ProcessContext context) throws ProcessException { if (fileFilter == null) { fileFilter = Pattern.compile(context.getProperty(FILE_FILTER).getValue()); tarUnpacker = new TarUnpacker(fileFilter); zipUnpacker = new ZipUnpacker(fileFilter); } }
Example #25
Source File: TestExecuteSQL.java From localization_nifi with Apache License 2.0 | 5 votes |
@Override public Connection getConnection() throws ProcessException { try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); final Connection con = DriverManager.getConnection("jdbc:derby:" + DB_LOCATION + ";create=true"); return con; } catch (final Exception e) { throw new ProcessException("getConnection failed: " + e); } }
Example #26
Source File: ConsumeMQTT.java From localization_nifi with Apache License 2.0 | 5 votes |
@OnStopped public void onStopped(final ProcessContext context) throws IOException { if(mqttQueue != null && !mqttQueue.isEmpty() && processSessionFactory != null) { logger.info("Finishing processing leftover messages"); ProcessSession session = processSessionFactory.createSession(); transferQueue(session); } else { if (mqttQueue!= null && !mqttQueue.isEmpty()){ throw new ProcessException("Stopping the processor but there is no ProcessSessionFactory stored and there are messages in the MQTT internal queue. Removing the processor now will " + "clear the queue but will result in DATA LOSS. This is normally due to starting the processor, receiving messages and stopping before the onTrigger happens. The messages " + "in the MQTT internal queue cannot finish processing until until the processor is triggered to run."); } } }
Example #27
Source File: DBCPConnectionPool.java From localization_nifi with Apache License 2.0 | 5 votes |
/** * Shutdown pool, close all open connections. */ @OnDisabled public void shutdown() { try { dataSource.close(); } catch (final SQLException e) { throw new ProcessException(e); } }
Example #28
Source File: TestConvertJSONToSQL.java From localization_nifi with Apache License 2.0 | 5 votes |
@Test public void testInsertWithNullValue() throws InitializationException, ProcessException, SQLException, IOException { final TestRunner runner = TestRunners.newTestRunner(ConvertJSONToSQL.class); final File tempDir = folder.getRoot(); final File dbDir = new File(tempDir, "db"); final DBCPService service = new MockDBCPService(dbDir.getAbsolutePath()); runner.addControllerService("dbcp", service); runner.enableControllerService(service); try (final Connection conn = service.getConnection()) { try (final Statement stmt = conn.createStatement()) { stmt.executeUpdate(createPersons); } } runner.setProperty(ConvertJSONToSQL.CONNECTION_POOL, "dbcp"); runner.setProperty(ConvertJSONToSQL.TABLE_NAME, "PERSONS"); runner.setProperty(ConvertJSONToSQL.STATEMENT_TYPE, "INSERT"); runner.enqueue(Paths.get("src/test/resources/TestConvertJSONToSQL/person-with-null-code.json")); runner.run(); runner.assertTransferCount(ConvertJSONToSQL.REL_ORIGINAL, 1); runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_ORIGINAL).get(0).assertAttributeEquals(FRAGMENT_COUNT.key(), "1"); runner.assertTransferCount(ConvertJSONToSQL.REL_SQL, 1); final MockFlowFile out = runner.getFlowFilesForRelationship(ConvertJSONToSQL.REL_SQL).get(0); out.assertAttributeEquals("sql.args.1.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeEquals("sql.args.1.value", "1"); out.assertAttributeEquals("sql.args.2.type", String.valueOf(java.sql.Types.VARCHAR)); out.assertAttributeEquals("sql.args.2.value", "Mark"); out.assertAttributeEquals("sql.args.3.type", String.valueOf(java.sql.Types.INTEGER)); out.assertAttributeNotExists("sql.args.3.value"); out.assertContentEquals("INSERT INTO PERSONS (ID, NAME, CODE) VALUES (?, ?, ?)"); }
Example #29
Source File: PutIgniteCache.java From localization_nifi with Apache License 2.0 | 5 votes |
/** * Add failed flow file attributes * @param flowFiles all flow files * @param failedFlowFiles list of failed flow files * @param session process session * @param context the process context * @return failed flow files with updated attributes */ protected List<FlowFile> updateFailedFlowFileAttributes( List<FlowFile> flowFiles, List<FlowFile> failedFlowFiles, ProcessSession session, ProcessContext context) { int flowFileCount = flowFiles.size(); int flowFileFailed = failedFlowFiles.size(); List<FlowFile> updatedFailedFlowFiles = new ArrayList<>(); for (int i = 0; i < flowFileFailed; i++) { FlowFile flowFile = failedFlowFiles.get(i); Map<String,String> attributes = new HashMap<>(); attributes.put(IGNITE_BATCH_FLOW_FILE_FAILED_ITEM_NUMBER, Integer.toString(i)); attributes.put(IGNITE_BATCH_FLOW_FILE_TOTAL_COUNT, Integer.toString(flowFileCount)); attributes.put(IGNITE_BATCH_FLOW_FILE_ITEM_NUMBER, Integer.toString(flowFiles.indexOf(flowFile))); attributes.put(IGNITE_BATCH_FLOW_FILE_FAILED_COUNT, Integer.toString(flowFileFailed)); String key = context.getProperty(IGNITE_CACHE_ENTRY_KEY).evaluateAttributeExpressions(flowFile).getValue(); if (StringUtils.isEmpty(key)) { attributes.put(IGNITE_BATCH_FLOW_FILE_FAILED_REASON_ATTRIBUTE_KEY, IGNITE_BATCH_FLOW_FILE_FAILED_MISSING_KEY_MESSAGE); } else if (flowFile.getSize() == 0) { attributes.put(IGNITE_BATCH_FLOW_FILE_FAILED_REASON_ATTRIBUTE_KEY, IGNITE_BATCH_FLOW_FILE_FAILED_ZERO_SIZE_MESSAGE); } else { throw new ProcessException("Unknown reason for failing file: " + flowFile); } flowFile = session.putAllAttributes(flowFile, attributes); updatedFailedFlowFiles.add(flowFile); } return updatedFailedFlowFiles; }
Example #30
Source File: Query.java From localization_nifi with Apache License 2.0 | 5 votes |
public static boolean isValidExpression(final String value) { try { validateExpression(value, false); return true; } catch (final AttributeExpressionLanguageParsingException | ProcessException e) { return false; } }