<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WeigleWilczek Company Blog</title>
	<atom:link href="http://www.weiglewilczek.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.weiglewilczek.com/blog</link>
	<description>Get an inside view of our daily office life</description>
	<lastBuildDate>Thu, 02 Sep 2010 17:54:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SLF4S &#8211; Logging the Scala way</title>
		<link>http://www.weiglewilczek.com/blog/?p=2640</link>
		<comments>http://www.weiglewilczek.com/blog/?p=2640#comments</comments>
		<pubDate>Thu, 02 Sep 2010 17:54:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-8931739648059375004</guid>
		<description><![CDATA[Do we need another logging framework in the Java/Scala world? Certainly not! As Scala is fully "downward" compatible to Java, we can use whatever Java logging solution we want. And there are many, aren't there?.<br /><br />So why <a href="http://github.com/weiglewilczek/slf4s">SLF4S</a>? Well, SLF4S isn't another logging framework, but a very thin Scala wrapper around SLF4J which has emerged as the leading Java logging solution. Why do we need a Scala wrapper for SLF4S? Well, there are some nice Scala features that can make logging even easier and/or more performant.<br /><br />First, SLF4J <span style="font-style:italic">Logger</span>s use by-name parameters which are only evaluated if needed/accessed. When logging "traditionally", we often create messages by concatenating Strings or using the <span style="font-style:italic">String.format</span> method, even if we don't need these messages in the end because the logging level is not enabled. Of course we could "manually" check whether the logging level is enabled, e.g. by calling <span style="font-style:italic">logger.isDebugEnabled</span>, but we often don't, because it's cumbersome. With by-name parameters we can simply call our log methods and let SLF4S check whether the log level is enabled. Just take a look at one example:<br /><pre>def debug(msg: =&#62; String) {<br /> if (slf4jLogger.isDebugEnabled) slf4jLogger debug msg<br />}</pre><br />Second, SLF4S offers a <span style="font-style:italic">Logging</span> trait which can be mixed into any class to make a <span style="font-style:italic">Logger</span> instance available. That particular <span style="font-style:italic">Logger</span> will be initialized with the name of the class it is mixed into which is a common use case.<br /><pre>class MyClazz extends SomeClazz with Logging<br />  ...<br />  logger debug "SLF4S just rocks!"<br />  ...</pre><br />Of course you can create <span style="font-style:italic">Logger</span>s with arbitrary names by calling <span style="font-style:italic">Logger("SomeSpecialName")</span>.<br /><br />Last but not least, SLF4S offers implicit conversions from "usual" SLF4J <span style="font-style:italic">Logger</span>s into "pimped" SLF4S <span style="font-style:italic">Logger</span>s.<br /><br />Ah, and of course, SLF4S is <a href="http://www.osgi.org">OSGi</a> compliant. But that's not a big surprise, taking into account that the authors are OSGi fanboys and SLF4J is OSGi compliant, too.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-8931739648059375004?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[Do we need another logging framework in the Java/Scala world? Certainly not! As Scala is fully "downward" compatible to Java, we can use whatever Java logging solution we want. And there are many, aren't there?.<br /><br />So why <a href="http://github.com/weiglewilczek/slf4s">SLF4S</a>? Well, SLF4S isn't another logging framework, but a very thin Scala wrapper around SLF4J which has emerged as the leading Java logging solution. Why do we need a Scala wrapper for SLF4S? Well, there are some nice Scala features that can make logging even easier and/or more performant.<br /><br />First, SLF4J <span style="font-style:italic;">Logger</span>s use by-name parameters which are only evaluated if needed/accessed. When logging "traditionally", we often create messages by concatenating Strings or using the <span style="font-style:italic;">String.format</span> method, even if we don't need these messages in the end because the logging level is not enabled. Of course we could "manually" check whether the logging level is enabled, e.g. by calling <span style="font-style:italic;">logger.isDebugEnabled</span>, but we often don't, because it's cumbersome. With by-name parameters we can simply call our log methods and let SLF4S check whether the log level is enabled. Just take a look at one example:<br /><pre>def debug(msg: => String) {<br /> if (slf4jLogger.isDebugEnabled) slf4jLogger debug msg<br />}</pre><br />Second, SLF4S offers a <span style="font-style:italic;">Logging</span> trait which can be mixed into any class to make a <span style="font-style:italic;">Logger</span> instance available. That particular <span style="font-style:italic;">Logger</span> will be initialized with the name of the class it is mixed into which is a common use case.<br /><pre>class MyClazz extends SomeClazz with Logging<br />  ...<br />  logger debug "SLF4S just rocks!"<br />  ...</pre><br />Of course you can create <span style="font-style:italic;">Logger</span>s with arbitrary names by calling <span style="font-style:italic;">Logger("SomeSpecialName")</span>.<br /><br />Last but not least, SLF4S offers implicit conversions from "usual" SLF4J <span style="font-style:italic;">Logger</span>s into "pimped" SLF4S <span style="font-style:italic;">Logger</span>s.<br /><br />Ah, and of course, SLF4S is <a href="http://www.osgi.org">OSGi</a> compliant. But that's not a big surprise, taking into account that the authors are OSGi fanboys and SLF4J is OSGi compliant, too.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-8931739648059375004?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=2640</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to setup a Scala project with SBT and IDEA</title>
		<link>http://www.weiglewilczek.com/blog/?p=2636</link>
		<comments>http://www.weiglewilczek.com/blog/?p=2636#comments</comments>
		<pubDate>Fri, 06 Aug 2010 13:28:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-272952326927632855</guid>
		<description><![CDATA[<div>Today I helped my mate Bernd Kolb setting up a simple <a href="http://www.scala-lang.org/">Scala</a> project. He had been struggling far too long with various options like Maven, <a href="http://code.google.com/p/simple-build-tool/">SBT</a>, Eclipse and Intellij IDEA. If I remember correctly it only took a 30 minutes conf call to setup a simple Scala and <a href="http://www.liftweb.net/">Lift</a> project with SBT and IDEA. But there are quite a few things to know in order to be successful which I am going to describe here in a step-by-step tutorial. I hope you find it useful. Please let me know any issues.</div><br /><div><b>Why SBT and IDEA?</b></div><br /><div>Why not Maven and Eclipse? Or Ant and Netbeans? Or ...? First, we have to make a choice. Second, SBT and IDEA are currently the best build tool and the best IDE for Scala. SBT is written specifically for Scala and offers very fast compilation, interactive mode for continuous compilation, testing, etc., integration for Scala test tools like <a href="http://code.google.com/p/specs/">specs</a> and <a href="http://www.scalatest.org/">ScalaTest</a>, cross compiling against different Scala versions and many more. While the Scala IDE for Eclipse recently has made nice progress and the Netbeans plugin looks good, IDEA still offers the best Scala plugin with many features known from a Java IDE, e.g. refactroings, code completion, code navigation, etc.</div><br /><div><b>Preparations</b></div><br /><div>Java 5 or 6 is assumed. Get the <a href="http://code.google.com/p/simple-build-tool/downloads/detail?name=sbt-launch-0.7.4.jar&#38;can=2&#38;q=">SBT launcher</a> and follow the <a href="http://code.google.com/p/simple-build-tool/wiki/Setup">instructions</a> to set it up. Install IDEA 9.0.3 and use its plugin manager to install the Scala plugin. Here we go!</div><br /><div><b>1. Create a SBT project</b></div><br /><div>Create a folder for your project, <i>cd</i> there and run SBT. You will be asked the following questions. Answer like I did or chose different values (except for the Scala version).</div><br /><div style="font-family: monospace">Project does not exist, create new project? (y/N/s) y<br /><br />Name: simple<br /><br />Organization: localhost<br /><br />Version [1.0]: <br /><br />Scala version [2.7.7]: 2.8.0<br /><br />sbt version [0.7.4]: </div><br /><div style="float: right"><img></div><br /><div>Now SBT will download Scala 2.7.7 as well as some other libraries for internal use. And it will download Scala 2.8.0 which is used to build your project.</div><br /><div>As soon as the downloads are finished, you are in SBT's interactive mode. At the prompt enter <i>compile</i>, then <i>~test</i> (press enter to leave the triggered mode) and then <i>help</i> to make yourself familiar with the <a href="http://code.google.com/p/simple-build-tool/wiki/RunningSbt">features</a>.</div><br /><div>Looking at your project in the file system, you will notice a layout similar to Maven: Scala sources go into <i>src/main/scala</i>, Scala tests go into <i>src/test/scala</i> and artifacts go into <i>target</i>. If your project looks different from the one at the right, you probably did not run <i>compile</i> or <i>test</i>. But as it is important to run your project against the same <a href="http://code.google.com/p/simple-build-tool/wiki/CrossBuild">version</a> as it was compiled against, there is a <i>Scala_2.8.0</i> folder between the <i>target</i> and the <i>classes</i>, <i>test-classes</i> etc.</div><br /><div><b>Update</b></div><br /><div>Thanks to Comments from Bart and Mikko I looked into the <a href="http://github.com/mpeltonen/sbt-idea-plugin">sbt-idea-plugin</a> which makes it possible to create the project files for IDEA from SBT. While it is still under active development and there are some minor issues, the current snapshot release 0.1 already produces usable IDEA project files. So you could just go for that plugin and skip the next two steps.</div><br /><div style="clear: both"><b>2. Create an IDEA project</b></div><br /><div>Now you have to create an IDEA project on top of your SBT project.</div><br /><div><i>Choose File &#62; New Project ...</i>, select <i>Create project from scratch</i> and continue.</div><br /><div>Then pick your project folder for <i>Project files location</i> and continue.</div><br /><div>Then enter <i>src/main/scala</i> as path for the source directory and continue.</div><br /><div style="float: right"><img></div><br /><div>Now it is getting a little tricky!</div><br /><div>Select Scala from the list of technologies.</div><br /><div>Ignore the erroneous combo for the <i>Version</i>.</div><br /><div>Choose <i>Pick files from disk</i> and select <i>scala-compiler.jar</i> and <i>scala-library.jar</i> form <i>project/boot/scala-2.8.0/lib</i>.</div><br /><div>Then change the <i>Name</i> to <i>scala-2.8.0</i> and click <i>Finish</i>.</div><br /><div style="clear: both"><b>3. Adjust IDEA project settings</b></div><br /><div>Now you have make some adjustments to align SBT's and IDEA's project layout.</div><br /><div style="float: right"><img></div><br /><div>Choose <i>Modules</i> on the left and navigate to the <i>Sources</i> tab. Add <i>src/main/resources</i> to the <i>Sources</i> (blue) and <i>src/test/scala</i> and <i>src/test/resources</i> to the <i>Test Sources</i> (green). Exclude (red) <i>.idea</i>, <i>lib</i>, <i>project/boot</i> and <i>target</i>.</div><br /><div style="clear: both">&#160;</div><br /><div style="float: right"><img></div><br /><div>Next go to the <i>Paths</i> tab and select <i>target/scala_2.8.0/classes</i> for the <i>Output path</i> and <i>target/scala_2.8.0/test-classes</i> for the <i>Test output path</i>.</div><br /><div style="clear: both">&#160;</div><br /><div style="float: right"><img></div><br /><div>Then choose the <i>Scala</i> facet from the mid column (below the one and only module <i>simple</i>) and unchek <i>Use Scala compilers ...</i>.</div><br /><div style="clear: both">That's it! Now you are ready to go.</div><br /><div><b>4. Give it a try</b></div><br /><div>In IDEA go to the <i>src/main/scala</i> folder and choose <i>New &#62; Scala Class</i> from the context menu. Call it <i>Hello</i> and make it an <i>Object</i>.</div><br /><div>In the editor delete the package statement and enter the following code:</div><br /><div style="font-family: monospace">object Hello {<br /><br />&#160;&#160;def main(args: Array[String]) {<br /><br />&#160;&#160;&#160;&#160;println("Hello!")<br /><br />&#160;&#160;}<br /><br />}</div><br /><div>From the context menu choose <i>Run Hello.main()</i>. IDEA will build your project and then run this object.</div><br /><div>After that go to SBT and enter <i>~run</i>. Watch the output and look for the <i>Hello!</i> message. Then change the message in the code, e.g. to <i>Hello, world!</i>. As you have told SBT to use triggered <i>run</i> by prefixing whith the tilda, your project will be incrementally built and the Hello object run again: Watch the output.</div><br /><div><b>Have fun with Scala, SBT and IDEA!</b></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-272952326927632855?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[<div>Today I helped my mate Bernd Kolb setting up a simple <a href="http://www.scala-lang.org/">Scala</a> project. He had been struggling far too long with various options like Maven, <a href="http://code.google.com/p/simple-build-tool/">SBT</a>, Eclipse and Intellij IDEA. If I remember correctly it only took a 30 minutes conf call to setup a simple Scala and <a href="http://www.liftweb.net/">Lift</a> project with SBT and IDEA. But there are quite a few things to know in order to be successful which I am going to describe here in a step-by-step tutorial. I hope you find it useful. Please let me know any issues.</div><br /><div><b>Why SBT and IDEA?</b></div><br /><div>Why not Maven and Eclipse? Or Ant and Netbeans? Or ...? First, we have to make a choice. Second, SBT and IDEA are currently the best build tool and the best IDE for Scala. SBT is written specifically for Scala and offers very fast compilation, interactive mode for continuous compilation, testing, etc., integration for Scala test tools like <a href="http://code.google.com/p/specs/">specs</a> and <a href="http://www.scalatest.org/">ScalaTest</a>, cross compiling against different Scala versions and many more. While the Scala IDE for Eclipse recently has made nice progress and the Netbeans plugin looks good, IDEA still offers the best Scala plugin with many features known from a Java IDE, e.g. refactroings, code completion, code navigation, etc.</div><br /><div><b>Preparations</b></div><br /><div>Java 5 or 6 is assumed. Get the <a href="http://code.google.com/p/simple-build-tool/downloads/detail?name=sbt-launch-0.7.4.jar&amp;can=2&amp;q=">SBT launcher</a> and follow the <a href="http://code.google.com/p/simple-build-tool/wiki/Setup">instructions</a> to set it up. Install IDEA 9.0.3 and use its plugin manager to install the Scala plugin. Here we go!</div><br /><div><b>1. Create a SBT project</b></div><br /><div>Create a folder for your project, <i>cd</i> there and run SBT. You will be asked the following questions. Answer like I did or chose different values (except for the Scala version).</div><br /><div style="font-family: monospace;">Project does not exist, create new project? (y/N/s) y<br><br />Name: simple<br><br />Organization: localhost<br><br />Version [1.0]: <br><br />Scala version [2.7.7]: 2.8.0<br><br />sbt version [0.7.4]: </div><br /><div style="float: right;"><img src="http://lh3.ggpht.com/_m1xqbi6oDfc/TFwf1k6g1UI/AAAAAAAAADk/zv1Y_Ra965k/s288/sbt-project.png"/></div><br /><div>Now SBT will download Scala 2.7.7 as well as some other libraries for internal use. And it will download Scala 2.8.0 which is used to build your project.</div><br /><div>As soon as the downloads are finished, you are in SBT's interactive mode. At the prompt enter <i>compile</i>, then <i>~test</i> (press enter to leave the triggered mode) and then <i>help</i> to make yourself familiar with the <a href="http://code.google.com/p/simple-build-tool/wiki/RunningSbt">features</a>.</div><br /><div>Looking at your project in the file system, you will notice a layout similar to Maven: Scala sources go into <i>src/main/scala</i>, Scala tests go into <i>src/test/scala</i> and artifacts go into <i>target</i>. If your project looks different from the one at the right, you probably did not run <i>compile</i> or <i>test</i>. But as it is important to run your project against the same <a href="http://code.google.com/p/simple-build-tool/wiki/CrossBuild">version</a> as it was compiled against, there is a <i>Scala_2.8.0</i> folder between the <i>target</i> and the <i>classes</i>, <i>test-classes</i> etc.</div><br /><div><b>Update</b></div><br /><div>Thanks to Comments from Bart and Mikko I looked into the <a href="http://github.com/mpeltonen/sbt-idea-plugin">sbt-idea-plugin</a> which makes it possible to create the project files for IDEA from SBT. While it is still under active development and there are some minor issues, the current snapshot release 0.1 already produces usable IDEA project files. So you could just go for that plugin and skip the next two steps.</div><br /><div style="clear: both;"><b>2. Create an IDEA project</b></div><br /><div>Now you have to create an IDEA project on top of your SBT project.</div><br /><div><i>Choose File > New Project ...</i>, select <i>Create project from scratch</i> and continue.</div><br /><div>Then pick your project folder for <i>Project files location</i> and continue.</div><br /><div>Then enter <i>src/main/scala</i> as path for the source directory and continue.</div><br /><div style="float: right;"><img src="http://lh6.ggpht.com/_m1xqbi6oDfc/TFwn-LS9ofI/AAAAAAAAADs/UhG-v_F7U9k/s288/idea-scala-tech.png"/></div><br /><div>Now it is getting a little tricky!</div><br /><div>Select Scala from the list of technologies.</div><br /><div>Ignore the erroneous combo for the <i>Version</i>.</div><br /><div>Choose <i>Pick files from disk</i> and select <i>scala-compiler.jar</i> and <i>scala-library.jar</i> form <i>project/boot/scala-2.8.0/lib</i>.</div><br /><div>Then change the <i>Name</i> to <i>scala-2.8.0</i> and click <i>Finish</i>.</div><br /><div style="clear: both;"><b>3. Adjust IDEA project settings</b></div><br /><div>Now you have make some adjustments to align SBT's and IDEA's project layout.</div><br /><div style="float: right;"><img src="http://lh4.ggpht.com/_m1xqbi6oDfc/TFws6ozNj3I/AAAAAAAAAD8/f16AVXI7aiQ/s288/idea-sources.png"/></div><br /><div>Choose <i>Modules</i> on the left and navigate to the <i>Sources</i> tab. Add <i>src/main/resources</i> to the <i>Sources</i> (blue) and <i>src/test/scala</i> and <i>src/test/resources</i> to the <i>Test Sources</i> (green). Exclude (red) <i>.idea</i>, <i>lib</i>, <i>project/boot</i> and <i>target</i>.</div><br /><div style="clear: both;">&nbsp;</div><br /><div style="float: right;"><img src="http://lh4.ggpht.com/_m1xqbi6oDfc/TFwtVTc6j3I/AAAAAAAAAEA/tbGN-XeRqM4/s288/idea-paths.png"/></div><br /><div>Next go to the <i>Paths</i> tab and select <i>target/scala_2.8.0/classes</i> for the <i>Output path</i> and <i>target/scala_2.8.0/test-classes</i> for the <i>Test output path</i>.</div><br /><div style="clear: both;">&nbsp;</div><br /><div style="float: right;"><img src="http://lh4.ggpht.com/_m1xqbi6oDfc/TFwtVTc6j3I/AAAAAAAAAEA/tbGN-XeRqM4/s288/idea-paths.png"/></div><br /><div>Then choose the <i>Scala</i> facet from the mid column (below the one and only module <i>simple</i>) and unchek <i>Use Scala compilers ...</i>.</div><br /><div style="clear: both;">That's it! Now you are ready to go.</div><br /><div><b>4. Give it a try</b></div><br /><div>In IDEA go to the <i>src/main/scala</i> folder and choose <i>New > Scala Class</i> from the context menu. Call it <i>Hello</i> and make it an <i>Object</i>.</div><br /><div>In the editor delete the package statement and enter the following code:</div><br /><div style="font-family: monospace;">object Hello {<br/><br />&nbsp;&nbsp;def main(args: Array[String]) {<br/><br />&nbsp;&nbsp;&nbsp;&nbsp;println("Hello!")<br/><br />&nbsp;&nbsp;}<br/><br />}</div><br /><div>From the context menu choose <i>Run Hello.main()</i>. IDEA will build your project and then run this object.</div><br /><div>After that go to SBT and enter <i>~run</i>. Watch the output and look for the <i>Hello!</i> message. Then change the message in the code, e.g. to <i>Hello, world!</i>. As you have told SBT to use triggered <i>run</i> by prefixing whith the tilda, your project will be incrementally built and the Hello object run again: Watch the output.</div><br /><div><b>Have fun with Scala, SBT and IDEA!</b></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-272952326927632855?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=2636</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fully automated Web Application Testing with Selenium and Hudson</title>
		<link>http://www.weiglewilczek.com/blog/?p=2601</link>
		<comments>http://www.weiglewilczek.com/blog/?p=2601#comments</comments>
		<pubDate>Wed, 23 Dec 2009 14:38:00 +0000</pubDate>
		<dc:creator>Jan Blankenhorn</dc:creator>
				<category><![CDATA[hudson]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[testng]]></category>
		<category><![CDATA[Jan Blankenhorn]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-8306583327651195507.post-8520575672235032539</guid>
		<description><![CDATA[Lately i have been setting up a fully autometd Web Application Test environment. I just wanted to share my experiences!

My application has a number of selenium tests that i wanted to run on our continious integration server (hudson). My current scenar...]]></description>
			<content:encoded><![CDATA[<div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;">Lately i have been setting up a fully autometd Web Application Test environment. I just wanted to share my experiences!<br />
<br />
My application has a number of selenium tests that i wanted to run on our continious integration server (hudson). My current scenario includes the following steps:<br />
</div><ol style="font-family: Verdana,sans-serif;"><li>Start the Selenium-RC server from Hudson </li>
<li>Compile the application and the test cases</li>
<li>Reinitialization of the database via DBUnit </li>
<li>Starting the Tomcat - application server</li>
<li>Running the Selenium test cases</li>
<li>Publish the test results in Hudson </li>
</ol><div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"><br />
<span style="font-size: large;">Start the Selenium-RC server on Hudson </span><br />
The Selenium RC server is started from Hudson at the beginning of each build as a shell call.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIeTN6cMqI/AAAAAAAAAA4/UiWL97KsPu0/s1600-h/selenium_rc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIeTN6cMqI/AAAAAAAAAA4/UiWL97KsPu0/s320/selenium_rc.png" /></a><br />
</div>As you can see in the picture this step is done before i trigger an ant script which includes all the following steps. Therefore it is imperative that a user is logged on to the DISPLAY =: 0.<br />
<br />
The full command is here (As you can see, i also specified the path to a logfile):<br />
<div style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="font-size: x-small;">DISPLAY=:0 java -jar ${WORKSPACE}/ecm.server/lib/test/selenium/selenium-server.jar -log ${WORKSPACE}/ecm.server/selenium.log &amp; <br />
</span><br />
</div><br />
<span style="font-size: large;"> </span><br />
</div><div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"><span style="font-size: large;">Compile the application of the test cases by Ant + </span><br />
<br />
The first step that is triggered from the ant script is a full build of the webapplication and the selenium test cases.<br />
<br />
<span style="font-size: large;">Reinitialization of the database from Ant via DBUnit </span><br />
<br />
The next step is a full reset of the database used by the application with a initial set of data. Using DBUnit this can be done very easy. I just made an export from an initial dataset which is written to the database every build. Here you can see the ant target which does the job.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzImSVhJk9I/AAAAAAAAABI/acChsOIL_ds/s1600-h/dbunit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzImSVhJk9I/AAAAAAAAABI/acChsOIL_ds/s400/dbunit.png" /></a><br />
</div><target depends="" description="" name="init.db">&nbsp;<echo><dbunit driver="$ (test.dbms.driver)"><operation format="flat" src="$%7Becm.server.test.dir%7D/export.xml" type="CLEAN_INSERT">&nbsp;&nbsp; <span style="font-size: large;"><br />
</span></operation></dbunit></echo></target><br />
</div><div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"><span style="font-size: large;">Starting the Tomcat - application server from Hudson</span><br />
<br />
I also setup a dedicated tomcat on the build machine used for the selenium testcases. It is started from the Ant script in the next step. You can see the ant script here, note that ant is waiting until tomcat is started up by checking if the webport of tomcat is online.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_ILHuY1WeDLM/SzIolepU82I/AAAAAAAAABQ/hrhOxdHEzB8/s1600-h/tomcat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_ILHuY1WeDLM/SzIolepU82I/AAAAAAAAABQ/hrhOxdHEzB8/s400/tomcat.png" /></a><br />
</div><br />
</div><div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"><br />
<span style="font-size: large;">Running the Selenium test cases from Hudson, by Ant </span><br />
<br />
the Selenium tests are also run from Antwith the following ant script:<br />
<br />
</div><div style="font-family: &quot;Trebuchet MS&quot;,sans-serif;"><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzIpJ40_tLI/AAAAAAAAABY/L_SWJ98_PHM/s1600-h/selenium.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzIpJ40_tLI/AAAAAAAAABY/L_SWJ98_PHM/s400/selenium.png" /></a><br />
</div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span>As you can see at first i delete the old test results. After that the tests are run via the testng ant task using ReportNG to generate some nice looking test results.<br />
<span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><br />
<br />
<span style="font-size: large;">Publish the test results in Hudson </span><br />
<br />
After the tests are run i use two hudson Post-build Actions to publish the test results.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzIpvxkLmoI/AAAAAAAAABg/tX4PYGepGYc/s1600-h/post.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_ILHuY1WeDLM/SzIpvxkLmoI/AAAAAAAAABg/tX4PYGepGYc/s320/post.png" /></a><br />
</div><br />
</div><br />
<div style="font-family: Verdana,sans-serif;">The first is <b>Archive the artifacts</b>:<br />
</div><div style="font-family: Verdana,sans-serif;">This Actions archives all resources of the specified folder from the last build. Thiese are the generated TestResults which provide some nice looking results.<br />
</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;">In order to get statistics of all test cases ever run i also use the Action Publish JUnit test result report, which uses the Junit xml Resultfiles and generates statisics.<br />
</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;">The result can be seen in the hudson project page. There you see an overview of the test statisics.<br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIq-T9vKHI/AAAAAAAAABo/yIjTodbJnsI/s1600-h/final.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIq-T9vKHI/AAAAAAAAABo/yIjTodbJnsI/s320/final.png" /></a><br />
</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div style="font-family: Verdana,sans-serif;">By clicking on the archived "index.html" you can display the reportng testresult:<br />
</div><div style="font-family: Verdana,sans-serif;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIrS3K5lyI/AAAAAAAAABw/TDLOLws4b00/s1600-h/reportng.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_ILHuY1WeDLM/SzIrS3K5lyI/AAAAAAAAABw/TDLOLws4b00/s320/reportng.png" /></a><br />
</div><div style="font-family: Verdana,sans-serif;">Cheers<br />
</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8306583327651195507-8520575672235032539?l=janblankenhorn.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=2601</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ScalaModules slides from W-JAX 09 online</title>
		<link>http://www.weiglewilczek.com/blog/?p=1224</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1224#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:07:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-6182913667096034141</guid>
		<description><![CDATA[There were a lot of interesting talks at the OSGi Day at <a href="http://it-republik.de/jaxenter/wjax09/">W-JAX</a>. If you are interested in the slides of my <a href="http://www.scalamodules.org/">ScalaModules</a> talk you can take it from here: <a href="http://www.slideshare.net/heiko.seeberger/wjax-09-scalamodules">http://www.slideshare.net/heiko.seeberger/wjax-09-scalamodules</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-6182913667096034141?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[There were a lot of interesting talks at the OSGi Day at <a href="http://it-republik.de/jaxenter/wjax09/">W-JAX</a>. If you are interested in the slides of my <a href="http://www.scalamodules.org/">ScalaModules</a> talk you can take it from here: <a href="http://www.slideshare.net/heiko.seeberger/wjax-09-scalamodules">http://www.slideshare.net/heiko.seeberger/wjax-09-scalamodules</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-6182913667096034141?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1224</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lift slides from W-JAX 09 online</title>
		<link>http://www.weiglewilczek.com/blog/?p=1223</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1223#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:52:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-7538128815357836359</guid>
		<description><![CDATA[The Scala Day at <a href="http://it-republik.de/jaxenter/wjax09/">W-JAX</a> was a great success: Many cool talks and lots of interested folks. If you are interested in the slides of my Lift talk you can take it from here: <a href="http://www.slideshare.net/heiko.seeberger/wjax-09-lift">http://www.slideshare.net/heiko.seeberger/wjax-09-lift</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-7538128815357836359?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[The Scala Day at <a href="http://it-republik.de/jaxenter/wjax09/">W-JAX</a> was a great success: Many cool talks and lots of interested folks. If you are interested in the slides of my Lift talk you can take it from here: <a href="http://www.slideshare.net/heiko.seeberger/wjax-09-lift">http://www.slideshare.net/heiko.seeberger/wjax-09-lift</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-7538128815357836359?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1223</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scala 2.8: Be more concise with named and default arguments</title>
		<link>http://www.weiglewilczek.com/blog/?p=1203</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1203#comments</comments>
		<pubDate>Fri, 16 Oct 2009 07:08:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-313365544165984631</guid>
		<description><![CDATA[Scala 2.8 will bring quite a lot of interesting new features, e.g. redesigned collection libraries, named and default arguments, support for continuations, a pimped REPL, etc. In the following I will show how named and default arguments enable us to write our Scala code even more concisely than before.<br /><br />Let's flesh out an example in the 2.7 style: An order with an ID, order items and a shipping mode.<br /><pre><br />case class Order27(id: Long,<br />                items: List[Item],<br />                mode: ShippingMode)<br /><br />case class Item()<br /><br />sealed trait ShippingMode<br />case object StandardShipping extends ShippingMode<br />case object ExpressShipping extends ShippingMode<br />case object OvernightShipping extends ShippingMode<br /></pre><br />The order's ID shall be "mandatory" while we want to allow for defaults for the item list and the shipping mode. Hence we have to provide some auxiliary constructors.<br /><pre><br />case class Order27(id: Long,<br />                items: List[Item],<br />                mode: ShippingMode) {<br /><br /> def this(id: Long, items: List[Item]) =<br />   this(id, items, StandardShipping)<br /><br /> def this(id: Long, mode: ShippingMode) =<br />   this(id, Nil, StandardShipping)<br /><br /> def this(id: Long) =<br />   this(id, Nil, StandardShipping)<br />}<br /></pre><br />As you can see, now it is possible to create an order by only giving the ID, e.g.<br /><pre><br />val order = Order27(1)<br /></pre><br />will create an order with the items set to the empty list (OK, this does not make too much sense in practice) and the shipping mode set to standard shipping.<br /><br />On the one hand that's nice. But on the other hand the code is blown up significantly and it will take the reader some time to reason about the different possibilities to create an order, what is mandatory and what is optional with defaults.<br /><br />Scala 2.8 let's us define <span style="font-weight: bold">default</span> values with the class (or method) parameters by simply putting the default values behind the type.<br /><pre><br />case class Order28(id: Long,<br />                items: List[Item] = Nil,<br />                mode: ShippingMode = StandardShipping)<br /></pre><br />Now we can leave out the arguments for which defaults are defined, e.g.<br /><pre><br />val order = Order28(1)<br /></pre><br />will again create an order with no items and standard shipping. But this time there is no auxiliary constructor necessary to achieve that. Wow!<br /><br />But how can we give the shipping mode and leave out the items? Looking at the order of the parameters in the primary constructor it is obvious that we have to give the item list before the shipping mode.<br /><pre><br />val order = Order28(1, HERE GOES THE ITEM LIST, OvernightShipping)<br /></pre><br />This is where <span style="font-weight: bold">named</span> arguments enter the game. We simply prepend an argument value with its name, e.g.<br /><pre><br />val order = Order28(1, mode = OvernightShipping)<br /></pre><br />This way Scala knows how to get things right. Wow!!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-313365544165984631?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[Scala 2.8 will bring quite a lot of interesting new features, e.g. redesigned collection libraries, named and default arguments, support for continuations, a pimped REPL, etc. In the following I will show how named and default arguments enable us to write our Scala code even more concisely than before.<br /><br />Let's flesh out an example in the 2.7 style: An order with an ID, order items and a shipping mode.<br /><pre><br />case class Order27(id: Long,<br />                items: List[Item],<br />                mode: ShippingMode)<br /><br />case class Item()<br /><br />sealed trait ShippingMode<br />case object StandardShipping extends ShippingMode<br />case object ExpressShipping extends ShippingMode<br />case object OvernightShipping extends ShippingMode<br /></pre><br />The order's ID shall be "mandatory" while we want to allow for defaults for the item list and the shipping mode. Hence we have to provide some auxiliary constructors.<br /><pre><br />case class Order27(id: Long,<br />                items: List[Item],<br />                mode: ShippingMode) {<br /><br /> def this(id: Long, items: List[Item]) =<br />   this(id, items, StandardShipping)<br /><br /> def this(id: Long, mode: ShippingMode) =<br />   this(id, Nil, StandardShipping)<br /><br /> def this(id: Long) =<br />   this(id, Nil, StandardShipping)<br />}<br /></pre><br />As you can see, now it is possible to create an order by only giving the ID, e.g.<br /><pre><br />val order = Order27(1)<br /></pre><br />will create an order with the items set to the empty list (OK, this does not make too much sense in practice) and the shipping mode set to standard shipping.<br /><br />On the one hand that's nice. But on the other hand the code is blown up significantly and it will take the reader some time to reason about the different possibilities to create an order, what is mandatory and what is optional with defaults.<br /><br />Scala 2.8 let's us define <span style="font-weight: bold;">default</span> values with the class (or method) parameters by simply putting the default values behind the type.<br /><pre><br />case class Order28(id: Long,<br />                items: List[Item] = Nil,<br />                mode: ShippingMode = StandardShipping)<br /></pre><br />Now we can leave out the arguments for which defaults are defined, e.g.<br /><pre><br />val order = Order28(1)<br /></pre><br />will again create an order with no items and standard shipping. But this time there is no auxiliary constructor necessary to achieve that. Wow!<br /><br />But how can we give the shipping mode and leave out the items? Looking at the order of the parameters in the primary constructor it is obvious that we have to give the item list before the shipping mode.<br /><pre><br />val order = Order28(1, HERE GOES THE ITEM LIST, OvernightShipping)<br /></pre><br />This is where <span style="font-weight: bold;">named</span> arguments enter the game. We simply prepend an argument value with its name, e.g.<br /><pre><br />val order = Order28(1, mode = OvernightShipping)<br /></pre><br />This way Scala knows how to get things right. Wow!!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-313365544165984631?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1203</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Invitation to improve ScalaModules&#8217;s DSL</title>
		<link>http://www.weiglewilczek.com/blog/?p=1194</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1194#comments</comments>
		<pubDate>Sat, 12 Sep 2009 14:03:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-7296030582179217538</guid>
		<description><![CDATA[<div>Over the last months the <a href="http://www.scalamodules.org/">ScalaModules</a> team has worked on the upcoming 2.0 release. There will be a lot of improvements, e.g. auto-registration of service interfaces, operator notation, filters as objects and the user guide transferred to the Wiki. We are not ready for a final release yet, but most things should already be fairly stable.</div><div><br /></div><div>There is still one thing we are racking our brains over a lot and maybe one of you could come up with a better solution that we have got right now. The new API for registering services offers auto-registration of service interfaces, such that there is no need to explicitly define the service interface(s). The following snippet will register the service greeting under the service interface <i>Greeting</i>, because greeting implements <i>Greeting</i>.</div><div><br /></div><div><span class="Apple-style-span" style="font-family:'courier new'"><span class="Apple-style-span" style="color:#000099">trait Greeting ...</span></span></div><div><span class="Apple-style-span" style="font-family:'courier new'"><span class="Apple-style-span" style="color:#000099">val greeting = ...</span></span></div><div><span class="Apple-style-span" style="font-family:'courier new'"><span class="Apple-style-span" style="color:#000099">ctx register greeting</span></span></div><div><br /></div><div>Of course there are times when you want to explicitly register a service under a certain service interface. Now it would be very nice to write something like</div><div><br /></div><div><span class="Apple-style-span" style="color:#000099"><span class="Apple-style-span" style="font-family:'courier new'">ctx register greeting as classOf[AnotherInterface]</span></span></div><div><br /></div><div>But this will not work in the current implementation, because register will be executed before as, which will register greeting under <i>Greeting</i>, just like above. Hence you have to use parenthesis like</div><div><br /></div><div><span class="Apple-style-span" style="font-family:'courier new'"><span class="Apple-style-span" style="color:#000099">ctx register (greeting as classOf[AnotherInterface])</span></span></div><div><br /></div><div>Of course we have come up with a nice operator notation which takes the neccessary precedence into account. You could register greeting under the service interface AnotherInterface like this</div><div><br /></div><div><span class="Apple-style-span" style="font-family:'courier new', serif;color:#000099">ctx &#60; greeting / classOf[AnotherInterface]</span></div><div><br /></div><div>There is no need to use parenthesis here, because <i>/</i> will be executed first, because its precedence is higher than <i>&#60;</i>.</div><div><br /></div><div>But we would still like to get rid of the parenthesis in the "wordy" style. Roman already came up with an idea which you can take from the <a href="http://groups.google.com/group/scalamodules-user">ScalaModules Google group</a>. But when it comes to using <i>as</i> and <i>withProps</i> at the same time this is not adequate. So the question is, whether you have an idea how we could write something like</div><div><br /></div><div><span class="Apple-style-span" style="color:#000099"><span class="Apple-style-span" style="font-family:'courier new'">ctx register as classOf[AnotherInterface] withProps ("x" -&#62; "y")</span></span></div><div><br /></div><div>I am looking forward for your suggestions!</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-7296030582179217538?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[<div>Over the last months the <a href="http://www.scalamodules.org/">ScalaModules</a> team has worked on the upcoming 2.0 release. There will be a lot of improvements, e.g. auto-registration of service interfaces, operator notation, filters as objects and the user guide transferred to the Wiki. We are not ready for a final release yet, but most things should already be fairly stable.</div><div><br /></div><div>There is still one thing we are racking our brains over a lot and maybe one of you could come up with a better solution that we have got right now. The new API for registering services offers auto-registration of service interfaces, such that there is no need to explicitly define the service interface(s). The following snippet will register the service greeting under the service interface <i>Greeting</i>, because greeting implements <i>Greeting</i>.</div><div><br /></div><div><span class="Apple-style-span"  style="font-family:'courier new';"><span class="Apple-style-span"  style="color:#000099;">trait Greeting ...</span></span></div><div><span class="Apple-style-span"  style="font-family:'courier new';"><span class="Apple-style-span"  style="color:#000099;">val greeting = ...</span></span></div><div><span class="Apple-style-span"  style="font-family:'courier new';"><span class="Apple-style-span"  style="color:#000099;">ctx register greeting</span></span></div><div><br /></div><div>Of course there are times when you want to explicitly register a service under a certain service interface. Now it would be very nice to write something like</div><div><br /></div><div><span class="Apple-style-span"  style="color:#000099;"><span class="Apple-style-span"  style="font-family:'courier new';">ctx register greeting as classOf[AnotherInterface]</span></span></div><div><br /></div><div>But this will not work in the current implementation, because register will be executed before as, which will register greeting under <i>Greeting</i>, just like above. Hence you have to use parenthesis like</div><div><br /></div><div><span class="Apple-style-span"  style="font-family:'courier new';"><span class="Apple-style-span"  style="color:#000099;">ctx register (greeting as classOf[AnotherInterface])</span></span></div><div><br /></div><div>Of course we have come up with a nice operator notation which takes the neccessary precedence into account. You could register greeting under the service interface AnotherInterface like this</div><div><br /></div><div><span class="Apple-style-span"   style="font-family:'courier new', serif;color:#000099;">ctx &lt; greeting / classOf[AnotherInterface]</span></div><div><br /></div><div>There is no need to use parenthesis here, because <i>/</i> will be executed first, because its precedence is higher than <i>&lt;</i>.</div><div><br /></div><div>But we would still like to get rid of the parenthesis in the "wordy" style. Roman already came up with an idea which you can take from the <a href="http://groups.google.com/group/scalamodules-user">ScalaModules Google group</a>. But when it comes to using <i>as</i> and <i>withProps</i> at the same time this is not adequate. So the question is, whether you have an idea how we could write something like</div><div><br /></div><div><span class="Apple-style-span"  style="color:#000099;"><span class="Apple-style-span"  style="font-family:'courier new';">ctx register as classOf[AnotherInterface] withProps ("x" -&gt; "y")</span></span></div><div><br /></div><div>I am looking forward for your suggestions!</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-7296030582179217538?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1194</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSGi-fied Scala libraries updated to 2.7.6</title>
		<link>http://www.weiglewilczek.com/blog/?p=1193</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1193#comments</comments>
		<pubDate>Sat, 12 Sep 2009 11:38:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-4540443352741375628</guid>
		<description><![CDATA[Now that we have got Scala 2.7.6 I also updated the <a href="http://wiki.github.com/hseeberger/scala-lang-osgi">OSGi version of the Scala libraries</a>. Please take it from the <a href="http://scala-tools.org/repo-releases/org/scala-lang-osgi/">scala-tools.org Maven repository</a>.<div><br /></div><div>Currently there is an ongoing discussion about modularizing the official Scala code base, just take a look at the <a href="http://www.scala-lang.org/node/199#scala-internals">scala-internals mailing list</a>. Hopefully we will see some success soon which might make the extra OSGi version obsolete though. But right now these extra OSGi-fied libraries are the way to go if you want to run OSGi on Scala or Scala on OSGi.</div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-4540443352741375628?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[Now that we have got Scala 2.7.6 I also updated the <a href="http://wiki.github.com/hseeberger/scala-lang-osgi">OSGi version of the Scala libraries</a>. Please take it from the <a href="http://scala-tools.org/repo-releases/org/scala-lang-osgi/">scala-tools.org Maven repository</a>.<div><br /></div><div>Currently there is an ongoing discussion about modularizing the official Scala code base, just take a look at the <a href="http://www.scala-lang.org/node/199#scala-internals">scala-internals mailing list</a>. Hopefully we will see some success soon which might make the extra OSGi version obsolete though. But right now these extra OSGi-fied libraries are the way to go if you want to run OSGi on Scala or Scala on OSGi.</div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-4540443352741375628?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1193</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse Insurance Day 30.9.09 in Köln</title>
		<link>http://www.weiglewilczek.com/blog/?p=1169</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1169#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:06:42 +0000</pubDate>
		<dc:creator>Jörn Weigle</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Jörn Weigle]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Eclipse Insurance]]></category>

		<guid isPermaLink="false">http://www.weiglewilczek.com/blog/?p=1169</guid>
		<description><![CDATA[Insurance meets Eclipse - Fachkonferenz zu Open Source-basierten Lösungen für Versicherungen]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclipse-insurance.org"><img class="alignright size-full wp-image-1179" src="http://www.weiglewilczek.com/blog/wp-content/uploads/eid1.png" alt="EID" width="160" height="160" /></a>Nach den Erfolgen der <a title="Eclipse Banking Day Website" href="http://www.eclipse-banking.org" target="_blank">Eclipse Banking Days </a>veranstaltet WW nun eine Fachkonferenz zu Open Source-basierten Lösungen für Versicherungen. Der technologische Schwerpunkt liegt auf Eclipse, allerdings richtet sich die Veranstaltung primär an IT-Entscheider aus Versicherungen und IT-Dienstleistern für Versicherungen. Redner sind u.a. Mike Milinkovich, Excutive Director der Eclipse Foundation sowie Prof. Dr. Helten, Präsident des Bayerischen Finanz Zentrums<br />
(-&gt; <a title="EID Agenda" href="http://www.eclipse-insurance.org/agenda.html" target="_blank">Agenda</a>).</p>
<p>Die Resonanz auf die ersten Ankündigungen ist hervorragend, so dass ich mich auf einen gut besuchten Tag mit spannenden Vorträgen und Gesprächen am Rand freue.</p>
<p><a href="http://www.eclipse-insurance.org/direct.html" target="_blank">Zur EID Anmeldung</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSGi on Scala slides from OSGi DevCon Europe 09 online</title>
		<link>http://www.weiglewilczek.com/blog/?p=1166</link>
		<comments>http://www.weiglewilczek.com/blog/?p=1166#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:13:00 +0000</pubDate>
		<dc:creator>Heiko Seeberger</dc:creator>
				<category><![CDATA[Heiko Seeberger]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">tag:blogger.com,1999:blog-5453594210552123250.post-5348979513415079226</guid>
		<description><![CDATA[In my <a href="http://heikoseeberger.blogspot.com/2009/06/running-osgi-and-scalamodules-in-scalas.html">former blog post</a> I reasoned about whether I should do a live demo of OSGi on Scala / <a href="http://www.scalamodules.org/">ScalaModules</a> at OSGi DevCon Europe 09. As I received very positive feedback from the community (thanx for that!) I decided to go for it. Now I just finished my short talk and everything (at least the hacking part) went fine. For those not able to attend, please find the slides (which try to give you some live feeling) at <a href="http://www.slideshare.net/heiko.seeberger/osgi-devcon-europe-09-osgi-on-scala">my Slidespace</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-5348979513415079226?l=heikoseeberger.blogspot.com' alt='' /></div>]]></description>
			<content:encoded><![CDATA[In my <a href="http://heikoseeberger.blogspot.com/2009/06/running-osgi-and-scalamodules-in-scalas.html">former blog post</a> I reasoned about whether I should do a live demo of OSGi on Scala / <a href="http://www.scalamodules.org/">ScalaModules</a> at OSGi DevCon Europe 09. As I received very positive feedback from the community (thanx for that!) I decided to go for it. Now I just finished my short talk and everything (at least the hacking part) went fine. For those not able to attend, please find the slides (which try to give you some live feeling) at <a href="http://www.slideshare.net/heiko.seeberger/osgi-devcon-europe-09-osgi-on-scala">my Slidespace</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5453594210552123250-5348979513415079226?l=heikoseeberger.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.weiglewilczek.com/blog/?feed=rss2&amp;p=1166</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
