When writing you occasionally make bold statements. Rarely does somebody call my bluff. But somebody did and therefore I have to show you ten significantly different hello world examples.
One
<literal type="string" uri="res:/tomgeudens/helloworld-literal">Hello World</literal>
As I've said before, we should have that one in the list of Hello World programs.
Two
<accessor>
<id>tomgeudens:helloworld:java:accessor</id>
<class>org.tomgeudens.helloworld.HelloWorldAccessor</class>
<grammar>res:/tomgeudens/helloworld-java</grammar>
</accessor>
For the code itself I refer to earlier blogposts.
Three
<accessor>
<id>tomgeudens:helloworld:groovy:accessor</id>
<prototype>GroovyPrototype</prototype>
<script>res:/resources/groovy/helloworld.groovy</script>
<grammar>res:/tomgeudens/helloworld-groovy</grammar>
</accessor>
Which requires the script and the language import
<literal type="string" uri="res:/resources/groovy/helloworld.groovy">
context.createResponseFrom("Hello World");
</literal>
<import>
<!-- contains GroovyPrototype -->
<uri>urn:org:netkernel:lang:groovy</uri>
</import>
Four
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-data</grammar>
<request>
<identifier>data:text/plain,Hello World</identifier>
</request>
</endpoint>
</config>
<space>
<import>
<!-- contains data:/ scheme -->
<uri>urn:org:netkernel:ext:layer1</uri>
</import>
</space>
</mapper>
Five
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-file</grammar>
<request>
<identifier>file:/c:/temp/helloworld.txt</identifier>
</request>
</endpoint>
</config>
<space>
<import>
<!-- contains file:/ scheme -->
<uri>urn:org:netkernel:ext:layer1</uri>
</import>
</space>
</mapper>
Of course you need to replace the identifier with an existing file of your own.
Six
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-fileset</grammar>
<request>
<identifier>res:/resources/txt/helloworld.txt</identifier>
</request>
</endpoint>
</config>
<space>
<fileset>
<regex>res:/resources/txt/.*</regex>
</fileset>
</space>
</mapper>
Seven
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-freemarker</grammar>
<request>
<identifier>active:freemarker</identifier>
<argument name="operator">data:text/plain,${one} ${two}</argument>
<argument name="one">data:text/plain,Hello</argument>
<argument name="two">data:text/plain,World</argument>
</request>
</endpoint>
</config>
<space>
<import>
<!-- contains active:freemarker -->
<uri>urn:org:netkernel:lang:freemarker</uri>
</import>
<import>
<!-- contains data:/ scheme -->
<uri>urn:org:netkernel:ext:layer1</uri>
</import>
</space>
</mapper>
Eight
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-http</grammar>
<request>
<identifier>http://localhost:8080/tomgeudens/helloworld-literal</identifier>
</request>
</endpoint>
</config>
<space>
<import>
<!-- contains http:/ scheme -->
<uri>urn:org:netkernel:client:http</uri>
</import>
</space>
</mapper>
Which requires that the first example is exposed on the frontend fulcrum.
Nine
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-xpath</grammar>
<request>
<identifier>active:xpath</identifier>
<argument name="operand">
<literal type="xml">
<document>Hello World</document>
</literal>
</argument>
<argument name="operator">
<literal type="string">string(/document)</literal>
</argument>
</request>
</endpoint>
</config>
<space>
<import>
<!-- contains active:xpath -->
<uri>urn:org:netkernel:xml:core</uri>
</import>
</space>
</mapper>
Ten
<mapper>
<config>
<endpoint>
<grammar>res:/tomgeudens/helloworld-dpml</grammar>
<request>
<identifier>active:dpml</identifier>
<argument name="operator">res:/resources/dpml/helloworld.dpml</argument>
</request>
</endpoint>
</config>
<space>
<literal type="xml" uri="res:/resources/dpml/helloworld.dpml">
<sequence>
<literal assignment="response" type="string">Hello World</literal>
</sequence>
</literal>
<import>
<!-- contains active:dpml -->
<uri>urn:org:netkernel:lang:dpml</uri>
</import>
</space>
</mapper>
And there you go, ten resource oriented hello world examples. There are many more possibilities but I think the above show both that there is a lot available and at the same time show that the patterns are always the same. Enjoy.