use of cz.metacentrum.perun.core.api.exceptions.RpcException in project perun by CESNET.
the class JsonDeserializer method read.
@Override
public <T> T read(String name, Class<T> valueType) throws RpcException {
JsonNode node;
if (name == null) {
// The object is not under root, but directly in the response
node = root;
name = "root";
} else {
node = root.get(name);
}
if (node == null) {
throw new RpcException(RpcException.Type.MISSING_VALUE, name);
}
if (node.isNull()) {
return null;
}
if (!node.isObject()) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as " + valueType.getSimpleName());
}
try {
return mapper.readValue(node, valueType);
} catch (IOException ex) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as " + valueType.getSimpleName(), ex);
}
}
use of cz.metacentrum.perun.core.api.exceptions.RpcException in project perun by CESNET.
the class UrlDeserializer method readList.
@Override
public <T> List<T> readList(String name, Class<T> valueType) throws RpcException {
if (!contains(name))
throw new RpcException(RpcException.Type.MISSING_VALUE, name);
List<T> list = new ArrayList<T>();
String[] stringParams = req.getParameterValues(name + "[]");
if (stringParams == null) {
// submitter probably forgot to add list decoration to param name ("[]").
stringParams = req.getParameterValues(name);
}
for (String param : stringParams) {
if (valueType.isAssignableFrom(String.class)) {
list.add(valueType.cast(param));
} else if (valueType.isAssignableFrom(Integer.class)) {
list.add(valueType.cast(Integer.valueOf(param)));
} else if (valueType.isAssignableFrom(Boolean.class)) {
list.add(valueType.cast(Boolean.valueOf(param)));
} else if (valueType.isAssignableFrom(Float.class)) {
list.add(valueType.cast(Float.valueOf(param)));
}
}
return list;
}
use of cz.metacentrum.perun.core.api.exceptions.RpcException in project perun by CESNET.
the class JsonSerializerGWT method write.
@Override
public void write(Object object) throws RpcException, IOException {
JsonGenerator gen = jsonFactory.createJsonGenerator(out, JsonEncoding.UTF8);
if (object instanceof Throwable) {
throw new IllegalArgumentException("Tried to serialize a throwable object using write()", (Throwable) object);
}
try {
gen.writeRaw(callback + "(");
gen.writeObject(object);
gen.writeRaw(");");
gen.flush();
gen.close();
} catch (JsonProcessingException ex) {
throw new RpcException(RpcException.Type.CANNOT_SERIALIZE_VALUE, ex);
}
}
use of cz.metacentrum.perun.core.api.exceptions.RpcException in project perun by CESNET.
the class JsonDeserializer method readListPerunBeans.
@Override
public List<PerunBean> readListPerunBeans(String name) throws RpcException {
JsonNode node;
if (name == null) {
// The object is not under root, but directly in the response
node = root;
name = "root";
} else {
node = root.get(name);
}
if (node == null) {
throw new RpcException(RpcException.Type.MISSING_VALUE, name);
}
if (node.isNull()) {
return null;
}
if (!node.isArray()) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as List<PerunBean> - not an array");
}
try {
List<PerunBean> list = new ArrayList<>(node.size());
for (JsonNode e : node) {
String beanName = e.get("beanName").getTextValue();
if (beanName == null) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as List<PerunBean> - missing beanName info");
}
list.add((PerunBean) mapper.readValue(e, Class.forName("cz.metacentrum.perun.core.api." + beanName)));
}
return list;
} catch (ClassNotFoundException ex) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as List<PerunBean> - class not found");
} catch (IOException ex) {
throw new RpcException(RpcException.Type.CANNOT_DESERIALIZE_VALUE, node.toString() + " as List<PerunBean>", ex);
}
}
Aggregations