private void bindFilterDefinitions() { if (hibernateMapping.getFilterDef() == null) { return; } for (XMLHibernateMapping.XMLFilterDef filterDefinition : hibernateMapping.getFilterDef()) { final String name = filterDefinition.getName(); final Map<String, Type> parameters = new HashMap<String, Type>(); String condition = null; for (Object o : filterDefinition.getContent()) { if (o instanceof String) { // represents the condition if (condition != null) { // log? } condition = (String) o; } else if (o instanceof XMLHibernateMapping.XMLFilterDef.XMLFilterParam) { final XMLHibernateMapping.XMLFilterDef.XMLFilterParam paramElement = (XMLHibernateMapping.XMLFilterDef.XMLFilterParam) o; // todo : should really delay this resolution until later to allow typedef names parameters.put( paramElement.getName(), metadata.getTypeResolver().heuristicType(paramElement.getType())); } else { throw new MappingException("Unrecognized nested filter content", jaxbRoot.getOrigin()); } } if (condition == null) { condition = filterDefinition.getCondition(); } metadata.addFilterDefinition(new FilterDefinition(name, condition, parameters)); } }