List of usage examples for com.google.gwt.uibinder.rebind IndentedWriter newline
public void newline()
From source file:com.jhickman.web.gwt.gxtuibinder.rebind.GxtHandlerEvaluator.java
License:Apache License
protected void writeHandler(IndentedWriter writer, String uiOwner, String handlerVarName, JClassType eventType, String boundMethod, TypeOracle oracle) throws UnableToCompleteException { JClassType handlerType = oracle.findType(GxtClassnameConstants.LISTENER); writer.newline(); writer.write("final %1$s<%2$s> %3$s = new %1$s<%2$s>() {", handlerType.getQualifiedSourceName(), eventType.getQualifiedSourceName(), handlerVarName); writer.indent();// w w w. j a va 2s . com writer.write("public void handleEvent(%s event) {", eventType.getQualifiedSourceName()); writer.indent(); writer.write("%s.%s(event);", uiOwner, boundMethod); writer.outdent(); writer.write("}"); writer.outdent(); writer.write("};"); }
From source file:com.nabla.wapp.client.rebind.GenericCommandSetGenerator.java
License:Apache License
private void writeClass(final TreeLogger logger, final IndentedWriter writer, final String packageName, final String className, final JClassType interfaceType) throws UnableToCompleteException { final List<JMethod> methods = new LinkedList<JMethod>(); getAllMethods(interfaceType, methods); final Set<String> returnTypes = new HashSet<String>(); final Map<String, String[]> commandRequiredRoles = new HashMap<String, String[]>(); final Set<String> requiredRoles = new HashSet<String>(); final Set<String> rootCommands = new HashSet<String>(); int maxRoleCountPerMethod = 0; boolean singleRolePerMethod = false; // true if at least one command needs a unique role for (final JMethod method : methods) { if (method.getParameters().length > 0) { logger.log(TreeLogger.ERROR, "unsupported parameters for method '" + method.getName() + "'", null); throw new UnableToCompleteException(); }/* ww w. j a v a2s. c o m*/ returnTypes.add(method.getReturnType().getQualifiedSourceName()); final IRequiredRole role = method.getAnnotation(IRequiredRole.class); if (role != null) { final String[] roles = role.value(); logger.log(TreeLogger.INFO, "method '" + method.getName() + "' restricted to roles " + Arrays.asList(roles).toString()); requiredRoles.addAll(Arrays.asList(roles)); commandRequiredRoles.put(method.getName(), roles); if (maxRoleCountPerMethod < roles.length) maxRoleCountPerMethod = roles.length; if (roles.length == 1) singleRolePerMethod = true; } final IRequireRootRole rootRole = method.getAnnotation(IRequireRootRole.class); if (rootRole != null) { logger.log(TreeLogger.INFO, "method '" + method.getName() + "' restricted to root only"); rootCommands.add(method.getName()); } } writer.write(PACKAGE, packageName); writer.newline(); for (final String type : returnTypes) writer.write(IMPORT, type); writer.write(IMPORT, "java.util.HashMap"); writer.write(IMPORT, "java.util.Map"); writer.write(IMPORT, "java.util.Set"); writer.write(IMPORT, "java.util.HashSet"); writer.write(IMPORT, "java.util.Collections"); writer.write(IMPORT, "com.smartgwt.client.data.Record"); writer.write(IMPORT, "com.nabla.wapp.shared.slot.ISlot1"); writer.write(IMPORT, "com.nabla.wapp.shared.general.StringSet"); writer.write(IMPORT, "com.nabla.wapp.client.auth.IAuthSessionManager"); writer.write(IMPORT, "com.nabla.wapp.client.general.Application"); writer.write(IMPORT, "com.nabla.wapp.client.command.ICurrentRecordProvider"); writer.newline(); writer.write("public class %1$s implements %2$s {", className, interfaceType.getName()); writer.indent(); for (final JMethod method : methods) writer.write("private final %1$s m_%2$s = new %1$s();", method.getReturnType().getSimpleSourceName(), method.getName()); writer.newline(); writer.write("private static final StringSet roles = new StringSet();"); for (final Map.Entry<String, String[]> e : commandRequiredRoles.entrySet()) { if (e.getValue().length < 2) continue; writer.write("private static final String[] %1$s_Roles = {", e.getKey()); writer.indent(); final String[] roles = e.getValue(); writer.write("\"%1$s\"", roles[0]); for (int i = 1; i < roles.length; ++i) writer.write(",\"%1$s\"", roles[i]); writer.outdent(); writer.write("});"); } writer.newline(); writer.write("static {"); writer.indent(); for (final String role : requiredRoles) writer.write("roles.add(\"%1$s\");", role); writer.outdent(); writer.write("}"); // static writer.newline(); writer.write("private Integer objectId;"); writer.write("public %1$s() {}", className); // constructor writer.newline(); writer.write("public void setObjectId(final Integer objectId) {"); writer.indent(); writer.write("this.objectId = objectId;"); writer.outdent(); writer.write("}"); writer.newline(); for (final JMethod method : methods) writer.write("@Override public %1$s %2$s() { return m_%2$s; }", method.getReturnType().getSimpleSourceName(), method.getName()); writer.newline(); writer.write("@Override public StringSet getRequiredRoles() { return roles; }"); writer.newline(); writer.write("@Override public void applyRoles(final Set<String> userRoles, boolean isRoot) {"); writer.indent(); if (requiredRoles.isEmpty()) { for (final JMethod method : methods) { if (rootCommands.contains(method.getName())) writer.write("m_%1$s.setEnabled(isRoot);", method.getName()); else writer.write("m_%1$s.setEnabled(true);", method.getName()); } } else { for (final JMethod method : methods) { if (rootCommands.contains(method.getName())) writer.write("m_%1$s.setEnabled(isRoot);", method.getName()); else { final String[] commandRoles = commandRequiredRoles.get(method.getName()); if (commandRoles == null) writer.write("m_%1$s.setEnabled(true);", method.getName()); else if (commandRoles.length == 1) writer.write("m_%1$s.setEnabled(isEnabled(\"%2$s\", userRoles));", method.getName(), commandRoles[0]); else writer.write("m_%1$s.setEnabled(isEnabled(%1$s_Roles, userRoles));", method.getName()); } } } writer.outdent(); writer.write("}"); // applyRoles writer.newline(); writer.write("@Override public void updateUi(final IAuthSessionManager sessionManager) {"); writer.indent(); writer.write("sessionManager.IsUserInRole(objectId, getRequiredRoles(), new ISlot1<Set<String>>() {"); writer.indent(); writer.write("@Override public void invoke(final Set<String> roles) {"); writer.indent(); writer.write("applyRoles(roles, sessionManager.isRoot());"); writer.outdent(); writer.write("}"); writer.outdent(); writer.write("});"); writer.outdent(); writer.write("}"); // updateUi writer.newline(); writer.write("@Override public void updateUi() {"); writer.indent(); writer.write("updateUi(Application.getInstance().getUserSessionManager());"); writer.outdent(); writer.write("}"); // updateUi if (maxRoleCountPerMethod > 1) { writer.newline(); writer.write("private boolean isEnabled(final String[] requiredRoles, final Set<String> userRoles) {"); writer.indent(); writer.write("if (userRoles == null || userRoles.isEmpty())"); writer.indent(); writer.write("return false;"); writer.outdent(); writer.write("for (String requiredRole : requiredRoles) {"); writer.indent(); writer.write("if (userRoles.contains(requiredRole))"); writer.indent(); writer.write("return true;"); writer.outdent(); writer.outdent(); writer.write("}"); writer.write("return false;"); writer.outdent(); writer.write("}"); // isEnabled } if (singleRolePerMethod) { writer.newline(); writer.write("private boolean isEnabled(final String requiredRole, final Set<String> userRoles) {"); writer.indent(); writer.write("return userRoles != null && userRoles.contains(requiredRole);"); writer.outdent(); writer.write("}"); // isEnabled } writer.outdent(); writer.write("}"); // class }