22
33namespace Soap \WsdlReader \Metadata \Converter \Types \Detector ;
44
5+ use GoetasWebservices \XML \XSDReader \Schema \Element \Any \Any ;
56use GoetasWebservices \XML \XSDReader \Schema \Element \ElementItem ;
7+ use GoetasWebservices \XML \XSDReader \Schema \Element \ElementRef ;
68use GoetasWebservices \XML \XSDReader \Schema \Element \ElementSingle ;
7- use GoetasWebservices \XML \XSDReader \Schema \Type \SimpleType ;
89use GoetasWebservices \XML \XSDReader \Schema \Type \Type ;
910use Soap \WsdlReader \Metadata \Converter \Types \ParentContext ;
1011
@@ -14,18 +15,31 @@ public function __invoke(ElementItem $element, ParentContext $parentContext, ?st
1415 {
1516 $ type = $ element instanceof ElementSingle ? $ element ->getType () : null ;
1617 $ typeName = $ calculatedTypeName ?? ($ type ?->getName() ?: $ element ->getName ());
18+ $ rootParent = $ parentContext ->rootParent ();
1719
18- // For inline simple types, we prefix the name of the element with the name of the parent type.
19- if ($ type instanceof SimpleType && !$ type ->getName ()) {
20- $ parent = $ parentContext ->currentParent ();
20+ // Add some conditions to validate if the element type name should be modified:
21+ if (
22+ $ rootParent === $ element // Dont enhance yourself
23+ || $ element instanceof Any // Any types are just objects. 'any' is a proper name here.
24+ || $ element instanceof ElementRef // Refs already have a proper name
25+ || $ type ?->getName() // Named types already have a proper name
26+ ) {
27+ return $ typeName ;
28+ }
29+
30+ // Make sure the root parent has a name:
31+ if (
32+ !$ rootParent instanceof Type
33+ && !$ rootParent instanceof ElementItem
34+ ) {
35+ return $ typeName ;
36+ }
2137
22- if ($ parent instanceof Type || $ parent instanceof ElementItem) {
23- if ($ parentName = $ parent ->getName ()) {
24- $ typeName = $ parentName . ucfirst ($ typeName );
25- }
26- }
38+ $ rootParentName = $ rootParent ->getName ();
39+ if (!$ rootParentName ) {
40+ return $ typeName ;
2741 }
2842
29- return $ typeName ;
43+ return $ rootParentName . ucfirst ( $ typeName) ;
3044 }
3145}
0 commit comments