public void visit(SqlObjectType sqlObjectType) { String targetTypeName = null; if (sqlObjectType.hasConversion()) { targetTypeName = sqlObjectType.getTargetTypeName(); } int numAttributes = 0; List<AttributeField> fields = null; try { fields = sqlObjectType.getDeclaredFields(false); numAttributes = fields.size(); } catch (Exception e) { } listener.beginObjectType(sqlObjectType.getName()); listener.handleObjectType(sqlObjectType.getName(), targetTypeName, numAttributes); if (fields != null && numAttributes > 0) { for (int idx = 0; idx < numAttributes; idx++) { AttributeField field = fields.get(idx); TypeClass typeClass = field.getType(); listener.handleAttributeField(field.getName(), idx); ((SqlType) typeClass).accept(this); } } try { listener.endObjectType(sqlObjectType.getName()); } catch (Exception e) { /* ignore */ } }