private void emitPortlet( ProcessingContext env, PackageElement pkgElt, String[] names) throws ProcessingException { Writer writer = null; Name fqn = Name.parse(pkgElt.getQualifiedName()).append(names[0]); try { JavaFileObject file = env.createSourceFile(fqn, pkgElt); writer = file.openWriter(); // writer.append("package ").append(pkgElt.getQualifiedName()).append(";\n"); writer.append("import ").append(Generated.class.getCanonicalName()).append(";\n"); writer.append("@Generated(value={})\n"); writer.append("public class ").append(names[0]).append(" extends juzu.bridge.portlet.JuzuPortlet {\n"); writer.append("@Override\n"); writer.append("protected String getApplicationName(javax.portlet.PortletConfig config) {\n"); writer.append("return \"").append(names[1]).append("\";\n"); writer.append("}\n"); writer.append("}\n"); } catch (IOException e) { throw CANNOT_WRITE_PORTLET_CLASS.failure(e, pkgElt, fqn); } finally { Tools.safeClose(writer); } }
public static final MessageCode CANNOT_WRITE_CONTROLLER_COMPANION = new MessageCode("CANNOT_WRITE_CONTROLLER_COMPANION", "The controller companion %1$s cannot be written"); public static final MessageCode CONTROLLER_METHOD_PARAMETER_NOT_RESOLVED = new MessageCode("CONTROLLER_METHOD_PARAMETER_NOT_RESOLVED", "The method parameter type %1s should be a string or annotated with @juzu.Param"); public static final MessageCode CONTROLLER_IS_ABSTRACT = new MessageCode("CONTROLLER_IS_ABSTRACT", "The controller class %1s cannot be abstract");
public static Message parse(String s) { List<String> arguments = Collections.emptyList(); Matcher matcher = PATTERN.matcher(s); if (matcher.find()) { String codeKey = matcher.group(1); MessageCode code = MessageCode.decode(codeKey); if (matcher.group(2).length() > 0) { arguments = new ArrayList<String>(); for (String argument : SPLIT_PATTERN.split(matcher.group(2), 0)) { int prev = 0; while (true) { int pos = argument.indexOf('\\', prev); if (pos == -1) { break; } else { argument = argument.substring(0, pos) + argument.charAt(pos + 1) + argument.substring(pos + 2); prev = pos + 2; } } arguments.add(argument); } } return new Message(code, arguments.toArray()); } else { return null; } }
public StringBuilder format(StringBuilder sb, boolean formal) { if (formal) { sb = sb.append("[").append(code.getKey()).append("]("); for (int i = 0;i < arguments.length;i++) { if (i > 0) { sb.append(','); } String value = String.valueOf(arguments[i]); for (int j = 0;j < value.length();j++) { char c = value.charAt(j); switch (c) { case ',': case ')': case '\\': sb.append('\\'); default: sb.append(c); } } } sb.append(")"); } else { new Formatter(sb).format(Locale.getDefault(), code.getMessage(), (Object[])arguments).flush(); } return sb; }
new Formatter(msg).format(Locale.getDefault(), code.getMessage(), (Object[])args).flush(); System.out.println(code.getMessage()); System.out.println(Arrays.toString(args)); e.printStackTrace();
public StringBuilder format(StringBuilder sb, boolean formal) { if (formal) { sb = sb.append("[").append(code.getKey()).append("]("); for (int i = 0;i < arguments.length;i++) { if (i > 0) { sb.append(','); } String value = String.valueOf(arguments[i]); for (int j = 0;j < value.length();j++) { char c = value.charAt(j); switch (c) { case ',': case ')': case '\\': sb.append('\\'); default: sb.append(c); } } } sb.append(")"); } else { new Formatter(sb).format(Locale.getDefault(), code.getMessage(), (Object[])arguments).flush(); } return sb; }
new Formatter(msg).format(Locale.getDefault(), code.getMessage(), (Object[])args).flush(); System.out.println(code.getMessage()); System.out.println(Arrays.toString(args)); e.printStackTrace();
private void emitPortlet( ProcessingContext env, PackageElement pkgElt, String[] names) throws ProcessingException { Writer writer = null; Name fqn = Name.parse(pkgElt.getQualifiedName()).append(names[0]); try { JavaFileObject file = env.createSourceFile(fqn, pkgElt); writer = file.openWriter(); // writer.append("package ").append(pkgElt.getQualifiedName()).append(";\n"); writer.append("import ").append(Generated.class.getCanonicalName()).append(";\n"); writer.append("@Generated(value={})\n"); writer.append("public class ").append(names[0]).append(" extends juzu.bridge.portlet.JuzuPortlet {\n"); writer.append("@Override\n"); writer.append("protected String getApplicationName(javax.portlet.PortletConfig config) {\n"); writer.append("return \"").append(names[1]).append("\";\n"); writer.append("}\n"); writer.append("}\n"); } catch (IOException e) { throw CANNOT_WRITE_PORTLET_CLASS.failure(e, pkgElt, fqn); } finally { Tools.safeClose(writer); } }
public static final MessageCode CANNOT_WRITE_CONTROLLER_COMPANION = new MessageCode("CANNOT_WRITE_CONTROLLER_COMPANION", "The controller companion %1$s cannot be written"); public static final MessageCode CONTROLLER_METHOD_PARAMETER_NOT_RESOLVED = new MessageCode("CONTROLLER_METHOD_PARAMETER_NOT_RESOLVED", "The method parameter type %1s should be a string or annotated with @juzu.Param"); public static final MessageCode CONTROLLER_IS_ABSTRACT = new MessageCode("CONTROLLER_IS_ABSTRACT", "The controller class %1s cannot be abstract");
public static Message parse(String s) { List<String> arguments = Collections.emptyList(); Matcher matcher = PATTERN.matcher(s); if (matcher.find()) { String codeKey = matcher.group(1); MessageCode code = MessageCode.decode(codeKey); if (matcher.group(2).length() > 0) { arguments = new ArrayList<String>(); for (String argument : SPLIT_PATTERN.split(matcher.group(2), 0)) { int prev = 0; while (true) { int pos = argument.indexOf('\\', prev); if (pos == -1) { break; } else { argument = argument.substring(0, pos) + argument.charAt(pos + 1) + argument.substring(pos + 2); prev = pos + 2; } } arguments.add(argument); } } return new Message(code, arguments.toArray()); } else { return null; } }
private void processBundle(ApplicationMetaModel application, ElementHandle.Package pkg, String bundleName) { ProcessingContext context = application.getProcessingContext(); PackageElement pkgElt = context.get(pkg); Properties properties = loadBundle(context, pkg, bundleName); if (properties == null) { throw BUNDLE_NOT_FOUND.failure(pkgElt, bundleName); } else { try { generateBundleClass(context, properties, pkgElt, bundleName); } catch (IOException e) { throw CANNOT_CREATE_BUNDLE.failure(pkgElt, bundleName).initCause(e); } } } // end::processBundle[]
@Test public void testErrorCode() throws IOException { final MessageCode code = new MessageCode("ERROR_01", "The error"); class P extends BaseProcessor { @Override
@Override public void compile(ProcessPhase phase, ASTNode.Tag tag, TemplateModel t) throws TemplateException { String path = tag.getArgs().get("path"); Path.Absolute resolved = phase.resolveTemplate(Path.parse(path)); if (resolved == null) { throw TemplateMetaModel.TEMPLATE_NOT_RESOLVED.failure(path); } else { tag.getArgs().put("path", resolved.getCanonical()); } }
@Test public void testErrorCode() throws IOException { final MessageCode code = new MessageCode("ERROR_01", "The error"); class P extends BaseProcessor { @Override
private void processBundle(ApplicationMetaModel application, ElementHandle.Package pkg, String bundleName) { ProcessingContext context = application.getProcessingContext(); PackageElement pkgElt = context.get(pkg); Properties properties = loadBundle(context, pkg, bundleName); if (properties == null) { throw BUNDLE_NOT_FOUND.failure(pkgElt, bundleName); } else { try { generateBundleClass(context, properties, pkgElt, bundleName); } catch (IOException e) { throw CANNOT_CREATE_BUNDLE.failure(pkgElt, bundleName).initCause(e); } } } // end::processBundle[]
@Override public void compile(ProcessPhase phase, ASTNode.Tag tag, TemplateModel t) throws TemplateException { String path = tag.getArgs().get("path"); Path.Absolute resolved = phase.resolveTemplate(Path.parse(path)); if (resolved == null) { throw TemplateMetaModel.TEMPLATE_NOT_RESOLVED.failure(path); } else { tag.getArgs().put("path", resolved.getCanonical()); } }
throw TemplateMetaModel.CANNOT_WRITE_APPLICATION.failure(e, elt, application.getName());
throw TemplateMetaModel.CANNOT_WRITE_APPLICATION.failure(e, elt, application.getName());
throw CANNOT_WRITE_SERVLET_CLASS.failure(e, pkgElt, pkg.getPackageName());
throw CANNOT_WRITE_SERVLET_CLASS.failure(e, pkgElt, pkg.getPackageName());