private static boolean processNamedQueryContentItem( Object content, NamedSQLQueryDefinitionBuilder builder, ImplicitResultSetMappingDefinition.Builder implicitResultSetMappingBuilder, JaxbHbmNamedNativeQueryType namedQueryBinding, HbmLocalMetadataBuildingContext context) { if (String.class.isInstance(content)) { // Especially when the query string is wrapped in CDATA we will get // "extra" Strings here containing just spaces and/or newlines. This // bit tries to account for them. final String contentString = StringHelper.nullIfEmpty(((String) content).trim()); if (contentString != null) { builder.setQuery((String) content); return true; } else { return false; } } else if (JAXBElement.class.isInstance(content)) { return processNamedQueryContentItem( ((JAXBElement) content).getValue(), builder, implicitResultSetMappingBuilder, namedQueryBinding, context); } if (JaxbHbmQueryParamType.class.isInstance(content)) { final JaxbHbmQueryParamType paramTypeBinding = (JaxbHbmQueryParamType) content; builder.addParameterType(paramTypeBinding.getName(), paramTypeBinding.getType()); } else if (JaxbHbmSynchronizeType.class.isInstance(content)) { final JaxbHbmSynchronizeType synchronizedSpace = (JaxbHbmSynchronizeType) content; builder.addSynchronizedQuerySpace(synchronizedSpace.getTable()); } else if (JaxbHbmNativeQueryScalarReturnType.class.isInstance(content)) { implicitResultSetMappingBuilder.addReturn((JaxbHbmNativeQueryScalarReturnType) content); } else if (JaxbHbmNativeQueryReturnType.class.isInstance(content)) { implicitResultSetMappingBuilder.addReturn((JaxbHbmNativeQueryReturnType) content); } else if (JaxbHbmNativeQueryJoinReturnType.class.isInstance(content)) { implicitResultSetMappingBuilder.addReturn((JaxbHbmNativeQueryJoinReturnType) content); } else if (JaxbHbmNativeQueryCollectionLoadReturnType.class.isInstance(content)) { implicitResultSetMappingBuilder.addReturn( (JaxbHbmNativeQueryCollectionLoadReturnType) content); } else { throw new org.hibernate.boot.MappingException( String.format( Locale.ENGLISH, "Encountered unexpected content type [%s] for named native query [%s] : [%s]", content.getClass().getName(), namedQueryBinding.getName(), content.toString()), context.getOrigin()); } return false; }
private static String[] extractSynchronizedTableNames( PluralAttributeInfo pluralAttributeElement) { if (pluralAttributeElement.getSynchronize().isEmpty()) { return new String[0]; } final String[] names = new String[pluralAttributeElement.getSynchronize().size()]; int i = 0; for (JaxbHbmSynchronizeType jaxbHbmSynchronizeType : pluralAttributeElement.getSynchronize()) { names[i++] = jaxbHbmSynchronizeType.getTable(); } return names; }