diff --git a/src/main/java/de/bausdorf/avm/tr064/Response.java b/src/main/java/de/bausdorf/avm/tr064/Response.java index 2f30892..1bcb0fb 100644 --- a/src/main/java/de/bausdorf/avm/tr064/Response.java +++ b/src/main/java/de/bausdorf/avm/tr064/Response.java @@ -99,6 +99,25 @@ public int getValueAsInteger(String argument) throws ClassCastException, NoSuchF return ret; } + public long getValueAsLong(String argument) throws ClassCastException, NoSuchFieldException { + if (!argumentState.containsKey(argument) || !data.containsKey(argument)) { + throw new NoSuchFieldException(argument); + } + if (stateToType.get(argumentState.get(argument)) != Long.class && stateToType.get(argumentState.get(argument)) != Integer.class) { + throw new ClassCastException(argument); + } + + long ret = -1; + + try { + ret = Long.parseLong(data.get(argument)); + } catch (NumberFormatException e) { + throw new ClassCastException(argument + " " + e.getMessage()); + } + + return ret; + } + public boolean getValueAsBoolean(String argument) throws ClassCastException, NoSuchFieldException { if (!argumentState.containsKey(argument) || !data.containsKey(argument)) throw new NoSuchFieldException(argument);