diff --git a/tools/src/main/java/cz/o2/proxima/tools/groovy/Console.java b/tools/src/main/java/cz/o2/proxima/tools/groovy/Console.java index 3169a955d..ff1fca3e4 100644 --- a/tools/src/main/java/cz/o2/proxima/tools/groovy/Console.java +++ b/tools/src/main/java/cz/o2/proxima/tools/groovy/Console.java @@ -307,7 +307,7 @@ public void put( AttributeDescriptor attrDesc, String key, String attribute, - Object value) + String value) throws InterruptedException { put(entityDesc, attrDesc, key, attribute, System.currentTimeMillis(), value); @@ -319,7 +319,7 @@ public void put( String key, String attribute, long stamp, - Object value) + String value) throws InterruptedException { Preconditions.checkState( @@ -328,7 +328,7 @@ public void put( @SuppressWarnings("unchecked") ValueSerializer valueSerializer = (ValueSerializer) attrDesc.getValueSerializer(); - byte[] payload = valueSerializer.serialize(valueSerializer.fromJsonValue(value.toString())); + byte[] payload = valueSerializer.serialize(valueSerializer.fromJsonValue(value)); OnlineAttributeWriter writer = Optionals.get(direct.getWriter(attrDesc)); CountDownLatch latch = new CountDownLatch(1); AtomicReference exc = new AtomicReference<>(); diff --git a/tools/src/main/resources/class-entitydesc.ftlh b/tools/src/main/resources/class-entitydesc.ftlh index 91571b660..2523c2d2e 100644 --- a/tools/src/main/resources/class-entitydesc.ftlh +++ b/tools/src/main/resources/class-entitydesc.ftlh @@ -135,11 +135,11 @@ class Environment implements RepositoryProvider { def List> listPrefix(String key, String prefix) { return ${entity.classname}Descriptor.this.reader.list(key, desc.toAttributePrefix() + prefix) } - def void put(String key, String attribute, ${attribute.type} value) { - console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.toAttributePrefix() + attribute, value) + def void put(String key, String attribute, String jsonValue) { + console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.toAttributePrefix() + attribute, jsonValue) } - def void put(String key, String attribute, long stamp, ${attribute.type} value) { - console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.toAttributePrefix() + attribute, stamp, value) + def void put(String key, String attribute, long stamp, String jsonValue) { + console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.toAttributePrefix() + attribute, stamp, jsonValue) } def void delete(String key, String attribute) { console.delete(${entity.classname}Descriptor.this.desc, desc, key, desc.toAttributePrefix() + attribute) @@ -157,11 +157,11 @@ class Environment implements RepositoryProvider { def KeyValue<${attribute.type}> get(String key) { return ${entity.classname}Descriptor.this.reader.get(key, name) } - def void put(String key, ${attribute.type} value) { - console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.getName(), value) + def void put(String key, String jsonValue) { + console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.getName(), jsonValue) } - def void put(String key, long stamp, ${attribute.type} value) { - console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.getName(), stamp, value) + def void put(String key, long stamp, String jsonValue) { + console.put(${entity.classname}Descriptor.this.desc, desc, key, desc.getName(), stamp, jsonValue) } def void delete(String key) { console.delete(${entity.classname}Descriptor.this.desc, desc, key, desc.getName()) diff --git a/tools/src/test/java/cz/o2/proxima/tools/groovy/util/ConsoleRandomReaderTest.java b/tools/src/test/java/cz/o2/proxima/tools/groovy/util/ConsoleRandomReaderTest.java index 8ca882cf5..47d0cc1e7 100644 --- a/tools/src/test/java/cz/o2/proxima/tools/groovy/util/ConsoleRandomReaderTest.java +++ b/tools/src/test/java/cz/o2/proxima/tools/groovy/util/ConsoleRandomReaderTest.java @@ -15,8 +15,7 @@ */ package cz.o2.proxima.tools.groovy.util; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.*; import cz.o2.proxima.core.repository.AttributeDescriptor; import cz.o2.proxima.core.repository.EntityDescriptor; @@ -43,7 +42,7 @@ public class ConsoleRandomReaderTest { @Test(timeout = 10000) public void testConsoleRandomReaderRead() throws InterruptedException { - console.put(proxied, ints, "key", "ints.1", 1); + console.put(proxied, ints, "key", "ints.1", "1"); KeyValue result = console.getRandomAccessReader(proxied.getName()).get("key", "ints.1"); assertNotNull(result.getValue()); @@ -60,4 +59,11 @@ public void testConsoleRandomReaderRead() throws InterruptedException { Collections.singletonList("key"), keys.stream().map(Pair::getSecond).collect(Collectors.toList())); } + + @Test + public void testConsolePut() throws InterruptedException { + console.put(proxied, ints, "key", "ints.1", "1"); + assertThrows( + NumberFormatException.class, () -> console.put(proxied, ints, "key", "ints.2", "\"2\"")); + } }