Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

added a very simple web app example illustrating the integration betw…

…een Micro and StringTemplate
  • Loading branch information...
commit 869f065ac33617918ad15b1bad945eeffe3cc63b 1 parent 2d56b81
@florinpatrascu authored
Showing with 1,001 additions and 0 deletions.
  1. +19 −0 st-demo/README.md
  2. +31 −0 st-demo/WEB-INF/classes/ehcache.xml
  3. +10 −0 st-demo/WEB-INF/config/application.bsh
  4. +7 −0 st-demo/WEB-INF/config/extensions/i18N.yml
  5. +4 −0 st-demo/WEB-INF/config/extensions/st.yml
  6. +207 −0 st-demo/WEB-INF/config/extensions/st/LICENSE
  7. +30 −0 st-demo/WEB-INF/config/extensions/st/README.md
  8. +25 −0 st-demo/WEB-INF/config/extensions/st/build.properties
  9. +127 −0 st-demo/WEB-INF/config/extensions/st/build.xml
  10. +207 −0 st-demo/WEB-INF/config/extensions/st/lib/LICENSE
  11. BIN  st-demo/WEB-INF/config/extensions/st/lib/ST-4.0.7.jar
  12. BIN  st-demo/WEB-INF/config/extensions/st/lib/antlr-runtime-4.0.jar
  13. BIN  st-demo/WEB-INF/config/extensions/st/lib/st_engine-0.1.1.jar
  14. +47 −0 st-demo/WEB-INF/config/extensions/st/src/ca/simplegames/micro/extensions/STExtension.java
  15. +80 −0 st-demo/WEB-INF/config/extensions/st/src/ca/simplegames/micro/viewers/st/STViewRenderer.java
  16. +1 −0  st-demo/WEB-INF/config/locales/messages_en.properties
  17. +1 −0  st-demo/WEB-INF/config/locales/messages_fr.properties
  18. +26 −0 st-demo/WEB-INF/config/micro-config.yml
  19. +13 −0 st-demo/WEB-INF/config/routes.yml
  20. +5 −0 st-demo/WEB-INF/views/content/index.html
  21. +4 −0 st-demo/WEB-INF/views/partials/demo.st
  22. +1 −0  st-demo/WEB-INF/views/partials/footer.html
  23. +18 −0 st-demo/WEB-INF/views/templates/404.html
  24. +16 −0 st-demo/WEB-INF/views/templates/500.html
  25. +28 −0 st-demo/WEB-INF/views/templates/default.html
  26. +47 −0 st-demo/WEB-INF/web.xml
  27. BIN  st-demo/favicon.ico
  28. +7 −0 st-demo/run.sh
  29. +40 −0 st-demo/styles/main.css
View
19 st-demo/README.md
@@ -0,0 +1,19 @@
+## StringTemplate demo
+
+This is a very simple web application demonstrating the integration between Micro and [StringTemplate](http://www.stringtemplate.org/), a Java template engine.
+
+### How to use it:
+
+Micro must be properly configured. You can check this with:
+
+ $ micro -v
+
+see the [docs](http://micro-docs.simplegames.ca/) for more details.
+
+### Install the st-demo web application
+
+ git clone https://github.com/florinpatrascu/micro-examples.git
+ cd micro-examples/st-demo
+ ./run.sh
+
+Micro is now started and it is using the embedded Jetty web server. To access the web application, point your browser at: `http://localhost:8080` or `http://0.0.0.0:8080`
View
31 st-demo/WEB-INF/classes/ehcache.xml
@@ -0,0 +1,31 @@
+<ehcache>
+ <diskStore path="java.io.tmpdir"/>
+
+ <defaultCache
+ maxElementsInMemory="500"
+ eternal="false"
+ overflowToDisk="false"
+ timeToIdleSeconds="10"
+ timeToLiveSeconds="20"
+ />
+
+ <cache name="memCache"
+ maxElementsInMemory="100"
+ eternal="false"
+ timeToIdleSeconds="320"
+ timeToLiveSeconds="420"
+ overflowToDisk="false"
+ diskPersistent="false"
+ diskExpiryThreadIntervalSeconds="60"
+ />
+
+ <cache name="views"
+ maxElementsInMemory="200"
+ eternal="false"
+ timeToIdleSeconds="320"
+ timeToLiveSeconds="420"
+ overflowToDisk="false"
+ diskPersistent="false"
+ diskExpiryThreadIntervalSeconds="60"
+ />
+</ehcache>
View
10 st-demo/WEB-INF/config/application.bsh
@@ -0,0 +1,10 @@
+import ca.simplegames.micro.Globals;
+/**
+ * This controller is executed after the Micro framework is loaded
+ */
+
+site.ExtensionsManager
+ .require("i18N")
+ .require("st");
+
+// log.info("Micro is running ...");
View
7 st-demo/WEB-INF/config/extensions/i18N.yml
@@ -0,0 +1,7 @@
+#alias: L10n
+class: ca.simplegames.micro.extensions.i18n.I18NExtension
+intercept: {parameter_name: language, scope: "session, request, context"}
+default_encoding: utf-8
+fallback_to_system_locale: true
+resource_cache: 10
+base_names: [config/locales/messages]
View
4 st-demo/WEB-INF/config/extensions/st.yml
@@ -0,0 +1,4 @@
+class: ca.simplegames.micro.extensions.STExtension
+engine:
+ name: st
+ class: ca.simplegames.micro.viewers.st.STViewRenderer
View
207 st-demo/WEB-INF/config/extensions/st/LICENSE
@@ -0,0 +1,207 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction, and
+ distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by the
+ copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all other
+ entities that control, are controlled by, or are under common control with
+ that entity. For the purposes of this definition, "control" means (i) the
+ power, direct or indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (ii) ownership of
+ fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
+ ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
+ permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation source,
+ and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical transformation
+ or translation of a Source form, including but not limited to compiled
+ object code, generated documentation, and conversions to
+ other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or Object
+ form, made available under the License, as indicated by a copyright notice
+ that is included in or attached to the work (an example is provided in the
+ Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object form,
+ that is based on (or derived from) the Work and for which the editorial
+ revisions, annotations, elaborations, or other modifications represent,
+ as a whole, an original work of authorship. For the purposes of this
+ License, Derivative Works shall not include works that remain separable
+ from, or merely link (or bind by name) to the interfaces of, the Work and
+ Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including the original
+ version of the Work and any modifications or additions to that Work or
+ Derivative Works thereof, that is intentionally submitted to Licensor for
+ inclusion in the Work by the copyright owner or by an individual or
+ Legal Entity authorized to submit on behalf of the copyright owner.
+ For the purposes of this definition, "submitted" means any form of
+ electronic, verbal, or written communication sent to the Licensor or its
+ representatives, including but not limited to communication on electronic
+ mailing lists, source code control systems, and issue tracking systems
+ that are managed by, or on behalf of, the Licensor for the purpose of
+ discussing and improving the Work, but excluding communication that is
+ conspicuously marked or otherwise designated in writing by the copyright
+ owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity on
+ behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+ Subject to the terms and conditions of this License, each Contributor
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
+ royalty-free, irrevocable copyright license to reproduce, prepare
+ Derivative Works of, publicly display, publicly perform, sublicense,
+ and distribute the Work and such Derivative Works in
+ Source or Object form.
+
+3. Grant of Patent License.
+
+ Subject to the terms and conditions of this License, each Contributor
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
+ royalty-free, irrevocable (except as stated in this section) patent
+ license to make, have made, use, offer to sell, sell, import, and
+ otherwise transfer the Work, where such license applies only to those
+ patent claims licensable by such Contributor that are necessarily
+ infringed by their Contribution(s) alone or by combination of their
+ Contribution(s) with the Work to which such Contribution(s) was submitted.
+ If You institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+ Contribution incorporated within the Work constitutes direct or
+ contributory patent infringement, then any patent licenses granted to
+ You under this License for that Work shall terminate as of the date such
+ litigation is filed.
+
+4. Redistribution.
+
+ You may reproduce and distribute copies of the Work or Derivative Works
+ thereof in any medium, with or without modifications, and in Source or
+ Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works a
+ copy of this License; and
+
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+
+ 3. You must retain, in the Source form of any Derivative Works that You
+ distribute, all copyright, patent, trademark, and attribution notices from
+ the Source form of the Work, excluding those notices that do not pertain
+ to any part of the Derivative Works; and
+
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable copy
+ of the attribution notices contained within such NOTICE file, excluding
+ those notices that do not pertain to any part of the Derivative Works,
+ in at least one of the following places: within a NOTICE text file
+ distributed as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or, within a
+ display generated by the Derivative Works, if and wherever such
+ third-party notices normally appear. The contents of the NOTICE file are
+ for informational purposes only and do not modify the License.
+ You may add Your own attribution notices within Derivative Works that You
+ distribute, alongside or as an addendum to the NOTICE text from the Work,
+ provided that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and may
+ provide additional or different license terms and conditions for use,
+ reproduction, or distribution of Your modifications, or for any such
+ Derivative Works as a whole, provided Your use, reproduction, and
+ distribution of the Work otherwise complies with the conditions
+ stated in this License.
+
+5. Submission of Contributions.
+
+ Unless You explicitly state otherwise, any Contribution intentionally
+ submitted for inclusion in the Work by You to the Licensor shall be under
+ the terms and conditions of this License, without any additional
+ terms or conditions. Notwithstanding the above, nothing herein shall
+ supersede or modify the terms of any separate license agreement you may
+ have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+ This License does not grant permission to use the trade names, trademarks,
+ service marks, or product names of the Licensor, except as required for
+ reasonable and customary use in describing the origin of the Work and
+ reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+ Unless required by applicable law or agreed to in writing, Licensor
+ provides the Work (and each Contributor provides its Contributions)
+ on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ either express or implied, including, without limitation, any warranties
+ or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
+ FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any risks
+ associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+ In no event and under no legal theory, whether in tort
+ (including negligence), contract, or otherwise, unless required by
+ applicable law (such as deliberate and grossly negligent acts) or agreed
+ to in writing, shall any Contributor be liable to You for damages,
+ including any direct, indirect, special, incidental, or consequential
+ damages of any character arising as a result of this License or out of
+ the use or inability to use the Work (including but not limited to damages
+ for loss of goodwill, work stoppage, computer failure or malfunction,
+ or any and all other commercial damages or losses), even if such
+ Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+ While redistributing the Work or Derivative Works thereof, You may choose
+ to offer, and charge a fee for, acceptance of support, warranty,
+ indemnity, or other liability obligations and/or rights consistent with
+ this License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf of any
+ other Contributor, and only if You agree to indemnify, defend, and hold
+ each Contributor harmless for any liability incurred by, or claims
+ asserted against, such Contributor by reason of your accepting any such
+ warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+ To apply the Apache License to your work, attach the following boilerplate
+ notice, with the fields enclosed by brackets "[]" replaced with your own
+ identifying information. (Don't include the brackets!) The text should be
+ enclosed in the appropriate comment syntax for the file format. We also
+ recommend that a file or class name and description of purpose be included
+ on the same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2013 Florin T.PATRASCU
+
+ Licensed 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.
View
30 st-demo/WEB-INF/config/extensions/st/README.md
@@ -0,0 +1,30 @@
+## StringTemplate engine
+
+Extending Micro with support for StringTemplate rendering.
+
+### Build from source
+
+ # check if the `${MICRO_HOME}` environment variable is defined
+ # then:
+
+ $ cd st
+ $ ant clean; ant dist
+
+### Install
+Copy (or create symbolic links) the `st` folder and `st.yml` file to your application extensions folder. The `extensions` folder will contain at least the following:
+
+ extensions/
+ ├── st/
+ ├── st.yml
+ └── ...
+
+Edit the `application.bsh` startup controller and required the `st` extension, example:
+
+ site.ExtensionsManager
+ .require("i18N")
+ .require("st"); // <-- just added
+
+restart the app and go to: `http://localhost:8080/cache`. The following interface will be shown:
+
+### License
+**Apache License 2**, see the `LICENSE` file in this folder.
View
25 st-demo/WEB-INF/config/extensions/st/build.properties
@@ -0,0 +1,25 @@
+#
+# Copyright (c)2013 Florin T.Pătraşcu
+#
+# Licensed 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.
+#
+
+copyright=Copyright (c)2012-2013, Florin T.PATRASCU. All Rights Reserved.
+
+name=st_engine
+
+root.dir=.
+src.dir=src
+build.dir=${root.dir}/build
+build.classes=${build.dir}/classes
+build.dist=${root.dir}/lib
View
127 st-demo/WEB-INF/config/extensions/st/build.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (c)2013 Florin T.Pătraşcu
+ ~
+ ~ Licensed 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.
+ -->
+
+<project name="st_engine" default="dist">
+ <presetdef name="javac">
+ <javac includeantruntime="false"/>
+ </presetdef>
+
+ <tstamp>
+ <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss"/>
+ </tstamp>
+
+ <property environment="env"/>
+
+ <property name="release.major" value="0"/>
+ <property name="release.minor" value="1"/>
+ <property file="build.properties"/>
+ <property name="skip.tests" value="true"/>
+
+ <!-- Compiler options -->
+ <property name="compiler.debug" value="on"/>
+ <property name="compiler.optimize" value="on"/>
+ <property name="compiler.generate.no.warnings" value="off"/>
+ <property name="compiler.encoding" value="utf-8"/>
+ <property name="compiler.args" value=""/>
+ <property name="compiler.source" value="1.6"/>
+ <property name="compiler.target" value="1.6"/>
+
+ <!-- Compiler resources -->
+ <patternset id="compiler.resources">
+ <include name="**/?*.properties"/>
+ <include name="**/?*.xml"/>
+ <include name="**/?*.vm"/>
+ <include name="**/?*.yaml"/>
+ <include name="**/?*.json"/>
+ </patternset>
+
+ <!-- ==================================================== -->
+ <!-- Initialize Ant -->
+ <!-- ==================================================== -->
+ <target name="init">
+ <tstamp/>
+ </target>
+
+ <property name="version" value="${release.major}.${release.minor}.1"/>
+
+ <!-- ====================================================================== -->
+ <!-- Compile the source code. -->
+ <!-- ====================================================================== -->
+ <target name="compile" depends="init">
+
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.classes}"/>
+
+ <javac srcdir="${src.dir}"
+ destdir="${build.classes}"
+ debug="${compiler.debug}"
+ deprecation="${compiler.generate.no.warnings}"
+ encoding="utf8"
+ optimize="${compiler.optimize}">
+
+ <include name="**/*.java"/>
+
+ <classpath>
+ <fileset dir="${build.dist}">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="${env.MICRO_HOME}/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="${env.MICRO_HOME}/dist">
+ <include name="**/*.jar"/>
+ </fileset>
+ </classpath>
+ </javac>
+
+ <copy todir="${build.classes}">
+ <fileset dir="${src.dir}">
+ <patternset refid="compiler.resources"/>
+ <type type="file"/>
+ </fileset>
+ </copy>
+
+ </target>
+
+ <!-- ====================================================================== -->
+ <!-- Create the JAR archive. -->
+ <!-- ====================================================================== -->
+ <target name="dist" depends="compile">
+ <mkdir dir="${build.dist}"/>
+ <jar jarfile="${build.dist}/${name}-${version}.jar" basedir="${build.classes}">
+ <manifest>
+ <attribute name="Signature-Title" value="${name}"/>
+ <attribute name="Signature-Version" value="${version}"/>
+ <attribute name="Signature-Vendor" value="${copyright}"/>
+ <attribute name="Built-By" value="${user.name}"/>
+ <attribute name="Built-Date" value="${TODAY}"/>
+ </manifest>
+ </jar>
+ <copy file="LICENSE"
+ tofile="${build.dist}/LICENSE"
+ overwrite="true"/>
+
+ </target>
+
+ <!-- ====================================================================== -->
+ <!-- Clean up generated stuff -->
+ <!-- ====================================================================== -->
+ <target name="clean">
+ <delete file="${build.dist}/${name}-${version}.jar"/>
+ <delete dir="${build.dir}"/>
+ </target>
+</project>
View
207 st-demo/WEB-INF/config/extensions/st/lib/LICENSE
@@ -0,0 +1,207 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction, and
+ distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by the
+ copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all other
+ entities that control, are controlled by, or are under common control with
+ that entity. For the purposes of this definition, "control" means (i) the
+ power, direct or indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (ii) ownership of
+ fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
+ ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
+ permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation source,
+ and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical transformation
+ or translation of a Source form, including but not limited to compiled
+ object code, generated documentation, and conversions to
+ other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or Object
+ form, made available under the License, as indicated by a copyright notice
+ that is included in or attached to the work (an example is provided in the
+ Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object form,
+ that is based on (or derived from) the Work and for which the editorial
+ revisions, annotations, elaborations, or other modifications represent,
+ as a whole, an original work of authorship. For the purposes of this
+ License, Derivative Works shall not include works that remain separable
+ from, or merely link (or bind by name) to the interfaces of, the Work and
+ Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including the original
+ version of the Work and any modifications or additions to that Work or
+ Derivative Works thereof, that is intentionally submitted to Licensor for
+ inclusion in the Work by the copyright owner or by an individual or
+ Legal Entity authorized to submit on behalf of the copyright owner.
+ For the purposes of this definition, "submitted" means any form of
+ electronic, verbal, or written communication sent to the Licensor or its
+ representatives, including but not limited to communication on electronic
+ mailing lists, source code control systems, and issue tracking systems
+ that are managed by, or on behalf of, the Licensor for the purpose of
+ discussing and improving the Work, but excluding communication that is
+ conspicuously marked or otherwise designated in writing by the copyright
+ owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity on
+ behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License.
+
+ Subject to the terms and conditions of this License, each Contributor
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
+ royalty-free, irrevocable copyright license to reproduce, prepare
+ Derivative Works of, publicly display, publicly perform, sublicense,
+ and distribute the Work and such Derivative Works in
+ Source or Object form.
+
+3. Grant of Patent License.
+
+ Subject to the terms and conditions of this License, each Contributor
+ hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
+ royalty-free, irrevocable (except as stated in this section) patent
+ license to make, have made, use, offer to sell, sell, import, and
+ otherwise transfer the Work, where such license applies only to those
+ patent claims licensable by such Contributor that are necessarily
+ infringed by their Contribution(s) alone or by combination of their
+ Contribution(s) with the Work to which such Contribution(s) was submitted.
+ If You institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+ Contribution incorporated within the Work constitutes direct or
+ contributory patent infringement, then any patent licenses granted to
+ You under this License for that Work shall terminate as of the date such
+ litigation is filed.
+
+4. Redistribution.
+
+ You may reproduce and distribute copies of the Work or Derivative Works
+ thereof in any medium, with or without modifications, and in Source or
+ Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works a
+ copy of this License; and
+
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+
+ 3. You must retain, in the Source form of any Derivative Works that You
+ distribute, all copyright, patent, trademark, and attribution notices from
+ the Source form of the Work, excluding those notices that do not pertain
+ to any part of the Derivative Works; and
+
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable copy
+ of the attribution notices contained within such NOTICE file, excluding
+ those notices that do not pertain to any part of the Derivative Works,
+ in at least one of the following places: within a NOTICE text file
+ distributed as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or, within a
+ display generated by the Derivative Works, if and wherever such
+ third-party notices normally appear. The contents of the NOTICE file are
+ for informational purposes only and do not modify the License.
+ You may add Your own attribution notices within Derivative Works that You
+ distribute, alongside or as an addendum to the NOTICE text from the Work,
+ provided that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and may
+ provide additional or different license terms and conditions for use,
+ reproduction, or distribution of Your modifications, or for any such
+ Derivative Works as a whole, provided Your use, reproduction, and
+ distribution of the Work otherwise complies with the conditions
+ stated in this License.
+
+5. Submission of Contributions.
+
+ Unless You explicitly state otherwise, any Contribution intentionally
+ submitted for inclusion in the Work by You to the Licensor shall be under
+ the terms and conditions of this License, without any additional
+ terms or conditions. Notwithstanding the above, nothing herein shall
+ supersede or modify the terms of any separate license agreement you may
+ have executed with Licensor regarding such Contributions.
+
+6. Trademarks.
+
+ This License does not grant permission to use the trade names, trademarks,
+ service marks, or product names of the Licensor, except as required for
+ reasonable and customary use in describing the origin of the Work and
+ reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+ Unless required by applicable law or agreed to in writing, Licensor
+ provides the Work (and each Contributor provides its Contributions)
+ on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ either express or implied, including, without limitation, any warranties
+ or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
+ FOR A PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any risks
+ associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability.
+
+ In no event and under no legal theory, whether in tort
+ (including negligence), contract, or otherwise, unless required by
+ applicable law (such as deliberate and grossly negligent acts) or agreed
+ to in writing, shall any Contributor be liable to You for damages,
+ including any direct, indirect, special, incidental, or consequential
+ damages of any character arising as a result of this License or out of
+ the use or inability to use the Work (including but not limited to damages
+ for loss of goodwill, work stoppage, computer failure or malfunction,
+ or any and all other commercial damages or losses), even if such
+ Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+ While redistributing the Work or Derivative Works thereof, You may choose
+ to offer, and charge a fee for, acceptance of support, warranty,
+ indemnity, or other liability obligations and/or rights consistent with
+ this License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf of any
+ other Contributor, and only if You agree to indemnify, defend, and hold
+ each Contributor harmless for any liability incurred by, or claims
+ asserted against, such Contributor by reason of your accepting any such
+ warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+ To apply the Apache License to your work, attach the following boilerplate
+ notice, with the fields enclosed by brackets "[]" replaced with your own
+ identifying information. (Don't include the brackets!) The text should be
+ enclosed in the appropriate comment syntax for the file format. We also
+ recommend that a file or class name and description of purpose be included
+ on the same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2013 Florin T.PATRASCU
+
+ Licensed 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.
View
BIN  st-demo/WEB-INF/config/extensions/st/lib/ST-4.0.7.jar
Binary file not shown
View
BIN  st-demo/WEB-INF/config/extensions/st/lib/antlr-runtime-4.0.jar
Binary file not shown
View
BIN  st-demo/WEB-INF/config/extensions/st/lib/st_engine-0.1.1.jar
Binary file not shown
View
47 st-demo/WEB-INF/config/extensions/st/src/ca/simplegames/micro/extensions/STExtension.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c)2013 Florin T.Pătraşcu
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ca.simplegames.micro.extensions;
+
+import ca.simplegames.micro.Extension;
+import ca.simplegames.micro.SiteContext;
+
+import java.util.Map;
+
+/**
+ * Adding support for the StringTemplate library
+ *
+ * @author <a href="mailto:florin.patrascu@gmail.com">Florin T.PATRASCU</a>
+ * @since $Revision$ (created: 2013-02-03 7:43 PM)
+ */
+public class STExtension implements Extension {
+ private String name;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Extension register(String name, SiteContext site, Map<String, Object> configuration) throws Exception {
+ // File extensionPath = new File(site.getApplicationConfigPath(), "/extensions/st");
+ this.name = name;
+ site.getTemplateEnginesManager().addTemplateEngine(site, (Map) configuration);
+ return this;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+}
+
View
80 st-demo/WEB-INF/config/extensions/st/src/ca/simplegames/micro/viewers/st/STViewRenderer.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c)2013 Florin T.Pătraşcu
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ca.simplegames.micro.viewers.st;
+
+import ca.simplegames.micro.MicroContext;
+import ca.simplegames.micro.SiteContext;
+import ca.simplegames.micro.repositories.Repository;
+import ca.simplegames.micro.utils.CollectionUtils;
+import ca.simplegames.micro.utils.IO;
+import ca.simplegames.micro.viewers.ViewException;
+import ca.simplegames.micro.viewers.ViewRenderer;
+import org.stringtemplate.v4.ST;
+
+import java.io.FileNotFoundException;
+import java.io.StringReader;
+import java.io.Writer;
+import java.util.Map;
+
+/**
+ * Simple StringTemplate view renderer.
+ * <p/>
+ * If you learn more about the StringTemplate, visit their site:
+ * - http://www.antlr.org/wiki/display/ST4/StringTemplate+4+Wiki+Home
+ *
+ * @author <a href="mailto:florin.patrascu@gmail.com">Florin T.PATRASCU</a>
+ * @since $Revision$ (created: 2013-02-03 7:42 PM)
+ */
+public class STViewRenderer implements ViewRenderer {
+ public static final String NAME = "st";
+
+ @Override
+ public long render(String path, Repository repository, MicroContext context, Writer out) throws FileNotFoundException, ViewException {
+
+ if (repository != null && out != null) {
+ try {
+
+ String source = repository.read(path);
+ ST st = new ST(source);
+ //todo: Think! Should I use: st.write( ...)??
+ if (!CollectionUtils.isEmpty(context.getMap())) {
+ for (Map.Entry<String, Object> entry : ((Map<String, Object>) context.getMap()).entrySet()) {
+ if (!entry.getKey().equalsIgnoreCase("rack.logger")) {
+ st.add(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ return IO.copy(new StringReader(st.render()), out);
+
+ } catch (FileNotFoundException e) {
+ throw new FileNotFoundException(String.format("%s not found.", path));
+ } catch (Exception e) {
+ throw new ViewException(e);
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public void loadConfiguration(SiteContext site, Map<String, Object> configuration) throws Exception {
+ }
+
+ @Override
+ public String getName() {
+ return NAME;
+ }
+}
View
1  st-demo/WEB-INF/config/locales/messages_en.properties
@@ -0,0 +1 @@
+hello_world=Hello World!
View
1  st-demo/WEB-INF/config/locales/messages_fr.properties
@@ -0,0 +1 @@
+hello_world=Bonjour tout le monde!
View
26 st-demo/WEB-INF/config/micro-config.yml
@@ -0,0 +1,26 @@
+name: micro_app
+description: describe your web application
+
+repositories:
+ content: {path: views/content, cache: views, default: true}
+ partials: {path: views/partials, cache: views}
+ templates: {path: views/templates, cache: views}
+
+controllers: {path: controllers, cache: memCache}
+
+cache:
+ names: [memCache, views]
+ class: ca.simplegames.micro.cache.DefaultCache
+
+template_engines:
+ - engine:
+ name: velocity
+ class: ca.simplegames.micro.viewers.velocity.VelocityViewRenderer
+ options:
+ resource_cache_enabled: true
+ resource_cache_interval: 15
+ global_macro_library: global_library.vm
+ default: true
+
+# possible values: production, test or development:
+# MICRO_ENV: development
View
13 st-demo/WEB-INF/config/routes.yml
@@ -0,0 +1,13 @@
+# validate the YAMl structure with: http://yaml-online-parser.appspot.com/
+- route: "/{image_file}.{type: png|jpg|jpeg|txt}"
+ method: get, head
+ controller:
+ name: ca.simplegames.micro.controllers.BinaryContent
+ options: {
+ mime_types: { .txt: "text/plain;charset=UTF-8" }
+ }
+
+- route: /system/info
+ # method: get
+ controller:
+ name: ca.simplegames.micro.controllers.StatsController
View
5 st-demo/WEB-INF/views/content/index.html
@@ -0,0 +1,5 @@
+<h1 id="welcome">Welcome!</h1>
+#set($menu = ["a", "b", "c"])
+<pre>
+${partials.get("st", "demo.st")}
+</pre>
View
4 st-demo/WEB-INF/views/partials/demo.st
@@ -0,0 +1,4 @@
+StringTemplate demo:
+<menu: {a|
+ <a>
+}>
View
1  st-demo/WEB-INF/views/partials/footer.html
@@ -0,0 +1 @@
+powered by <span class="micro-badge"> micro $!{site.MicroVersion} </span>
View
18 st-demo/WEB-INF/views/templates/404.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>404 - File not found</title>
+ <link rel="stylesheet" href="/styles/main.css" type="text/css" charset="utf-8" media="screen">
+
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+</head>
+<body>
+ <h1>404</h1>
+ <h3>
+ File not found: $!{path}
+ </h3>
+</body>
+</html>
View
16 st-demo/WEB-INF/views/templates/500.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <title>500 - Internal server error</title>
+ <link rel="stylesheet" href="/styles/main.css" type="text/css" charset="utf-8" media="screen">
+
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+</head>
+<body>
+<h1>500</h1>
+ ${error}
+</body>
+</html>
View
28 st-demo/WEB-INF/views/templates/default.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
+ <title>Micro: Hello World! </title>
+ <meta name="author" content="Florin T.PATRASCU">
+ <link rel="stylesheet" href="/styles/main.css" type="text/css" charset="utf-8" media="screen">
+
+ <!--[if lt IE 9]>
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+</head>
+
+<body>
+
+ <div class="content">
+ $content.get($path)
+ </div>
+
+ <footer>
+ $partials.get("footer.html")
+ </footer>
+
+</body>
+</html>
View
47 st-demo/WEB-INF/web.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (c)2012. Florin T.PATRASCU
+ ~
+ ~ Licensed 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.
+ -->
+
+<!DOCTYPE web-app
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+ <filter>
+ <filter-name>Micro</filter-name>
+ <filter-class>org.jrack.RackFilter</filter-class>
+
+ <init-param>
+ <param-name>rack</param-name>
+ <param-value>ca.simplegames.micro.MicroFilter</param-value>
+ </init-param>
+
+ <init-param>
+ <param-name>ignore</param-name>
+ <param-value>bootstrap,js,images,styles,favicon</param-value>
+ </init-param>
+
+ <init-param>
+ <param-name>userClassPaths</param-name>
+ <param-value></param-value>
+ </init-param>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>Micro</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+</web-app>
View
BIN  st-demo/favicon.ico
Binary file not shown
View
7 st-demo/run.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+libs=$( echo ${MICRO_HOME}/lib/*.jar ${MICRO_HOME}/dist/*.jar . | sed 's/ /:/g')
+
+# Start Micro with the embedded Jetty server.
+OPT='-Dnet.sf.ehcache.skipUpdateCheck=true -Xmx128m -Xss512k -XX:+UseCompressedOops'
+java $OPT -cp "$libs" ca.simplegames.micro.WebServer . 8080 $1 $2 $3 $4 $5 $6
View
40 st-demo/styles/main.css
@@ -0,0 +1,40 @@
+/**
+ * You're free to add application-wide styles to this file
+ */
+body {
+ margin: 2.1em;
+ font-weight: 300;
+}
+
+h1{
+ color: #325d72;
+ font-weight: bold;
+ font-size: 24px;
+}
+
+footer{
+ color: #999;
+ font-size: 14px;
+ margin: 11px 0;
+ padding-top: 3px;
+ white-space: nowrap;
+ overflow: hidden;
+ max-width: 660px;
+ border-top: 1px solid #ddd;
+}
+
+.micro-badge{
+ webkit-border-radius: 3px;
+ moz-border-radius: 3px;
+ border-radius: 3px;
+ display: inline-block;
+ padding: 2px 4px;
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #fff;
+ text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #999;
+}
Please sign in to comment.
Something went wrong with that request. Please try again.