diff options
Diffstat (limited to 'src/main/groovy/org')
3 files changed, 11 insertions, 5 deletions
diff --git a/src/main/groovy/org/xapek/yvesf/classifieds/Main.groovy b/src/main/groovy/org/xapek/yvesf/classifieds/Main.groovy index 23fb434..67b2067 100644 --- a/src/main/groovy/org/xapek/yvesf/classifieds/Main.groovy +++ b/src/main/groovy/org/xapek/yvesf/classifieds/Main.groovy @@ -59,7 +59,11 @@ final class Main { private static Failable<Model.Classified> handleClassified(Object p) { ifType(p, Map) then { Map map -> - success(new Model.Classified(map)) + try { + return success(new Model.Classified(map)) + } catch (Exception e) { + return fail("type=${e.class}: ${e.message}") as Failable<Model.Classified> + } } } }
\ No newline at end of file diff --git a/src/main/groovy/org/xapek/yvesf/classifieds/Model.groovy b/src/main/groovy/org/xapek/yvesf/classifieds/Model.groovy index cced09b..1887f30 100644 --- a/src/main/groovy/org/xapek/yvesf/classifieds/Model.groovy +++ b/src/main/groovy/org/xapek/yvesf/classifieds/Model.groovy @@ -57,7 +57,10 @@ class Model { Object photo4 Classified(Map map) { - metaClass.properties.each { MetaProperty property -> + metaClass.properties.grep { it instanceof MetaBeanProperty }.each { MetaProperty property -> + if (!(property as MetaBeanProperty).field) return // ignore setters/getters + if (property.modifiers != 1) return // only public fields + if (map.containsKey(property.name)) { final value = map.get(property.name) if (property.type.isAssignableFrom(value.getClass())) { @@ -65,6 +68,8 @@ class Model { } else { throw new IllegalArgumentException("Cannot set field ${property.name} with object of type ${value.getClass()}") } + } else { + throw new IllegalArgumentException("Missing data for field ${property.name}") } } } diff --git a/src/main/groovy/org/xapek/yvesf/classifieds/util/ParserStaticMethods.groovy b/src/main/groovy/org/xapek/yvesf/classifieds/util/ParserStaticMethods.groovy index 15524c8..5ee4a24 100644 --- a/src/main/groovy/org/xapek/yvesf/classifieds/util/ParserStaticMethods.groovy +++ b/src/main/groovy/org/xapek/yvesf/classifieds/util/ParserStaticMethods.groovy @@ -1,9 +1,6 @@ package org.xapek.yvesf.classifieds.util import groovy.transform.CompileStatic -import org.xapek.yvesf.classifieds.util.Fail -import org.xapek.yvesf.classifieds.util.Failable -import org.xapek.yvesf.classifieds.util.Success @CompileStatic class ParserStaticMethods { |