Yesterday I needed to uncomment multiple lines in the applicationcontext of a Prana XML. After some searching I found the Ant Task I needed: replaceregexp.

Threre were four blocks that I needed to uncomment:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
...
</value>
<value>
	<object	class="edumatic.backoffice.view.modules.NavigationModuleInfo">
		<property name="url"
			value="edumatic/backoffice/view/modules/support/ManagementNavigationModule.swf" />
		<property name="icon"
			value="edumatic/backoffice/view/modules/support/assets/management.png" />
		<property name="title" value="Management" />
		<property name="pluginID" value="MANAGEMENT" />
	</object>
</value>
<value>
	<object
		class="edumatic.backoffice.view.modules.ContentModuleInfo">
		<property name="url"
			value="edumatic/backoffice/view/modules/support/ManagementContentModule.swf" />
		<property name="pluginID" value="MANAGEMENT" />
	</object>
</value>
<value>
	<object
		class="edumatic.backoffice.view.modules.NavigationModuleInfo">
		<property name="url"
			value="edumatic/backoffice/view/modules/support/MetaDataNavigationModule.swf" />
		<property name="icon"
			value="edumatic/backoffice/view/modules/support/assets/metadata.png" />
		<property name="title" value="Metadata" />
		<property name="pluginID" value="METADATA" />
	</object>
</value>
<value>
	<object
		class="edumatic.backoffice.view.modules.ContentModuleInfo">
		<property name="url"
			value="edumatic/backoffice/view/modules/support/MetaDataContentModule.swf" />
		<property name="pluginID" value="METADATA" />
	</object>
</value>
<value>
...

I couldn’t just search for and replace it by because there were childnodes that had to stay uncommented.

So here are the replaceregexp tasks that made it work:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<replaceregexp file="${selor-salto-test-deploy-folder.dir}/backend/application-context-backoffice.xml"
	byline="false" flags="s">
	<regexp pattern="&lt;value&gt;.{1,250}ManagementNavigationModule"/>
	<substitution expression="&lt;!--value&gt;
				&lt;object	class=&quot;edumatic.backoffice.view.modules.NavigationModuleInfo&quot;&gt;
					&lt;property name=&quot;url&quot;
						value=&quot;edumatic/backoffice/view/modules/support/ManagementNavigationModule"/>
</replaceregexp>
<replaceregexp file="${selor-salto-test-deploy-folder.dir}/backend/application-context-backoffice.xml"
	byline="false" flags="s">
	<regexp pattern="ManagementContentModule.swf.{1,150}&lt;/value&gt;"/>
	<substitution expression="ManagementContentModule.swf&quot; /&gt;
					&lt;property name=&quot;pluginID&quot; value=&quot;MANAGEMENT&quot; /&gt;
				&lt;/object&gt;
			&lt;/value--&gt;"/>
</replaceregexp>
<replaceregexp file="${selor-salto-test-deploy-folder.dir}/backend/application-context-backoffice.xml"
	byline="false" flags="s">
	<regexp pattern="&lt;value&gt;.{1,250}MetaDataNavigationModule"/>
	<substitution expression="&lt;!--value&gt;
				&lt;object	class=&quot;edumatic.backoffice.view.modules.NavigationModuleInfo&quot;&gt;
					&lt;property name=&quot;url&quot;
						value=&quot;edumatic/backoffice/view/modules/support/ManagementNavigationModule"/>
</replaceregexp>
<replaceregexp file="${selor-salto-test-deploy-folder.dir}/backend/application-context-backoffice.xml"
	byline="false" flags="s">
	<regexp pattern="MetaDataContentModule.swf.{1,150}&lt;/value&gt;"/>
	<substitution expression="MetaDataContentModule.swf&quot; /&gt;
					&lt;property name=&quot;pluginID&quot; value=&quot;METADATA&quot; /&gt;
				&lt;/object&gt;
			&lt;/value--&gt;"/>
</replaceregexp>

The thing me and a colleague searched on for a while was the s flag that was needed to make it work. I will try the other flags because I’m really not sure what this s flag means… (trial and error yeah!). I’ve seen that after the task ran the layout was messed up (no newlines anymore in the replaced text).

The .{1,150} means that a maximum of 150 characters may occur between for example MetaDataContentModule.swf and </value>.

Ciao!

pixel Ant Replace Multiple Lines of Text
No TweetBacks yet. (Be the first to Tweet this post)