You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/07/14 11:10:40 UTC
svn commit: r1690881 - in
/sling/trunk/tooling/support/provisioning-model/src:
main/java/org/apache/sling/provisioning/model/
test/java/org/apache/sling/provisioning/model/
Author: sseifert
Date: Tue Jul 14 09:10:39 2015
New Revision: 1690881
URL: http://svn.apache.org/r1690881
Log:
SLING-4879 move resolver/replace logic to separate class ModelResolverUtility
Added:
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java (with props)
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelResolveUtilityReplaceTest.java
- copied, changed from r1690877, sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityReplaceTest.java
Removed:
sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityReplaceTest.java
Modified:
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java
sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java?rev=1690881&r1=1690880&r2=1690881&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java Tue Jul 14 09:10:39 2015
@@ -18,11 +18,16 @@
*/
package org.apache.sling.provisioning.model;
+import static org.apache.sling.provisioning.model.ModelResolveUtility.getProcessedConfiguration;
+import static org.apache.sling.provisioning.model.ModelResolveUtility.replace;
+import static org.apache.sling.provisioning.model.ModelResolveUtility.resolveArtifactVersion;
+
import java.util.Map.Entry;
import org.apache.sling.provisioning.model.ModelUtility.ResolverOptions;
import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
+
class EffectiveModelProcessor extends ModelProcessor {
private final ResolverOptions options;
@@ -36,12 +41,12 @@ class EffectiveModelProcessor extends Mo
@Override
protected Artifact processArtifact(Artifact artifact, Feature newFeature, RunMode newRunMode) {
- final String groupId = ModelUtility.replace(newFeature, artifact.getGroupId(), options.getVariableResolver());
- final String artifactId = ModelUtility.replace(newFeature, artifact.getArtifactId(), options.getVariableResolver());
- final String version = ModelUtility.replace(newFeature, artifact.getVersion(), options.getVariableResolver());
- final String classifier = ModelUtility.replace(newFeature, artifact.getClassifier(), options.getVariableResolver());
- final String type = ModelUtility.replace(newFeature, artifact.getType(), options.getVariableResolver());
- final String resolvedVersion = ModelUtility.resolveArtifactVersion(groupId, artifactId, version, classifier, type,
+ final String groupId = replace(newFeature, artifact.getGroupId(), options.getVariableResolver());
+ final String artifactId = replace(newFeature, artifact.getArtifactId(), options.getVariableResolver());
+ final String version = replace(newFeature, artifact.getVersion(), options.getVariableResolver());
+ final String classifier = replace(newFeature, artifact.getClassifier(), options.getVariableResolver());
+ final String type = replace(newFeature, artifact.getType(), options.getVariableResolver());
+ final String resolvedVersion = resolveArtifactVersion(groupId, artifactId, version, classifier, type,
options.getArtifactVersionResolver());
return new Artifact(groupId, artifactId, resolvedVersion, classifier, type);
}
@@ -49,7 +54,7 @@ class EffectiveModelProcessor extends Mo
@Override
protected Configuration processConfiguration(Configuration config, Feature newFeature, RunMode newRunMode) {
Configuration newConfig = new Configuration(config.getPid(), config.getFactoryPid());
- ModelUtility.getProcessedConfiguration(newFeature, newConfig, config, options.getVariableResolver());
+ getProcessedConfiguration(newFeature, newConfig, config, options.getVariableResolver());
return newConfig;
}
@@ -57,7 +62,7 @@ class EffectiveModelProcessor extends Mo
protected KeyValueMap<String> processSettings(KeyValueMap<String> settings, final Feature newFeature, final RunMode newRunMode) {
KeyValueMap<String> newSettings = new KeyValueMap<String>();
for (final Entry<String, String> entry : settings) {
- newSettings.put(entry.getKey(), ModelUtility.replace(newFeature, entry.getValue(),
+ newSettings.put(entry.getKey(), replace(newFeature, entry.getValue(),
new VariableResolver() {
@Override
public String resolve(final Feature feature, final String name) {
Added: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java?rev=1690881&view=auto
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java (added)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java Tue Jul 14 09:10:39 2015
@@ -0,0 +1,190 @@
+/*
+ * 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.sling.provisioning.model;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.StringReader;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import org.apache.felix.cm.file.ConfigurationHandler;
+import org.apache.sling.provisioning.model.ModelUtility.ArtifactVersionResolver;
+import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
+
+class ModelResolveUtility {
+
+ /**
+ * Replace properties in the string.
+ *
+ * @param feature The feature
+ * @param v The variable name
+ * @param resolver Optional resolver
+ * @result The value of the variable
+ * @throws IllegalArgumentException If variable can't be found.
+ */
+ static String replace(final Feature feature, final String v, final VariableResolver resolver) {
+ if ( v == null ) {
+ return null;
+ }
+ String msg = v;
+ // check for variables
+ int pos = -1;
+ int start = 0;
+ while ( ( pos = msg.indexOf('$', start) ) != -1 ) {
+ boolean escapedVariable = (pos > 0 && msg.charAt(pos - 1) == '\\');
+ if ( msg.length() > pos && msg.charAt(pos + 1) == '{' && (pos == 0 || msg.charAt(pos - 1) != '$') ) {
+ final int endPos = msg.indexOf('}', pos);
+ if ( endPos != -1 ) {
+ final String name = msg.substring(pos + 2, endPos);
+ final String value;
+ if (escapedVariable) {
+ value = "\\${" + name + "}";
+ } else if ( resolver != null ) {
+ value = resolver.resolve(feature, name);
+ } else {
+ value = feature.getVariables().get(name);
+ }
+ if ( value == null ) {
+ throw new IllegalArgumentException("Unknown variable: " + name);
+ }
+ int startPos = escapedVariable ? pos - 1 : pos;
+ msg = msg.substring(0, startPos) + value + msg.substring(endPos + 1);
+ }
+ }
+ start = pos + 1;
+ }
+ return msg;
+ }
+
+ /**
+ * Tries to resolves artifact version via {@link ArtifactVersionResolver} if no version was defined in provisioning file.
+ * @param groupId Group ID
+ * @param artifactId Artifact ID
+ * @param version Version
+ * @param classifier Classifier
+ * @param type Type
+ * @param artifactVersionResolver Artifact Version Resolver (may be null)
+ * @return Version to use for this artifact
+ */
+ static String resolveArtifactVersion(final String groupId, final String artifactId, final String version,
+ final String classifier, final String type, ArtifactVersionResolver artifactVersionResolver) {
+ if (artifactVersionResolver != null && "LATEST".equals(version)) {
+ String newVersion = artifactVersionResolver.resolve(new Artifact(groupId, artifactId, version, classifier, type));
+ if (newVersion != null) {
+ return newVersion;
+ }
+ }
+ return version;
+ }
+
+ /**
+ * Replaces variables in configuration.
+ * @param feature Feature
+ * @param newConfig New configuration with replaced variables
+ * @param config Source configuration which may contain variable placeholders
+ * @param resolver Variable resolver
+ */
+ static void getProcessedConfiguration(
+ final Feature feature,
+ final Configuration newConfig,
+ final Configuration config,
+ final VariableResolver resolver) {
+ newConfig.setComment(config.getComment());
+ newConfig.setLocation(config.getLocation());
+
+ // check for raw configuration
+ String rawConfig = (String)config.getProperties().get(ModelConstants.CFG_UNPROCESSED);
+ if ( rawConfig != null ) {
+ if ( resolver != null ) {
+ rawConfig = replace(feature, rawConfig, resolver);
+ }
+ if ( config.isSpecial() ) {
+ newConfig.getProperties().put(config.getPid(), rawConfig);
+ } else {
+ final String format = (String)config.getProperties().get(ModelConstants.CFG_UNPROCESSED_FORMAT);
+
+ if ( ModelConstants.CFG_FORMAT_PROPERTIES.equals(format) ) {
+ // properties
+ final Properties props = new Properties();
+ try {
+ props.load(new StringReader(rawConfig));
+ } catch ( final IOException ioe) {
+ throw new IllegalArgumentException("Unable to read configuration properties.", ioe);
+ }
+ final Enumeration<Object> i = props.keys();
+ while ( i.hasMoreElements() ) {
+ final String key = (String)i.nextElement();
+ newConfig.getProperties().put(key, props.get(key));
+ }
+ } else {
+ // Apache Felix CA format
+ // the raw format might have comments, we have to remove them first
+ final StringBuilder sb = new StringBuilder();
+ try {
+ final LineNumberReader lnr = new LineNumberReader(new StringReader(rawConfig));
+ String line = null;
+ while ((line = lnr.readLine()) != null ) {
+ line = line.trim();
+ if ( line.isEmpty() || line.startsWith("#")) {
+ continue;
+ }
+ sb.append(line);
+ sb.append('\n');
+ }
+ } catch ( final IOException ioe) {
+ throw new IllegalArgumentException("Unable to read configuration properties: " + config, ioe);
+ }
+
+ ByteArrayInputStream bais = null;
+ try {
+ bais = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
+ @SuppressWarnings("unchecked")
+ final Dictionary<String, Object> props = ConfigurationHandler.read(bais);
+ final Enumeration<String> i = props.keys();
+ while ( i.hasMoreElements() ) {
+ final String key = i.nextElement();
+ newConfig.getProperties().put(key, props.get(key));
+ }
+ } catch ( final IOException ioe) {
+ throw new IllegalArgumentException("Unable to read configuration properties: " + config, ioe);
+ } finally {
+ if ( bais != null ) {
+ try {
+ bais.close();
+ } catch ( final IOException ignore ) {
+ // ignore
+ }
+ }
+ }
+ }
+ }
+ } else {
+ // simply copy
+ final Enumeration<String> i = config.getProperties().keys();
+ while ( i.hasMoreElements() ) {
+ final String key = i.nextElement();
+ newConfig.getProperties().put(key, config.getProperties().get(key));
+ }
+ }
+ }
+
+}
Propchange: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Tue Jul 14 09:10:39 2015
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelResolveUtility.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java?rev=1690881&r1=1690880&r2=1690881&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java Tue Jul 14 09:10:39 2015
@@ -16,22 +16,15 @@
*/
package org.apache.sling.provisioning.model;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.StringReader;
+import static org.apache.sling.provisioning.model.ModelResolveUtility.getProcessedConfiguration;
+
import java.util.Arrays;
-import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
-import org.apache.felix.cm.file.ConfigurationHandler;
-
-
/**
* Merge two models
*/
@@ -349,70 +342,6 @@ public abstract class ModelUtility {
}
/**
- * Replace properties in the string.
- *
- * @param feature The feature
- * @param v The variable name
- * @param resolver Optional resolver
- * @result The value of the variable
- * @throws IllegalArgumentException If variable can't be found.
- */
- static String replace(final Feature feature, final String v, final VariableResolver resolver) {
- if ( v == null ) {
- return null;
- }
- String msg = v;
- // check for variables
- int pos = -1;
- int start = 0;
- while ( ( pos = msg.indexOf('$', start) ) != -1 ) {
- boolean escapedVariable = (pos > 0 && msg.charAt(pos - 1) == '\\');
- if ( msg.length() > pos && msg.charAt(pos + 1) == '{' && (pos == 0 || msg.charAt(pos - 1) != '$') ) {
- final int endPos = msg.indexOf('}', pos);
- if ( endPos != -1 ) {
- final String name = msg.substring(pos + 2, endPos);
- final String value;
- if (escapedVariable) {
- value = "\\${" + name + "}";
- } else if ( resolver != null ) {
- value = resolver.resolve(feature, name);
- } else {
- value = feature.getVariables().get(name);
- }
- if ( value == null ) {
- throw new IllegalArgumentException("Unknown variable: " + name);
- }
- int startPos = escapedVariable ? pos - 1 : pos;
- msg = msg.substring(0, startPos) + value + msg.substring(endPos + 1);
- }
- }
- start = pos + 1;
- }
- return msg;
- }
-
- /**
- * Tries to resolves artifact version via {@link ArtifactVersionResolver} if no version was defined in provisioning file.
- * @param groupId Group ID
- * @param artifactId Artifact ID
- * @param version Version
- * @param classifier Classifier
- * @param type Type
- * @param artifactVersionResolver Artifact Version Resolver (may be null)
- * @return Version to use for this artifact
- */
- static String resolveArtifactVersion(final String groupId, final String artifactId, final String version,
- final String classifier, final String type, ArtifactVersionResolver artifactVersionResolver) {
- if (artifactVersionResolver != null && "LATEST".equals(version)) {
- String newVersion = artifactVersionResolver.resolve(new Artifact(groupId, artifactId, version, classifier, type));
- if (newVersion != null) {
- return newVersion;
- }
- }
- return version;
- }
-
- /**
* Validates the model.
* @param model The model to validate
* @return A map with errors or {@code null}.
@@ -487,88 +416,4 @@ public abstract class ModelUtility {
return errors;
}
- static void getProcessedConfiguration(
- final Feature feature,
- final Configuration newConfig,
- final Configuration config,
- final VariableResolver resolver) {
- newConfig.setComment(config.getComment());
- newConfig.setLocation(config.getLocation());
-
- // check for raw configuration
- String rawConfig = (String)config.getProperties().get(ModelConstants.CFG_UNPROCESSED);
- if ( rawConfig != null ) {
- if ( resolver != null ) {
- rawConfig = replace(feature, rawConfig, resolver);
- }
- if ( config.isSpecial() ) {
- newConfig.getProperties().put(config.getPid(), rawConfig);
- } else {
- final String format = (String)config.getProperties().get(ModelConstants.CFG_UNPROCESSED_FORMAT);
-
- if ( ModelConstants.CFG_FORMAT_PROPERTIES.equals(format) ) {
- // properties
- final Properties props = new Properties();
- try {
- props.load(new StringReader(rawConfig));
- } catch ( final IOException ioe) {
- throw new IllegalArgumentException("Unable to read configuration properties.", ioe);
- }
- final Enumeration<Object> i = props.keys();
- while ( i.hasMoreElements() ) {
- final String key = (String)i.nextElement();
- newConfig.getProperties().put(key, props.get(key));
- }
- } else {
- // Apache Felix CA format
- // the raw format might have comments, we have to remove them first
- final StringBuilder sb = new StringBuilder();
- try {
- final LineNumberReader lnr = new LineNumberReader(new StringReader(rawConfig));
- String line = null;
- while ((line = lnr.readLine()) != null ) {
- line = line.trim();
- if ( line.isEmpty() || line.startsWith("#")) {
- continue;
- }
- sb.append(line);
- sb.append('\n');
- }
- } catch ( final IOException ioe) {
- throw new IllegalArgumentException("Unable to read configuration properties: " + config, ioe);
- }
-
- ByteArrayInputStream bais = null;
- try {
- bais = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
- @SuppressWarnings("unchecked")
- final Dictionary<String, Object> props = ConfigurationHandler.read(bais);
- final Enumeration<String> i = props.keys();
- while ( i.hasMoreElements() ) {
- final String key = i.nextElement();
- newConfig.getProperties().put(key, props.get(key));
- }
- } catch ( final IOException ioe) {
- throw new IllegalArgumentException("Unable to read configuration properties: " + config, ioe);
- } finally {
- if ( bais != null ) {
- try {
- bais.close();
- } catch ( final IOException ignore ) {
- // ignore
- }
- }
- }
- }
- }
- } else {
- // simply copy
- final Enumeration<String> i = config.getProperties().keys();
- while ( i.hasMoreElements() ) {
- final String key = i.nextElement();
- newConfig.getProperties().put(key, config.getProperties().get(key));
- }
- }
- }
-
}
Copied: sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelResolveUtilityReplaceTest.java (from r1690877, sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityReplaceTest.java)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelResolveUtilityReplaceTest.java?p2=sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelResolveUtilityReplaceTest.java&p1=sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityReplaceTest.java&r1=1690877&r2=1690881&rev=1690881&view=diff
==============================================================================
--- sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelUtilityReplaceTest.java (original)
+++ sling/trunk/tooling/support/provisioning-model/src/test/java/org/apache/sling/provisioning/model/ModelResolveUtilityReplaceTest.java Tue Jul 14 09:10:39 2015
@@ -16,12 +16,13 @@
*/
package org.apache.sling.provisioning.model;
+import static org.apache.sling.provisioning.model.ModelResolveUtility.replace;
import static org.junit.Assert.assertEquals;
import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
import org.junit.Test;
-public class ModelUtilityReplaceTest {
+public class ModelResolveUtilityReplaceTest {
private static final Feature TEST_FEATURE = new Feature("testFeature");
static {
@@ -31,34 +32,34 @@ public class ModelUtilityReplaceTest {
@Test
public void testNoReplace() {
- assertEquals("nothing to replace", ModelUtility.replace(TEST_FEATURE, "nothing to replace", null));
+ assertEquals("nothing to replace", replace(TEST_FEATURE, "nothing to replace", null));
}
@Test
public void testOneReplace() {
- assertEquals("one value1 variable", ModelUtility.replace(TEST_FEATURE, "one ${var1} variable", null));
- assertEquals("value1 one variable", ModelUtility.replace(TEST_FEATURE, "${var1} one variable", null));
- assertEquals("value1 one variable value1", ModelUtility.replace(TEST_FEATURE, "${var1} one variable ${var1}", null));
+ assertEquals("one value1 variable", replace(TEST_FEATURE, "one ${var1} variable", null));
+ assertEquals("value1 one variable", replace(TEST_FEATURE, "${var1} one variable", null));
+ assertEquals("value1 one variable value1", replace(TEST_FEATURE, "${var1} one variable ${var1}", null));
}
@Test
public void testTwoReplaces() {
- assertEquals("two value1 variables value2", ModelUtility.replace(TEST_FEATURE, "two ${var1} variables ${var2}", null));
- assertEquals("value1value2 two variables", ModelUtility.replace(TEST_FEATURE, "${var1}${var2} two variables", null));
- assertEquals("value2 two variables value1", ModelUtility.replace(TEST_FEATURE, "${var2} two variables ${var1}", null));
+ assertEquals("two value1 variables value2", replace(TEST_FEATURE, "two ${var1} variables ${var2}", null));
+ assertEquals("value1value2 two variables", replace(TEST_FEATURE, "${var1}${var2} two variables", null));
+ assertEquals("value2 two variables value1", replace(TEST_FEATURE, "${var2} two variables ${var1}", null));
}
@Test(expected = IllegalArgumentException.class)
public void testInvalidVariable() {
- assertEquals("one value1 variable", ModelUtility.replace(TEST_FEATURE, "one ${var99} variable", null));
+ assertEquals("one value1 variable", replace(TEST_FEATURE, "one ${var99} variable", null));
}
@Test
public void testEscapedVariable() {
- assertEquals("escaped \\${var99} variable", ModelUtility.replace(TEST_FEATURE, "escaped \\${var99} variable", null));
- assertEquals("\\${var99} escaped variable", ModelUtility.replace(TEST_FEATURE, "\\${var99} escaped variable", null));
- assertEquals("escaped variable \\${var99}", ModelUtility.replace(TEST_FEATURE, "escaped variable \\${var99}", null));
- assertEquals("escaped \\${var1} variable value2", ModelUtility.replace(TEST_FEATURE, "escaped \\${var1} variable ${var2}", null));
+ assertEquals("escaped \\${var99} variable", replace(TEST_FEATURE, "escaped \\${var99} variable", null));
+ assertEquals("\\${var99} escaped variable", replace(TEST_FEATURE, "\\${var99} escaped variable", null));
+ assertEquals("escaped variable \\${var99}", replace(TEST_FEATURE, "escaped variable \\${var99}", null));
+ assertEquals("escaped \\${var1} variable value2", replace(TEST_FEATURE, "escaped \\${var1} variable ${var2}", null));
}
@Test
@@ -69,9 +70,9 @@ public class ModelUtilityReplaceTest {
return name.toUpperCase();
}
};
- assertEquals("one VAR1 variable", ModelUtility.replace(TEST_FEATURE, "one ${var1} variable", resolver));
- assertEquals("VAR1 one variable", ModelUtility.replace(TEST_FEATURE, "${var1} one variable", resolver));
- assertEquals("VAR1 one variable VAR2", ModelUtility.replace(TEST_FEATURE, "${var1} one variable ${var2}", resolver));
+ assertEquals("one VAR1 variable", replace(TEST_FEATURE, "one ${var1} variable", resolver));
+ assertEquals("VAR1 one variable", replace(TEST_FEATURE, "${var1} one variable", resolver));
+ assertEquals("VAR1 one variable VAR2", replace(TEST_FEATURE, "${var1} one variable ${var2}", resolver));
}
}