[ajax4jsf-svn-commits] JBoss Ajax4JSF SVN: r107 - in trunk/cdk/generator: src/main/java/org/ajax4jsf/builder/generator and 1 other directories.
ajax4jsf-svn-commits at lists.jboss.org
ajax4jsf-svn-commits at lists.jboss.org
Fri Apr 20 19:56:48 EDT 2007
Author: nbelaevski
Date: 2007-04-20 19:56:47 -0400 (Fri, 20 Apr 2007)
New Revision: 107
Added:
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilder.java
trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClass.java
trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilderTest.java
trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseClass.java
trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseInterface.java
Modified:
trunk/cdk/generator/pom.xml
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/ResourcesConfigGenerator.java
Log:
CGLib bytecode instrumentation creating stubs for abstract classes implemented, created JUnit test
Generator proxies getResource() method to ensure that resource requests won't fail.
Modified: trunk/cdk/generator/pom.xml
===================================================================
--- trunk/cdk/generator/pom.xml 2007-04-20 23:54:03 UTC (rev 106)
+++ trunk/cdk/generator/pom.xml 2007-04-20 23:56:47 UTC (rev 107)
@@ -1,92 +1,80 @@
-<?xml version="1.0"?>
-<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">
- <parent>
- <artifactId>cdk</artifactId>
- <groupId>org.ajax4jsf</groupId>
- <version>1.1.1-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.ajax4jsf.cdk</groupId>
- <artifactId>generator</artifactId>
- <name>Java Server Faces component generator</name>
- <url>http://labs.jboss.com/wiki/Ajax4jsf/cdk/generator</url>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <inherited>true</inherited>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- </plugin>
- <!-- plugin>
- <groupId>net.sf.dtddoc</groupId>
- <artifactId>dtddoc-maven-plugin</artifactId>
- <configuration>
- <docTitle>JSF Component generator configuration file format</docTitle>
- <sourceDirectory>src/main/resources/META-INF/schema</sourceDirectory>
- </configuration>
- </plugin -->
- </plugins>
- </reporting>
-
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>ant</groupId>
- <artifactId>ant</artifactId>
- <version>1.6.5</version>
- </dependency>
- <dependency>
- <groupId>velocity</groupId>
- <artifactId>velocity-dep</artifactId>
- <version>1.4</version>
- </dependency>
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.6</version>
- </dependency>
- <dependency>
- <groupId>commons-digester</groupId>
- <artifactId>commons-digester</artifactId>
- <version>1.5</version>
- </dependency>
- <dependency>
- <groupId>javax.faces</groupId>
- <artifactId>jsf-api</artifactId>
- <version>1.2_03</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>qdox</groupId>
- <artifactId>qdox</artifactId>
- <version>1.6</version>
- <!--
- <version>1.6-SNAPSHOT</version>
- -->
- </dependency>
- <dependency>
- <groupId>org.ajax4jsf.cdk</groupId>
- <artifactId>compiler</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>cdk</artifactId>
+ <groupId>org.ajax4jsf</groupId>
+ <version>1.1.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.ajax4jsf.cdk</groupId>
+ <artifactId>generator</artifactId>
+ <name>Java Server Faces component generator</name>
+ <url>http://labs.jboss.com/wiki/Ajax4jsf/cdk/generator</url>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <inherited>true</inherited>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.6.5</version>
+ </dependency>
+ <dependency>
+ <groupId>velocity</groupId>
+ <artifactId>velocity-dep</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-digester</groupId>
+ <artifactId>commons-digester</artifactId>
+ <version>1.5</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.2_03</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>qdox</groupId>
+ <artifactId>qdox</artifactId>
+ <version>1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.ajax4jsf.cdk</groupId>
+ <artifactId>compiler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ <version>2.1_3</version>
+ </dependency>
+ </dependencies>
+ <reporting>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
</project>
\ No newline at end of file
Added: trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilder.java
===================================================================
--- trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilder.java (rev 0)
+++ trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilder.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -0,0 +1,111 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.builder.generator;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import net.sf.cglib.core.ClassEmitter;
+import net.sf.cglib.core.CodeEmitter;
+import net.sf.cglib.core.EmitUtils;
+import net.sf.cglib.core.MethodInfo;
+import net.sf.cglib.core.ReflectUtils;
+import net.sf.cglib.core.Signature;
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.MethodInterceptor;
+
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.Constants;
+import org.objectweb.asm.Type;
+
+/**
+ * @author Nick - mailto:nbelaevski at exadel.com
+ * created 20.04.2007
+ *
+ */
+public class AbstractClassStubBuilder {
+ public static <T> T buildStub(final Class<T> clazz, MethodInterceptor interceptor) {
+ Enhancer enhancer = new Enhancer() {
+ @Override
+ public void generateClass(ClassVisitor v) throws Exception {
+ ClassEmitter ce = new ClassEmitter(v);
+ ce.begin_class(Constants.V1_4,
+ Constants.ACC_PUBLIC,
+ getClassName(),
+ Type.getType(clazz),
+ null,
+ null);
+ EmitUtils.null_constructor(ce);
+ List methods = new ArrayList();
+ getMethods(clazz, null, methods);
+
+ for (Iterator iterator = methods.iterator(); iterator
+ .hasNext();) {
+ Method method = (Method) iterator.next();
+
+ if (Modifier.isAbstract(method.getModifiers())) {
+ MethodInfo methodInfo = ReflectUtils.getMethodInfo(method);
+ Signature signature = methodInfo.getSignature();
+ Type returnType = signature.getReturnType();
+
+ CodeEmitter e = ce.begin_method(method.getModifiers() & ~Modifier.ABSTRACT,
+ signature, methodInfo.getExceptionTypes(),
+ methodInfo.getAttribute());
+
+ e.zero_or_null(returnType);
+ e.return_value();
+
+ Type[] argumentTypes = methodInfo.getSignature().getArgumentTypes();
+ int size = 0;
+ if (argumentTypes != null) {
+ for (int i = 0; i < argumentTypes.length; i++) {
+ size += argumentTypes[i].getSize();
+ }
+ }
+
+ // 1 is for this
+ e.visitMaxs(returnType.getSize(), size + 1);
+
+ e.end_method();
+ }
+ }
+
+ ce.end_class();
+ }
+ };
+ enhancer.setSuperclass(clazz);
+ enhancer.setCallbackType(MethodInterceptor.class);
+ enhancer.setClassLoader(clazz.getClassLoader());
+ Class<T> instrumentedClass = enhancer.createClass();
+
+ Enhancer enhancer2 = new Enhancer();
+ enhancer2.setSuperclass(instrumentedClass);
+ enhancer2.setCallback(interceptor);
+ enhancer2.setClassLoader(instrumentedClass.getClassLoader());
+
+ return (T) enhancer2.create();
+ }
+}
+
Modified: trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/ResourcesConfigGenerator.java
===================================================================
--- trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/ResourcesConfigGenerator.java 2007-04-20 23:54:03 UTC (rev 106)
+++ trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/ResourcesConfigGenerator.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -28,15 +28,22 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
import org.ajax4jsf.builder.config.BuilderConfig;
import org.ajax4jsf.builder.config.ComponentBean;
import org.ajax4jsf.builder.config.RendererBean;
import org.ajax4jsf.templatecompiler.builder.CompilationContext;
import org.ajax4jsf.templatecompiler.builder.CompilationException;
import org.ajax4jsf.templatecompiler.builder.TemplateCompiler;
+import org.ajax4jsf.templatecompiler.elements.RootElement;
import org.ajax4jsf.templatecompiler.elements.TemplateElement;
import org.ajax4jsf.templatecompiler.elements.vcp.FResourceTemplateElement;
import org.apache.velocity.Template;
@@ -57,7 +64,7 @@
}
private void addResources(List<ResourceConfigGeneratorBean> resources, TemplateElement templateElement,
- String packageName) {
+ String packageName, RendererBean renderer, BuilderConfig builderConfig) throws ClassNotFoundException {
if (templateElement instanceof FResourceTemplateElement) {
FResourceTemplateElement resourceTemplateElement = (FResourceTemplateElement) templateElement;
@@ -74,11 +81,100 @@
}
resources.add(resourceConfig);
+ } else if (templateElement instanceof RootElement) {
+ RootElement rootElement = (RootElement) templateElement;
+
+ CompilationContext compilationContext = rootElement.getComponentBean();
+
+ String classname = renderer.getClassname();
+ int idx = classname.lastIndexOf('.');
+ if (idx != -1) {
+ packageName = classname.substring(0, idx);
+ } else {
+ packageName = "";
+ }
+
+ ClassLoader loader = builderConfig.getLoader();
+ Class rClass = loader.loadClass("javax.faces.render.Renderer");
+
+ Class cl = null;
+
+ try {
+ cl = loader.loadClass(classname);
+ } catch (ClassNotFoundException e) {
+ String superclass = compilationContext.getBaseclassPackageName() + "." + compilationContext.getBaseclassName();
+ if (superclass != null) {
+ cl = loader.loadClass(superclass);
+ }
+ }
+
+ if (cl != null) {
+ GetResourceInterceptor interceptor = new GetResourceInterceptor();
+ Object instance = AbstractClassStubBuilder.buildStub(cl, interceptor);
+ System.out.println("ResourcesConfigGenerator.addResources()" + instance);
+
+ try {
+ Method method = null;
+ Object object = null;
+
+ Class<?> cl1 = instance.getClass();
+ while (cl1 != null && method == null) {
+ try {
+ method = cl1.getDeclaredMethod("getStyles", null);
+ } catch (NoSuchMethodException e) {
+ cl1 = cl1.getSuperclass();
+ }
+ }
+
+ if (method != null) {
+ method.setAccessible(true);
+ object = method.invoke(instance, null);
+ System.out
+ .println("ResourcesConfigGenerator.addResources() styles:");
+ builderConfig.getLog().info(interceptor.getList().toString());
+ }
+
+ interceptor.clearList();
+
+ method = null;
+ cl1 = instance.getClass();
+ while (cl1 != null && method == null) {
+ try {
+ method = cl1.getDeclaredMethod("getScripts", null);
+ } catch (NoSuchMethodException e) {
+ cl1 = cl1.getSuperclass();
+ }
+ }
+
+ if (method != null) {
+ method.setAccessible(true);
+ object = method.invoke(instance, null);
+ System.out
+ .println("ResourcesConfigGenerator.addResources() scripts:");
+ builderConfig.getLog().info(interceptor.getList().toString());
+ }
+ } catch (SecurityException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
+
+
+
ArrayList<TemplateElement> subElements = templateElement.getSubElements();
for (TemplateElement element : subElements) {
- addResources(resources, element, packageName);
+ addResources(resources, element, packageName, renderer, builderConfig);
}
}
@@ -140,7 +236,7 @@
packageName = "";
}
- addResources(resources, root, packageName);
+ addResources(resources, root, packageName, renderer, builderConfig);
}
}
@@ -208,3 +304,35 @@
return this.templatesDirectory;
}
}
+
+class GetResourceInterceptor implements MethodInterceptor {
+
+ private static final Class<?>[] SIGNATURE = new Class<?>[] {
+ String.class
+ };
+
+ private List<String> list = new ArrayList<String>();
+
+ public List<String> getList() {
+ return list;
+ }
+
+ public void clearList() {
+ list.clear();
+ }
+
+ public Object intercept(Object instance, Method method, Object[] args,
+ MethodProxy methodProxy) throws Throwable {
+
+ if ("getResource".equals(method.getName()) &&
+ Arrays.equals(SIGNATURE, method.getParameterTypes())) {
+
+ list.add((String) args[0]);
+
+ return null;
+ } else {
+ return methodProxy.invokeSuper(instance, args);
+ }
+ }
+
+}
\ No newline at end of file
Added: trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClass.java
===================================================================
--- trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClass.java (rev 0)
+++ trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClass.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -0,0 +1,27 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.builder.generator;
+
+
+
+public abstract class AbstractClass extends BaseClass {
+}
Added: trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilderTest.java
===================================================================
--- trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilderTest.java (rev 0)
+++ trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/AbstractClassStubBuilderTest.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -0,0 +1,58 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.builder.generator;
+
+import java.lang.reflect.Method;
+
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+import junit.framework.TestCase;
+
+/**
+ * @author Nick - mailto:nbelaevski at exadel.com
+ * created 20.04.2007
+ *
+ */
+public class AbstractClassStubBuilderTest extends TestCase {
+ public void testLoader() throws Exception {
+ BaseInterface newInstance = AbstractClassStubBuilder.buildStub(AbstractClass.class, new Proxy());
+ assertEquals(0, newInstance.test(), 0);
+ assertEquals(0, newInstance.test1(), 0);
+ assertEquals(0, newInstance.test2());
+ assertEquals(0, newInstance.test3());
+ assertEquals(0, newInstance.test4(), 0);
+ assertEquals(0, newInstance.test5());
+ assertEquals(null, newInstance.test6());
+ newInstance.test7();
+ assertEquals(false, newInstance.test8());
+ assertEquals(0, newInstance.test9());
+ }
+
+ public static class Proxy implements MethodInterceptor {
+
+ public Object intercept(Object instance, Method method, Object[] arguments,
+ MethodProxy methodProxy) throws Throwable {
+ return methodProxy.invokeSuper(instance, arguments);
+ }
+
+ }
+}
Added: trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseClass.java
===================================================================
--- trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseClass.java (rev 0)
+++ trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseClass.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -0,0 +1,67 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.builder.generator;
+
+
+
+public abstract class BaseClass implements BaseInterface {
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test()
+ */
+ public abstract float test();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test1()
+ */
+ public abstract double test1();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test2()
+ */
+ public abstract short test2();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test3()
+ */
+ public abstract long test3();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test4()
+ */
+ public abstract float test4();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test5()
+ */
+ public abstract int test5();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test6()
+ */
+ public abstract String test6();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test7()
+ */
+ public abstract void test7();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test8()
+ */
+ public abstract boolean test8();
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.builder.generator.BaseInterface#test9()
+ */
+ public abstract char test9();
+}
\ No newline at end of file
Added: trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseInterface.java
===================================================================
--- trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseInterface.java (rev 0)
+++ trunk/cdk/generator/src/test/java/org/ajax4jsf/builder/generator/BaseInterface.java 2007-04-20 23:56:47 UTC (rev 107)
@@ -0,0 +1,46 @@
+/**
+ * License Agreement.
+ *
+ * Ajax4jsf 1.1 - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.builder.generator;
+
+public interface BaseInterface {
+
+ public abstract float test();
+
+ public abstract double test1();
+
+ public abstract short test2();
+
+ public abstract long test3();
+
+ public abstract float test4();
+
+ public abstract int test5();
+
+ public abstract String test6();
+
+ public abstract void test7();
+
+ public abstract boolean test8();
+
+ public abstract char test9();
+
+}
\ No newline at end of file
More information about the ajax4jsf-svn-commits
mailing list