35
35
import io .ballerina .runtime .api .values .BObject ;
36
36
import io .ballerina .runtime .api .values .BString ;
37
37
38
- import java .util .ArrayList ;
39
38
import java .util .List ;
40
39
import java .util .concurrent .CompletableFuture ;
41
40
48
47
import static io .ballerina .stdlib .websubhub .Constants .ON_UNSUBSCRIPTION_INTENT_VERIFIED ;
49
48
import static io .ballerina .stdlib .websubhub .Constants .ON_UNSUBSCRIPTION_VALIDATION ;
50
49
import static io .ballerina .stdlib .websubhub .Constants .ON_UPDATE_MESSAGE ;
51
- import static io .ballerina .stdlib .websubhub .Constants .SERVICE_OBJECT ;
50
+ import static io .ballerina .stdlib .websubhub .Constants .NATIVE_HUB_SERVICE ;
52
51
53
52
/**
54
53
* {@code NativeHttpToWebsubhubAdaptor} is a wrapper object used for service method execution.
@@ -57,124 +56,136 @@ public final class NativeHttpToWebsubhubAdaptor {
57
56
private NativeHttpToWebsubhubAdaptor () {}
58
57
59
58
public static void externInit (BObject adaptor , BObject serviceObj ) {
60
- adaptor .addNativeData (SERVICE_OBJECT , serviceObj );
59
+ adaptor .addNativeData (NATIVE_HUB_SERVICE , new NativeHubService ( serviceObj ) );
61
60
}
62
61
63
62
public static BArray getServiceMethodNames (BObject adaptor ) {
64
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
65
- List <BString > methodNamesList = new ArrayList <>();
66
- ObjectType serviceType = (ObjectType ) TypeUtils .getReferredType (TypeUtils .getType (bHubService ));
67
- for (MethodType method : serviceType .getMethods ()) {
68
- methodNamesList .add (StringUtils .fromString (method .getName ()));
69
- }
70
- return ValueCreator .createArrayValue (methodNamesList .toArray (BString []::new ));
63
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
64
+ List <BString > remoteMethodNames = nativeHubService .getRemoteMethodNames ().stream ()
65
+ .map (StringUtils ::fromString ).toList ();
66
+ return ValueCreator .createArrayValue (remoteMethodNames .toArray (BString []::new ));
71
67
}
72
68
73
69
public static Object callRegisterMethod (Environment env , BObject adaptor ,
74
70
BMap <BString , Object > message , BObject bHttpHeaders ) {
75
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
71
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
72
+ BObject bHubService = nativeHubService .getBHubService ();
76
73
boolean isReadOnly = isReadOnlyParam (bHubService , ON_REGISTER_TOPIC );
77
74
if (isReadOnly ) {
78
75
message .freezeDirect ();
79
76
}
80
- Object [] args = new Object []{ message , bHttpHeaders } ;
77
+ Object [] args = nativeHubService . getMethodArgs ( ON_REGISTER_TOPIC , new InteropArgs ( message , bHttpHeaders )) ;
81
78
return invokeRemoteFunction (env , bHubService , args ,
82
79
"callRegisterMethod" , ON_REGISTER_TOPIC );
83
80
}
84
81
85
82
public static Object callDeregisterMethod (Environment env , BObject adaptor ,
86
83
BMap <BString , Object > message , BObject bHttpHeaders ) {
87
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
84
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
85
+ BObject bHubService = nativeHubService .getBHubService ();
88
86
boolean isReadOnly = isReadOnlyParam (bHubService , ON_DEREGISTER_TOPIC );
89
87
if (isReadOnly ) {
90
88
message .freezeDirect ();
91
89
}
92
- Object [] args = new Object []{ message , bHttpHeaders } ;
90
+ Object [] args = nativeHubService . getMethodArgs ( ON_DEREGISTER_TOPIC , new InteropArgs ( message , bHttpHeaders )) ;
93
91
return invokeRemoteFunction (env , bHubService , args ,
94
92
"callDeregisterMethod" , ON_DEREGISTER_TOPIC );
95
93
}
96
94
97
95
public static Object callOnUpdateMethod (Environment env , BObject adaptor ,
98
96
BMap <BString , Object > message , BObject bHttpHeaders ) {
99
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
97
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
98
+ BObject bHubService = nativeHubService .getBHubService ();
100
99
boolean isReadOnly = isReadOnlyParam (bHubService , ON_UPDATE_MESSAGE );
101
100
if (isReadOnly ) {
102
101
message .freezeDirect ();
103
102
}
104
- Object [] args = new Object []{ message , bHttpHeaders } ;
103
+ Object [] args = nativeHubService . getMethodArgs ( ON_UPDATE_MESSAGE , new InteropArgs ( message , bHttpHeaders )) ;
105
104
return invokeRemoteFunction (env , bHubService , args ,
106
105
"callOnUpdateMethod" , ON_UPDATE_MESSAGE );
107
106
}
108
107
109
108
public static Object callOnSubscriptionMethod (Environment env , BObject adaptor , BMap <BString , Object > message ,
110
109
BObject bHttpHeaders , BObject bHubController ) {
111
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
110
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
111
+ BObject bHubService = nativeHubService .getBHubService ();
112
112
boolean isReadOnly = isReadOnlyParam (bHubService , ON_SUBSCRIPTION );
113
113
if (isReadOnly ) {
114
114
message .freezeDirect ();
115
115
}
116
- Object [] args = new Object []{message , bHttpHeaders , bHubController };
116
+ Object [] args = nativeHubService .getMethodArgs (ON_SUBSCRIPTION , new InteropArgs (
117
+ message , bHttpHeaders , bHubController ));
117
118
return invokeRemoteFunction (env , bHubService , args ,
118
119
"callOnSubscriptionMethod" , ON_SUBSCRIPTION );
119
120
}
120
121
121
122
public static Object callOnSubscriptionValidationMethod (Environment env , BObject adaptor ,
122
123
BMap <BString , Object > message , BObject bHttpHeaders ) {
123
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
124
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
125
+ BObject bHubService = nativeHubService .getBHubService ();
124
126
boolean isReadOnly = isReadOnlyParam (bHubService , ON_SUBSCRIPTION_VALIDATION );
125
127
if (isReadOnly ) {
126
128
message .freezeDirect ();
127
129
}
128
- Object [] args = new Object []{message , bHttpHeaders };
130
+ Object [] args = nativeHubService .getMethodArgs (ON_SUBSCRIPTION_VALIDATION ,
131
+ new InteropArgs (message , bHttpHeaders ));
129
132
return invokeRemoteFunction (env , bHubService , args ,
130
133
"callOnSubscriptionValidationMethod" , ON_SUBSCRIPTION_VALIDATION );
131
134
}
132
135
133
136
public static Object callOnSubscriptionIntentVerifiedMethod (Environment env , BObject adaptor ,
134
137
BMap <BString , Object > message , BObject bHttpHeaders ) {
135
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
138
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
139
+ BObject bHubService = nativeHubService .getBHubService ();
136
140
boolean isReadOnly = isReadOnlyParam (bHubService , ON_SUBSCRIPTION_INTENT_VERIFIED );
137
141
if (isReadOnly ) {
138
142
message .freezeDirect ();
139
143
}
140
- Object [] args = new Object []{message , bHttpHeaders };
144
+ Object [] args = nativeHubService .getMethodArgs (ON_SUBSCRIPTION_INTENT_VERIFIED ,
145
+ new InteropArgs (message , bHttpHeaders ));
141
146
return invokeRemoteFunction (env , bHubService , args ,
142
147
"callOnSubscriptionIntentVerifiedMethod" ,
143
148
ON_SUBSCRIPTION_INTENT_VERIFIED );
144
149
}
145
150
146
151
public static Object callOnUnsubscriptionMethod (Environment env , BObject adaptor , BMap <BString , Object > message ,
147
152
BObject bHttpHeaders , BObject bHubController ) {
148
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
153
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
154
+ BObject bHubService = nativeHubService .getBHubService ();
149
155
boolean isReadOnly = isReadOnlyParam (bHubService , ON_UNSUBSCRIPTION );
150
156
if (isReadOnly ) {
151
157
message .freezeDirect ();
152
158
}
153
- Object [] args = new Object []{message , bHttpHeaders , bHubController };
159
+ Object [] args = nativeHubService .getMethodArgs (ON_UNSUBSCRIPTION , new InteropArgs (
160
+ message , bHttpHeaders , bHubController ));
154
161
return invokeRemoteFunction (env , bHubService , args ,
155
162
"callOnUnsubscriptionMethod" , ON_UNSUBSCRIPTION );
156
163
}
157
164
158
165
public static Object callOnUnsubscriptionValidationMethod (Environment env , BObject adaptor ,
159
166
BMap <BString , Object > message , BObject bHttpHeaders ) {
160
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
167
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
168
+ BObject bHubService = nativeHubService .getBHubService ();
161
169
boolean isReadOnly = isReadOnlyParam (bHubService , ON_UNSUBSCRIPTION_VALIDATION );
162
170
if (isReadOnly ) {
163
171
message .freezeDirect ();
164
172
}
165
- Object [] args = new Object []{message , bHttpHeaders };
173
+ Object [] args = nativeHubService .getMethodArgs (ON_UNSUBSCRIPTION_VALIDATION ,
174
+ new InteropArgs (message , bHttpHeaders ));
166
175
return invokeRemoteFunction (env , bHubService , args , "callOnUnsubscriptionValidationMethod" ,
167
176
ON_UNSUBSCRIPTION_VALIDATION );
168
177
}
169
178
170
179
public static Object callOnUnsubscriptionIntentVerifiedMethod (Environment env , BObject adaptor ,
171
180
BMap <BString , Object > message , BObject bHttpHeaders ) {
172
- BObject bHubService = (BObject ) adaptor .getNativeData (SERVICE_OBJECT );
181
+ NativeHubService nativeHubService = (NativeHubService ) adaptor .getNativeData (NATIVE_HUB_SERVICE );
182
+ BObject bHubService = nativeHubService .getBHubService ();
173
183
boolean isReadOnly = isReadOnlyParam (bHubService , ON_UNSUBSCRIPTION_INTENT_VERIFIED );
174
184
if (isReadOnly ) {
175
185
message .freezeDirect ();
176
186
}
177
- Object [] args = new Object []{message , bHttpHeaders };
187
+ Object [] args = nativeHubService .getMethodArgs (ON_UNSUBSCRIPTION_INTENT_VERIFIED ,
188
+ new InteropArgs (message , bHttpHeaders ));
178
189
return invokeRemoteFunction (env , bHubService , args , "callOnUnsubscriptionIntentVerifiedMethod" ,
179
190
ON_UNSUBSCRIPTION_INTENT_VERIFIED );
180
191
}
0 commit comments