[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