diff options
Diffstat (limited to 'template-node')
12 files changed, 0 insertions, 571 deletions
diff --git a/template-node/installer/pom.xml b/template-node/installer/pom.xml deleted file mode 100644 index c6ed6312f..000000000 --- a/template-node/installer/pom.xml +++ /dev/null @@ -1,125 +0,0 @@ -<?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/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>odlparent-lite</artifactId> - <version>2.1.0</version> - </parent> - - <groupId>org.onap.ccsdk.sli.plugins</groupId> - <artifactId>template-node-installer</artifactId> - <version>1.1.1-SNAPSHOT</version> - <packaging>pom</packaging> - - <name>ccsdk-sli-plugins :: template-node :: ${project.artifactId}</name> - - <properties> - <application.name>ccsdk-template-node</application.name> - <features.boot>${application.name}</features.boot> - <features.repositories>mvn:org.onap.ccsdk.sli.plugins/${features.boot}/${project.version}/xml/features</features.repositories> - <include.transitive.dependencies>false</include.transitive.dependencies> - </properties> - - <dependencies> - <dependency> - <groupId>org.onap.ccsdk.sli.plugins</groupId> - <artifactId>template-node-provider</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>2.6</version> - <executions> - <execution> - <id>maven-repo-zip</id> - <goals> - <goal>single</goal> - </goals> - <phase>package</phase> - <configuration> - <attach>true</attach> - <finalName>stage/${application.name}-${project.version}</finalName> - <descriptors> - <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> - </descriptors> - <appendAssemblyId>true</appendAssemblyId> - </configuration> - </execution> - <execution> - <id>installer-zip</id> - <goals> - <goal>single</goal> - </goals> - <phase>package</phase> - <configuration> - <attach>true</attach> - <finalName>${application.name}-${project.version}-installer</finalName> - <descriptors> - <descriptor>src/assembly/assemble_installer_zip.xml</descriptor> - </descriptors> - <appendAssemblyId>false</appendAssemblyId> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-dependencies</id> - <goals> - <goal>copy-dependencies</goal> - </goals> - <phase>prepare-package</phase> - <configuration> - <transitive>false</transitive> - <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - <overWriteIfNewer>true</overWriteIfNewer> - <useRepositoryLayout>true</useRepositoryLayout> - <addParentPoms>false</addParentPoms> - <copyPom>false</copyPom> - <includeGroupIds>org.onap.ccsdk.sli.plugins</includeGroupIds> - <scope>provided</scope> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <artifactId>maven-resources-plugin</artifactId> - <version>2.6</version> - <executions> - <execution> - <id>copy-version</id> - <goals> - <goal>copy-resources</goal> - </goals><!-- here the phase you need --> - <phase>validate</phase> - <configuration> - <outputDirectory>${basedir}/target/stage</outputDirectory> - <resources> - <resource> - <directory>src/main/resources/scripts</directory> - <includes> - <include>install-feature.sh</include> - </includes> - <filtering>true</filtering> - </resource> - </resources> - </configuration> - </execution> - - </executions> - </plugin> - - </plugins> - </build> -</project> diff --git a/template-node/installer/src/assembly/assemble_installer_zip.xml b/template-node/installer/src/assembly/assemble_installer_zip.xml deleted file mode 100644 index d7a0a630d..000000000 --- a/template-node/installer/src/assembly/assemble_installer_zip.xml +++ /dev/null @@ -1,58 +0,0 @@ -<!-- - ============LICENSE_START======================================================= - openECOMP : SDN-C - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights - reserved. - ================================================================================ - Licensed 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. - ============LICENSE_END========================================================= - --> - -<!-- Defines how we build the .zip file which is our distribution. --> - -<assembly - xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> - <id>installer_zip</id> - <formats> - <format>zip</format> - </formats> - - <!-- we want "system" and related files right at the root level as this - file is suppose to be unzip on top of a karaf distro. --> - <includeBaseDirectory>false</includeBaseDirectory> - - <fileSets> - <fileSet> - <directory>target/stage/</directory> - <outputDirectory>${application.name}</outputDirectory> - <fileMode>755</fileMode> - <includes> - <include>*.sh</include> - </includes> - </fileSet> - <fileSet> - <directory>target/stage/</directory> - <outputDirectory>${application.name}</outputDirectory> - <fileMode>644</fileMode> - <excludes> - <exclude>*.sh</exclude> - </excludes> - </fileSet> - </fileSets> - - - -</assembly> diff --git a/template-node/installer/src/assembly/assemble_mvnrepo_zip.xml b/template-node/installer/src/assembly/assemble_mvnrepo_zip.xml deleted file mode 100644 index 7500304e8..000000000 --- a/template-node/installer/src/assembly/assemble_mvnrepo_zip.xml +++ /dev/null @@ -1,48 +0,0 @@ -<!-- - ============LICENSE_START======================================================= - openECOMP : SDN-C - ================================================================================ - Copyright (C) 2017 AT&T Intellectual Property. All rights - reserved. - ================================================================================ - Licensed 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. - ============LICENSE_END========================================================= - --> - -<!-- Defines how we build the .zip file which is our distribution. --> - -<assembly - xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> - <id>repo</id> - <formats> - <format>zip</format> - </formats> - - <!-- we want "system" and related files right at the root level as this - file is suppose to be unzip on top of a karaf distro. --> - <includeBaseDirectory>false</includeBaseDirectory> - - <fileSets> - <fileSet> - <directory>target/assembly/</directory> - <outputDirectory>.</outputDirectory> - <excludes> - </excludes> - </fileSet> - </fileSets> - - - -</assembly> diff --git a/template-node/installer/src/main/resources/scripts/install-feature.sh b/template-node/installer/src/main/resources/scripts/install-feature.sh deleted file mode 100644 index 98276a7e0..000000000 --- a/template-node/installer/src/main/resources/scripts/install-feature.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -### -# ============LICENSE_START======================================================= -# openECOMP : SDN-C -# ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights -# reserved. -# ================================================================================ -# Licensed 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. -# ============LICENSE_END========================================================= -### - -ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} -ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client} -INSTALLERDIR=$(dirname $0) - -REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip - -if [ -f ${REPOZIP} ] -then - unzip -nd ${ODL_HOME} ${REPOZIP} -else - echo "ERROR : repo zip ($REPOZIP) not found" - exit 1 -fi - -${ODL_KARAF_CLIENT} feature:repo-add ${features.repositories} -${ODL_KARAF_CLIENT} feature:install ${features.boot} diff --git a/template-node/pom.xml b/template-node/pom.xml deleted file mode 100644 index 615c5d348..000000000 --- a/template-node/pom.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>odlparent-lite</artifactId> - <version>2.1.0</version> - </parent> - - <groupId>org.onap.ccsdk.sli.plugins</groupId> - <artifactId>template-node</artifactId> - <version>1.1.1-SNAPSHOT</version> - <packaging>pom</packaging> - - <modules> - <module>provider</module> - <module>installer</module> - </modules> -</project> diff --git a/template-node/provider/pom.xml b/template-node/provider/pom.xml deleted file mode 100644 index d7bc54fc6..000000000 --- a/template-node/provider/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?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/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>binding-parent</artifactId> - <version>2.1.0</version> - </parent> - - <groupId>org.onap.ccsdk.sli.plugins</groupId> - <artifactId>template-node-provider</artifactId> - <version>1.1.1-SNAPSHOT</version> - <packaging>bundle</packaging> - - <name>ccsdk-sli-plugins :: template-node :: ${project.artifactId}</name> - - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-core-artifacts</artifactId> - <version>${ccsdk.sli.core.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-common</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - </dependency> - <dependency> - <groupId>org.apache.velocity</groupId> - <artifactId>velocity</artifactId> - </dependency> - </dependencies> -</project> diff --git a/template-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/template/TemplateNode.java b/template-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/template/TemplateNode.java deleted file mode 100755 index 005b62067..000000000 --- a/template-node/provider/src/main/java/org/onap/ccsdk/sli/plugins/template/TemplateNode.java +++ /dev/null @@ -1,114 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : SDN-C - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * Modifications Copyright © 2018 IBM. - * ================================================================================ - * Licensed 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.ccsdk.sli.plugins.template; - -import java.io.FileInputStream; -import java.io.StringWriter; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class TemplateNode implements SvcLogicJavaPlugin { - private static final Logger logger = LoggerFactory.getLogger(TemplateNode.class); - public static final String TEMPLATE_PATH = "templatePath"; - public static final String OUTPUT_PATH_KEY = "output"; - public static final String PREFIX_KEY = "prefix"; - public static final String REQUIRED_PARAMETERS_ERROR_MESSAGE = "templateName & outputPath are required fields"; - protected static final String TEMPLATE_PROPERTIES_FILE_NAME = "template-node.properties"; - protected static final String DEFAULT_PROPERTIES_DIR = "/opt/onap/ccsdk/data/properties"; - protected static final String PROPERTIES_DIR_KEY = "SDNC_CONFIG_DIR"; - - protected VelocityEngine ve; - - public TemplateNode() { - ve = new VelocityEngine(); - setProperties(); - ve.init(); - } - - protected void setProperties() { - String configDir = System.getProperty(PROPERTIES_DIR_KEY, DEFAULT_PROPERTIES_DIR); - Properties props = new Properties(); - - try (FileInputStream in = new FileInputStream(configDir + "/" + TEMPLATE_PROPERTIES_FILE_NAME)) { - props.load(in); - } catch (Exception e) { - logger.warn("Properties not loaded for template node, using sensible defaults. " + e.getMessage()); - } - - // give sensible defaults for required properties - ve.setProperty(RuntimeConstants.RESOURCE_LOADER, props.getProperty("velocity.resource.loader", "file")); - ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, - props.getProperty("velocity.file.resource.loader.path", "/opt/onap/sdnc/restapi/templates")); - ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, - props.getProperty("velocity.file.resource.loader.cache", "false")); - - // allow flexible reading of additional velocity properties - for (String propertyName : props.stringPropertyNames()) { - if (propertyName.startsWith("velocity")) { - logger.error("set " + propertyName.substring(9) + "=" + props.get(propertyName)); - ve.setProperty(propertyName.substring(9), props.get(propertyName)); - } - } - } - - public void evaluateTemplate(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException { - String templateName = params.get(TEMPLATE_PATH); - String outputPath = params.get(OUTPUT_PATH_KEY); - String prefix = params.get(PREFIX_KEY); - - if (prefix != null && prefix.length() > 0) { - outputPath = prefix + "." + outputPath; - } - - if (templateName == null || outputPath == null) { - throw new SvcLogicException(REQUIRED_PARAMETERS_ERROR_MESSAGE); - } else { - try { - Template template = ve.getTemplate(templateName); - VelocityContext context = new VelocityContext(); - context.put("ctx", ctx); - context.put("params", params); - //Adding these values directly to context makes working with the values cleaner - for (Entry<String, String> entry : params.entrySet()) { - context.put(entry.getKey(), entry.getValue()); - } - StringWriter sw = new StringWriter(); - template.merge(context, sw); - ctx.setAttribute(outputPath, sw.toString()); - } catch (Exception e) { - throw new SvcLogicException(e.getMessage()); - } - } - } - -} diff --git a/template-node/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/template-node/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml deleted file mode 100644 index 60409c504..000000000 --- a/template-node/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> - - <bean id="templateNode" - class="org.onap.ccsdk.sli.plugins.template.TemplateNode" /> - - <service id="templateNodeService" ref="templateNode" - interface="org.onap.ccsdk.sli.plugins.template.TemplateNode" /> - -</blueprint>
\ No newline at end of file diff --git a/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/MockTemplateNode.java b/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/MockTemplateNode.java deleted file mode 100644 index d628ac929..000000000 --- a/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/MockTemplateNode.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.onap.ccsdk.sli.plugins.template; - -public class MockTemplateNode extends TemplateNode { - protected void setProperties() { - // do nothing - } -} diff --git a/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/TemplateNodeTest.java b/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/TemplateNodeTest.java deleted file mode 100644 index 29c5c973e..000000000 --- a/template-node/provider/src/test/java/org/onap/ccsdk/sli/plugins/template/TemplateNodeTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.onap.ccsdk.sli.plugins.template; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import java.util.HashMap; -import java.util.Map; -import java.util.Vector; -import org.apache.velocity.runtime.RuntimeConstants; -import org.junit.Test; -import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; - -public class TemplateNodeTest { - - @Test - public void sunnyDay() throws Exception { - String requestId = "REQ001"; - String uniqueKey = "UNIQUE_TEST"; - String action = "uPdaTe"; - String serviceType = "VPN"; - - TemplateNode t = new MockTemplateNode(); - - Map<String, String> params = new HashMap<String, String>(); - params.put(TemplateNode.PREFIX_KEY, "output"); - params.put(TemplateNode.OUTPUT_PATH_KEY, "mycontainer"); - params.put(TemplateNode.TEMPLATE_PATH, "src/test/resources/basic.vtl"); - params.put("service-type", serviceType); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("input.svc-request-id", requestId); - ctx.setAttribute("input.unique-key", uniqueKey); - ctx.setAttribute("action", action); - - t.evaluateTemplate(params, ctx); - String result = ctx.getAttribute("output.mycontainer"); - assertNotNull(result); - assertTrue(result.contains(requestId)); - assertTrue(result.contains(uniqueKey)); - assertTrue(result.contains(action.toUpperCase())); - assertTrue(result.contains(serviceType)); - } - - @Test(expected = SvcLogicException.class) - public void parameterException() throws Exception { - TemplateNode t = new MockTemplateNode(); - Map<String, String> params = new HashMap<String, String>(); - SvcLogicContext ctx = new SvcLogicContext(); - t.evaluateTemplate(params, ctx); - } - - @Test(expected = SvcLogicException.class) - public void missingTemplate() throws Exception { - TemplateNode t = new MockTemplateNode(); - Map<String, String> params = new HashMap<String, String>(); - params.put(TemplateNode.PREFIX_KEY, "output"); - params.put(TemplateNode.OUTPUT_PATH_KEY, "mycontainer"); - params.put(TemplateNode.TEMPLATE_PATH, "src/test/resources/missing.vtl"); - SvcLogicContext ctx = new SvcLogicContext(); - t.evaluateTemplate(params, ctx); - } - - @Test - public void withProperties() throws Exception { - System.setProperty(TemplateNode.PROPERTIES_DIR_KEY, "src/test/resources"); - TemplateNode t = new TemplateNode(); - Vector<String> loader = (Vector<String>) t.ve.getProperty(RuntimeConstants.RESOURCE_LOADER); - assertTrue(loader.contains("class")); - assertEquals("/home/my/example", t.ve.getProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH)); - assertEquals("true", t.ve.getProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE)); - assertEquals("customValue", t.ve.getProperty("custom.property")); - } - - @Test - public void withNoProperties() throws Exception { - System.setProperty(TemplateNode.PROPERTIES_DIR_KEY, "i/do/not/exist"); - TemplateNode t = new TemplateNode(); - Vector<String> loader = (Vector<String>) t.ve.getProperty(RuntimeConstants.RESOURCE_LOADER); - assertTrue(loader.contains("file")); - assertEquals("/opt/onap/sdnc/restapi/templates", t.ve.getProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH)); - assertEquals("false", t.ve.getProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE)); - assertEquals(null, t.ve.getProperty("custom.property")); - } - -}
\ No newline at end of file diff --git a/template-node/provider/src/test/resources/basic.vtl b/template-node/provider/src/test/resources/basic.vtl deleted file mode 100644 index 63fcc670a..000000000 --- a/template-node/provider/src/test/resources/basic.vtl +++ /dev/null @@ -1,12 +0,0 @@ -{ - "input": { - "sdnc-request-header": { - "svc-request-id": "$ctx.getAttribute("input.svc-request-id")", - "svc-action": "$ctx.getAttribute("action").toUpperCase()" - }, - "service-information": { - "service-type": "$params.get("service-type")", - "service-instance-id": "$ctx.getAttribute("input.unique-key")" - } - } -}
\ No newline at end of file diff --git a/template-node/provider/src/test/resources/template-node.properties b/template-node/provider/src/test/resources/template-node.properties deleted file mode 100644 index 1199a0cde..000000000 --- a/template-node/provider/src/test/resources/template-node.properties +++ /dev/null @@ -1,4 +0,0 @@ -velocity.resource.loader=class -velocity.file.resource.loader.path=/home/my/example -velocity.file.resource.loader.cache=true -velocity.custom.property=customValue
\ No newline at end of file |