diff --git a/library/src/main/java/com/fidesmo/fdsm/FidesmoApiClient.java b/library/src/main/java/com/fidesmo/fdsm/FidesmoApiClient.java index 5cd8698..6d170f4 100644 --- a/library/src/main/java/com/fidesmo/fdsm/FidesmoApiClient.java +++ b/library/src/main/java/com/fidesmo/fdsm/FidesmoApiClient.java @@ -203,8 +203,7 @@ public static String lamei18n(JsonNode n) { if (n == null) return ""; if (n.size() > 0) { - Map langs = mapper.convertValue(n, new TypeReference<>() { - }); + Map langs = mapper.convertValue(n, new TypeReference>() {}); Map.Entry first = langs.entrySet().iterator().next(); return langs.getOrDefault(Locale.getDefault().getLanguage(), langs.getOrDefault("en", first.getValue())).toString(); } else { diff --git a/library/src/main/java/com/fidesmo/fdsm/FidesmoCard.java b/library/src/main/java/com/fidesmo/fdsm/FidesmoCard.java index 0e1f028..8be3d95 100644 --- a/library/src/main/java/com/fidesmo/fdsm/FidesmoCard.java +++ b/library/src/main/java/com/fidesmo/fdsm/FidesmoCard.java @@ -221,7 +221,7 @@ public static Optional detect(Map commands) { .filter(FidesmoCard::check) .flatMap(a -> fetchTag(0x45, a)); - cin = pv3cin.or(() -> pv2cin).orElse(null); + cin = pv3cin.orElseGet(() -> pv2cin.orElse(null)); cplc = response(commands, getCPLC).filter(FidesmoCard::check).map(a -> { byte[] data = a.getData(); @@ -240,7 +240,7 @@ public static Optional detect(Map commands) { .map(FidesmoCard::fixup) .flatMap(a -> fetchTag(0x42, a)); - batch = pv3batch.or(() -> pv2batch).orElse(null); + batch = pv3batch.orElseGet(() -> pv2batch.orElse(null)); if (cin == null || batch == null) return Optional.empty(); diff --git a/tool/src/main/java/com/fidesmo/fdsm/CommandLineInterface.java b/tool/src/main/java/com/fidesmo/fdsm/CommandLineInterface.java index 7431137..0ff7f50 100644 --- a/tool/src/main/java/com/fidesmo/fdsm/CommandLineInterface.java +++ b/tool/src/main/java/com/fidesmo/fdsm/CommandLineInterface.java @@ -71,6 +71,9 @@ abstract class CommandLineInterface { final static protected OptionSpec OPT_CREATE = parser.accepts("create", "Applet instance AID").withRequiredArg().describedAs("AID"); final static protected OptionSpec OPT_UNINSTALL = parser.accepts("uninstall", "Uninstall CAP from card").withRequiredArg().describedAs("CAP file / AID"); + final static protected OptionSpec OPT_APP_ID = parser.accepts("app-id", "Application identifier") + .requiredIf(OPT_STORE_DATA, OPT_SECURE_APDU, OPT_UNINSTALL, OPT_INSTALL, OPT_UPLOAD, OPT_CLEANUP) + .withRequiredArg().describedAs("appId"); final static protected OptionSpec OPT_QA = parser.accepts("qa", "Run a QA support session").withOptionalArg().ofType(Integer.class).describedAs("QA number"); final static protected OptionSpec OPT_TIMEOUT = parser.accepts("timeout", "Timeout for services").withRequiredArg().ofType(Integer.class).describedAs("minutes"); diff --git a/tool/src/main/java/com/fidesmo/fdsm/Main.java b/tool/src/main/java/com/fidesmo/fdsm/Main.java index 440e0f7..151ef0c 100644 --- a/tool/src/main/java/com/fidesmo/fdsm/Main.java +++ b/tool/src/main/java/com/fidesmo/fdsm/Main.java @@ -371,11 +371,7 @@ public static void main(String[] argv) { } else { success("No applications"); } - } else if (requiresAuthentication()) { // XXX - if (!auth.getUsername().isPresent()) { - throw new IllegalArgumentException("Application ID is required. Use --auth or FIDESMO_AUTH with appId:appKey format"); - } - + } else if (requiresAuthentication()) { AuthenticatedFidesmoApiClient authenticatedClient = getAuthenticatedClient(); FormHandler formHandler = getCommandLineFormHandler(); @@ -641,7 +637,11 @@ private static AuthenticatedFidesmoApiClient getAuthenticatedClient() { } private static String getAppId() { - return auth.getUsername().orElseThrow(() -> new IllegalArgumentException("Operation requires appId authentication with appKey!")); + if (args.valueOf(OPT_APP_ID) == null) { + throw new IllegalArgumentException("Operation requires app-id parameter!"); + } else { + return args.valueOf(OPT_APP_ID).toString(); + } } private static class FidesmoService {