[
https://issues.apache.org/jira/browse/NIFI-1686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15213508#comment-15213508
]
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_r57530669
--- Diff:
nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPUtils.java
---
@@ -43,16 +41,48 @@
private final static Logger logger =
LoggerFactory.getLogger(AMQPUtils.class);
- private final static List<String> propertyNames =
Arrays.asList("amqp$contentType", "amqp$contentEncoding",
- "amqp$headers", "amqp$deliveryMode", "amqp$priority",
"amqp$correlationId", "amqp$replyTo",
- "amqp$expiration", "amqp$messageId", "amqp$timestamp",
"amqp$type", "amqp$userId", "amqp$appId",
- "amqp$clusterId");
- /**
- * Returns a {@link List} of AMQP property names defined in
- * {@link BasicProperties}
- */
- public static List<String> getAmqpPropertyNames() {
- return propertyNames;
+ public enum PropertyNames {
--- End diff --
+1 here, primarily due to the fact that now individual properties
(especially non-Sttring-value type) may need additional logic to help with
conversion and therefore would need to be individually referenced in several
places.
> 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)