Установка:Grails: Как сбросить свойства объекта?
Я работаю над проектом Grails, который включает в себя много передачи данных XML. Мы используем утилиту wsdl2java для создания соответствующих классов Java для форматов данных.
Мы кэшируем некоторые из результатов XML, и мне нужно выяснить, было ли у нас уже кэшированное определенное значение в определенной точке кода (это произошло раньше).
Я ищу:
Способ рекурсивно дамп случайных объектов.
То, что я пытался до сих пор:
1) Println() - Это хорошо работает для HashMaps с основными типами как струнные и Целыми, но не работает на общих объектах. Он выводит вывод .toString() класса wsdl2java, который напоминает «[email protected]». Поскольку это автоматически сгенерированный класс, мы не можем легко заменить этот метод.
2) Описанный здесь метод: http://padcom13.blogspot.com/2009/12/groovy-dumping-objects-properties.html
Я обернул это в функции и добавить его к Object.metaClass в BootStrap.groovy. Это позволяет называть его рекурсивно; однако только половина классов wsdl2java, кажется, наследует эту функцию (проверяется с помощью «println (obj.metaClass.metaMethods * .name.sort())»). Ни один из них явно не расширяет Object, поэтому я потерян.
Каков самый чистый способ рекурсивно сбрасывать свойства случайного объекта (желательно для человека)?
Заранее благодарен!
EDIT:
Большое спасибо @dmahapatro и @JavaDev за свои идеи. Вот код, который я смотрю прямо сейчас:
import grails.converters.JSON
Object.metaClass.debug_dump = {
JSON.use('deep')
println(new JSON(delegate).toString())
}
...
session.cxfResult.debug_dump()
И это ошибка, что она производит при запуске:
Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl with modifiers "public". Stacktrace follows:
Message: Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl with modifiers "public"
Это сохраняется, несмотря на следующие направления of this individual on the Grails user list.
Это чувствует хак-иш, но «переменная, как JSON», кажется, правильно отображает структуру. Почему я не подумал об этом? Благодаря! – EpicVoyage