[Buix-commits] r1511 - in trunk/guix-compiler/src/main/java/org/nuiton/guix: . compiler generator model tags
Author: kmorin Date: 2009-07-23 12:49:18 +0200 (Thu, 23 Jul 2009) New Revision: 1511 Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/GuixLauncher.java trunk/guix-compiler/src/main/java/org/nuiton/guix/compiler/GuixCompiler.java trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/Generator.java trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/GuixGenerator.java trunk/guix-compiler/src/main/java/org/nuiton/guix/model/GuixModelObject.java trunk/guix-compiler/src/main/java/org/nuiton/guix/tags/StyleHandler.java Log: Added a list of cssfiles to the model object, in order to copy them to the target directory for GWT Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/GuixLauncher.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/GuixLauncher.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/GuixLauncher.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -64,27 +64,37 @@ protected List<String> guixFileClassNames = new ArrayList<String>(); /** Maps the root GuixModelObjects being compiled to the compiler instance * handling the compilation. */ - protected Map<GuixModelObject, Long> rootModelObjects = - new HashMap<GuixModelObject, Long>(); + protected Map<GuixModelObject, Long> rootModelObjects = new HashMap<GuixModelObject, Long>(); /** CLassDescriptor met during the compilation */ - protected List<ClassDescriptor> classDescriptors = - new ArrayList<ClassDescriptor>(); + protected List<ClassDescriptor> classDescriptors = new ArrayList<ClassDescriptor>(); + /** List of the compiled files */ private List<File> compiledFiles = new ArrayList<File>(); - private Map<GuixGenerator,JavaFile> generatedFiles = new HashMap<GuixGenerator,JavaFile>(); - protected int compilerCount; + /** Maps the generator with the generated JavaFile */ + private Map<GuixGenerator, JavaFile> generatedFiles = new HashMap<GuixGenerator, JavaFile>(); + /** Directory where to save the generated files */ private File targetDirectory; + /** Root package */ private String rootPackage; + /** Main class of the generated application */ private String mainClass; - private Class generatorClass; + /** Class of teh generator to use */ + private Class<? extends GuixGenerator> generatorClass; + /** Name of the class that will launch the application */ private String launcherName; /** * Constructor * * @param files the files to compile + * @param targetDirectory the directory where to save the generated files + * @param rootPackage teh root package + * @param baseDir directory containing the files to compile + * @param mainClass main class of the application + * @param generatorClass class of the generator + * @param launcherName name of the class that will launch the application */ public GuixLauncher(File[] files, File targetDirectory, String rootPackage, - File baseDir, String mainClass, Class generatorClass, String launcherName) { + File baseDir, String mainClass, Class<? extends GuixGenerator> generatorClass, String launcherName) { // Set up a simple configuration that logs on the console. this.files = files; this.targetDirectory = targetDirectory; @@ -94,7 +104,7 @@ for (int i = 0; i < files.length; i++) { String path = files[i].getAbsolutePath(); if (baseDir != null) { - classNames[i] = rootPackage + "." + path.substring(baseDir.getAbsolutePath().length() + 1, + classNames[i] = (rootPackage.length() > 0 ? rootPackage + "." : "") + path.substring(baseDir.getAbsolutePath().length() + 1, path.lastIndexOf('.')).replace(File.separatorChar, '.'); } else { @@ -111,13 +121,12 @@ } /** - * Compiled a set of files. + * Compiles a set of files. * * @return <code>true</code> if compilation succeeds, * <code>false</code> otherwise */ public synchronized boolean compile() { - compilerCount = 0; File destDir = targetDirectory; if (files != null) { if (log.isInfoEnabled()) { @@ -165,7 +174,6 @@ } //compile the file GuixCompiler compiler = new GuixCompiler(file, this, classPackage); - GuixModelObject rootModelObject = compiler.compile(); rootModelObjects.put(rootModelObject, compiler.getLastModification()); @@ -191,174 +199,164 @@ log.error("The class '" + classDescriptors.get(--i).getName() + "' has no package."); } } - } - - if (generatorClass != null) { - //creates the XML serializer for the spring conf - XmlPullParserFactory factory = - XmlPullParserFactory.newInstance( - System.getProperty(XmlPullParserFactory.PROPERTY_NAME), - null); - XmlSerializer serializer = factory.newSerializer(); + if (generatorClass != null) { + //creates the XML serializer for the spring conf + XmlPullParserFactory factory = + XmlPullParserFactory.newInstance( + System.getProperty(XmlPullParserFactory.PROPERTY_NAME), + null); + XmlSerializer serializer = factory.newSerializer(); - File config = new File(targetDirectory,"config.xml"); + File config = new File(targetDirectory, "config.xml"); - serializer.setOutput(new PrintWriter(config)); - serializer.startDocument("UTF-8", null); - serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n"); - serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "\t"); - serializer.text("\n"); - serializer.docdecl(" beans SYSTEM \"http://www.springframework.org/dtd/spring-beans.dtd\""); - serializer.text("\n"); - serializer.startTag("", "beans"); - - for (GuixModelObject mo : rootModelObjects.keySet()) { - try { - GuixGenerator gen = (GuixGenerator) generatorClass.newInstance(); - gen.setDestDir(destDir); - gen.setGmo(mo); - gen.setLastModification(rootModelObjects.get(mo)); - gen.setMainClass((mo.getClassDescriptor().getPackageName() + "." + mo.getClassDescriptor().getName()).equals(mainClass)); - gen.setSerializer(serializer); - gen.setClasses(Arrays.asList(classNames)); - gen.setLauncherName(launcherName); - generatedFiles.put(gen,gen.generate()); + serializer.setOutput(new PrintWriter(config)); + serializer.startDocument("UTF-8", null); + serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n"); + serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "\t"); + serializer.text("\n"); + serializer.docdecl(" beans SYSTEM \"http://www.springframework.org/dtd/spring-beans.dtd\""); + serializer.text("\n"); + serializer.startTag("", "beans"); + + for (GuixModelObject mo : rootModelObjects.keySet()) { + try { + GuixGenerator gen = (GuixGenerator) generatorClass.newInstance(); + gen.setDestDir(destDir); + gen.setGmo(mo); + gen.setLastModification(rootModelObjects.get(mo)); + gen.setMainClass((mo.getClassDescriptor().getPackageName() + "." + mo.getClassDescriptor().getName()).equals(mainClass)); + gen.setSerializer(serializer); + gen.setClasses(Arrays.asList(classNames)); + gen.setLauncherName(launcherName); + gen.setCSSFiles(mo.getCssFiles()); + JavaFile generatedFile = gen.generate(); + if(generatedFile != null) { + generatedFiles.put(gen, generatedFile); + } + } + catch (InstantiationException eee) { + if (log.isErrorEnabled()) { + log.error(eee); + } + } + catch (IllegalAccessException eee) { + if (log.isErrorEnabled()) { + log.error(eee); + } + } } - catch (InstantiationException eee) { - if(log.isErrorEnabled()) - log.error(eee); - } - catch (IllegalAccessException eee) { - if(log.isErrorEnabled()) - log.error(eee); - } - } - for(GuixGenerator gen : generatedFiles.keySet()) { - int dataSourceNumber = 0; - StringBuffer dbCreation = new StringBuffer(); - StringBuffer dbDeletion = new StringBuffer(); - StringBuffer dbProcess = new StringBuffer(); - JavaFile jf = generatedFiles.get(gen); - for(String field : gen.getBindingsToGenerate().keySet()) { - for(String attr : gen.getBindingsToGenerate().get(field).keySet()) { - dbCreation.append(dbCreation.length() != 0 ? "else if(\"" : "if(\"").append(field) - .append(".").append(attr) - .append("\".equals(_binding)) {\n"); - dbDeletion.append(dbDeletion.length() != 0 ? "else if(\"" : "if(\"").append(field) - .append(".").append(attr) - .append("\".equals(_binding)) {\n"); - dbProcess.append(dbProcess.length() != 0 ? "else if(\"" : "if(\"").append(field) - .append(".").append(attr) - .append("\".equals(_binding)) {\n") - .append(field).append(".set") - .append(Character.toUpperCase(attr.charAt(0))) - .append(attr.substring(1)) - .append("("); - List<String[]> bindings = new ArrayList<String[]>(); - JavaParser p = new JavaParser(new StringReader(gen.getBindingsToGenerate().get(field).get(attr))); - //start parsing - while (!p.Line()) { - SimpleNode node = p.popNode(); - if (node != null) { - for(String s : browseNode(node)) { - List<String> l = new ArrayList<String>(); - int parOuvertes = 0; - StringBuffer read = new StringBuffer(); - for(char c : s.toCharArray()) { - if(c == '(') { - parOuvertes++; - read.append(c); - } - else if(c == ')') { - parOuvertes--; - read.append(c); - } - else if(c == '.') { - if(parOuvertes == 0) { - l.add(read.toString()); - read = new StringBuffer(); + for (GuixGenerator gen : generatedFiles.keySet()) { + int dataSourceNumber = 0; + StringBuffer dbCreation = new StringBuffer(); + StringBuffer dbDeletion = new StringBuffer(); + StringBuffer dbProcess = new StringBuffer(); + JavaFile jf = generatedFiles.get(gen); + for (String field : gen.getBindingsToGenerate().keySet()) { + for (String attr : gen.getBindingsToGenerate().get(field).keySet()) { + dbCreation.append(dbCreation.length() != 0 ? "else if(\"" : "if(\"").append(field).append(".").append(attr).append("\".equals(_binding)) {\n"); + dbDeletion.append(dbDeletion.length() != 0 ? "else if(\"" : "if(\"").append(field).append(".").append(attr).append("\".equals(_binding)) {\n"); + dbProcess.append(dbProcess.length() != 0 ? "else if(\"" : "if(\"").append(field).append(".").append(attr).append("\".equals(_binding)) {\n").append(field).append(".set").append(Character.toUpperCase(attr.charAt(0))).append(attr.substring(1)).append("("); + List<String[]> bindings = new ArrayList<String[]>(); + JavaParser p = new JavaParser(new StringReader(gen.getBindingsToGenerate().get(field).get(attr))); + //start parsing + while (!p.Line()) { + SimpleNode node = p.popNode(); + if (node != null) { + for (String s : browseNode(node)) { + List<String> l = new ArrayList<String>(); + int parOuvertes = 0; + StringBuffer read = new StringBuffer(); + for (char c : s.toCharArray()) { + if (c == '(') { + parOuvertes++; + read.append(c); } + else if (c == ')') { + parOuvertes--; + read.append(c); + } + else if (c == '.') { + if (parOuvertes == 0) { + l.add(read.toString()); + read = new StringBuffer(); + } + else { + read.append(c); + } + } else { read.append(c); } } - else { - read.append(c); - } + l.add(read.toString()); + bindings.add(l.toArray(new String[l.size()])); } - l.add(read.toString()); - bindings.add(l.toArray(new String[l.size()])); } } - } - List<Class> listeners = new ArrayList<Class>(); - for(String[] binding : bindings) { - StringBuffer methodToInvoke = new StringBuffer(); - StringBuffer oldBinding = new StringBuffer(); - for(String s : binding) { - log.info("old : " + s); - methodToInvoke.append(s.replaceAll("\\W", "")); - oldBinding.append(s).append("."); - } - oldBinding.setLength(oldBinding.length() - 1); - listeners.addAll(gen.generateBindings(dbCreation, dbDeletion, null, jf, null, binding, 0, null, methodToInvoke.toString(), generatedFiles)); - //JavaArgument[] args = new JavaArgument[]{new JavaArgument(parameterType.getName(), "event")}; - StringBuffer newBinding = new StringBuffer(); - for(String s : binding) { - log.info("new : " + s); - newBinding.append(s).append("."); - } - newBinding.setLength(newBinding.length() - 1); - log.info(gen.getBindingsToGenerate().get(field).get(attr) + " : " + oldBinding + " - " + newBinding.toString()); - gen.getBindingsToGenerate().get(field) - .put(attr, gen.getBindingsToGenerate().get(field).get(attr).replace(oldBinding.toString(), newBinding.toString())); + List<Class> listeners = new ArrayList<Class>(); + for (String[] binding : bindings) { + StringBuffer methodToInvoke = new StringBuffer(); + StringBuffer oldBinding = new StringBuffer(); + for (String s : binding) { + methodToInvoke.append(s.replaceAll("\\W", "")); + oldBinding.append(s).append("."); + } + oldBinding.setLength(oldBinding.length() - 1); + listeners.addAll(gen.generateBindings(dbCreation, dbDeletion, null, jf, null, binding, 0, null, methodToInvoke.toString(), generatedFiles)); + //JavaArgument[] args = new JavaArgument[]{new JavaArgument(parameterType.getName(), "event")}; + StringBuffer newBinding = new StringBuffer(); + for (String s : binding) { + newBinding.append(s).append("."); + } + newBinding.setLength(newBinding.length() - 1); + gen.getBindingsToGenerate().get(field).put(attr, gen.getBindingsToGenerate().get(field).get(attr).replace(oldBinding.toString(), newBinding.toString())); - if (jf.getMethod("onChangeFrom" + methodToInvoke, /*args*/null) == null) { - jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "onChangeFrom" + methodToInvoke.toString(), /*args*/null, null, /*"_DataSource" + dataSourceNumber + ".propertyChange(null);"*/"processDataBinding(\"" + field + "." + attr + "\");", null)); + if (jf.getMethod("onChangeFrom" + methodToInvoke, /*args*/ null) == null) { + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "onChangeFrom" + methodToInvoke.toString(), /*args*/ null, null, /*"_DataSource" + dataSourceNumber + ".propertyChange(null);"*/ "processDataBinding(\"" + field + "." + attr + "\");", null)); + } + else { + jf.getMethod("onChangeFrom" + methodToInvoke.toString(), /*args*/ null).appendBodyCode(/*"_DataSource" + dataSourceNumber + ".propertyChange(null);"*/"processDataBinding(\"" + field + "." + attr + "\");", "\n"); + } } - else { - jf.getMethod("onChangeFrom" + methodToInvoke.toString(), /*args*/null).appendBodyCode(/*"_DataSource" + dataSourceNumber + ".propertyChange(null);"*/"processDataBinding(\"" + field + "." + attr + "\");", "\n"); + dbCreation.append("}\n"); + dbDeletion.append("}\n"); + dbProcess.append(gen.getBindingsToGenerate().get(field).get(attr)).append(");\n}\n"); + if (listeners != null) { + //jf.addField(new JavaField(Modifier.PRIVATE, "java.beans.PropertyChangeListener", "_DataSource" + dataSourceNumber, "new org.nuiton.guix.runtime.DataBindingListener(this,\"" + field + "." + attr + "\")", null, null)); + jf.getMethod("initDataBinding", null).appendBodyCode("applyDataBinding(\"" + field + "." + attr + "\");", "\n"); + for (Class listener : listeners) { + final List<Method> listenerMethods = Arrays.asList(listener.getMethods()); + Class parameterType = listenerMethods.get(0).getParameterTypes()[0]; + } } + dataSourceNumber++; } - dbCreation.append("}\n"); - dbDeletion.append("}\n"); - dbProcess.append(gen.getBindingsToGenerate().get(field).get(attr)) - .append(");\n}\n"); - if(listeners != null) { - //jf.addField(new JavaField(Modifier.PRIVATE, "java.beans.PropertyChangeListener", "_DataSource" + dataSourceNumber, "new org.nuiton.guix.runtime.DataBindingListener(this,\"" + field + "." + attr + "\")", null, null)); - jf.getMethod("initDataBinding", null).appendBodyCode("applyDataBinding(\"" + field + "." + attr + "\");", "\n"); - for(Class listener : listeners) { - final List<Method> listenerMethods = Arrays.asList(listener.getMethods()); - Class parameterType = listenerMethods.get(0).getParameterTypes()[0]; - } - } - dataSourceNumber++; } + if (generatedFiles.get(jf.getSuperClass()) != null) { + dbCreation.append("else {\nsuper.applyDataBinding(_binding);\n" + + "return;\n}"); + dbDeletion.append("\nelse {\nsuper.removeDataBinding(_binding);\n}\n"); + } + dbCreation.append("\nprocessDataBinding(_binding);"); + dbProcess.insert(0, "if (activeBindings.contains(_binding)) {\n" + + "return;\n}\n" + + "activeBindings.add(_binding);\ntry{\n"); + dbProcess.append("\n} finally {\nactiveBindings.remove(_binding);\n}\n"); + jf.addField(new JavaField(Modifier.PRIVATE, "java.util.List<String>", "activeBindings", "new java.util.ArrayList<String>()", "List of the active bindings", null), false); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "applyDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbCreation.toString(), null)); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "removeDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbDeletion.toString(), null)); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "processDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbProcess.toString(), null)); + gen.saveFiles(); } - if(generatedFiles.get(jf.getSuperClass()) != null) { - dbCreation.append("else {\nsuper.applyDataBinding(_binding);\n" + - "return;\n}"); - dbDeletion.append("\nelse {\nsuper.removeDataBinding(_binding);\n}\n"); + serializer.endTag("", "beans"); + serializer.endDocument(); + } + else { + if (log.isWarnEnabled()) { + log.warn("No generation language given"); } - dbCreation.append("\nprocessDataBinding(_binding);"); - dbProcess.insert(0, "if (activeBindings.contains(_binding)) {\n" + - "return;\n}\n" + - "activeBindings.add(_binding);\ntry{\n"); - dbProcess.append("\n} finally {\nactiveBindings.remove(_binding);\n}\n"); - jf.addField(new JavaField(Modifier.PRIVATE, "java.util.List<String>", "activeBindings", "new java.util.ArrayList<String>()", "List of the active bindings", null), false); - jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "applyDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbCreation.toString(), null)); - jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "removeDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbDeletion.toString(), null)); - jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "processDataBinding", new JavaArgument[]{new JavaArgument("String", "_binding")}, null, dbProcess.toString(), null)); - gen.saveFiles(); } - serializer.endTag("", "beans"); - serializer.endDocument(); } - else { - if(log.isWarnEnabled()) { - log.warn("No generation language given"); - } - } } catch (Throwable e) { e.printStackTrace(); @@ -374,7 +372,6 @@ } } - /** * Registers a ClassDescriptor * @@ -432,10 +429,8 @@ private List<String> browseNode(SimpleNode node) { List<String> result = new ArrayList<String>(); - for(int i = 0 ; i < node.jjtGetNumChildren() ; i++) { - if(node.getChild(i).getId() == JavaParserTreeConstants.JJTPRIMARYEXPRESSION - && !node.getChild(i).getText().trim().startsWith("(") - && !node.getChild(i).getText().trim().startsWith("\"")) { + for (int i = 0; i < node.jjtGetNumChildren(); i++) { + if (node.getChild(i).getId() == JavaParserTreeConstants.JJTPRIMARYEXPRESSION && !node.getChild(i).getText().trim().startsWith("(") && !node.getChild(i).getText().trim().startsWith("\"")) { result.add(node.getChild(i).getText().trim()); } result.addAll(browseNode(node.getChild(i))); Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/compiler/GuixCompiler.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/compiler/GuixCompiler.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/compiler/GuixCompiler.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -174,8 +174,8 @@ File styleFile = new File(src.getParentFile(), className + ".css"); if (styleFile.exists()) { + rootMO.getCssFiles().add(styleFile); StyleSheet ss = styleHandler.autoDetectStyleFile(styleFile); - rootMO.getStyleSheets().add(ss); lastModification = Math.max(lastModification, styleFile.lastModified()); } @@ -260,6 +260,7 @@ } if ((styleFile != null) && styleFile.exists()) { + rootMO.getCssFiles().add(styleFile); lastModification = Math.max(lastModification, styleFile.lastModified()); } Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/Generator.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/Generator.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/Generator.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -57,6 +57,10 @@ public void setClasses(List<String> classes); + public List<File> getCSSFiles(); + + public void setCSSFiles(List<File> cssFiles); + public String getLauncherName(); public void setLauncherName(String launcherName); Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/GuixGenerator.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/GuixGenerator.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/generator/GuixGenerator.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -46,6 +46,8 @@ protected XmlSerializer serializer = null; /** List of the classes to generate */ protected List<String> classes = null; + /** List of the CSS files needed of the generation */ + protected List<File> cssFiles = null; /** Name to give to the generated launcher*/ protected String launcherName = null; /** */ @@ -101,6 +103,15 @@ this.classes = classes; } + + public List<File> getCSSFiles() { + return cssFiles; + } + + public void setCSSFiles(List<File> cssFiles) { + this.cssFiles = cssFiles; + } + public String getLauncherName() { return launcherName; } Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/model/GuixModelObject.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/model/GuixModelObject.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/model/GuixModelObject.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -21,6 +21,7 @@ //~--- JDK imports ------------------------------------------------------------ +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -43,6 +44,12 @@ */ private List<StyleSheet> styleSheets = new ArrayList<StyleSheet>(); + /** + * The stylesheets files associated to the object + * (in case the object is a root model object) + */ + private List<File> cssFiles = new ArrayList<File>(); + /** The descriptor the class of the object */ private ClassDescriptor classDescriptor; @@ -139,6 +146,14 @@ this.styleSheets = styleSheets; } + public List<File> getCssFiles() { + return cssFiles; + } + + public void setCssFiles(List<File> cssFiles) { + this.cssFiles = cssFiles; + } + public String getStyleClass() { return styleClass; } @@ -147,6 +162,3 @@ this.styleClass = styleClass; } } - - -//~ Formatted by Jindent --- http://www.jindent.com Modified: trunk/guix-compiler/src/main/java/org/nuiton/guix/tags/StyleHandler.java =================================================================== --- trunk/guix-compiler/src/main/java/org/nuiton/guix/tags/StyleHandler.java 2009-07-23 10:48:07 UTC (rev 1510) +++ trunk/guix-compiler/src/main/java/org/nuiton/guix/tags/StyleHandler.java 2009-07-23 10:49:18 UTC (rev 1511) @@ -44,6 +44,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.nuiton.guix.css.ParseException; /** * Handles the <code>style</code> tag. * @@ -277,24 +278,31 @@ // parses the CSS CSSParser p = new CSSParser(new StringReader(stylesheetText)); - SimpleNode node = p.Stylesheet(); - List<Rule> rules = new ArrayList<Rule>(); + try { + SimpleNode node = p.Stylesheet(); + List<Rule> rules = new ArrayList<Rule>(); - // analyses each rule - for (int i = 0; i < node.jjtGetNumChildren(); i++) { - SimpleNode ruleNode = node.getChild(i); - Rule rule = processRule(ruleNode); + // analyses each rule + for (int i = 0; i < node.jjtGetNumChildren(); i++) { + SimpleNode ruleNode = node.getChild(i); + Rule rule = processRule(ruleNode); + rules.add(rule); - rules.add(rule); - } + } - StyleSheet styleSheet = new StyleSheet(); + StyleSheet styleSheet = new StyleSheet(); - styleSheet.setRules(rules); - styleSheet.setSelectors(selectors); + styleSheet.setRules(rules); + styleSheet.setSelectors(selectors); - return styleSheet; - + return styleSheet; + + } catch(ParseException eee) { + if(log.isWarnEnabled()) { + log.warn(eee); + } + } + return null; } /**
participants (1)
-
kmorin@users.labs.libre-entreprise.org