factory.compile(new StringReader(mustacheTemplateModel.getModel().source), mustacheTemplateModel.getPath().getSimpleName());
writer.append("package ").append(path.getDirs()).append(";\n"); writer.append("import ").append(TemplateDescriptor.class.getCanonicalName()).append(";\n"); writer.append("import ").append(TemplateService.class.getCanonicalName()).append(";\n"); writer.append("@").append(Generated.class.getName()).append("({})\n"); writer.append("public class ").append(path.getRawName()).append(" extends ").append(juzu.template.Template.class.getName()).append("\n"); writer.append("{\n"); writer.append("@javax.inject.Inject\n"); writer.append("public ").append(path.getRawName()).append("("). append(TemplateService.class.getSimpleName()).append(" templatePlugin"). append(")\n"); writer.append("{\n"); writer.append("super(templatePlugin, \"").append(path.getValue()).append("\");\n"); writer.append("}\n"); append("\"").append(path.getValue()).append("\","). append("0x").append(Long.toHexString(template.templateModel.getMD5())).append("L,"). append(path.getName()).append(".class,"). append(provider.getTemplateStubType().getName()).append(".class"). append(");\n");
public TemplatesDescriptor( ApplicationDescriptor application, ClassLoader loader, JSON config) throws Exception { ArrayList<BeanDescriptor> beans = new ArrayList<BeanDescriptor>(); List<TemplateDescriptor> templates = new ArrayList<TemplateDescriptor>(); // String packageName = config.getString("package"); Name pkg = Name.parse(packageName); // Load templates for (String fqn : config.getList("templates", String.class)) { Class<?> clazz = loader.loadClass(fqn); Field f = clazz.getField("DESCRIPTOR"); TemplateDescriptor descriptor = (TemplateDescriptor)f.get(null); templates.add(descriptor); juzu.impl.common.Path.Absolute path = (juzu.impl.common.Path.Absolute)juzu.impl.common.Path.parse(descriptor.getPath()); Path qualifier; if (pkg.isPrefix(path.getName())) { juzu.impl.common.Path.Relative relativePath = juzu.impl.common.Path.relative(path.getName().subName(pkg.size()), path.getExt()); qualifier = new PathLiteral(relativePath.getCanonical()); } else { qualifier = new PathLiteral(path.getCanonical()); } beans.add(BeanDescriptor.createFromImpl(Template.class, null, Arrays.<Annotation>asList(qualifier), descriptor.getType())); } // this.templates = templates; this.pkg = pkg; this.beans = beans; }
writer.append("package ").append(path.getDirs()).append(";\n"); writer.append("import ").append(TemplateDescriptor.class.getCanonicalName()).append(";\n"); writer.append("import ").append(TemplateService.class.getCanonicalName()).append(";\n"); writer.append("@").append(Generated.class.getName()).append("({})\n"); writer.append("public class ").append(path.getRawName()).append(" extends ").append(juzu.template.Template.class.getName()).append("\n"); writer.append("{\n"); writer.append("@javax.inject.Inject\n"); writer.append("public ").append(path.getRawName()).append("("). append(TemplateService.class.getSimpleName()).append(" templatePlugin"). append(")\n"); writer.append("{\n"); writer.append("super(templatePlugin, \"").append(path.getValue()).append("\");\n"); writer.append("}\n"); append("\"").append(path.getValue()).append("\","). append("0x").append(Long.toHexString(template.templateModel.getMD5())).append("L,"). append(path.getName()).append(".class,"). append(provider.getTemplateStubType().getName()).append(".class"). append(");\n");
private <M extends Serializable> Path.Absolute resolveTemplate(Path.Absolute path) throws TemplateException { Template template; if (path.equals(metaModel.path)) { template = metaModel; } else { throw TemplateMetaModel.TEMPLATE_NOT_RESOLVED.failure(path); } else { TemplateProvider<M> provider = (TemplateProvider<M>)owner.resolveTemplateProvider(path.getExt()); M templateAST; try {
private <M extends Serializable> Path.Absolute resolveTemplate(Path.Absolute path) throws TemplateException { Template template; if (path.equals(metaModel.path)) { template = metaModel; } else { throw TemplateMetaModel.TEMPLATE_NOT_RESOLVED.failure(path); } else { TemplateProvider<M> provider = (TemplateProvider<M>)owner.resolveTemplateProvider(path.getExt()); M templateAST; try {
if (template.getPath().equals(tagAnnotations.get(tag.name))) { tagAnnotations.remove(tag.name); } else {
if (template.getPath().equals(tagAnnotations.get(tag.name))) { tagAnnotations.remove(tag.name); } else {
public TemplatesDescriptor( ApplicationDescriptor application, ClassLoader loader, JSON config) throws Exception { ArrayList<BeanDescriptor> beans = new ArrayList<BeanDescriptor>(); List<TemplateDescriptor> templates = new ArrayList<TemplateDescriptor>(); // String packageName = config.getString("package"); Name pkg = Name.parse(packageName); // Load templates for (String fqn : config.getList("templates", String.class)) { Class<?> clazz = loader.loadClass(fqn); Field f = clazz.getField("DESCRIPTOR"); TemplateDescriptor descriptor = (TemplateDescriptor)f.get(null); templates.add(descriptor); juzu.impl.common.Path.Absolute path = (juzu.impl.common.Path.Absolute)juzu.impl.common.Path.parse(descriptor.getPath()); Path qualifier; if (pkg.isPrefix(path.getName())) { juzu.impl.common.Path.Relative relativePath = juzu.impl.common.Path.relative(path.getName().subName(pkg.size()), path.getExt()); qualifier = new PathLiteral(relativePath.getCanonical()); } else { qualifier = new PathLiteral(path.getCanonical()); } beans.add(BeanDescriptor.createFromImpl(Template.class, null, Arrays.<Annotation>asList(qualifier), descriptor.getType())); } // this.templates = templates; this.pkg = pkg; this.beans = beans; }
private void resolvedQualified( TemplateProvider<?> provider, TemplateMetaModel template, Element[] elements) { // Path.Absolute path = template.getPath(); if (classCache.containsKey(path)) { log.info("Template class " + path + " was found in cache"); } else { Path.Absolute resolvedPath = owner.resolvePath(path); Writer writer = null; try { FileObject classFile = owner.application.getProcessingContext().createSourceFile(resolvedPath.getName(), elements); writer = classFile.openWriter(); emitClass(provider, template, elements, writer); classCache.put(path, classFile); log.info("Generated template class " + path + " as " + classFile.toUri() + " with originating elements " + Arrays.asList(elements)); } catch (IOException e) { e.printStackTrace(); throw TemplateMetaModel.CANNOT_WRITE_TEMPLATE_CLASS.failure(e, elements[0], path); } finally { Tools.safeClose(writer); } } } }
Class<?> clazz = context.getClassLoader().loadClass(resolved.getName().toString()); Field f = clazz.getField("DESCRIPTOR"); desc = (TemplateDescriptor)f.get(null);
factory.compile(new StringReader(mustacheTemplateModel.getModel().source), mustacheTemplateModel.getPath().getSimpleName());
private void resolvedQualified( TemplateProvider<?> provider, TemplateMetaModel template, Element[] elements) { // Path.Absolute path = template.getPath(); if (classCache.containsKey(path)) { log.info("Template class " + path + " was found in cache"); } else { Path.Absolute resolvedPath = owner.resolvePath(path); Writer writer = null; try { FileObject classFile = owner.application.getProcessingContext().createSourceFile(resolvedPath.getName(), elements); writer = classFile.openWriter(); emitClass(provider, template, elements, writer); classCache.put(path, classFile); log.info("Generated template class " + path + " as " + classFile.toUri() + " with originating elements " + Arrays.asList(elements)); } catch (IOException e) { e.printStackTrace(); throw TemplateMetaModel.CANNOT_WRITE_TEMPLATE_CLASS.failure(e, elements[0], path); } finally { Tools.safeClose(writer); } } } }
Class<?> clazz = context.getClassLoader().loadClass(resolved.getName().toString()); Field f = clazz.getField("DESCRIPTOR"); desc = (TemplateDescriptor)f.get(null);
@Override protected void emitClass(TemplateProvider<?> provider, TemplateMetaModel template, Element[] elements, Writer writer) throws IOException { // Path.Absolute path = template.getPath(); // Template qualified class writer.append("package ").append(path.getDirs()).append(";\n"); writer.append("import ").append(TemplateDescriptor.class.getCanonicalName()).append(";\n"); writer.append("import ").append(TemplateService.class.getCanonicalName()).append(";\n"); writer.append("@").append(Generated.class.getName()).append("({})\n"); writer.append("public class ").append(path.getRawName()).append(" extends ").append(SimpleTag.class.getName()).append("\n"); writer.append("{\n"); writer.append("public static final long MD5 = 0x").append(Long.toHexString(template.templateModel.getMD5())).append("L;\n"); writer.append("public ").append(path.getRawName()).append("()\n"); writer.append("{\n"); writer.append("super(\""). append(path.getRawName()).append("\","). append("").append(provider.getTemplateStubType().getName()).append(".class"). append(");\n"); writer.append("}\n"); // Close class writer.append("}\n"); } }
@Override protected void emitClass(TemplateProvider<?> provider, TemplateMetaModel template, Element[] elements, Writer writer) throws IOException { // Path.Absolute path = template.getPath(); // Template qualified class writer.append("package ").append(path.getDirs()).append(";\n"); writer.append("import ").append(TemplateDescriptor.class.getCanonicalName()).append(";\n"); writer.append("import ").append(TemplateService.class.getCanonicalName()).append(";\n"); writer.append("@").append(Generated.class.getName()).append("({})\n"); writer.append("public class ").append(path.getRawName()).append(" extends ").append(SimpleTag.class.getName()).append("\n"); writer.append("{\n"); writer.append("public static final long MD5 = 0x").append(Long.toHexString(template.templateModel.getMD5())).append("L;\n"); writer.append("public ").append(path.getRawName()).append("()\n"); writer.append("{\n"); writer.append("super(\""). append(path.getRawName()).append("\","). append("").append(provider.getTemplateStubType().getName()).append(".class"). append(");\n"); writer.append("}\n"); // Close class writer.append("}\n"); } }
@Override public JSON getDescriptor(ApplicationMetaModel application) { JSON config = new JSON(); AbstractContainerMetaModel metaModel = application.getChild(TemplateContainerMetaModel.KEY); LinkedHashSet<String> templates = new LinkedHashSet<String>(); for (TemplateRefMetaModel ref : metaModel.getChildren(TemplateRefMetaModel.class)) { if (ref instanceof ElementMetaModel) { templates.add(((ElementMetaModel)ref).getPath().getName().toString()); } } config.map("templates", templates); config.set("package", metaModel.getQN().toString()); return config; } }
@Override public JSON getDescriptor(ApplicationMetaModel application) { JSON config = new JSON(); AbstractContainerMetaModel metaModel = application.getChild(TemplateContainerMetaModel.KEY); LinkedHashSet<String> templates = new LinkedHashSet<String>(); for (TemplateRefMetaModel ref : metaModel.getChildren(TemplateRefMetaModel.class)) { if (ref instanceof ElementMetaModel) { templates.add(((ElementMetaModel)ref).getPath().getName().toString()); } } config.map("templates", templates); config.set("package", metaModel.getQN().toString()); return config; } }