From: Felix Dörre Date: Mon, 30 May 2016 12:29:56 +0000 (+0200) Subject: fix: use sprintf-translation correctly X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=0e926f650b13aba58cece09280ba24901e8fc61d fix: use sprintf-translation correctly Change-Id: I481185508f92f9f32866adb97a3e1f10f53ba130 --- diff --git a/src/org/cacert/gigi/output/template/SprintfCommand.java b/src/org/cacert/gigi/output/template/SprintfCommand.java index 07a0b8cc..385da25c 100644 --- a/src/org/cacert/gigi/output/template/SprintfCommand.java +++ b/src/org/cacert/gigi/output/template/SprintfCommand.java @@ -1,7 +1,9 @@ package org.cacert.gigi.output.template; import java.io.PrintWriter; +import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -50,7 +52,7 @@ public final class SprintfCommand implements Translatable { store = var.toArray(new String[var.size()]); } - private final Pattern replacant = Pattern.compile("\\{([0-9]+)\\}"); + private static final Pattern replacant = Pattern.compile("\\{([0-9]+)\\}"); @Override public void output(PrintWriter out, Language l, Map vars) { @@ -79,4 +81,14 @@ public final class SprintfCommand implements Translatable { public void addTranslations(Collection s) { s.add(text); } + + public static Outputable createSimple(String msg, String... vars) { + HashMap scope = new HashMap<>(); + String[] store = new String[vars.length]; + for (int i = 0; i < vars.length; i++) { + scope.put("autoVar" + i, vars[i]); + store[i] = "${autoVar" + i + "}"; + } + return new Scope(new SprintfCommand(msg, Arrays.asList(store)), scope); + } } diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java b/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java index eba64f17..aafd869c 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java @@ -7,7 +7,6 @@ import java.security.PublicKey; import java.security.interfaces.DSAPublicKey; import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPublicKey; -import java.util.Arrays; import java.util.Base64; import java.util.HashMap; import java.util.HashSet; @@ -29,7 +28,6 @@ import org.cacert.gigi.dbObjects.CertificateProfile.PropertyTemplate; import org.cacert.gigi.dbObjects.Digest; import org.cacert.gigi.dbObjects.Organisation; import org.cacert.gigi.dbObjects.User; -import org.cacert.gigi.output.template.Scope; import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.util.AuthorizationContext; import org.cacert.gigi.util.PEM; @@ -356,10 +354,8 @@ public class CertificateRequest { } } } - HashMap vars = new HashMap<>(); - vars.put("SAN", san.getType().toString().toLowerCase() + ":" + san.getName()); - error.mergeInto(new GigiApiException(new Scope(new SprintfCommand(// - "The requested Subject alternate name \"{0}\" has been removed.", Arrays.asList("${SAN}")), vars))); + error.mergeInto(new GigiApiException(SprintfCommand.createSimple(// + "The requested Subject alternate name \"{0}\" has been removed.", san.getType().toString().toLowerCase() + ":" + san.getName()))); } SANs = filteredSANs; } diff --git a/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java b/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java index aafd5b9d..1096f3d7 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java +++ b/src/org/cacert/gigi/pages/admin/support/FindDomainForm.java @@ -1,7 +1,6 @@ package org.cacert.gigi.pages.admin.support; import java.io.PrintWriter; -import java.util.Arrays; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -35,13 +34,13 @@ public class FindDomainForm extends Form { try { d = Domain.getById(Integer.parseInt(request.substring(1))); } catch (IllegalArgumentException e) { - throw (new GigiApiException(new SprintfCommand("No personal domains found matching the id %s", Arrays.asList(request.substring(1))))); + throw new GigiApiException(SprintfCommand.createSimple("No personal domains found matching the id {0}", request.substring(1))); } } else { d = Domain.searchUserIdByDomain(request); } if (d == null) { - throw (new GigiApiException(new SprintfCommand("No personal domains found matching %s", Arrays.asList(request)))); + throw new GigiApiException(SprintfCommand.createSimple("No personal domains found matching {0}", request)); } res = d.getOwner(); return true; diff --git a/src/org/cacert/gigi/pages/admin/support/FindUserForm.java b/src/org/cacert/gigi/pages/admin/support/FindUserForm.java index d88f93ab..21276dba 100644 --- a/src/org/cacert/gigi/pages/admin/support/FindUserForm.java +++ b/src/org/cacert/gigi/pages/admin/support/FindUserForm.java @@ -1,7 +1,6 @@ package org.cacert.gigi.pages.admin.support; import java.io.PrintWriter; -import java.util.Arrays; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -30,7 +29,7 @@ public class FindUserForm extends Form { public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { User[] users = User.findByEmail(req.getParameter("email")); if (users.length == 0) { - throw (new GigiApiException(new SprintfCommand("No users found matching %s", Arrays.asList(req.getParameter("email"))))); + throw new GigiApiException(SprintfCommand.createSimple("No users found matching {0}", req.getParameter("email"))); } this.users = users; return true; diff --git a/src/org/cacert/gigi/util/Notary.java b/src/org/cacert/gigi/util/Notary.java index 144bf6d8..901e5ef6 100644 --- a/src/org/cacert/gigi/util/Notary.java +++ b/src/org/cacert/gigi/util/Notary.java @@ -1,7 +1,6 @@ package org.cacert.gigi.util; import java.text.ParseException; -import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -137,7 +136,7 @@ public class Notary { } else if (type == AssuranceType.TTP_ASSISTED) { assureTTP(assurer, assuree, awarded, location, date); } else { - throw new GigiApiException(new SprintfCommand("Unknown Assurance type: %s", Arrays.asList(type.toString()))); + throw new GigiApiException(SprintfCommand.createSimple("Unknown Assurance type: {0}", type.toString())); } assurer.invalidateMadeAssurances(); assuree.invalidateReceivedAssurances();