[ 
https://issues.apache.org/jira/browse/NIFI-1686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15215930#comment-15215930
 ] 

ASF GitHub Bot commented on NIFI-1686:
--------------------------------------

Github user olegz commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/305#discussion_r57714484
  
    --- Diff: 
nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPUtils.java
 ---
    @@ -141,4 +142,101 @@ private static String 
extractPropertyNameFromMethod(Method method) {
             c[0] = Character.toLowerCase(c[0]);
             return AMQP_PROP_PREFIX + new String(c);
         }
    +
    +    /**
    +     * Will validate if provided amqpPropValue can be converted to a 
{@link Map}.
    +     *
    +     * @param amqpPropValue
    +     *            the value of the property
    +     * @return {@link Map} if valid otherwise null
    +     */
    +    public static Map<String, Object> validateAMQPHeaderProperty(String 
amqpPropValue){
    +        String[] strEntries = amqpPropValue.split(",");
    +        Map<String, Object> headers = new HashMap<>();
    +        for (String strEntry : strEntries) {
    +            String[] kv = strEntry.split("=");
    +            if (kv.length == 2) {
    +                headers.put(kv[0].trim(), kv[1].trim());
    +            } else {
    +                logger.warn("Malformed key value pair for AMQP header 
property: " + amqpPropValue);
    +            }
    +        }
    +
    +        return headers;
    +    }
    +
    +    /**
    +     * Will validate if provided amqpPropValue can be converted to an 
{@link Integer}, and that its
    +     * value is 1 or 2.
    +     *
    +     * @param amqpPropValue
    +     *            the value of the property
    +     * @return {@link Integer} if valid otherwise null
    +     */
    +    public static Integer validateAMQPDeliveryModeProperty(String 
amqpPropValue){
    +        Integer deliveryMode = null;
    +
    +        try {
    +            deliveryMode = Integer.parseInt(amqpPropValue);
    +        } catch (NumberFormatException aE){
    +            //we will deal with the error below instead of having 
duplicate logger code
    +        }
    --- End diff --
    
    Consider ```private static Integer toInt(String strVal)``` method, since 
the same logic is repeated in the next one. Just trying to avoid duplication as 
much as possible.


> NiFi is unable to populate over 1/4 of AMQP properties from flow properties
> ---------------------------------------------------------------------------
>
>                 Key: NIFI-1686
>                 URL: https://issues.apache.org/jira/browse/NIFI-1686
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>    Affects Versions: 0.5.1
>            Reporter: Stephen Harper
>
> When creating a flow (we used ListenHTTP, but this bug will affect all) that 
> forwards on to a rabbit queue, org.apache.nifi.amqp.processors.PublishAMQP 
> uses the method extractAmqpPropertiesFromFlowFile to populate the AMQP 
> BasicProperties if the flow attributes match a certain format (i.e 
> amqp$contentType=text/xml). 
> The method in question uses reflection to find a matching method name from 
> the AMQP.BasicProperties class, and tries to populate accordingly.
> This works fine for all properties that take a String argument - however 
> there are some that don't (specifically, headers takes a Map<String, Object>, 
> deliveryMode and priority take Integer, and timestamp takes a Date), and it 
> is impossible to populate these values because the invocation assumes a 
> String is required, and fails on line 210.
> Whatsmore, the comment underneath (line 215) states that "this should really 
> never happen since it should be caught by the above IF" - however the author 
> of the code mustn't have tested all cases because this error is consistently 
> present when trying to forward flow attributes in over a quarter of the 
> available amqp properties.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to