use of com.dexels.navajo.expression.api.FunctionDefinition in project navajo by Dexels.
the class TestCompiledLongExpression method testSubtractWithLongs.
@Test
public void testSubtractWithLongs() {
FunctionInterface helperFunction = new GiveLongTestFunction();
FunctionDefinition fd = new FunctionDefinition(helperFunction.getClass().getName(), "description", "input", "result");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("ToLong", fd);
Operand result;
result = Expression.evaluate("ToLong(2) - ToLong(1)", null, null, null);
Assert.assertEquals(1L, (long) result.value);
result = Expression.evaluate("2 - ToLong(1)", null, null, null);
Assert.assertEquals(1L, (long) result.value);
result = Expression.evaluate("ToLong(2) - 1", null, null, null);
Assert.assertEquals(1L, (long) result.value);
result = Expression.evaluate("2.0 - ToLong(1)", null, null, null);
Assert.assertEquals(1.0, (double) result.value, 0.000001);
result = Expression.evaluate("ToLong(2) - 1.0", null, null, null);
Assert.assertEquals(1.0, (double) result.value, 0.000001);
}
use of com.dexels.navajo.expression.api.FunctionDefinition in project navajo by Dexels.
the class TestCompiledPercentageExpression method setup.
@Before
public void setup() {
FunctionInterface giveLongFunction = new GiveLongTestFunction();
FunctionDefinition fd = new FunctionDefinition(giveLongFunction.getClass().getName(), "description", "input", "result");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("ToLong", fd);
FunctionInterface givePercentageFunction = new GivePercentageTestFunction();
fd = new FunctionDefinition(givePercentageFunction.getClass().getName(), "description", "input", "result");
FunctionFactoryFactory.getInstance().addExplicitFunctionDefinition("ToPercentage", fd);
}
use of com.dexels.navajo.expression.api.FunctionDefinition in project navajo by Dexels.
the class FunctionListCommand method functions.
public void functions(CommandSession session, String filter) {
String serviceFilter = null;
if (filter != null) {
serviceFilter = "(functionName=" + filter + ")";
}
session.getConsole().println("filter: " + filter);
try {
Collection<ServiceReference<FunctionInterface>> result = bundleContext.getServiceReferences(FunctionInterface.class, serviceFilter);
for (ServiceReference<FunctionInterface> serviceReference : result) {
String functionName = (String) serviceReference.getProperty("functionName");
FunctionDefinition fd = (FunctionDefinition) serviceReference.getProperty("functionDefinition");
session.getConsole().println("" + functionName);
session.getConsole().println("\t" + fd.getDescription());
// }
}
} catch (InvalidSyntaxException e) {
e.printStackTrace(session.getConsole());
}
}
use of com.dexels.navajo.expression.api.FunctionDefinition in project navajo by Dexels.
the class OsgiFunctionFactory method getAllFunctionElements.
@SuppressWarnings("rawtypes")
@Override
public List<XMLElement> getAllFunctionElements(String interfaceClass, String propertyKey) {
List<XMLElement> result = new ArrayList<>();
BundleContext context = Version.getDefaultBundleContext();
try {
ServiceReference[] refs = context.getServiceReferences(interfaceClass, null);
if (refs == null) {
logger.warn("Service enumeration failed class: {}", interfaceClass);
return null;
}
for (ServiceReference serviceReference : refs) {
Object o = serviceReference.getProperty(propertyKey);
FunctionDefinition fd = (FunctionDefinition) o;
XMLElement xe = fd.getXmlElement();
if (xe != null) {
result.add(xe);
}
}
} catch (InvalidSyntaxException e) {
logger.error("Error: ", e);
}
return result;
}
use of com.dexels.navajo.expression.api.FunctionDefinition in project navajo by Dexels.
the class OsgiFunctionFactory method getAllAdapterElements.
@SuppressWarnings("rawtypes")
@Override
public // TODO not ok, seems to return function elements
List<XMLElement> getAllAdapterElements(String interfaceClass, String propertyKey) {
List<XMLElement> result = new ArrayList<>();
BundleContext context = Version.getDefaultBundleContext();
try {
ServiceReference[] refs = context.getServiceReferences(interfaceClass, null);
if (refs == null) {
logger.warn("Service enumeration failed class: {}", interfaceClass);
return null;
}
for (ServiceReference serviceReference : refs) {
Object o = serviceReference.getProperty(propertyKey);
FunctionDefinition fd = (FunctionDefinition) o;
XMLElement xe = fd.getXmlElement();
if (xe != null) {
result.add(xe);
}
}
} catch (InvalidSyntaxException e) {
logger.error("Error: ", e);
}
return result;
}
Aggregations