[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-25 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on NIFI-2791:
--

Github user pvillard31 commented on the issue:

https://github.com/apache/nifi/pull/1157
  
+1 thanks @JPercivall ! Merged.


> Create a new Expression Language Function to support Java.lang.Math operations
> --
>
> Key: NIFI-2791
> URL: https://issues.apache.org/jira/browse/NIFI-2791
> Project: Apache NiFi
>  Issue Type: Improvement
>Reporter: Joseph Percivall
>Assignee: Joseph Percivall
> Fix For: 1.1.0
>
>
> Once EL is improved to support decimals (NIFI-1662) it will be desired to 
> support higher level math functions than are currently implemented. The 
> easiest way to do this is to provide access to the Math class[1]. This should 
> provide all the building blocks necessary to do any desired operations on 
> decimals.
> [1] https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html



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


[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-25 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on NIFI-2791:
--

Github user asfgit closed the pull request at:

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


> Create a new Expression Language Function to support Java.lang.Math operations
> --
>
> Key: NIFI-2791
> URL: https://issues.apache.org/jira/browse/NIFI-2791
> Project: Apache NiFi
>  Issue Type: Improvement
>Reporter: Joseph Percivall
>Assignee: Joseph Percivall
> Fix For: 1.1.0
>
>
> Once EL is improved to support decimals (NIFI-1662) it will be desired to 
> support higher level math functions than are currently implemented. The 
> easiest way to do this is to provide access to the Math class[1]. This should 
> provide all the building blocks necessary to do any desired operations on 
> decimals.
> [1] https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html



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


[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-25 Thread ASF subversion and git services (JIRA)

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

ASF subversion and git services commented on NIFI-2791:
---

Commit 1d74b5d3cea7cc844ebb97bb4af1d3c9110ed487 in nifi's branch 
refs/heads/master from [~JPercivall]
[ https://git-wip-us.apache.org/repos/asf?p=nifi.git;h=1d74b5d ]

NIFI-2791 Adding 'math' expression language function

This closes #1157.


> Create a new Expression Language Function to support Java.lang.Math operations
> --
>
> Key: NIFI-2791
> URL: https://issues.apache.org/jira/browse/NIFI-2791
> Project: Apache NiFi
>  Issue Type: Improvement
>Reporter: Joseph Percivall
>Assignee: Joseph Percivall
> Fix For: 1.1.0
>
>
> Once EL is improved to support decimals (NIFI-1662) it will be desired to 
> support higher level math functions than are currently implemented. The 
> easiest way to do this is to provide access to the Math class[1]. This should 
> provide all the building blocks necessary to do any desired operations on 
> decimals.
> [1] https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html



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


[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-25 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on NIFI-2791:
--

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

https://github.com/apache/nifi/pull/1157#discussion_r84855173
  
--- Diff: 
nifi-commons/nifi-expression-language/src/main/java/org/apache/nifi/attribute/expression/language/evaluation/functions/MathEvaluator.java
 ---
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.attribute.expression.language.evaluation.functions;
+
+import org.apache.nifi.attribute.expression.language.evaluation.Evaluator;
+import 
org.apache.nifi.attribute.expression.language.evaluation.NumberEvaluator;
+import 
org.apache.nifi.attribute.expression.language.evaluation.NumberQueryResult;
+import 
org.apache.nifi.attribute.expression.language.evaluation.QueryResult;
+import 
org.apache.nifi.attribute.expression.language.exception.AttributeExpressionLanguageException;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+public class MathEvaluator extends NumberEvaluator {
+
+private final Evaluator subject;
+private final Evaluator methodName;
+private final Evaluator optionalArg;
+
+public MathEvaluator(final Evaluator subject, final 
Evaluator methodName, final Evaluator optionalArg) {
+this.subject = subject;
+this.methodName = methodName;
+this.optionalArg = optionalArg;
+}
+
+@Override
+public QueryResult evaluate(final Map 
attributes) {
+final String methodNamedValue = 
methodName.evaluate(attributes).getValue();
+if (methodNamedValue == null) {
+return new NumberQueryResult(null);
+}
+
+final Number subjectValue;
+if(subject != null) {
+subjectValue = subject.evaluate(attributes).getValue();
+if(subjectValue == null){
+return new NumberQueryResult(null);
+}
+} else {
+subjectValue = null;
+}
+
+final Number optionalArgValue;
+if(optionalArg != null) {
+optionalArgValue = optionalArg.evaluate(attributes).getValue();
+
+if(optionalArgValue == null) {
+return new NumberQueryResult(null);
+}
+} else {
+optionalArgValue = null;
+}
+
+try {
+Number executionValue = null;
+
+if (subjectValue == null){
+Method method = Math.class.getMethod(methodNamedValue);
+
+if(method == null) {
+throw new AttributeExpressionLanguageException("Cannot 
evaluate 'math' function because no subjectless method was found with the 
name:'" + methodNamedValue + "'");
+}
+
+executionValue = (Number) method.invoke(null);
+} else if(optionalArg == null) {
+boolean subjectIsDecimal = subjectValue instanceof Double;
+Method method = Math.class.getMethod(methodNamedValue, 
subjectIsDecimal ? double.class : long.class);
--- End diff --

If I use:

${filename:math('exp')}

I'll get the following exception:


org.apache.nifi.attribute.expression.language.exception.AttributeExpressionLanguageException:
 Unable to calculate math function value
at 
org.apache.nifi.attribute.expression.language.evaluation.functions.MathEvaluator.evaluate(MathEvaluator.java:129)
 ~[nifi-expression-language-1.1.0-SNAPSHOT.jar:1.1.0-SNAPSHOT]
at 
org.apache.nifi.attribute.expression.language.Query.evaluate(Query.java:568) 
~[nifi-expression-language-1.1.0-SNAPSHOT.jar:1.1.0-SNAPSHOT]
at 

[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-24 Thread ASF GitHub Bot (JIRA)

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

ASF GitHub Bot commented on NIFI-2791:
--

GitHub user JPercivall opened a pull request:

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

NIFI-2791 Adding 'math' expression language function

Thank you for submitting a contribution to Apache NiFi.

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:

### For all changes:
- [x] Is there a JIRA ticket associated with this PR? Is it referenced 
 in the commit message?

- [x] Does your PR title start with NIFI- where  is the JIRA number 
you are trying to resolve? Pay particular attention to the hyphen "-" character.

- [x] Has your PR been rebased against the latest commit within the target 
branch (typically master)?

- [x] Is your initial contribution a single, squashed commit?

### For code changes:
- [x] Have you ensured that the full suite of tests is executed via mvn 
-Pcontrib-check clean install at the root nifi folder?
- [x] Have you written or updated unit tests to verify your changes?
- [x] If adding new dependencies to the code, are these dependencies 
licensed in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)? 
- [x] If applicable, have you updated the LICENSE file, including the main 
LICENSE file under nifi-assembly?
- [x] If applicable, have you updated the NOTICE file, including the main 
NOTICE file found under nifi-assembly?
- [x] If adding new Properties, have you added .displayName in addition to 
.name (programmatic access) for each of the new properties?

### For documentation related changes:
- [x] Have you ensured that format looks appropriate for the output in 
which it is rendered?

### Note:
Please ensure that once the PR is submitted, you check travis-ci for build 
issues and submit an update to your PR as soon as possible.



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

$ git pull https://github.com/JPercivall/nifi NIFI-2791

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

https://github.com/apache/nifi/pull/1157.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 #1157


commit 2c5a4fc193831464862a1a051c3a6b79dc651a9c
Author: jpercivall 
Date:   2016-10-20T14:58:53Z

NIFI-2791 Adding 'math' expression language function




> Create a new Expression Language Function to support Java.lang.Math operations
> --
>
> Key: NIFI-2791
> URL: https://issues.apache.org/jira/browse/NIFI-2791
> Project: Apache NiFi
>  Issue Type: Improvement
>Reporter: Joseph Percivall
>Assignee: Joseph Percivall
> Fix For: 1.1.0
>
>
> Once EL is improved to support decimals (NIFI-1662) it will be desired to 
> support higher level math functions than are currently implemented. The 
> easiest way to do this is to provide access to the Math class[1]. This should 
> provide all the building blocks necessary to do any desired operations on 
> decimals.
> [1] https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html



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


[jira] [Commented] (NIFI-2791) Create a new Expression Language Function to support Java.lang.Math operations

2016-10-13 Thread Joseph Percivall (JIRA)

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

Joseph Percivall commented on NIFI-2791:


With the pruning going on for 1.1.0 I'd like this to keep it's fix version. I 
have done much of the work for it already but it is blocked by NIFI-1662. So 
just need NIFI-1662 to be reviewed/merged (fix version of 1.1.0) and then I 
will rebase, finalize and open a PR. 

These go hand in hand and having this Math functionality will go a long way to 
facilitate numeric operations using EL.

> Create a new Expression Language Function to support Java.lang.Math operations
> --
>
> Key: NIFI-2791
> URL: https://issues.apache.org/jira/browse/NIFI-2791
> Project: Apache NiFi
>  Issue Type: Improvement
>Reporter: Joseph Percivall
>Assignee: Joseph Percivall
> Fix For: 1.1.0
>
>
> Once EL is improved to support decimals (NIFI-1662) it will be desired to 
> support higher level math functions than are currently implemented. The 
> easiest way to do this is to provide access to the Math class[1]. This should 
> provide all the building blocks necessary to do any desired operations on 
> decimals.
> [1] https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html



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