Author: nbelaevski
Date: 2008-04-09 14:00:38 -0400 (Wed, 09 Apr 2008)
New Revision: 7717
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/RendererGenerator.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/AbstractCompilationContext.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/CompilationContext.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/el/ELCompiler.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FCallTemplateElement.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FClientIDTemplateElement.java
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/ParameterProcessor.java
Log:
CDK exceptions handling enhanced
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/RendererGenerator.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/RendererGenerator.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/builder/generator/RendererGenerator.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -129,8 +129,9 @@
} else {
template = new File(renderer.getTemplate());
}
+ ClassLoader classLoader = getClassLoader();
CompilationContext rendererBean = new RendererCompilationContext(
- getLog(), getClassLoader(),getConfig());
+ getLog(), classLoader,getConfig());
if (null != renderer.getClassname()) {
rendererBean.setBaseclass(renderer.getClassname());
@@ -150,6 +151,35 @@
}
}
+
+// unfinished check of non-static fields in renderer classes
+//
+// String baseclassName = rendererBean.getFullClassName();
+// try {
+// classLoader.loadClass(baseclassName);
+// } catch (ClassNotFoundException e) {
+// getLog().debug("Class not found: " + e.getLocalizedMessage());
+//
+// baseclassName = rendererBean.getFullBaseclass();
+// classLoader.loadClass(baseclassName);
+// }
+//
+// if (baseclassName != null) {
+// Class<?> baseclass = classLoader.loadClass(baseclassName);
+// Class<? extends Annotation> annotationClass = (Class<? extends
Annotation>) classLoader.loadClass("org.richfaces.AllowedRendererField");
+//
+// do {
+// Field[] fields = baseclass.getDeclaredFields();
+// for (Field field : fields) {
+// if ((field.getModifiers() & Modifier.STATIC) == 0 &&
field.getAnnotation(annotationClass) == null) {
+// throw new RuntimeException("Non-static field: " + field + " in
renderer class. ");
+// }
+// }
+//
+// baseclass = baseclass.getSuperclass();
+// } while (baseclass != null);
+// }
+
TemplateCompiler templateCompiler = new TemplateCompiler();
InputStream templateStream = new FileInputStream(template);
templateCompiler.processing(templateStream, rendererBean);
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/AbstractCompilationContext.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/AbstractCompilationContext.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/AbstractCompilationContext.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -352,15 +352,13 @@
clazz = this.classLoader.loadClass(className);
}
} catch (ClassNotFoundException e) {
- System.err.println("ClassNotFoundException message: "
- + e.getMessage());
+ throw e;
} catch (Throwable e) {
- e.printStackTrace();
+ log.error(e.getLocalizedMessage(), e);
}
if (null == clazz) {
- log.error("Error load class: " + className);
- throw new ClassNotFoundException();
+ throw new ClassNotFoundException(className);
}
return clazz;
}
@@ -375,7 +373,7 @@
}
public Class<?> getMethodReturnedClass(Class<?> clazz, String methodName,
- Class<?>[] parametersTypes) {
+ Class<?>[] parametersTypes) throws NoSuchMethodException {
Class<?> returnedType = null;
log.debug("class : " + clazz.getName() + "\n\t method : "
+ methodName + "\n\t paramTypes : "
@@ -388,11 +386,12 @@
returnedType = method.getReturnType();
log.debug("Method found, return type : "
+ returnedType.getName());
+
+ return returnedType;
} else {
- log.error("Method not found: " + clazz + "#" + methodName +
"(" + parametersTypes + ")");
+ throw new NoSuchMethodException(clazz + "#" + methodName + "("
+ Arrays.toString(parametersTypes) + ")");
}
- return returnedType;
}
public PropertyDescriptor getPropertyDescriptor(Class<?> clazz,
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/CompilationContext.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/CompilationContext.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/builder/CompilationContext.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -116,7 +116,7 @@
public Class<?> loadClass(String className) throws ClassNotFoundException;
public Class<?> getMethodReturnedClass(Class<?> clazz, String methodName,
- Class<?>[] parametersTypes);
+ Class<?>[] parametersTypes) throws NoSuchMethodException;
public PropertyDescriptor getPropertyDescriptor(Class<?> clazz,
String propertyName);
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/el/ELCompiler.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/el/ELCompiler.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/el/ELCompiler.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -653,7 +653,7 @@
lastVariableType = propertyDescriptor.getPropertyType()
.getName();
} catch (ClassNotFoundException e) {
- e.printStackTrace();
+ log.error(e.getLocalizedMessage(), e);
}
} else {
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FCallTemplateElement.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FCallTemplateElement.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FCallTemplateElement.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -217,7 +217,7 @@
* @return
*/
private String getMethod(Class clazz, String methodName)
- throws ClassNotFoundException {
+ throws ClassNotFoundException, NoSuchMethodException {
String returnValue = null;
Class[][] arrayParametersTypes = null;
@@ -263,39 +263,51 @@
}
- for (int i = 0; i < arrayParametersTypes.length; i++) {
- if (null != this.getComponentBean().getMethodReturnedClass(clazz, methodName,
- arrayParametersTypes[i])) {
- StringBuffer buffer = new StringBuffer();
+ List<String> methodNotFoundMessagesList = new ArrayList<String>();
+ boolean found = false;
+
+ for (int i = 0; i < arrayParametersTypes.length && !found; i++) {
+
+ try {
+ this.getComponentBean().getMethodReturnedClass(clazz, methodName,
+ arrayParametersTypes[i]);
+ StringBuffer buffer = new StringBuffer();
- buffer.append(methodName);
- buffer.append("(");
+ buffer.append(methodName);
+ buffer.append("(");
- int shift = 0;
- if (i < PARAM_NAMES.length) {
- shift = PARAM_NAMES[i].length;
- }
+ int shift = 0;
+ if (i < PARAM_NAMES.length) {
+ shift = PARAM_NAMES[i].length;
+ }
- for (int j = 0; j < arrayParametersTypes[i].length; j++) {
- if (j > 0) {
- buffer.append(", ");
- }
- if ((i < PARAM_NAMES.length) && (j < PARAM_NAMES[i].length)) {
- buffer.append(PARAM_NAMES[i][j]);
- } else {
- Parameter parameter = (Parameter) this.parameters.get(j
- - shift);
- String tmp = ELParser.compileEL(parameter.getValue(),
- this.getComponentBean());
- buffer.append(tmp);
- }
- }
- buffer.append(")");
- returnValue = buffer.toString();
- break;
+ for (int j = 0; j < arrayParametersTypes[i].length; j++) {
+ if (j > 0) {
+ buffer.append(", ");
+ }
+ if ((i < PARAM_NAMES.length) && (j < PARAM_NAMES[i].length)) {
+ buffer.append(PARAM_NAMES[i][j]);
+ } else {
+ Parameter parameter = (Parameter) this.parameters.get(j
+ - shift);
+ String tmp = ELParser.compileEL(parameter.getValue(),
+ this.getComponentBean());
+ buffer.append(tmp);
+ }
}
+ buffer.append(")");
+ returnValue = buffer.toString();
+ found = true;
+
+ } catch (NoSuchMethodException e) {
+ methodNotFoundMessagesList.add(e.getLocalizedMessage());
+ }
} // for
+ if (!found) {
+ throw new NoSuchMethodException("Could not find methods: " +
methodNotFoundMessagesList);
+ }
+
return returnValue;
}
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FClientIDTemplateElement.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FClientIDTemplateElement.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/FClientIDTemplateElement.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -24,6 +24,7 @@
import java.util.Formatter;
import org.ajax4jsf.templatecompiler.builder.CompilationContext;
+import org.ajax4jsf.templatecompiler.builder.CompilationException;
import org.ajax4jsf.templatecompiler.elements.TemplateElementBase;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@@ -40,7 +41,7 @@
private Class type;
public FClientIDTemplateElement(final Node element,
- final CompilationContext componentBean) {
+ final CompilationContext componentBean) throws CompilationException {
super(element, componentBean);
NamedNodeMap nnm = element.getAttributes();
String sVariableName = nnm.getNamedItem("var").getNodeValue();
@@ -50,8 +51,12 @@
Class[] parameters = new Class[1];
parameters[0] = componentBean.getVariableType("context");
- this.type = componentBean.getMethodReturnedClass(componentBean
- .getVariableType("component"), "getClientId", parameters);
+ try {
+ this.type = componentBean.getMethodReturnedClass(componentBean
+ .getVariableType("component"), "getClientId", parameters);
+ } catch (NoSuchMethodException e) {
+ throw new CompilationException(e.getLocalizedMessage(), e);
+ }
componentBean.addVariable(this.strThisVariable, this.type);
}
Modified:
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/ParameterProcessor.java
===================================================================
---
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/ParameterProcessor.java 2008-04-09
17:59:16 UTC (rev 7716)
+++
trunk/cdk/generator/src/main/java/org/ajax4jsf/templatecompiler/elements/vcp/ParameterProcessor.java 2008-04-09
18:00:38 UTC (rev 7717)
@@ -74,7 +74,7 @@
parameterType = componentBean
.loadClass(nodeType.getNodeValue());
} catch (ClassNotFoundException e) {
- throw new CompilationException();
+ throw new CompilationException(e.getLocalizedMessage(), e);
}
param = new Parameter(nodeValue.getNodeValue(),
parameterType);