Skip to content

Commit b14ac20

Browse files
committed
HHH-18060 - HbmXmlTransformer
HHH-18281 - Translate <filter-def/> and <filter/> mostly filter parameter type handling
1 parent bed103d commit b14ac20

File tree

14 files changed

+516
-258
lines changed

14 files changed

+516
-258
lines changed

hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/HbmXmlTransformer.java

Lines changed: 73 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmCompositeIdType;
4040
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmCompositeKeyBasicAttributeType;
4141
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmCompositeKeyManyToOneType;
42+
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmConfigParameterContainer;
4243
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmConfigParameterType;
4344
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmDiscriminatorSubclassEntityType;
4445
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmDynamicComponentType;
@@ -91,6 +92,8 @@
9192
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmSubclassEntityBaseDefinition;
9293
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmSynchronizeType;
9394
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTimestampAttributeType;
95+
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTypeDefinitionType;
96+
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTypeSpecificationType;
9497
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmUnionSubclassEntityType;
9598
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmVersionAttributeType;
9699
import org.hibernate.boot.jaxb.hbm.spi.PluralAttributeInfo;
@@ -103,6 +106,7 @@
103106
import org.hibernate.boot.jaxb.mapping.spi.JaxbAttributesContainer;
104107
import org.hibernate.boot.jaxb.mapping.spi.JaxbAttributesContainerImpl;
105108
import org.hibernate.boot.jaxb.mapping.spi.JaxbBasicImpl;
109+
import org.hibernate.boot.jaxb.mapping.spi.JaxbBasicMapping;
106110
import org.hibernate.boot.jaxb.mapping.spi.JaxbCachingImpl;
107111
import org.hibernate.boot.jaxb.mapping.spi.JaxbCascadeTypeImpl;
108112
import org.hibernate.boot.jaxb.mapping.spi.JaxbCheckConstraintImpl;
@@ -127,10 +131,10 @@
127131
import org.hibernate.boot.jaxb.mapping.spi.JaxbFetchProfileImpl;
128132
import org.hibernate.boot.jaxb.mapping.spi.JaxbFieldResultImpl;
129133
import org.hibernate.boot.jaxb.mapping.spi.JaxbFilterDefImpl;
134+
import org.hibernate.boot.jaxb.mapping.spi.JaxbFilterImpl;
130135
import org.hibernate.boot.jaxb.mapping.spi.JaxbForeignKeyImpl;
131136
import org.hibernate.boot.jaxb.mapping.spi.JaxbGeneratedValueImpl;
132137
import org.hibernate.boot.jaxb.mapping.spi.JaxbGenericIdGeneratorImpl;
133-
import org.hibernate.boot.jaxb.mapping.spi.JaxbHbmFilterImpl;
134138
import org.hibernate.boot.jaxb.mapping.spi.JaxbHqlImportImpl;
135139
import org.hibernate.boot.jaxb.mapping.spi.JaxbIdClassImpl;
136140
import org.hibernate.boot.jaxb.mapping.spi.JaxbIdImpl;
@@ -256,7 +260,6 @@ private void doTransform() {
256260
transfer( hbmXmlMapping::isDefaultLazy, ormRoot::setDefaultLazy );
257261

258262
transferIdentifierGenerators();
259-
transferTypeDefs();
260263
transferFilterDefinitions();
261264
transferImports();
262265
transferEntities();
@@ -320,7 +323,7 @@ private void handleUnsupported(PickHandler pickHandler, String message, Object..
320323
Locale.ROOT,
321324
message,
322325
messageArgs
323-
)
326+
) + " (" + origin + ")"
324327
);
325328
case PICK -> {
326329
if ( pickHandler != null ) {
@@ -332,17 +335,6 @@ private void handleUnsupported(PickHandler pickHandler, String message, Object..
332335
}
333336
}
334337

335-
private void transferTypeDefs() {
336-
if ( hbmXmlMapping.getTypedef().isEmpty() ) {
337-
return;
338-
}
339-
340-
handleUnsupported(
341-
"Transformation of type-def mapping not supported - `%s`",
342-
origin
343-
);
344-
}
345-
346338
private void transferIdentifierGenerators() {
347339
if ( hbmXmlMapping.getIdentifierGenerator().isEmpty() ) {
348340
return;
@@ -1385,22 +1377,7 @@ private void transferBasicAttribute(JaxbHbmBasicAttributeType hbmProp, JaxbBasic
13851377
basic.setAttributeAccessor( hbmProp.getAccess() );
13861378
basic.setOptimisticLock( hbmProp.isOptimisticLock() );
13871379

1388-
if ( isNotEmpty( hbmProp.getTypeAttribute() ) ) {
1389-
basic.setType( new JaxbUserTypeImpl() );
1390-
basic.getType().setValue( hbmProp.getTypeAttribute() );
1391-
}
1392-
else {
1393-
if ( hbmProp.getType() != null ) {
1394-
basic.setType( new JaxbUserTypeImpl() );
1395-
basic.getType().setValue( hbmProp.getType().getName() );
1396-
for ( JaxbHbmConfigParameterType hbmParam : hbmProp.getType().getConfigParameters() ) {
1397-
final JaxbConfigurationParameterImpl param = new JaxbConfigurationParameterImpl();
1398-
param.setName( hbmParam.getName() );
1399-
param.setValue( hbmParam.getValue() );
1400-
basic.getType().getParameters().add( param );
1401-
}
1402-
}
1403-
}
1380+
applyBasicType( basic, hbmProp.getTypeAttribute(), hbmProp.getType() );
14041381

14051382
transferColumnsAndFormulas(
14061383
new ColumnAndFormulaSource() {
@@ -1484,6 +1461,56 @@ public Boolean isUpdateable() {
14841461
);
14851462
}
14861463

1464+
private void applyBasicType(JaxbBasicMapping target, String hbmTypeAttribute, JaxbHbmTypeSpecificationType hbmTypeNode) {
1465+
if ( isNotEmpty( hbmTypeAttribute ) ) {
1466+
final JaxbUserTypeImpl typeNode = interpretBasicType(
1467+
hbmTypeAttribute,
1468+
null,
1469+
transformationState.getTypeDefinitionMap().get( hbmTypeAttribute )
1470+
);
1471+
target.setType( typeNode );
1472+
}
1473+
1474+
if ( hbmTypeNode != null ) {
1475+
final JaxbUserTypeImpl typeNode = interpretBasicType(
1476+
hbmTypeNode.getName(),
1477+
hbmTypeNode,
1478+
transformationState.getTypeDefinitionMap().get( hbmTypeNode.getName() )
1479+
);
1480+
target.setType( typeNode );
1481+
}
1482+
}
1483+
1484+
private JaxbUserTypeImpl interpretBasicType(String typeName, JaxbHbmConfigParameterContainer typeLocalParams, JaxbHbmTypeDefinitionType typeDef) {
1485+
assert StringHelper.isNotEmpty( typeName );
1486+
1487+
final JaxbUserTypeImpl typeNode = new JaxbUserTypeImpl();
1488+
1489+
if ( typeDef == null ) {
1490+
typeNode.setValue( typeName );
1491+
}
1492+
else {
1493+
typeNode.setValue( typeDef.getClazz() );
1494+
for ( JaxbHbmConfigParameterType hbmParam : typeDef.getConfigParameters() ) {
1495+
final JaxbConfigurationParameterImpl param = new JaxbConfigurationParameterImpl();
1496+
param.setName( hbmParam.getName() );
1497+
param.setValue( hbmParam.getValue() );
1498+
typeNode.getParameters().add( param );
1499+
}
1500+
}
1501+
1502+
if ( typeLocalParams != null ) {
1503+
for ( JaxbHbmConfigParameterType hbmParam : typeLocalParams.getConfigParameters() ) {
1504+
final JaxbConfigurationParameterImpl param = new JaxbConfigurationParameterImpl();
1505+
param.setName( hbmParam.getName() );
1506+
param.setValue( hbmParam.getValue() );
1507+
typeNode.getParameters().add( param );
1508+
}
1509+
}
1510+
1511+
return typeNode;
1512+
}
1513+
14871514
private JaxbEmbeddableImpl applyEmbeddable(JaxbEntityMappingsImpl ormRoot, JaxbHbmCompositeAttributeType hbmComponent) {
14881515
final String embeddableClassName = hbmComponent.getClazz();
14891516
if ( StringHelper.isNotEmpty( embeddableClassName ) ) {
@@ -2057,9 +2084,6 @@ private void transferOneToManyInfo(
20572084
if ( StringHelper.isNotEmpty( hbmAttributeInfo.getCollectionType() ) ) {
20582085
handleUnsupported( "Collection-type is not supported for transformation" );
20592086
}
2060-
if ( CollectionHelper.isNotEmpty( hbmAttributeInfo.getFilter() ) ) {
2061-
handleUnsupported( "Filters are not supported for transformation" );
2062-
}
20632087
if ( StringHelper.isNotEmpty( hbmAttributeInfo.getWhere() ) ) {
20642088
handleUnsupported( "SQL restrictions are not supported for transformation" );
20652089
}
@@ -2082,9 +2106,6 @@ private void transferOneToManyInfo(
20822106
if ( !(hbmOneToMany.getNode() == null || hbmOneToMany.getNode().isBlank() ) ) {
20832107
handleUnsupported( "`node` not supported for transformation" );
20842108
}
2085-
if ( hbmOneToMany.getNotFound() != null ) {
2086-
target.setNotFound( interpretNotFoundAction( hbmOneToMany.getNotFound() ) );
2087-
}
20882109

20892110
transferCollectionBasicInfo( hbmAttributeInfo, target );
20902111
target.setTargetEntity( StringHelper.isNotEmpty( hbmOneToMany.getClazz() ) ? hbmOneToMany.getClazz() : hbmOneToMany.getEntityName() );
@@ -2104,8 +2125,16 @@ private void transferOneToManyInfo(
21042125
// oneToMany.setOnDelete( ?? );
21052126
}
21062127

2128+
if ( hbmOneToMany.getNotFound() != null ) {
2129+
target.setNotFound( interpretNotFoundAction( hbmOneToMany.getNotFound() ) );
2130+
}
2131+
21072132
target.setOrphanRemoval( isOrphanRemoval( hbmAttributeInfo.getCascade() ) );
21082133
target.setCascade( convertCascadeType( hbmAttributeInfo.getCascade() ) );
2134+
2135+
for ( JaxbHbmFilterType hbmFilter : hbmAttributeInfo.getFilter() ) {
2136+
target.getFilters().add( convert( hbmFilter ) );
2137+
}
21092138
}
21102139

21112140
private JaxbManyToManyImpl transformManyToMany(PluralAttributeInfo hbmCollection) {
@@ -2121,9 +2150,6 @@ private void transferManyToManyInfo(
21212150
if ( StringHelper.isNotEmpty( hbmCollection.getCollectionType() ) ) {
21222151
handleUnsupported( "Collection-type is not supported for transformation" );
21232152
}
2124-
if ( CollectionHelper.isNotEmpty( hbmCollection.getFilter() ) ) {
2125-
handleUnsupported( "Filters are not supported for transformation" );
2126-
}
21272153
if ( StringHelper.isNotEmpty( hbmCollection.getWhere() ) ) {
21282154
handleUnsupported( "SQL restrictions are not supported for transformation" );
21292155
}
@@ -2152,6 +2178,10 @@ private void transferManyToManyInfo(
21522178

21532179
transferCollectionBasicInfo( hbmCollection, target );
21542180
target.setTargetEntity( StringHelper.isNotEmpty( manyToMany.getClazz() ) ? manyToMany.getClazz() : manyToMany.getEntityName() );
2181+
2182+
for ( JaxbHbmFilterType hbmFilter : hbmCollection.getFilter() ) {
2183+
target.getFilters().add( convert( hbmFilter ) );
2184+
}
21552185
}
21562186

21572187
private JaxbPluralAnyMappingImpl transformPluralAny(PluralAttributeInfo hbmCollection) {
@@ -2285,9 +2315,7 @@ private JaxbIdImpl convertSimpleId(JaxbHbmSimpleIdType source) {
22852315
}
22862316
}
22872317

2288-
// if ( isNotEmpty( source.getTypeAttribute() ) || source.getType() != null ) {
2289-
// handleUnsupported( "<id/> specified type which is not supported" );
2290-
// }
2318+
applyBasicType( target, source.getTypeAttribute(), source.getType() );
22912319

22922320
target.setUnsavedValue( source.getUnsavedValue() );
22932321

@@ -2632,8 +2660,8 @@ private OnDeleteAction convert(JaxbHbmOnDeleteEnum hbmOnDelete) {
26322660
return hbmOnDelete == JaxbHbmOnDeleteEnum.CASCADE ? OnDeleteAction.CASCADE : OnDeleteAction.NO_ACTION;
26332661
}
26342662

2635-
private JaxbHbmFilterImpl convert(JaxbHbmFilterType hbmFilter) {
2636-
final JaxbHbmFilterImpl filter = new JaxbHbmFilterImpl();
2663+
private JaxbFilterImpl convert(JaxbHbmFilterType hbmFilter) {
2664+
final JaxbFilterImpl filter = new JaxbFilterImpl();
26372665
filter.setName( hbmFilter.getName() );
26382666

26392667
final boolean shouldAutoInjectAliases = hbmFilter.getAutoAliasInjection() == null
@@ -2648,7 +2676,7 @@ private JaxbHbmFilterImpl convert(JaxbHbmFilterType hbmFilter) {
26482676
}
26492677
else {
26502678
final JaxbHbmFilterAliasMappingType hbmAliasMapping = (JaxbHbmFilterAliasMappingType) content;
2651-
final JaxbHbmFilterImpl.JaxbAliasesImpl aliasMapping = new JaxbHbmFilterImpl.JaxbAliasesImpl();
2679+
final JaxbFilterImpl.JaxbAliasesImpl aliasMapping = new JaxbFilterImpl.JaxbAliasesImpl();
26522680
aliasMapping.setAlias( hbmAliasMapping.getAlias() );
26532681
aliasMapping.setEntity( hbmAliasMapping.getEntity() );
26542682
aliasMapping.setTable( hbmAliasMapping.getTable() );

hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/TransformationPreprocessor.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,19 @@ static void preprocessHbmXml(
4040
final EntityMappingConsumer entityMappingConsumer = new EntityMappingConsumer( transformationState );
4141
final Map<String, JaxbEntityImpl> rootClassesMap = new HashMap<>();
4242

43+
collectGlobalState( hbmXmlBindings, transformationState );
4344
processStructuredHierarchies( hbmXmlBindings, rootClassesMap, entityMappingConsumer );
4445
processSeparatedHierarchies( hbmXmlBindings, rootClassesMap, entityMappingConsumer );
4546
}
4647

48+
private static void collectGlobalState(
49+
List<Binding<JaxbHbmHibernateMapping>> hbmXmlBindings,
50+
TransformationState transformationState) {
51+
hbmXmlBindings.forEach( (hbmBinding) -> {
52+
hbmBinding.getRoot().getTypedef().forEach( transformationState::acceptTypeDefinition );
53+
} );
54+
}
55+
4756
private static void processStructuredHierarchies(
4857
Collection<Binding<JaxbHbmHibernateMapping>> hbmXmlBindings,
4958
Map<String, JaxbEntityImpl> rootClassesMap,

hibernate-core/src/main/java/org/hibernate/boot/jaxb/hbm/transform/TransformationState.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313

1414
import org.hibernate.boot.jaxb.Origin;
1515
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmEntityBaseDefinition;
16+
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterDefinitionType;
1617
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmHibernateMapping;
18+
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTypeDefinitionType;
1719
import org.hibernate.boot.jaxb.mapping.spi.JaxbEntityImpl;
1820
import org.hibernate.boot.jaxb.mapping.spi.JaxbEntityMappingsImpl;
1921
import org.hibernate.boot.jaxb.spi.Binding;
@@ -30,6 +32,9 @@ class TransformationState {
3032
private final Map<String, JaxbEntityImpl> entityMap = new HashMap<>();
3133
private final Map<JaxbHbmEntityBaseDefinition, JaxbEntityImpl> entityXref = new HashMap<>();
3234

35+
private final Map<String, JaxbHbmTypeDefinitionType> typeDefMap = new HashMap<>();
36+
private final Map<String, JaxbHbmFilterDefinitionType> filterDefMap = new HashMap<>();
37+
3338
public TransformationState(List<Binding<JaxbHbmHibernateMapping>> hbmBindings) {
3439
this.hbmBindings = hbmBindings;
3540
this.mappingBindings = CollectionHelper.arrayList( hbmBindings.size() );
@@ -119,6 +124,7 @@ public static JaxbEntityImpl requireEntityReference(
119124
return resolved;
120125
}
121126

127+
122128
public List<Binding<JaxbHbmHibernateMapping>> getHbmBindings() {
123129
return hbmBindings;
124130
}
@@ -134,4 +140,12 @@ public Map<String, JaxbEntityImpl> getEntityMap() {
134140
public Map<JaxbHbmEntityBaseDefinition, JaxbEntityImpl> getEntityXref() {
135141
return entityXref;
136142
}
143+
144+
public Map<String, JaxbHbmTypeDefinitionType> getTypeDefinitionMap() {
145+
return typeDefMap;
146+
}
147+
148+
public void acceptTypeDefinition(JaxbHbmTypeDefinitionType hbmTypeDef) {
149+
typeDefMap.put( hbmTypeDef.getName(), hbmTypeDef );
150+
}
137151
}

hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public interface JaxbEntity extends JaxbEntityOrMappedSuperclass {
112112

113113
List<JaxbNamedEntityGraphImpl> getNamedEntityGraphs();
114114

115-
List<JaxbHbmFilterImpl> getFilters();
115+
List<JaxbFilterImpl> getFilters();
116116

117117
List<JaxbFetchProfileImpl> getFetchProfiles();
118118

hibernate-core/src/main/java/org/hibernate/boot/jaxb/mapping/spi/JaxbPluralAttribute.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public interface JaxbPluralAttribute extends JaxbPersistentAttribute, JaxbLockab
9191
JaxbCustomSqlImpl getSqlDeleteAll();
9292
void setSqlDeleteAll(JaxbCustomSqlImpl sqlDeleteAll);
9393

94-
List<JaxbHbmFilterImpl> getFilters();
94+
List<JaxbFilterImpl> getFilters();
9595

9696
@Override
9797
default Boolean isOptional() {

hibernate-core/src/main/java/org/hibernate/boot/models/annotations/internal/FilterAnnotation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.lang.annotation.Annotation;
1010

1111
import org.hibernate.annotations.Filter;
12-
import org.hibernate.boot.jaxb.mapping.spi.JaxbHbmFilterImpl;
12+
import org.hibernate.boot.jaxb.mapping.spi.JaxbFilterImpl;
1313
import org.hibernate.boot.models.HibernateAnnotations;
1414
import org.hibernate.boot.models.annotations.spi.FilterDetails;
1515
import org.hibernate.boot.models.xml.internal.FilterProcessing;
@@ -111,7 +111,7 @@ public void aliases(org.hibernate.annotations.SqlFragmentAlias[] value) {
111111

112112

113113
@Override
114-
public void apply(JaxbHbmFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext) {
114+
public void apply(JaxbFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext) {
115115
name( jaxbFilter.getName() );
116116

117117
if ( StringHelper.isNotEmpty( jaxbFilter.getCondition() ) ) {

hibernate-core/src/main/java/org/hibernate/boot/models/annotations/internal/FilterJoinTableAnnotation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.lang.annotation.Annotation;
1010

1111
import org.hibernate.annotations.FilterJoinTable;
12-
import org.hibernate.boot.jaxb.mapping.spi.JaxbHbmFilterImpl;
12+
import org.hibernate.boot.jaxb.mapping.spi.JaxbFilterImpl;
1313
import org.hibernate.boot.models.annotations.spi.FilterDetails;
1414
import org.hibernate.boot.models.xml.internal.FilterProcessing;
1515
import org.hibernate.boot.models.xml.spi.XmlDocumentContext;
@@ -109,7 +109,7 @@ public void aliases(org.hibernate.annotations.SqlFragmentAlias[] value) {
109109
}
110110

111111
@Override
112-
public void apply(JaxbHbmFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext) {
112+
public void apply(JaxbFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext) {
113113
name( jaxbFilter.getName() );
114114

115115
if ( StringHelper.isNotEmpty( jaxbFilter.getCondition() ) ) {

hibernate-core/src/main/java/org/hibernate/boot/models/annotations/spi/FilterDetails.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
package org.hibernate.boot.models.annotations.spi;
88

9-
import org.hibernate.boot.jaxb.mapping.spi.JaxbHbmFilterImpl;
9+
import org.hibernate.boot.jaxb.mapping.spi.JaxbFilterImpl;
1010
import org.hibernate.boot.models.xml.spi.XmlDocumentContext;
1111

1212
/**
@@ -18,5 +18,5 @@
1818
* @author Steve Ebersole
1919
*/
2020
public interface FilterDetails {
21-
void apply(JaxbHbmFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext);
21+
void apply(JaxbFilterImpl jaxbFilter, XmlDocumentContext xmlDocumentContext);
2222
}

hibernate-core/src/main/java/org/hibernate/boot/models/internal/GlobalRegistrationsImpl.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -578,18 +578,17 @@ public void collectFilterDefinitions(List<JaxbFilterDefImpl> filterDefinitions)
578578
parameterResolvers = new HashMap<>();
579579

580580
for ( JaxbFilterDefImpl.JaxbFilterParamImpl jaxbParameter : jaxbParameters ) {
581-
final ClassDetails targetClassDetails = XmlAnnotationHelper.resolveJavaType(
581+
final ClassDetails targetClassDetails = XmlAnnotationHelper.resolveSimpleJavaType(
582582
jaxbParameter.getType(),
583583
sourceModelContext.getClassDetailsRegistry()
584584
);
585585
paramJdbcMappings.put( jaxbParameter.getName(), targetClassDetails );
586586

587587
if ( isNotEmpty( jaxbParameter.getResolver() ) ) {
588-
final ClassDetails resolverClassDetails = XmlAnnotationHelper.resolveJavaType(
589-
jaxbParameter.getType(),
590-
sourceModelContext.getClassDetailsRegistry()
588+
parameterResolvers.put(
589+
jaxbParameter.getName(),
590+
sourceModelContext.getClassDetailsRegistry().resolveClassDetails( jaxbParameter.getResolver() )
591591
);
592-
parameterResolvers.put( jaxbParameter.getName(), resolverClassDetails );
593592
}
594593
}
595594
}

0 commit comments

Comments
 (0)