You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by an...@apache.org on 2015/02/03 12:41:37 UTC
[06/17] incubator-brooklyn git commit: switch xslt transformation to
use clearer java names for the changes
switch xslt transformation to use clearer java names for the changes
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/282b0d86
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/282b0d86
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/282b0d86
Branch: refs/heads/master
Commit: 282b0d865cd4c833e032a6b482190e8ca4ed425a
Parents: 7cd6683
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jan 28 12:51:07 2015 +0000
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Feb 3 11:25:06 2015 +0100
----------------------------------------------------------------------
.../rebind/transformer/CompoundTransformer.java | 35 +++----
.../entity/rebind/transformer/renameClass.xslt | 35 -------
.../entity/rebind/transformer/renameField.xslt | 35 -------
.../entity/rebind/transformer/renameType.xslt | 41 --------
.../rebind/transformer/xmlReplaceItem.xslt | 32 ------
.../CompoundTransformerLoaderTest.java | 2 +-
.../transformer/CompoundTransformerTest.java | 105 ++++++++++++++++++-
.../transformer/impl/XsltTransformerTest.java | 38 ++++++-
.../rebind/transformer/impl/renameClass.xslt | 35 +++++++
.../rebind/transformer/impl/renameField.xslt | 35 +++++++
.../rebind/transformer/impl/renameType.xslt | 41 ++++++++
11 files changed, 265 insertions(+), 169 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/main/java/brooklyn/entity/rebind/transformer/CompoundTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/rebind/transformer/CompoundTransformer.java b/core/src/main/java/brooklyn/entity/rebind/transformer/CompoundTransformer.java
index 7d1c7c8..26f6af5 100644
--- a/core/src/main/java/brooklyn/entity/rebind/transformer/CompoundTransformer.java
+++ b/core/src/main/java/brooklyn/entity/rebind/transformer/CompoundTransformer.java
@@ -103,27 +103,20 @@ public class CompoundTransformer {
*/
// ie TagName/text()[.='foo'] with 'bar' causes <Tag1>foo</Tag1> to <Tag1>bar</Tag1>
public Builder xmlReplaceItem(String xpathToMatch, String newValue) {
- return xsltTransformerFromXsltFreemarkerTemplateUrl("classpath://brooklyn/entity/rebind/transformer/xmlReplaceItem.xslt",
- ImmutableMap.of("xpath_to_match", xpathToMatch, "new_val", newValue));
- // alternatively:
-// return xsltTransformerRecursiveCopyWithExtraRules(
-// "<xsl:template match=\""+xpathToMatch+"\">"
-// + newValue
-// + "</xsl:template>");
+ return xsltTransformerRecursiveCopyWithExtraRules(
+ "<xsl:template match=\""+xpathToMatch+"\">"
+ + newValue
+ + "</xsl:template>");
}
/**
* Replaces a tag, but while continuing to recurse.
*/
public Builder xmlRenameTag(String xpathToMatch, String newValue) {
- return xsltTransformerRecursiveCopyWithExtraRules(
- "<xsl:template match=\""+xpathToMatch+"\">"
- + "<"+newValue+">"
- + "<xsl:apply-templates select=\"@*|node()\" />"
- + "</"+newValue+">"
- + "</xsl:template>");
- // alternatively:
-// xmlReplaceItem(xpathToMatch, "<"+newValue+">"+"<xsl:apply-templates select=\"@*|node()\" />"+"</"+newValue+">")
+ return xmlReplaceItem(xpathToMatch,
+ "<"+newValue+">"
+ + "<xsl:apply-templates select=\"@*|node()\" />"
+ + "</"+newValue+">");
}
/** Changes the contents inside a "type" tag:
@@ -132,8 +125,10 @@ public class CompoundTransformer {
* In brooklyn/xstream, a "type" node typically gives the name of a java or catalog type to be used
* when creating an instance. */
public Builder renameType(String oldVal, String newVal) {
- return xsltTransformerFromXsltFreemarkerTemplateUrl("classpath://brooklyn/entity/rebind/transformer/renameType.xslt",
- ImmutableMap.of("old_val", toXstreamClassnameFormat(oldVal), "new_val", toXstreamClassnameFormat(newVal)));
+ return xmlReplaceItem("type/text()[.='"+toXstreamClassnameFormat(oldVal)+"']", toXstreamClassnameFormat(newVal));
+ // previously this did a more complex looping, essentially
+ // <when .=oldVal>newVal</when><otherwise><apply-templates/></otherwise>
+ // but i think these are equivalent
}
/** Changes an XML tag matching a given old value:
* the tag is changed to the new value.
@@ -141,8 +136,7 @@ public class CompoundTransformer {
* In xstream many tags correspond to the java class of an object so this is a way to change
* the java class (or xstream alias) of a persisted instance (or instance inside them). */
public Builder renameClass(String oldVal, String newVal) {
- return xsltTransformerFromXsltFreemarkerTemplateUrl("classpath://brooklyn/entity/rebind/transformer/renameClass.xslt",
- ImmutableMap.of("old_val", toXstreamClassnameFormat(oldVal), "new_val", toXstreamClassnameFormat(newVal)));
+ return xmlRenameTag(toXstreamClassnameFormat(oldVal), toXstreamClassnameFormat(newVal));
}
/** Changes an XML tag inside another tag:
* where the outer tag and inner tag match the values given here,
@@ -151,8 +145,7 @@ public class CompoundTransformer {
* In stream tags corresponding to fields are contained in the tag corresponding to the class name,
* so this gives a way to change the name of a field which will be deserialized. */
public Builder renameField(String clazz, String oldVal, String newVal) {
- return xsltTransformerFromXsltFreemarkerTemplateUrl("classpath://brooklyn/entity/rebind/transformer/renameField.xslt",
- ImmutableMap.of("class_name", toXstreamClassnameFormat(clazz), "old_val", toXstreamClassnameFormat(oldVal), "new_val", toXstreamClassnameFormat(newVal)));
+ return xmlRenameTag(toXstreamClassnameFormat(clazz)+"/"+toXstreamClassnameFormat(oldVal), toXstreamClassnameFormat(newVal));
}
private String toXstreamClassnameFormat(String val) {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/main/resources/brooklyn/entity/rebind/transformer/renameClass.xslt
----------------------------------------------------------------------
diff --git a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameClass.xslt b/core/src/main/resources/brooklyn/entity/rebind/transformer/renameClass.xslt
deleted file mode 100644
index a0800fd..0000000
--- a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameClass.xslt
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="${old_val}">
- <${new_val}><xsl:apply-templates select="@*|node()" /></${new_val}>
- </xsl:template>
-
-</xsl:stylesheet>
-
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/main/resources/brooklyn/entity/rebind/transformer/renameField.xslt
----------------------------------------------------------------------
diff --git a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameField.xslt b/core/src/main/resources/brooklyn/entity/rebind/transformer/renameField.xslt
deleted file mode 100644
index d4b3354..0000000
--- a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameField.xslt
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="${class_name}/${old_val}">
- <${new_val}><xsl:apply-templates select="@*|node()" /></${new_val}>
- </xsl:template>
-
-</xsl:stylesheet>
-
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/main/resources/brooklyn/entity/rebind/transformer/renameType.xslt
----------------------------------------------------------------------
diff --git a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameType.xslt b/core/src/main/resources/brooklyn/entity/rebind/transformer/renameType.xslt
deleted file mode 100644
index e53fe37..0000000
--- a/core/src/main/resources/brooklyn/entity/rebind/transformer/renameType.xslt
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="type">
- <type>
- <xsl:copy-of select="@*"/>
- <xsl:choose>
- <xsl:when test=".='${old_val}'"><xsl:value-of select="'${new_val}'"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="." /></xsl:otherwise>
- </xsl:choose>
- </type>
- </xsl:template>
-
-</xsl:stylesheet>
-
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/main/resources/brooklyn/entity/rebind/transformer/xmlReplaceItem.xslt
----------------------------------------------------------------------
diff --git a/core/src/main/resources/brooklyn/entity/rebind/transformer/xmlReplaceItem.xslt b/core/src/main/resources/brooklyn/entity/rebind/transformer/xmlReplaceItem.xslt
deleted file mode 100644
index 8d4acc0..0000000
--- a/core/src/main/resources/brooklyn/entity/rebind/transformer/xmlReplaceItem.xslt
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- 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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
- <xsl:output omit-xml-declaration="yes"/>
-
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="${xpath_to_match}">${new_val}</xsl:template>
-
-</xsl:stylesheet>
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerLoaderTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerLoaderTest.java b/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerLoaderTest.java
index e473245..454e860 100644
--- a/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerLoaderTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerLoaderTest.java
@@ -45,7 +45,7 @@ public class CompoundTransformerLoaderTest {
" old_val: myoldname\n"+
" new_val: mynewname\n"+
"xslt:\n"+
- " url: classpath://brooklyn/entity/rebind/transformer/renameType.xslt\n"+
+ " url: classpath://brooklyn/entity/rebind/transformer/impl/renameType.xslt\n"+
" substitutions:\n"+
" old_val: myoldname\n"+
" new_val: mynewname\n"+
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerTest.java b/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerTest.java
index 6e7ab36..49c1005 100644
--- a/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/transformer/CompoundTransformerTest.java
@@ -62,7 +62,8 @@ import com.google.common.collect.Iterables;
public class CompoundTransformerTest extends RebindTestFixtureWithApp {
private static final Logger LOG = LoggerFactory.getLogger(CompoundTransformerTest.class);
-
+ private static String NEWLINE = Os.LINE_SEPARATOR;
+
private File newMementoDir;
@AfterMethod(alwaysRun=true)
@@ -192,6 +193,108 @@ public class CompoundTransformerTest extends RebindTestFixtureWithApp {
assertTrue(newPredicate.apply(newApp));
}
+ @Test
+ public void testRenameTypeInXml() throws Exception {
+ CompoundTransformer transformer = CompoundTransformer.builder()
+ .renameType("mytype.Before", "mytype.After")
+ .build();
+
+ String input =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.Before</type>"+NEWLINE+
+ " <nested>"+NEWLINE+
+ " <type myattrib3=\"myval3\">doesNotMatch</type>"+NEWLINE+
+ " <type myattrib4=\"myval4\">partial.mytype.Before</type>"+NEWLINE+
+ " <type myattrib5=\"myval5\">mytype.Before</type>"+NEWLINE+
+ " </nested>"+NEWLINE+
+ " <id>myid</id>"+NEWLINE+
+ "</entity>";
+ String expected =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.After</type>"+NEWLINE+
+ " <nested>"+NEWLINE+
+ " <type myattrib3=\"myval3\">doesNotMatch</type>"+NEWLINE+
+ " <type myattrib4=\"myval4\">partial.mytype.Before</type>"+NEWLINE+
+ " <type myattrib5=\"myval5\">mytype.After</type>"+NEWLINE+
+ " </nested>"+NEWLINE+
+ " <id>myid</id>"+NEWLINE+
+ "</entity>";
+
+ assertSingleXmlTransformation(transformer, input, expected);
+ }
+
+ @Test
+ public void testRenameFieldInXml() throws Exception {
+ CompoundTransformer transformer = CompoundTransformer.builder()
+ .renameField("MyClass", "myFieldBefore", "myFieldAfter")
+ .build();
+
+ String input =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.Before</type>"+NEWLINE+
+ " <config>"+NEWLINE+
+ " <test.conf1>"+NEWLINE+
+ " <MyClass>"+NEWLINE+
+ " <myFieldBefore class=\"string\">myfieldval</myFieldBefore>"+NEWLINE+
+ " </MyClass>"+NEWLINE+
+ " </test.conf1>"+NEWLINE+
+ " <test.conf2>"+NEWLINE+
+ " <MyOtherClass>"+NEWLINE+
+ " <myFieldBefore class=\"string\">myfieldval</myFieldBefore>"+NEWLINE+
+ " </MyOtherClass>"+NEWLINE+
+ " </test.conf2>"+NEWLINE+
+ " </config>"+NEWLINE+
+ "</entity>";
+ String expected =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.Before</type>"+NEWLINE+
+ " <config>"+NEWLINE+
+ " <test.conf1>"+NEWLINE+
+ " <MyClass>"+NEWLINE+
+ " <myFieldAfter class=\"string\">myfieldval</myFieldAfter>"+NEWLINE+
+ " </MyClass>"+NEWLINE+
+ " </test.conf1>"+NEWLINE+
+ " <test.conf2>"+NEWLINE+
+ " <MyOtherClass>"+NEWLINE+
+ " <myFieldBefore class=\"string\">myfieldval</myFieldBefore>"+NEWLINE+
+ " </MyOtherClass>"+NEWLINE+
+ " </test.conf2>"+NEWLINE+
+ " </config>"+NEWLINE+
+ "</entity>";
+
+ assertSingleXmlTransformation(transformer, input, expected);
+ }
+
+ @Test
+ public void testRenameClassInXml() throws Exception {
+ CompoundTransformer transformer = CompoundTransformer.builder()
+ .renameClass("MyClassBefore", "MyClassAfter")
+ .build();
+
+ String input =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.Before</type>"+NEWLINE+
+ " <config>"+NEWLINE+
+ " <test.conf1>"+NEWLINE+
+ " <MyClassBefore>"+NEWLINE+
+ " </MyClassBefore>"+NEWLINE+
+ " </test.conf1>"+NEWLINE+
+ " </config>"+NEWLINE+
+ "</entity>";
+ String expected =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype.Before</type>"+NEWLINE+
+ " <config>"+NEWLINE+
+ " <test.conf1>"+NEWLINE+
+ " <MyClassAfter>"+NEWLINE+
+ " </MyClassAfter>"+NEWLINE+
+ " </test.conf1>"+NEWLINE+
+ " </config>"+NEWLINE+
+ "</entity>";
+
+ assertSingleXmlTransformation(transformer, input, expected);
+ }
+
protected TestApplication transformAndRebind(CompoundTransformer transformer) throws Exception {
RebindTestUtils.waitForPersisted(origApp);
BrooklynMementoRawData newRawData = transform(origManagementContext, transformer);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/java/brooklyn/entity/rebind/transformer/impl/XsltTransformerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/transformer/impl/XsltTransformerTest.java b/core/src/test/java/brooklyn/entity/rebind/transformer/impl/XsltTransformerTest.java
index cc801b2..5791dd4 100644
--- a/core/src/test/java/brooklyn/entity/rebind/transformer/impl/XsltTransformerTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/transformer/impl/XsltTransformerTest.java
@@ -28,13 +28,45 @@ import brooklyn.util.text.TemplateProcessor;
import com.google.common.collect.ImmutableMap;
+/**
+ * Tests the low-level XSLT transformer logic.
+ * <p>
+ * Some of the tests use xslt files which are no longer used to perform type/class/field-specific changes,
+ * but they are included here because they are still useful test cases for XSLT.
+ */
public class XsltTransformerTest {
private static String NEWLINE = Os.LINE_SEPARATOR;
+
+ @Test
+ public void testRecursiveCopyExtraRules() throws Exception {
+ String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/recursiveCopyWithExtraRules.xslt");
+ String xslt = TemplateProcessor.processTemplateContents(xsltTemplate, ImmutableMap.of(
+ "extra_rules", "<xsl:template match=\"nested\"><empty_nest/></xsl:template>"));
+ String input =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype</type>"+NEWLINE+
+ " <nested>"+NEWLINE+
+ " <type myattrib3=\"myval3\">foo</type>"+NEWLINE+
+ " bar"+NEWLINE+
+ " </nested>"+NEWLINE+
+ " <id>myid</id>"+NEWLINE+
+ "</entity>";
+ String expected =
+ "<entity myattrib=\"myval\">"+NEWLINE+
+ " <type myattrib2=\"myval2\">mytype</type>"+NEWLINE+
+ " <empty_nest/>"+NEWLINE+
+ " <id>myid</id>"+NEWLINE+
+ "</entity>";
+
+ XsltTransformer transformer = new XsltTransformer(xslt);
+ String result = transformer.transform(input);
+ assertEquals(result, expected);
+ }
@Test
public void testRenameType() throws Exception {
- String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/renameType.xslt");
+ String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/impl/renameType.xslt");
String xslt = TemplateProcessor.processTemplateContents(xsltTemplate, ImmutableMap.of("old_val", "mytype.Before", "new_val", "mytype.After"));
String input =
"<entity myattrib=\"myval\">"+NEWLINE+
@@ -64,7 +96,7 @@ public class XsltTransformerTest {
@Test
public void testRenameField() throws Exception {
- String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/renameField.xslt");
+ String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/impl/renameField.xslt");
String xslt = TemplateProcessor.processTemplateContents(xsltTemplate, ImmutableMap.of("class_name", "MyClass", "old_val", "myFieldBefore", "new_val", "myFieldAfter"));
String input =
"<entity myattrib=\"myval\">"+NEWLINE+
@@ -106,7 +138,7 @@ public class XsltTransformerTest {
@Test
public void testRenameClass() throws Exception {
- String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/renameClass.xslt");
+ String xsltTemplate = ResourceUtils.create(XsltTransformerTest.class).getResourceAsString("classpath://brooklyn/entity/rebind/transformer/impl/renameClass.xslt");
String xslt = TemplateProcessor.processTemplateContents(xsltTemplate, ImmutableMap.of("old_val", "MyClassBefore", "new_val", "MyClassAfter"));
String input =
"<entity myattrib=\"myval\">"+NEWLINE+
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameClass.xslt
----------------------------------------------------------------------
diff --git a/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameClass.xslt b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameClass.xslt
new file mode 100644
index 0000000..a0800fd
--- /dev/null
+++ b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameClass.xslt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:output omit-xml-declaration="yes"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="${old_val}">
+ <${new_val}><xsl:apply-templates select="@*|node()" /></${new_val}>
+ </xsl:template>
+
+</xsl:stylesheet>
+
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameField.xslt
----------------------------------------------------------------------
diff --git a/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameField.xslt b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameField.xslt
new file mode 100644
index 0000000..d4b3354
--- /dev/null
+++ b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameField.xslt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:output omit-xml-declaration="yes"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="${class_name}/${old_val}">
+ <${new_val}><xsl:apply-templates select="@*|node()" /></${new_val}>
+ </xsl:template>
+
+</xsl:stylesheet>
+
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/282b0d86/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameType.xslt
----------------------------------------------------------------------
diff --git a/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameType.xslt b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameType.xslt
new file mode 100644
index 0000000..e53fe37
--- /dev/null
+++ b/core/src/test/resources/brooklyn/entity/rebind/transformer/impl/renameType.xslt
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:output omit-xml-declaration="yes"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="type">
+ <type>
+ <xsl:copy-of select="@*"/>
+ <xsl:choose>
+ <xsl:when test=".='${old_val}'"><xsl:value-of select="'${new_val}'"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="." /></xsl:otherwise>
+ </xsl:choose>
+ </type>
+ </xsl:template>
+
+</xsl:stylesheet>
+