Search in sources :

Example 31 with PropertyDescriptor

use of org.apache.nifi.components.PropertyDescriptor in project nifi by apache.

the class HandleHttpResponse method onTrigger.

@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
    FlowFile flowFile = session.get();
    if (flowFile == null) {
        return;
    }
    final StopWatch stopWatch = new StopWatch(true);
    final String contextIdentifier = flowFile.getAttribute(HTTPUtils.HTTP_CONTEXT_ID);
    if (contextIdentifier == null) {
        session.transfer(flowFile, REL_FAILURE);
        getLogger().warn("Failed to respond to HTTP request for {} because FlowFile did not have an '" + HTTPUtils.HTTP_CONTEXT_ID + "' attribute", new Object[] { flowFile });
        return;
    }
    final String statusCodeValue = context.getProperty(STATUS_CODE).evaluateAttributeExpressions(flowFile).getValue();
    if (!isNumber(statusCodeValue)) {
        session.transfer(flowFile, REL_FAILURE);
        getLogger().error("Failed to respond to HTTP request for {} because status code was '{}', which is not a valid number", new Object[] { flowFile, statusCodeValue });
        return;
    }
    final HttpContextMap contextMap = context.getProperty(HTTP_CONTEXT_MAP).asControllerService(HttpContextMap.class);
    final HttpServletResponse response = contextMap.getResponse(contextIdentifier);
    if (response == null) {
        session.transfer(flowFile, REL_FAILURE);
        getLogger().error("Failed to respond to HTTP request for {} because FlowFile had an '{}' attribute of {} but could not find an HTTP Response Object for this identifier", new Object[] { flowFile, HTTPUtils.HTTP_CONTEXT_ID, contextIdentifier });
        return;
    }
    final int statusCode = Integer.parseInt(statusCodeValue);
    response.setStatus(statusCode);
    for (final Map.Entry<PropertyDescriptor, String> entry : context.getProperties().entrySet()) {
        final PropertyDescriptor descriptor = entry.getKey();
        if (descriptor.isDynamic()) {
            final String headerName = descriptor.getName();
            final String headerValue = context.getProperty(descriptor).evaluateAttributeExpressions(flowFile).getValue();
            if (!headerValue.trim().isEmpty()) {
                response.setHeader(headerName, headerValue);
            }
        }
    }
    try {
        session.exportTo(flowFile, response.getOutputStream());
        response.flushBuffer();
    } catch (final ProcessException e) {
        session.transfer(flowFile, REL_FAILURE);
        getLogger().error("Failed to respond to HTTP request for {} due to {}", new Object[] { flowFile, e });
        contextMap.complete(contextIdentifier);
        return;
    } catch (final Exception e) {
        session.transfer(flowFile, REL_FAILURE);
        getLogger().error("Failed to respond to HTTP request for {} due to {}", new Object[] { flowFile, e });
        return;
    }
    try {
        contextMap.complete(contextIdentifier);
    } catch (final IllegalStateException ise) {
        getLogger().error("Failed to complete HTTP Transaction for {} due to {}", new Object[] { flowFile, ise });
        session.transfer(flowFile, REL_FAILURE);
        return;
    }
    session.getProvenanceReporter().send(flowFile, HTTPUtils.getURI(flowFile.getAttributes()), stopWatch.getElapsed(TimeUnit.MILLISECONDS));
    session.transfer(flowFile, REL_SUCCESS);
    getLogger().info("Successfully responded to HTTP Request for {} with status code {}", new Object[] { flowFile, statusCode });
}
Also used : FlowFile(org.apache.nifi.flowfile.FlowFile) PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) HttpContextMap(org.apache.nifi.http.HttpContextMap) HttpServletResponse(javax.servlet.http.HttpServletResponse) ProcessException(org.apache.nifi.processor.exception.ProcessException) StopWatch(org.apache.nifi.util.StopWatch) ProcessException(org.apache.nifi.processor.exception.ProcessException) Map(java.util.Map) HttpContextMap(org.apache.nifi.http.HttpContextMap)

Example 32 with PropertyDescriptor

use of org.apache.nifi.components.PropertyDescriptor in project nifi by apache.

the class ListFTP method getSupportedPropertyDescriptors.

@Override
protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
    final PropertyDescriptor port = new PropertyDescriptor.Builder().fromPropertyDescriptor(UNDEFAULTED_PORT).defaultValue("21").build();
    final List<PropertyDescriptor> properties = new ArrayList<>();
    properties.add(HOSTNAME);
    properties.add(port);
    properties.add(USERNAME);
    properties.add(FTPTransfer.PASSWORD);
    properties.add(REMOTE_PATH);
    properties.add(DISTRIBUTED_CACHE_SERVICE);
    properties.add(FTPTransfer.RECURSIVE_SEARCH);
    properties.add(FTPTransfer.FILE_FILTER_REGEX);
    properties.add(FTPTransfer.PATH_FILTER_REGEX);
    properties.add(FTPTransfer.IGNORE_DOTTED_FILES);
    properties.add(FTPTransfer.REMOTE_POLL_BATCH_SIZE);
    properties.add(FTPTransfer.CONNECTION_TIMEOUT);
    properties.add(FTPTransfer.DATA_TIMEOUT);
    properties.add(FTPTransfer.CONNECTION_MODE);
    properties.add(FTPTransfer.TRANSFER_MODE);
    properties.add(FTPTransfer.PROXY_TYPE);
    properties.add(FTPTransfer.PROXY_HOST);
    properties.add(FTPTransfer.PROXY_PORT);
    properties.add(FTPTransfer.HTTP_PROXY_USERNAME);
    properties.add(FTPTransfer.HTTP_PROXY_PASSWORD);
    properties.add(FTPTransfer.BUFFER_SIZE);
    properties.add(TARGET_SYSTEM_TIMESTAMP_PRECISION);
    return properties;
}
Also used : PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) ArrayList(java.util.ArrayList)

Example 33 with PropertyDescriptor

use of org.apache.nifi.components.PropertyDescriptor in project nifi by apache.

the class ListSFTP method getSupportedPropertyDescriptors.

@Override
protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
    final PropertyDescriptor port = new PropertyDescriptor.Builder().fromPropertyDescriptor(UNDEFAULTED_PORT).defaultValue("22").build();
    final List<PropertyDescriptor> properties = new ArrayList<>();
    properties.add(HOSTNAME);
    properties.add(port);
    properties.add(USERNAME);
    properties.add(SFTPTransfer.PASSWORD);
    properties.add(SFTPTransfer.PRIVATE_KEY_PATH);
    properties.add(SFTPTransfer.PRIVATE_KEY_PASSPHRASE);
    properties.add(REMOTE_PATH);
    properties.add(DISTRIBUTED_CACHE_SERVICE);
    properties.add(SFTPTransfer.RECURSIVE_SEARCH);
    properties.add(SFTPTransfer.FILE_FILTER_REGEX);
    properties.add(SFTPTransfer.PATH_FILTER_REGEX);
    properties.add(SFTPTransfer.IGNORE_DOTTED_FILES);
    properties.add(SFTPTransfer.STRICT_HOST_KEY_CHECKING);
    properties.add(SFTPTransfer.HOST_KEY_FILE);
    properties.add(SFTPTransfer.CONNECTION_TIMEOUT);
    properties.add(SFTPTransfer.DATA_TIMEOUT);
    properties.add(SFTPTransfer.USE_KEEPALIVE_ON_TIMEOUT);
    properties.add(TARGET_SYSTEM_TIMESTAMP_PRECISION);
    return properties;
}
Also used : PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) ArrayList(java.util.ArrayList)

Example 34 with PropertyDescriptor

use of org.apache.nifi.components.PropertyDescriptor in project nifi by apache.

the class LookupRecord method getFlowFileContext.

@Override
protected Tuple<Map<String, RecordPath>, RecordPath> getFlowFileContext(final FlowFile flowFile, final ProcessContext context) {
    final Map<String, RecordPath> recordPaths = new HashMap<>();
    for (final PropertyDescriptor prop : context.getProperties().keySet()) {
        if (!prop.isDynamic()) {
            continue;
        }
        final String pathText = context.getProperty(prop).evaluateAttributeExpressions(flowFile).getValue();
        final RecordPath lookupRecordPath = recordPathCache.getCompiled(pathText);
        recordPaths.put(prop.getName(), lookupRecordPath);
    }
    final RecordPath resultRecordPath;
    if (context.getProperty(RESULT_RECORD_PATH).isSet()) {
        final String resultPathText = context.getProperty(RESULT_RECORD_PATH).evaluateAttributeExpressions(flowFile).getValue();
        resultRecordPath = recordPathCache.getCompiled(resultPathText);
    } else {
        resultRecordPath = null;
    }
    return new Tuple<>(recordPaths, resultRecordPath);
}
Also used : PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) HashMap(java.util.HashMap) RecordPath(org.apache.nifi.record.path.RecordPath) Tuple(org.apache.nifi.util.Tuple)

Example 35 with PropertyDescriptor

use of org.apache.nifi.components.PropertyDescriptor in project nifi by apache.

the class PutRiemann method onScheduled.

@OnScheduled
public void onScheduled(ProcessContext context) throws ProcessException {
    if (batchSize == -1) {
        batchSize = context.getProperty(BATCH_SIZE).asInteger();
    }
    if (riemannClient == null || !riemannClient.isConnected()) {
        transport = Transport.valueOf(context.getProperty(TRANSPORT_PROTOCOL).getValue());
        String host = context.getProperty(RIEMANN_HOST).getValue().trim();
        int port = context.getProperty(RIEMANN_PORT).asInteger();
        writeTimeout = context.getProperty(TIMEOUT).asLong();
        RiemannClient client = null;
        try {
            switch(transport) {
                case TCP:
                    client = RiemannClient.tcp(host, port);
                    break;
                case UDP:
                    client = RiemannClient.udp(host, port);
                    break;
            }
            client.connect();
            riemannClient = client;
        } catch (IOException e) {
            if (client != null) {
                client.close();
            }
            context.yield();
            throw new ProcessException(String.format("Unable to connect to Riemann [%s:%d] (%s)\n%s", host, port, transport, e.getMessage()));
        }
    }
    if (customAttributes.size() == 0) {
        for (Map.Entry<PropertyDescriptor, String> property : context.getProperties().entrySet()) {
            // only custom defined properties
            if (!getSupportedPropertyDescriptors().contains(property.getKey())) {
                customAttributes.add(property.getKey());
            }
        }
    }
}
Also used : ProcessException(org.apache.nifi.processor.exception.ProcessException) RiemannClient(com.aphyr.riemann.client.RiemannClient) PropertyDescriptor(org.apache.nifi.components.PropertyDescriptor) IOException(java.io.IOException) Map(java.util.Map) OnScheduled(org.apache.nifi.annotation.lifecycle.OnScheduled)

Aggregations

PropertyDescriptor (org.apache.nifi.components.PropertyDescriptor)206 HashMap (java.util.HashMap)97 Test (org.junit.Test)67 Map (java.util.Map)57 ArrayList (java.util.ArrayList)49 HashSet (java.util.HashSet)24 IOException (java.io.IOException)23 Relationship (org.apache.nifi.processor.Relationship)22 ComponentLog (org.apache.nifi.logging.ComponentLog)21 LinkedHashMap (java.util.LinkedHashMap)20 ControllerServiceNode (org.apache.nifi.controller.service.ControllerServiceNode)19 TestRunner (org.apache.nifi.util.TestRunner)19 ValidationResult (org.apache.nifi.components.ValidationResult)17 ProcessException (org.apache.nifi.processor.exception.ProcessException)17 FlowFile (org.apache.nifi.flowfile.FlowFile)16 LinkedHashSet (java.util.LinkedHashSet)15 BundleCoordinate (org.apache.nifi.bundle.BundleCoordinate)14 PropertyValue (org.apache.nifi.components.PropertyValue)14 URL (java.net.URL)13 OnScheduled (org.apache.nifi.annotation.lifecycle.OnScheduled)13