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

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

GitHub user steveyh25 opened a pull request:

    https://github.com/apache/nifi/pull/305

    NIFI-1686 - NiFi is unable to populate over 1/4 of AMQP properties from 
flow properties

    I've changed propertyNames into an enum so that we can refer to their 
values multiple times properly instead of hard-coding string values all over 
the place. The enum includes a lookup map that is built by a static block so we 
can get the enum "by value" efficiently.
    
    I've removed the reflective calls and so am using a setter for each 
property type - along with fixes for the 4 properties that had issues in the 
bug. Multiple headers can be passed in as follows: 
amqp$headers=foo$bar$foo2$bar2$foo3$bar3 etc. and the code will build the Map 
parameter that the Builder requires.
    
    Removed the now unnecessary variable amqpPropertyNames, and getter 
getAmqpPropertyNames.
    
    Fixed some spelling mistakes, amended doc comments, removed unused imports, 
made the test more robust by testing all of the properties instead of just 
contentType.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/steveyh25/nifi NIFI-1686

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/nifi/pull/305.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #305
    
----
commit c686a11cbfb2256bbd645dc78902c730f46d8628
Author: Stephen Harper <stevey...@gmail.com>
Date:   2016-03-26T20:06:50Z

    NIFI-1686 - NiFi is unable to populate over 1/4 of AMQP properties from 
flow properties

----


> 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