diff options
Diffstat (limited to 'bindings')
32 files changed, 3544 insertions, 0 deletions
diff --git a/bindings/Readme.txt b/bindings/Readme.txt new file mode 100644 index 0000000..dd12a9a --- /dev/null +++ b/bindings/Readme.txt @@ -0,0 +1,3 @@ +git clone git://projects.byte-code.com/func-bindings +git push ssh://USERNAME@projects.byte-code.com:10022/var/scm/func-bindings + diff --git a/bindings/func-grails-plugin/.classpath b/bindings/func-grails-plugin/.classpath new file mode 100644 index 0000000..c086d83 --- /dev/null +++ b/bindings/func-grails-plugin/.classpath @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/java"/> + <classpathentry kind="src" path="src/groovy"/> + <classpathentry kind="src" path="grails-app/conf"/> + <classpathentry kind="src" path="grails-app/controllers"/> + <classpathentry kind="src" path="grails-app/domain"/> + <classpathentry kind="src" path="grails-app/services"/> + <classpathentry kind="src" path="grails-app/taglib"/> + <classpathentry kind="src" path="test/integration"/> + <classpathentry kind="src" path="test/unit"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/> + <classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-logging-1.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.5.6.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ant.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jdbc2_0-stdext.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.3.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webflow-2.0-m1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jta.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/xalan.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/xercesImpl.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-commons-annotations.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.1.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/dom4j-1.6.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/xstream-1.2.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/bsf-2.3.0.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jaxen-1.1-beta-11.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-binding-2.0-m1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-annotations.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.4.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" /> + + + <classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-cli-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.0.3.jar" /> + +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.0.3.jar" /> + + + <classpathentry kind="output" path="web-app/WEB-INF/classes"/> +</classpath> diff --git a/bindings/func-grails-plugin/.project b/bindings/func-grails-plugin/.project new file mode 100644 index 0000000..b18485a --- /dev/null +++ b/bindings/func-grails-plugin/.project @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>func-grails-plugin</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.codehaus.groovy.eclipse.groovyBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.codehaus.groovy.eclipse.groovyNature</nature> + </natures> +</projectDescription> diff --git a/bindings/func-grails-plugin/.settings/org.codehaus.groovy.eclipse.preferences.prefs b/bindings/func-grails-plugin/.settings/org.codehaus.groovy.eclipse.preferences.prefs new file mode 100644 index 0000000..bf339c7 --- /dev/null +++ b/bindings/func-grails-plugin/.settings/org.codehaus.groovy.eclipse.preferences.prefs @@ -0,0 +1,3 @@ +#Created by grails +eclipse.preferences.version=1 +groovy.dont.generate.class.files=true diff --git a/bindings/func-grails-plugin/FuncGrailsPlugin.groovy b/bindings/func-grails-plugin/FuncGrailsPlugin.groovy new file mode 100644 index 0000000..e2168a1 --- /dev/null +++ b/bindings/func-grails-plugin/FuncGrailsPlugin.groovy @@ -0,0 +1,20 @@ +import org.func.FuncImpl + +class FuncGrailsPlugin { + def version = 1.0 + def dependsOn = [:] + + def author = "Marco Mornati" + def authorEmail = "mmornati@byte-code.com" + def title = "Plugin to make your application ables to call Func (https://fedorahosted.org/func)" + + // URL to the plugin's documentation + def documentation = "http://grails.org/FuncGrailsPlugin+Plugin" + + def doWithSpring = { + funcService(FuncImpl) { + + } + } + +} diff --git a/bindings/func-grails-plugin/application.properties b/bindings/func-grails-plugin/application.properties new file mode 100644 index 0000000..c05437a --- /dev/null +++ b/bindings/func-grails-plugin/application.properties @@ -0,0 +1,4 @@ +#Do not edit app.grails.* properties, they may change automatically. DO NOT put application configuration in here, it is not the right place! +#Fri Jul 11 12:43:08 CEST 2008 +app.grails.version=1.0.3 +app.name=func-grails-plugin diff --git a/bindings/func-grails-plugin/build.xml b/bindings/func-grails-plugin/build.xml new file mode 100644 index 0000000..89ba8ef --- /dev/null +++ b/bindings/func-grails-plugin/build.xml @@ -0,0 +1,41 @@ +<project name="func-grails-plugin" default="test"> + + <condition property="grails" value="grails.bat"> + <os family="windows"/> + </condition> + <property name="grails" value="grails" /> + + <!-- ================================= + target: clean + ================================= --> + <target name="clean" description="--> Cleans a Grails application"> + <exec executable="${grails}" failonerror="true"> + <arg value="clean"/> + </exec> + </target> + + <!-- ================================= + target: war + ================================= --> + <target name="war" description="--> Creates a WAR of a Grails application"> + <exec executable="${grails}" failonerror="true"> + <arg value="war"/> + </exec> + </target> + + <!-- ================================= + target: test + ================================= --> + <target name="test" description="--> Run a Grails applications unit tests"> + <exec executable="${grails}" failonerror="true"> + <arg value="test-app"/> + </exec> + </target> + + <!-- ================================= + target: deploy + ================================= --> + <target name="deploy" depends="war" description="--> The deploy target (initially empty)"> + <!-- TODO --> + </target> +</project> diff --git a/bindings/func-grails-plugin/func-grails-plugin.launch b/bindings/func-grails-plugin/func-grails-plugin.launch new file mode 100644 index 0000000..61af264 --- /dev/null +++ b/bindings/func-grails-plugin/func-grails-plugin.launch @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/> +<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" value="true"/> +<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="func-grails-plugin" path="1" type="4"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="func-grails-plugin"/> </runtimeClasspathEntry> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry internalArchive="/func-grails-plugin" path="3" type="2"/> "/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="4"/> +</listAttribute> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="func-grails-plugin"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=${project_loc} -Dserver.port=8080 -Dgrails.env=development"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/func-grails-plugin"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> +</launchConfiguration> diff --git a/bindings/func-grails-plugin/func-grails-plugin.tmproj b/bindings/func-grails-plugin/func-grails-plugin.tmproj new file mode 100644 index 0000000..de01d84 --- /dev/null +++ b/bindings/func-grails-plugin/func-grails-plugin.tmproj @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>documents</key> + <array> + <dict> + <key>filename</key> + <string>func-grails-plugin.launch</string> + </dict> + <dict> + <key>filename</key> + <string>build.xml</string> + </dict> + <dict> + <key>name</key> + <string>grails-app</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>grails-app</string> + </dict> + <dict> + <key>name</key> + <string>test</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>test</string> + </dict> + <dict> + <key>name</key> + <string>lib</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>lib</string> + </dict> + <dict> + <key>name</key> + <string>scripts</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>scripts</string> + </dict> + <dict> + <key>name</key> + <string>src</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>src</string> + </dict> + <dict> + <key>name</key> + <string>web-app</string> + <key>regexFolderFilter</key> + <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string> + <key>sourceDirectory</key> + <string>web-app</string> + </dict> + </array> + <key>fileHierarchyDrawerWidth</key> + <integer>200</integer> + <key>metaData</key> + <dict/> + <key>showFileHierarchyDrawer</key> + <true/> + <key>windowFrame</key> + <string>{{237, 127}, {742, 553}}</string> +</dict> +</plist> diff --git a/bindings/func-grails-plugin/grails-app/conf/Func.groovy b/bindings/func-grails-plugin/grails-app/conf/Func.groovy new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bindings/func-grails-plugin/grails-app/conf/Func.groovy @@ -0,0 +1 @@ + diff --git a/bindings/func-grails-plugin/grails-func-1.0.zip b/bindings/func-grails-plugin/grails-func-1.0.zip Binary files differnew file mode 100644 index 0000000..081a17b --- /dev/null +++ b/bindings/func-grails-plugin/grails-func-1.0.zip diff --git a/bindings/func-grails-plugin/lib/func-java-1.0.jar b/bindings/func-grails-plugin/lib/func-java-1.0.jar Binary files differnew file mode 100644 index 0000000..6620e1c --- /dev/null +++ b/bindings/func-grails-plugin/lib/func-java-1.0.jar diff --git a/bindings/func-grails-plugin/plugin.xml b/bindings/func-grails-plugin/plugin.xml new file mode 100644 index 0000000..edcf73a --- /dev/null +++ b/bindings/func-grails-plugin/plugin.xml @@ -0,0 +1,9 @@ +<plugin name='func' version='1.0'> + <author>Marco Mornati</author> + <authorEmail>mmornati@byte-code.com</authorEmail> + <title>Plugin to make your application ables to call Func (https://fedorahosted.org/func)</title> + <documentation>http://grails.org/FuncGrailsPlugin+Plugin</documentation> + <resources> + <resource>Func</resource> + </resources> +</plugin>
\ No newline at end of file diff --git a/bindings/func-grails-plugin/scripts/_Install.groovy b/bindings/func-grails-plugin/scripts/_Install.groovy new file mode 100644 index 0000000..7996a62 --- /dev/null +++ b/bindings/func-grails-plugin/scripts/_Install.groovy @@ -0,0 +1,13 @@ +// +// This script is executed by Grails after plugin was installed to project. +// This script is a Gant script so you can use all special variables provided +// by Gant (such as 'baseDir' which points on project base dir). You can +// use 'Ant' to access a global instance of AntBuilder +// +// For example you can create directory under project tree: +// Ant.mkdir(dir:"/home/mmornati/projects/func-bindings/func-grails-plugin/grails-app/jobs") +// + +Ant.property(environment:"env") +grailsHome = Ant.antProject.properties."env.GRAILS_HOME" + diff --git a/bindings/func-grails-plugin/scripts/_Upgrade.groovy b/bindings/func-grails-plugin/scripts/_Upgrade.groovy new file mode 100644 index 0000000..4b71568 --- /dev/null +++ b/bindings/func-grails-plugin/scripts/_Upgrade.groovy @@ -0,0 +1,13 @@ +// +// This script is executed by Grails during application upgrade ('grails upgrade' command). +// This script is a Gant script so you can use all special variables +// provided by Gant (such as 'baseDir' which points on project base dir). +// You can use 'Ant' to access a global instance of AntBuilder +// +// For example you can create directory under project tree: +// Ant.mkdir(dir:"/home/mmornati/projects/func-bindings/func-grails-plugin/grails-app/jobs") +// + +Ant.property(environment:"env") +grailsHome = Ant.antProject.properties."env.GRAILS_HOME" + diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/applicationContext.xml b/bindings/func-grails-plugin/web-app/WEB-INF/applicationContext.xml new file mode 100644 index 0000000..ecd41ea --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/applicationContext.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" +http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> + + <bean id="grailsApplication" class="org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean"> + <description>Grails application factory bean</description> + <property name="grailsDescriptor" value="/WEB-INF/grails.xml" /> + <property name="grailsResourceLoader" ref="grailsResourceLoader" /> + </bean> + + <bean id="pluginManager" class="org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean"> + <description>A bean that manages Grails plugins</description> + <property name="grailsDescriptor" value="/WEB-INF/grails.xml" /> + <property name="application" ref="grailsApplication" /> + </bean> + + <bean id="pluginMetaManager" class="org.codehaus.groovy.grails.plugins.DefaultPluginMetaManager"> + <constructor-arg value="classpath*:**/plugins/*/plugin.xml" /> + </bean> + + <bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator"> + <constructor-arg> + <ref bean="grailsApplication" /> + </constructor-arg> + <property name="pluginManager" ref="pluginManager" /> + </bean> + + <bean id="grailsResourceLoader" class="org.codehaus.groovy.grails.commons.GrailsResourceLoaderFactoryBean"> + <property name="grailsResourceHolder" ref="grailsResourceHolder" /> + </bean> + + <bean id="grailsResourceHolder" scope="prototype" class="org.codehaus.groovy.grails.commons.spring.GrailsResourceHolder"> + <property name="resources"> + <value>classpath*:**/grails-app/**/*.groovy</value> + </property> + </bean> + + <bean id="characterEncodingFilter" + class="org.springframework.web.filter.CharacterEncodingFilter"> + <property name="encoding"> + <value>utf-8</value> + </property> + </bean> +</beans>
\ No newline at end of file diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/sitemesh.xml b/bindings/func-grails-plugin/web-app/WEB-INF/sitemesh.xml new file mode 100644 index 0000000..e1a3a28 --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/sitemesh.xml @@ -0,0 +1,14 @@ +<sitemesh> + <page-parsers> + <parser content-type="text/html" + class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + <parser content-type="text/html;charset=ISO-8859-1" + class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + <parser content-type="text/html;charset=UTF-8" + class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + </page-parsers> + + <decorator-mappers> + <mapper class="org.codehaus.groovy.grails.web.sitemesh.GrailsLayoutDecoratorMapper" /> + </decorator-mappers> +</sitemesh>
\ No newline at end of file diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/tld/c.tld b/bindings/func-grails-plugin/web-app/WEB-INF/tld/c.tld new file mode 100644 index 0000000..22698c9 --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/tld/c.tld @@ -0,0 +1,563 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + version="2.0"> + + <description>JSTL 1.1 core library</description> + <display-name>JSTL core</display-name> + <tlib-version>1.1</tlib-version> + <short-name>c</short-name> + <uri>http://java.sun.com/jsp/jstl/core</uri> + + <validator> + <description> + Provides core validation features for JSTL tags. + </description> + <validator-class> + org.apache.taglibs.standard.tlv.JstlCoreTLV + </validator-class> + </validator> + + <tag> + <description> + Catches any Throwable that occurs in its body and optionally + exposes it. + </description> + <name>catch</name> + <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + </description> + <name>choose</name> + <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class> + <body-content>JSP</body-content> + </tag> + + <tag> + <description> + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + </description> + <name>if</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.IfTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +The test condition that determines whether or +not the body content should be processed. + </description> + <name>test</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + <type>boolean</type> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope for var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + </description> + <name>import</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.ImportTag</tag-class> + <tei-class>org.apache.taglibs.standard.tei.ImportTEI</tei-class> + <body-content>JSP</body-content> + <attribute> + <description> +The URL of the resource to import. + </description> + <name>url</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is String. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope for var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is Reader. + </description> + <name>varReader</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the context when accessing a relative +URL resource that belongs to a foreign +context. + </description> + <name>context</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Character encoding of the content at the input +resource. + </description> + <name>charEncoding</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + </description> + <name>forEach</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class> + <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class> + <body-content>JSP</body-content> + <attribute> + <description> +Collection of items to iterate over. + </description> + <name>items</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>java.lang.Object</type> + </attribute> + <attribute> + <description> +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + </description> + <name>begin</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + </description> + <name>end</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +Iteration will only process every step items of +the collection, starting with the first one. + </description> + <name>step</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + </description> + <name>varStatus</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Iterates over tokens, separated by the supplied delimeters + </description> + <name>forTokens</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.ForTokensTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +String of tokens to iterate over. + </description> + <name>items</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + <type>java.lang.String</type> + </attribute> + <attribute> + <description> +The set of delimiters (the characters that +separate the tokens in the string). + </description> + <name>delims</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + <type>java.lang.String</type> + </attribute> + <attribute> + <description> +Iteration begins at the token located at the +specified index. First token has index 0. + </description> + <name>begin</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +Iteration ends at the token located at the +specified index (inclusive). + </description> + <name>end</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +Iteration will only process every step tokens +of the string, starting with the first one. + </description> + <name>step</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + <type>int</type> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + </description> + <name>varStatus</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Like <%= ... >, but for expressions. + </description> + <name>out</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Expression to be evaluated. + </description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Default value if the resulting value is null. + </description> + <name>default</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + </description> + <name>escapeXml</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + + <tag> + <description> + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + </description> + <name>otherwise</name> + <tag-class>org.apache.taglibs.standard.tag.common.core.OtherwiseTag</tag-class> + <body-content>JSP</body-content> + </tag> + + <tag> + <description> + Adds a parameter to a containing 'import' tag's URL. + </description> + <name>param</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.ParamTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Name of the query string parameter. + </description> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Value of the parameter. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Redirects to a new URL. + </description> + <name>redirect</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.RedirectTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +The URL of the resource to redirect to. + </description> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the context when redirecting to a relative URL +resource that belongs to a foreign context. + </description> + <name>context</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Removes a scoped variable (from a particular scope, if specified). + </description> + <name>remove</name> + <tag-class>org.apache.taglibs.standard.tag.common.core.RemoveTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +Name of the scoped variable to be removed. + </description> + <name>var</name> + <required>true</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope for var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Sets the result of an expression evaluation in a 'scope' + </description> + <name>set</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.SetTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Expression to be evaluated. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + </description> + <name>target</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the property to be set in the target object. + </description> + <name>property</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Scope for var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Creates a URL with optional query parameters. + </description> + <name>url</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.UrlTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope for var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +URL to be processed. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the context when specifying a relative URL +resource that belongs to a foreign context. + </description> + <name>context</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + </description> + <name>when</name> + <tag-class>org.apache.taglibs.standard.tag.rt.core.WhenTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +The test condition that determines whether or not the +body content should be processed. + </description> + <name>test</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + <type>boolean</type> + </attribute> + </tag> + +</taglib> diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/tld/fmt.tld b/bindings/func-grails-plugin/web-app/WEB-INF/tld/fmt.tld new file mode 100644 index 0000000..3b9a54a --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/tld/fmt.tld @@ -0,0 +1,671 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + version="2.0"> + + <description>JSTL 1.1 i18n-capable formatting library</description> + <display-name>JSTL fmt</display-name> + <tlib-version>1.1</tlib-version> + <short-name>fmt</short-name> + <uri>http://java.sun.com/jsp/jstl/fmt</uri> + + <validator> + <description> + Provides core validation features for JSTL tags. + </description> + <validator-class> + org.apache.taglibs.standard.tlv.JstlFmtTLV + </validator-class> + </validator> + + <tag> + <description> + Sets the request character encoding + </description> + <name>requestEncoding</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +Name of character encoding to be applied when +decoding request parameters. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Stores the given locale in the locale configuration variable + </description> + <name>setLocale</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + </description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + </description> + <name>variant</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of the locale configuration variable. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Specifies the time zone for any time formatting or parsing actions + nested in its body + </description> + <name>timeZone</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + </description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Stores the given time zone in the time zone configuration variable + </description> + <name>setTimeZone</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + </description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var or the time zone configuration +variable. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Loads a resource bundle to be used by its tag body + </description> + <name>bundle</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.BundleTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + </description> + <name>basename</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + </description> + <name>prefix</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Loads a resource bundle and stores it in the named scoped variable or + the bundle configuration variable + </description> + <name>setBundle</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + </description> + <name>basename</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var or the localization context +configuration variable. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Maps key to localized message and performs parametric replacement + </description> + <name>message</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.MessageTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Message key to be looked up. + </description> + <name>key</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Localization context in whose resource +bundle the message key is looked up. + </description> + <name>bundle</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable +which stores the localized message. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Supplies an argument for parametric replacement to a containing + <message> tag + </description> + <name>param</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParamTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Argument used for parametric replacement. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Formats a numeric value as a number, currency, or percentage + </description> + <name>formatNumber</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Numeric value to be formatted. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether the value is to be +formatted as number, currency, or +percentage. + </description> + <name>type</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Custom formatting pattern. + </description> + <name>pattern</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + </description> + <name>currencyCode</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + </description> + <name>currencySymbol</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether the formatted output +will contain any grouping separators. + </description> + <name>groupingUsed</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Maximum number of digits in the integer +portion of the formatted output. + </description> + <name>maxIntegerDigits</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Minimum number of digits in the integer +portion of the formatted output. + </description> + <name>minIntegerDigits</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Maximum number of digits in the +fractional portion of the formatted output. + </description> + <name>maxFractionDigits</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Minimum number of digits in the +fractional portion of the formatted output. + </description> + <name>minFractionDigits</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable +which stores the formatted result as a +String. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Parses the string representation of a number, currency, or percentage + </description> + <name>parseNumber</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +String to be parsed. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + </description> + <name>type</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + </description> + <name>pattern</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + </description> + <name>parseLocale</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether just the integer portion of +the given value should be parsed. + </description> + <name>integerOnly</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Formats a date and/or time using the supplied styles and pattern + </description> + <name>formatDate</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class> + <body-content>empty</body-content> + <attribute> + <description> +Date and/or time to be formatted. + </description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + </description> + <name>type</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + </description> + <name>dateStyle</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + </description> + <name>timeStyle</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Custom formatting style for dates and times. + </description> + <name>pattern</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Time zone in which to represent the formatted +time. + </description> + <name>timeZone</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable which +stores the formatted result as a String. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + + <tag> + <description> + Parses the string representation of a date and/or time + </description> + <name>parseDate</name> + <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description> +Date string to be parsed. + </description> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + </description> + <name>type</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + </description> + <name>dateStyle</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + </description> + <name>timeStyle</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Custom formatting pattern which +determines how the date string is to be +parsed. + </description> + <name>pattern</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Time zone in which to interpret any time +information in the date string. + </description> + <name>timeZone</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + </description> + <name>parseLocale</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description> +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + </description> + <name>var</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + <attribute> + <description> +Scope of var. + </description> + <name>scope</name> + <required>false</required> + <rtexprvalue>false</rtexprvalue> + </attribute> + </tag> + +</taglib> diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/tld/grails.tld b/bindings/func-grails-plugin/web-app/WEB-INF/tld/grails.tld new file mode 100644 index 0000000..d2e561f --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/tld/grails.tld @@ -0,0 +1,959 @@ +<?xml version="1.0" encoding="UTF-8"?> +<taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee + http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + version="2.0"> + <description>The Grails (Groovy on Rails) custom tag library</description> + <tlib-version>0.2</tlib-version> + <short-name>grails</short-name> + <uri>http://grails.codehaus.org/tags</uri> + + <tag> + <description> + Includes a javascript src file, library or inline script + if the tag has no src or library attributes its assumed to be an inline script + </description> + <name>javascript</name> + <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>A predefined JavaScript or AJAX library to load</description> + <name>library</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>A custom (or unknown to Grails) JavaScript source file</description> + <name>src</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>Since 0.6 Specifies the full base url to prepend to the library name</description> + <name>base</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <!-- + <tag> + <description> + </description> + <name></name> + <tag-class></tag-class> + <body-content></body-content> + <attribute> + <description></description> + <name></name> + <required></required> + <rtexprvalue></rtexprvalue> + </attribute> + </tag> + --> + <tag> + <description>Escapes a javasacript string replacing single/double quotes and new lines + </description> + <name>escapeJavascript</name> + <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> + <body-content>JSP</body-content> + </tag> + + <tag> + <description>Creates a form submit button that submits the current form to a remote ajax call + </description> + <name>submitToRemote</name> + <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>class</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + + <tag> + <description>A field that sends its value to a remote link + </description> + <name>remoteField</name> + <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>paramName</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>before</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>after</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>params</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>asynchronous</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>method</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>update</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onSuccess</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onFailure</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onComplete</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoading</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoaded</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onUninitialized</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>on_ERROR_CODE</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <description> + Enables the storing of a value into the given ${var} + </description> + <name>set</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovySetTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The value to store</description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>The name of the variable to store the value in</description> + <name>var</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description> + Enables the storing of a value into the given ${var} into the page context + </description> + <name>def</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyDefTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The value to store</description> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>The name of the variable to store the value in</description> + <name>var</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description> + Logical if tag to test whether the given condition is true + </description> + <name>if</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyIfTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The condition to test</description> + <name>test</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description> + Logical else tag as fallback if the if condition fails + </description> + <name>else</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseTag</tag-class> + <body-content>JSP</body-content> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description> + Logical elseif tag to test whether the given condition is true + </description> + <name>elseif</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseIfTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The condition to test</description> + <name>test</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description> + Tag to loop over a collection while the test expression returns true + </description> + <name>while</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyWhileTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The condition to test</description> + <name>test</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description>Iterates over the given collection</description> + <name>each</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyEachTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The collection to iterate over</description> + <name>in</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>An optional var-name to reference onto the elements</description> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>status</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + + <tag> + <description>Iterates over the given collection</description> + <name>findAll</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyFindAllTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The collection to iterate over</description> + <name>in</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>An optional var-name to reference onto the elements</description> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>The expression to filter the elements to iterate over</description> + <name>expr</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>status</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + + <tag> + <description>Iterates over the given collection and collects the elements + you want to work with</description> + <name>collect</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyCollectTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The collection to iterate over</description> + <name>in</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>An optional var-name to reference onto the elements</description> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>The expression to use to collect the elements. The + expression must retur true to add the element to the + collection</description> + <name>expr</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>status</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + <tag> + <description>Iterates over the given collection and filters the elements + with a regular expression</description> + <name>grep</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyGrepTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <description>The collection to iterate over</description> + <name>in</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>An optional var-name to reference onto the elements</description> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description>The regular expression to filter the element with. The + filter is a simple Groovy Regex</description> + <name>filter</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>status</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + + + <tag> + <name>link</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspLinkTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>params</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>form</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspFormTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>method</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>select</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspSelectTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>optionKey</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>optionValue</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>datePicker</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspDatePickerTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>precision</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + <tag> + <name>currencySelect</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspCurrencySelectTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>localeSelect</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspLocaleSelectTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>timeZoneSelect</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspTimeZoneSelectTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>checkBox</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspCheckboxTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>hasErrors</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspHasErrorsTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>model</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>bean</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>field</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + <tag> + <name>eachError</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>model</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>bean</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>field</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + <tag> + <name>renderErrors</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspEachErrorTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>model</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>bean</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>field</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>as</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + <tag> + <name>message</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspMessageTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>code</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>error</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>default</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>false</dynamic-attributes> + </tag> + <tag> + <name>remoteFunction</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteFunctionTag</tag-class> + <body-content>empty</body-content> + <attribute> + <name>before</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>after</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>params</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>asynchronous</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>method</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>update</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onSuccess</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onFailure</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onComplete</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoading</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoaded</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onInteractive</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>remoteLink</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspRemoteLinkTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>before</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>after</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>params</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>asynchronous</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>method</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>update</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onSuccess</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onFailure</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onComplete</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoading</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoaded</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onInteractive</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>formRemote</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspFormRemoteTag</tag-class> + <body-content>JSP</body-content> + <attribute> + <name>before</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>after</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>action</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>controller</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>id</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>url</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>params</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>asynchronous</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>method</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>update</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onSuccess</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onFailure</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onComplete</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoading</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onLoaded</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <name>onInteractive</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> + <tag> + <name>invokeTag</name> + <tag-class>org.codehaus.groovy.grails.web.taglib.jsp.JspInvokeGrailsTagLibTag</tag-class> + <body-content>JSP</body-content> + <variable> + <name-given>it</name-given> + <variable-class>java.lang.Object</variable-class> + <declare>true</declare> + <scope>NESTED</scope> + </variable> + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + <dynamic-attributes>true</dynamic-attributes> + </tag> +</taglib> + diff --git a/bindings/func-grails-plugin/web-app/WEB-INF/tld/spring.tld b/bindings/func-grails-plugin/web-app/WEB-INF/tld/spring.tld new file mode 100644 index 0000000..1bc7091 --- /dev/null +++ b/bindings/func-grails-plugin/web-app/WEB-INF/tld/spring.tld @@ -0,0 +1,311 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> + +<taglib> + + <tlib-version>1.1.1</tlib-version> + + <jsp-version>1.2</jsp-version> + + <short-name>Spring</short-name> + + <uri>http://www.springframework.org/tags</uri> + + <description>Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller</description> + + + <tag> + + <name>htmlEscape</name> + <tag-class>org.springframework.web.servlet.tags.HtmlEscapeTag</tag-class> + <body-content>JSP</body-content> + + <description> + Sets default HTML escape value for the current page. + Overrides a "defaultHtmlEscape" context-param in web.xml, if any. + </description> + + <attribute> + <name>defaultHtmlEscape</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>escapeBody</name> + <tag-class>org.springframework.web.servlet.tags.EscapeBodyTag</tag-class> + <body-content>JSP</body-content> + + <description> + Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>message</name> + <tag-class>org.springframework.web.servlet.tags.MessageTag</tag-class> + <body-content>JSP</body-content> + + <description> + Retrieves the message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>code</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>arguments</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>text</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>theme</name> + <tag-class>org.springframework.web.servlet.tags.ThemeTag</tag-class> + <body-content>JSP</body-content> + + <description> + Retrieves the theme message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>code</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>arguments</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>text</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>hasBindErrors</name> + <tag-class>org.springframework.web.servlet.tags.BindErrorsTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides Errors instance in case of bind errors. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <variable> + <name-given>errors</name-given> + <variable-class>org.springframework.validation.Errors</variable-class> + </variable> + + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>nestedPath</name> + <tag-class>org.springframework.web.servlet.tags.NestedPathTag</tag-class> + <body-content>JSP</body-content> + + <description> + Sets a nested path to be used by the bind tag's path. + </description> + + <variable> + <name-given>nestedPath</name-given> + <variable-class>java.lang.String</variable-class> + </variable> + + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>bind</name> + <tag-class>org.springframework.web.servlet.tags.BindTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides BindStatus object for the given bind path. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <variable> + <name-given>status</name-given> + <variable-class>org.springframework.web.servlet.support.BindStatus</variable-class> + </variable> + + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>ignoreNestedPath</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>transform</name> + <tag-class>org.springframework.web.servlet.tags.TransformTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides transformation of variables to Strings, using an appropriate + custom PropertyEditor from BindTag (can only be used inside BindTag). + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + +</taglib> diff --git a/bindings/func-java/lib/mvn-install-lib.sh b/bindings/func-java/lib/mvn-install-lib.sh new file mode 100644 index 0000000..4ba6789 --- /dev/null +++ b/bindings/func-java/lib/mvn-install-lib.sh @@ -0,0 +1 @@ +mvn install:install-file -DgroupId=org.jvyaml -DartifactId=jvyaml -Dversion=1.1 -Dpackaging=jar -Dfile=org/jvyaml/jvyaml.jar diff --git a/bindings/func-java/lib/org/jvyaml/jvyaml.jar b/bindings/func-java/lib/org/jvyaml/jvyaml.jar Binary files differnew file mode 100644 index 0000000..55e2db3 --- /dev/null +++ b/bindings/func-java/lib/org/jvyaml/jvyaml.jar diff --git a/bindings/func-java/pom.xml b/bindings/func-java/pom.xml new file mode 100644 index 0000000..01668a4 --- /dev/null +++ b/bindings/func-java/pom.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.func</groupId> + <artifactId>func-java</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>Func-Java Bindings</name> + <url>https://fedorahosted.org/func</url> + + + <dependencies> + + <dependency> + <groupId>org.jvyaml</groupId> + <artifactId>jvyaml</artifactId> + <version>1.1</version> + </dependency> + + <dependency> + <groupId>org.codehaus.groovy</groupId> + <artifactId>groovy-all</artifactId> + <version>1.5.6</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.6</source> + <target>1.6</target> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo.groovy</groupId> + <artifactId>groovy-maven-plugin</artifactId> + <executions> + <execution> + <id>SourceCompile</id> + <phase>compile</phase> + <goals> + <!-- <goal>generateStubs</goal> --> + <goal>compile</goal> + <!-- <goal>generateTestStubs</goal> --> + <!-- <goal>testCompile</goal> --> + </goals> + <configuration> + <sources> + <fileset> + <directory>${pom.basedir}/src/main</directory> + <includes> + <include>**/*.groovy</include> + </includes> + </fileset> + </sources> + </configuration> + </execution> + + <execution> + <id>TestCompile</id> + <goals> + <goal>testCompile</goal> + </goals> + <configuration> + <sources> + <fileset> + <directory>${pom.basedir}/src/test/groovy</directory> + <includes> + <include>**/*.groovy</include> + </includes> + </fileset> + </sources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> diff --git a/bindings/func-java/src/main/groovy/org/func/FuncFactory.groovy b/bindings/func-java/src/main/groovy/org/func/FuncFactory.groovy new file mode 100644 index 0000000..84d3d7b --- /dev/null +++ b/bindings/func-java/src/main/groovy/org/func/FuncFactory.groovy @@ -0,0 +1,48 @@ +package org.func +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Date: Jul 11, 2008 + * Time: 10:03:20 AM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +class FuncFactory { + + /** + * Factory class method. You need to call this method to obtain an instance of Func classes + * @return Func instances. To use for func invokation. + */ + public static Func getFunc() { + Func funcImplementation = new FuncImpl() + + return funcImplementation + } + + /** + * Factory class method. You need to call this method to obtain an instance of Func classes + * @param funcTransmit You can specify folder where your func-transmit is located. By default it must be in your path. + * @return Func instances. To use for func invokation. + */ + public static Func getFunc(String funcTransmit) { + Func funcImplementation = new FuncImpl(funcTransmit) + + return funcImplementation + } + +}
\ No newline at end of file diff --git a/bindings/func-java/src/main/groovy/org/func/FuncImpl.groovy b/bindings/func-java/src/main/groovy/org/func/FuncImpl.groovy new file mode 100644 index 0000000..332f72c --- /dev/null +++ b/bindings/func-java/src/main/groovy/org/func/FuncImpl.groovy @@ -0,0 +1,135 @@ +package org.func + +import org.func.exceptions.FuncCommunicationException +import org.jvyaml.YAML +import org.func.exceptions.CertmasterException + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Date: Jul 10, 2008 + * Time: 5:38:02 PM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +class FuncImpl implements Func { + + private funcTransmit = "func-transmit" + private func = "func" + + public FuncImpl() { + + } + + public FuncImpl(String transmit) { + this.funcTransmit = transmit + } + + public Map call(String client, String module, String method) throws FuncCommunicationException { + this.call([client], module, method, null) + } + + public Map call(List clients, String module, String method) throws FuncCommunicationException { + this.call(clients, module, method, null) + } + + public Map call(String client, String module, String method, String parameter) throws FuncCommunicationException { + this.call([client], module, method, [parameter]) + } + + public Map call(List clients, String module, String method, List parameters) throws FuncCommunicationException { + return funcCall(clients, module, method, parameters) + } + + public Map listModules(String client) { + return this.listModules([client]) + } + + public Map listModuleMethods(String client, String method) { + return this.listModuleMethods([client], method) + } + + public Map listModules(List clients) { + return funcCall(clients, "system", "list_modules", null) + } + + public Map listModuleMethods(List clients, String module) { + return funcCall(clients, module, "list_methods", null) + } + + + public List listMinions() { + def minions = [] + def commandToExecute = [func, "*", "list_minions"] + def proc = commandToExecute.execute() + proc.waitFor() + def procAnswer = proc.text + if (procAnswer) { + minions = procAnswer.split("\n") + } else { + throw new CertmasterException("Error communicating with certmaster") + } + return minions; + } + + + private Map funcCall(List clients, String module, String method, List parameters) throws FuncCommunicationException { + def values = [clients: clientsCallPatch(clients), module: module, method: method, parameters: parameters] + def yamlDump = YAML.dump(values) + def commandToExecute = [funcTransmit] + def proc = commandToExecute.execute() + proc.withWriter {writer -> writer << yamlDump } + proc.waitFor() + def procAnswer = proc.text + Map funcResponse = null + if (procAnswer) { + def response = YAML.load(procAnswer) + if (response instanceof Map) { + funcResponse = (Map) response + } + } else { + throw new FuncCommunicationException(procAnswer + " - Error reading answer from Func-Transmit Process!") + } + return funcResponse + } + + + private String clientsCallPatch(List clients) { + //TODO: Now Func does not accept a LIST of client (you can send a list with a string formatted like client1;client2;client + //TODO: Change this patch when func will be ready + //===== PATCH BEGINS + String clientToSend = "" + clients?.each { + if (!clientToSend.equals("")) { + clientToSend += ";" + } + clientToSend += "${it}" + } + return clientToSend + //===== PATCH ENDS + } + + public void setFuncTransmit(String funcTransmit) { + this.funcTransmit = funcTransmit + } + + public String getFuncTransmit() { + return funcTransmit + } + +}
\ No newline at end of file diff --git a/bindings/func-java/src/main/java/org/func/Func.java b/bindings/func-java/src/main/java/org/func/Func.java new file mode 100644 index 0000000..d0d09a2 --- /dev/null +++ b/bindings/func-java/src/main/java/org/func/Func.java @@ -0,0 +1,123 @@ +package org.func; + +import org.func.exceptions.FuncCommunicationException; + +import java.util.List; +import java.util.Map; + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * <p/> + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * <p/> + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * <p/> + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * <p/> + * Date: Jul 10, 2008 + * Time: 5:35:26 PM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +public interface Func { + + /** + * Function invoked to optain the list of func client (machine that you can control in your java application using this API). + * @return List of String with machine hostname + */ + public List listMinions(); + + /** + * Caller for func-transmit with single client and no parameter + * @param client Func client name. To invoke all defined clients use "*" + * @param module Name of func module (use listModules to obtain the available modules) + * @param method Name of method to invoke + * @return Map with client name as key and func response as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map call (String client, String module, String method) throws FuncCommunicationException; + + /** + * Caller for func-transmit with list of clients and no parameter + * @param clients List of Func clients. + * @param module Name of func module (use listModules to obtain the available modules) + * @param method Name of method to invoke + * @return Map with responses divided for each client: client name as key and func response as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map call (List clients, String module, String method) throws FuncCommunicationException; + + /** + * Caller for func-transmit with single client and single parameter + * @param client List of Func clients. + * @param module Name of func module (use listModules to obtain the available modules) + * @param method Name of method to invoke + * @param parameter parameter to use with your method. Passed during func-transmit invokation + * @return Map with responses divided for each client: client name as key and func response as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map call (String client, String module, String method, String parameter) throws FuncCommunicationException; + + /** + * Func-Transmit Caller. It generates a Process to invoke func-transmit (using Yaml as default message) and then + * it parses the output provided from func to generate a Map returned to your application. + * + * The Map content is something like this: + * + * [client_name1: func response for this client (could be a simple string, another map, ...), + * client_name2: func response] + * + * @param clients List of Func clients. + * @param module Name of func module (use listModules to obtain the available modules) + * @param method Name of method to invoke + * @param parameters list of parameters to use with your method. Passed during func-transmit invokation + * @return Map with responses divided for each client: client name as key and func response as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map call (List clients, String module, String method, List parameters) throws FuncCommunicationException; + + /** + * Invoked to obtain for specified client the list of func module installed + * + * @param client Name of the client to use with func. To invoke all defined clients use "*" + * @return Map with clientName as key and list of all installed func module as object + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map listModules (String client) throws FuncCommunicationException; + + /** + * Invoked to obtain for specified list of clients, the list of func module installed + * @param clients List of func clients names. + * @return Map with response divided for each client: clientName as key and list of all installed func module as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map listModules (List clients) throws FuncCommunicationException; + + /** + * Invoked to obtain the list of methods for provided module and client + * @param client client Name of the client to use with func. To invoke all defined clients use "*" + * @param module name of func module for which you need a list of methods + * @return Map with client name as key and list of module's methods as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map listModuleMethods (String client, String module) throws FuncCommunicationException; + + /** + * Invoked to obtain the list of methods for provided module and list of clients + * @param clients List of func clients names. + * @param module name of func module for which you need a list of methods + * @return Map with response divided for each client: clientName as key and list of all module's methods as value + * @throws FuncCommunicationException thrown if there is any kind of error in func invokation + */ + public Map listModuleMethods (List clients, String module) throws FuncCommunicationException; + +} diff --git a/bindings/func-java/src/main/java/org/func/exceptions/CertmasterException.java b/bindings/func-java/src/main/java/org/func/exceptions/CertmasterException.java new file mode 100644 index 0000000..dcab042 --- /dev/null +++ b/bindings/func-java/src/main/java/org/func/exceptions/CertmasterException.java @@ -0,0 +1,35 @@ +package org.func.exceptions; + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * <p/> + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * <p/> + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * <p/> + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * <p/> + * Date: Jul 11, 2008 + * Time: 3:21:04 PM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +public class CertmasterException extends Exception { + + public CertmasterException(Exception e) { + super(e); + } + + public CertmasterException(String message) { + super(message); + } +} diff --git a/bindings/func-java/src/main/java/org/func/exceptions/FuncCommunicationException.java b/bindings/func-java/src/main/java/org/func/exceptions/FuncCommunicationException.java new file mode 100644 index 0000000..ccee91f --- /dev/null +++ b/bindings/func-java/src/main/java/org/func/exceptions/FuncCommunicationException.java @@ -0,0 +1,35 @@ +package org.func.exceptions; + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * <p/> + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * <p/> + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * <p/> + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * <p/> + * Date: Jul 11, 2008 + * Time: 10:44:46 AM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +public class FuncCommunicationException extends Exception { + + public FuncCommunicationException(Exception e) { + super(e); + } + + public FuncCommunicationException(String message) { + super(message); + } +} diff --git a/bindings/func-java/src/test/groovy/FuncFactoryTest.groovy b/bindings/func-java/src/test/groovy/FuncFactoryTest.groovy new file mode 100644 index 0000000..fd0ab86 --- /dev/null +++ b/bindings/func-java/src/test/groovy/FuncFactoryTest.groovy @@ -0,0 +1,32 @@ +import org.func.FuncFactory +import org.func.Func + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Date: Jul 11, 2008 + * Time: 10:06:03 AM + */ +class FuncFactoryTest extends GroovyTestCase { + + void testFuncFactory() { + def func = FuncFactory.getFunc() + + assertNotNull ("Func Factory returns a null Func Implementation", func) + assertTrue ("Func Factory does not return a correct Func object", func instanceof Func) + } + +}
\ No newline at end of file diff --git a/bindings/func-java/src/test/groovy/org/func/FuncFactoryTest.groovy b/bindings/func-java/src/test/groovy/org/func/FuncFactoryTest.groovy new file mode 100644 index 0000000..0cbc0f7 --- /dev/null +++ b/bindings/func-java/src/test/groovy/org/func/FuncFactoryTest.groovy @@ -0,0 +1,38 @@ +package org.func + +import org.func.FuncFactory +import org.func.Func + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Date: Jul 11, 2008 + * Time: 10:06:03 AM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + */ +class FuncFactoryTest extends GroovyTestCase { + + void testFuncFactory() { + def func = FuncFactory.getFunc() + + assertNotNull("Func Factory returns a null Func Implementation", func) + assertTrue("Func Factory does not return a correct Func object", func instanceof Func) + } + +}
\ No newline at end of file diff --git a/bindings/func-java/src/test/groovy/org/func/FuncImplTest.groovy b/bindings/func-java/src/test/groovy/org/func/FuncImplTest.groovy new file mode 100644 index 0000000..cd9ce60 --- /dev/null +++ b/bindings/func-java/src/test/groovy/org/func/FuncImplTest.groovy @@ -0,0 +1,62 @@ +package org.func + +import org.jvyaml.YAML + +/** + * Copyright (C) 2008, Byte-Code srl <http://www.byte-code.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Date: Jul 11, 2008 + * Time: 10:30:47 AM + * + * @author Marco Mornati + * @e-mail mmornati@byte-code.com + * @version 1.0 + * + */ +class FuncImplTest extends GroovyTestCase { + + void testCall() { + Func func = FuncFactory.getFunc("/home/mmornati/projects/func/scripts/func-transmit") + def response = func.call ("*", "hardware", "info") + assertTrue ("Func Response is not a Map", response instanceof Map) + } + + void testListModules() { + Func func = FuncFactory.getFunc("/home/mmornati/projects/func/scripts/func-transmit") + def response = func.listModules("bcmmornati") + assertTrue ("Func Response is not a Map", response instanceof Map) + } + + void testListModuleMethods() { + Func func = FuncFactory.getFunc("/home/mmornati/projects/func/scripts/func-transmit") + def response = func.listModuleMethods("bcmmornati", "hardware") + assertTrue ("Func Response is not a Map", response instanceof Map) + } + + void testClientPatch() { + def clients = ["client1", "client2"] + FuncImpl func = FuncFactory.getFunc() + def returned = func.clientsCallPatch(clients) + assertEquals ("Error in ClientsPatch generation", returned, "client1;client2") + } + + void testListMinions() { + Func func = FuncFactory.getFunc() + def response = func.listMinions() + assertTrue ("Error in calling listMinions", response instanceof List) + } + +}
\ No newline at end of file |