Skip to content

Commit

Permalink
Initial commit JINJA transform
Browse files Browse the repository at this point in the history
Signed-off-by: Jochen Klein <git@jochen.susca.de>
  • Loading branch information
jochen314 committed Feb 23, 2019
1 parent 148eee7 commit d9f4ff8
Show file tree
Hide file tree
Showing 31 changed files with 891 additions and 0 deletions.
2 changes: 2 additions & 0 deletions addons/transform/.settings/org.eclipse.core.resources.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
4 changes: 4 additions & 0 deletions addons/transform/.settings/org.eclipse.m2e.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
11 changes: 11 additions & 0 deletions addons/transform/org.openhab.transform.jinja.test/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
28 changes: 28 additions & 0 deletions addons/transform/org.openhab.transform.jinja.test/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.openhab.transform.jinja.test</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Jinja Transformation Service Tests
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-SymbolicName: org.openhab.transform.jinja.test
Bundle-Vendor: openHAB
Bundle-Version: 2.5.0.qualifier
Fragment-Host: org.openhab.transform.jinja
Import-Package:
org.eclipse.jdt.annotation;resolution:=optional,
org.hamcrest;core=split,
org.hamcrest.core,
org.junit;version="4.0.0"
Automatic-Module-Name: org.openhab.transform.jinja.test
19 changes: 19 additions & 0 deletions addons/transform/org.openhab.transform.jinja.test/NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
This content is produced and maintained by the Eclipse SmartHome project.

* Project home: https://eclipse.org/smarthome/

== Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License 2.0 which is available at
https://www.eclipse.org/legal/epl-2.0/.

== Source Code

https://github.com/eclipse/smarthome

== Copyright Holders

See the NOTICE file distributed with the source code at
https://github.com/eclipse/smarthome/blob/master/NOTICE
for detailed information regarding copyright ownership.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
source.. = src/test/java/
output.. = target/test-classes/
bin.includes = META-INF/,\
.,\
NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
<setAttribute key="additional_plugins"/>
<booleanAttribute key="append.args" value="true"/>
<booleanAttribute key="askclear" value="false"/>
<booleanAttribute key="automaticAdd" value="false"/>
<booleanAttribute key="automaticValidate" value="true"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
<booleanAttribute key="clearConfig" value="true"/>
<booleanAttribute key="clearws" value="true"/>
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
<booleanAttribute key="default" value="false"/>
<stringAttribute key="featureDefaultLocation" value="workspace"/>
<stringAttribute key="featurePluginResolution" value="workspace"/>
<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/org.openhab.transform.jinja.test"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.openhab.transform.jinja.test"/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.openhab.transform.jinja.test"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
<booleanAttribute key="run_in_ui_thread" value="false"/>
<setAttribute key="selected_features">
<setEntry value="com.eclipsesource.jaxrs.connector.feature.source:default"/>
<setEntry value="com.eclipsesource.jaxrs.connector.feature:default"/>
<setEntry value="com.eclipsesource.jaxrs.jersey.runtime.feature.source:default"/>
<setEntry value="com.eclipsesource.jaxrs.jersey.runtime.feature:default"/>
<setEntry value="com.eclipsesource.jaxrs.provider.gson.feature.source:default"/>
<setEntry value="com.eclipsesource.jaxrs.provider.gson.feature:default"/>
<setEntry value="com.eclipsesource.jaxrs.provider.sse.feature.source:default"/>
<setEntry value="com.eclipsesource.jaxrs.provider.sse.feature:default"/>
<setEntry value="org.codehaus.groovy23.feature:default"/>
<setEntry value="org.eclipse.cvs.source:default"/>
<setEntry value="org.eclipse.cvs:default"/>
<setEntry value="org.eclipse.e4.rcp.source:default"/>
<setEntry value="org.eclipse.e4.rcp:default"/>
<setEntry value="org.eclipse.ecf.core.feature:default"/>
<setEntry value="org.eclipse.ecf.core.source.feature:default"/>
<setEntry value="org.eclipse.ecf.core.ssl.feature:default"/>
<setEntry value="org.eclipse.ecf.core.ssl.source.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.httpclient4.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.httpclient4.source.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.httpclient4.ssl.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.httpclient4.ssl.source.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.source.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.ssl.feature:default"/>
<setEntry value="org.eclipse.ecf.filetransfer.ssl.source.feature:default"/>
<setEntry value="org.eclipse.emf.codegen.ecore.source:default"/>
<setEntry value="org.eclipse.emf.codegen.ecore.ui.source:default"/>
<setEntry value="org.eclipse.emf.codegen.ecore.ui:default"/>
<setEntry value="org.eclipse.emf.codegen.ecore:default"/>
<setEntry value="org.eclipse.emf.codegen.source:default"/>
<setEntry value="org.eclipse.emf.codegen.ui.source:default"/>
<setEntry value="org.eclipse.emf.codegen.ui:default"/>
<setEntry value="org.eclipse.emf.codegen:default"/>
<setEntry value="org.eclipse.emf.common.source:default"/>
<setEntry value="org.eclipse.emf.common.ui.source:default"/>
<setEntry value="org.eclipse.emf.common.ui:default"/>
<setEntry value="org.eclipse.emf.common:default"/>
<setEntry value="org.eclipse.emf.converter.source:default"/>
<setEntry value="org.eclipse.emf.converter:default"/>
<setEntry value="org.eclipse.emf.databinding.edit.source:default"/>
<setEntry value="org.eclipse.emf.databinding.edit:default"/>
<setEntry value="org.eclipse.emf.databinding.source:default"/>
<setEntry value="org.eclipse.emf.databinding:default"/>
<setEntry value="org.eclipse.emf.doc.source:default"/>
<setEntry value="org.eclipse.emf.doc:default"/>
<setEntry value="org.eclipse.emf.ecore.edit.source:default"/>
<setEntry value="org.eclipse.emf.ecore.edit:default"/>
<setEntry value="org.eclipse.emf.ecore.editor.source:default"/>
<setEntry value="org.eclipse.emf.ecore.editor:default"/>
<setEntry value="org.eclipse.emf.ecore.source:default"/>
<setEntry value="org.eclipse.emf.ecore:default"/>
<setEntry value="org.eclipse.emf.edit.source:default"/>
<setEntry value="org.eclipse.emf.edit.ui.source:default"/>
<setEntry value="org.eclipse.emf.edit.ui:default"/>
<setEntry value="org.eclipse.emf.edit:default"/>
<setEntry value="org.eclipse.emf.mapping.ecore.editor.source:default"/>
<setEntry value="org.eclipse.emf.mapping.ecore.editor:default"/>
<setEntry value="org.eclipse.emf.mapping.ecore.source:default"/>
<setEntry value="org.eclipse.emf.mapping.ecore:default"/>
<setEntry value="org.eclipse.emf.mapping.source:default"/>
<setEntry value="org.eclipse.emf.mapping.ui.source:default"/>
<setEntry value="org.eclipse.emf.mapping.ui:default"/>
<setEntry value="org.eclipse.emf.mapping:default"/>
<setEntry value="org.eclipse.emf.mwe2.runtime.sdk.source:default"/>
<setEntry value="org.eclipse.emf.mwe2.runtime.sdk:default"/>
<setEntry value="org.eclipse.emf.sdk:default"/>
<setEntry value="org.eclipse.emf.source:default"/>
<setEntry value="org.eclipse.emf:default"/>
<setEntry value="org.eclipse.equinox.compendium.sdk:default"/>
<setEntry value="org.eclipse.equinox.core.feature:default"/>
<setEntry value="org.eclipse.equinox.core.sdk:default"/>
<setEntry value="org.eclipse.equinox.executable:default"/>
<setEntry value="org.eclipse.equinox.p2.core.feature.source:default"/>
<setEntry value="org.eclipse.equinox.p2.core.feature:default"/>
<setEntry value="org.eclipse.equinox.p2.extras.feature.source:default"/>
<setEntry value="org.eclipse.equinox.p2.extras.feature:default"/>
<setEntry value="org.eclipse.equinox.p2.rcp.feature.source:default"/>
<setEntry value="org.eclipse.equinox.p2.rcp.feature:default"/>
<setEntry value="org.eclipse.equinox.p2.user.ui.source:default"/>
<setEntry value="org.eclipse.equinox.p2.user.ui:default"/>
<setEntry value="org.eclipse.equinox.sdk:default"/>
<setEntry value="org.eclipse.equinox.server.core:default"/>
<setEntry value="org.eclipse.equinox.server.jetty:default"/>
<setEntry value="org.eclipse.equinox.server.p2:default"/>
<setEntry value="org.eclipse.equinox.serverside.sdk:default"/>
<setEntry value="org.eclipse.equinox.weaving.sdk:default"/>
<setEntry value="org.eclipse.help.source:default"/>
<setEntry value="org.eclipse.help:default"/>
<setEntry value="org.eclipse.jdt.source:default"/>
<setEntry value="org.eclipse.jdt:default"/>
<setEntry value="org.eclipse.pde.source:default"/>
<setEntry value="org.eclipse.pde:default"/>
<setEntry value="org.eclipse.platform.source:default"/>
<setEntry value="org.eclipse.platform:default"/>
<setEntry value="org.eclipse.rcp.configuration:default"/>
<setEntry value="org.eclipse.rcp.source:default"/>
<setEntry value="org.eclipse.rcp:default"/>
<setEntry value="org.eclipse.sdk:default"/>
<setEntry value="org.eclipse.xtend.sdk:default"/>
<setEntry value="org.eclipse.xtext.docs:default"/>
<setEntry value="org.eclipse.xtext.examples.source:default"/>
<setEntry value="org.eclipse.xtext.examples:default"/>
<setEntry value="org.eclipse.xtext.runtime.source:default"/>
<setEntry value="org.eclipse.xtext.runtime:default"/>
<setEntry value="org.eclipse.xtext.sdk:default"/>
<setEntry value="org.eclipse.xtext.ui.source:default"/>
<setEntry value="org.eclipse.xtext.ui:default"/>
<setEntry value="org.eclipse.xtext.xbase.lib.source:default"/>
<setEntry value="org.eclipse.xtext.xbase.lib:default"/>
<setEntry value="org.eclipse.xtext.xbase.source:default"/>
<setEntry value="org.eclipse.xtext.xbase:default"/>
<setEntry value="org.eclipse.xtext.xtext.ui.source:default"/>
<setEntry value="org.eclipse.xtext.xtext.ui:default"/>
<setEntry value="org.jupnp.feature:default"/>
</setAttribute>
<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.gson@default:default,com.google.guava@default:default,com.google.inject@default:default,javax.inject@default:default,javax.measure.unit-api@default:default,javax.transaction@default:false,javax.xml@default:default,net.bytebuddy.byte-buddy-agent@default:default,net.bytebuddy.byte-buddy@default:default,net.minidev.json-smart@default:default,org.antlr.runtime@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.io@default:default,org.apache.commons.lang@default:default,org.apache.felix.scr@1:true,org.eclipse.core.contenttype@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.hamcrest.integration@default:default,org.hamcrest.library@default:default,org.hamcrest.text@default:default,org.hamcrest@default:default,org.junit@default:default,org.mockito.mockito-core@default:default,org.objectweb.asm@default:default,org.objenesis@default:default,org.slf4j.api@default:default,org.slf4j.jul@default:default,org.slf4j.log4j@default:default,tec.uom.lib.uom-lib-common@default:default,tec.uom.se@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.smarthome.config.core@default:default,org.eclipse.smarthome.core.thing@default:default,org.eclipse.smarthome.core.transform@default:true,org.eclipse.smarthome.core@default:default,org.eclipse.smarthome.io.console@default:default,org.openhab.transform.jinja.test@default::default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfig" value="true"/>
<booleanAttribute key="useDefaultConfigArea" value="false"/>
<booleanAttribute key="useProduct" value="false"/>
</launchConfiguration>
34 changes: 34 additions & 0 deletions addons/transform/org.openhab.transform.jinja.test/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.openhab.transform</groupId>
<artifactId>pom</artifactId>
<version>2.5.0-SNAPSHOT</version>
</parent>
<groupId>org.openhab.transform</groupId>
<artifactId>org.openhab.transform.jinja.test</artifactId>

<packaging>eclipse-test-plugin</packaging>

<name>Jinja Transformation Service Tests</name>

<build>
<plugins>
<plugin>
<groupId>${tycho-groupid}</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<environments combine.self="override"></environments>
</configuration>
</plugin>
<plugin>
<groupId>${tycho-groupid}</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/**
* Copyright (c) 2014,2018 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.transform.jinja.internal;

import org.eclipse.smarthome.core.transform.TransformationException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
* @author Jochen Klein - Initial contribution
*/
public class JinjaTransformationServiceTest {

private JinjaTransformationService processor;

@Before
public void init() {
processor = new JinjaTransformationService();
}

@Test
public void testTransformByJSon() throws TransformationException {

String json = "{\"Time\":\"2019-01-05T22:45:12\",\"AM2301\":{\"Temperature\":4.7,\"Humidity\":99.9},\"TempUnit\":\"C\"}";
// method under test
String transformedResponse = processor.transform("{{value_json['AM2301'].Temperature}}", json);

// Asserts
Assert.assertEquals("4.7", transformedResponse);
}

@Test
public void testStringOnly() throws TransformationException {

String value = "world";
// method under test
String transformedResponse = processor.transform("Hello {{ value }}!", value);

// Asserts
Assert.assertEquals("Hello world!", transformedResponse);
}

@Test
public void testQuotedStringOnly() throws TransformationException {

String value = "\"world\"";
// method under test
String transformedResponse = processor.transform("Hello {{ value_json }}!", value);

// Asserts
Assert.assertEquals("Hello world!", transformedResponse);
}

}
15 changes: 15 additions & 0 deletions addons/transform/org.openhab.transform.jinja/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.8.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jackson-annotations-2.9.8.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jackson-core-2.9.8.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jackson-databind-2.9.8.jar"/>
<classpathentry exported="true" kind="lib" path="lib/re2j-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jsoup-1.11.3.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry exported="true" kind="lib" path="lib/jinjava-2.4.12.jar" sourcepath="C:/Users/Jochen/.m2/repository/com/hubspot/jinjava/jinjava/2.4.12/jinjava-2.4.12-sources.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Loading

0 comments on commit d9f4ff8

Please sign in to comment.