77
88import com .genexus .CommonUtil ;
99import com .genexus .GXBaseCollection ;
10- import com .genexus .ModelContext ;
1110import com .genexus .SdtMessages_Message ;
12- import com .genexus .util . GXProperties ;
11+ import com .genexus .common . interfaces . SpecificImplementation ;
1312
1413public class GXDynamicCall {
1514
16- private GXProperties properties ;
15+ private GXDynCallProperties properties ;
1716 private Object instanceObject ;
18- private String externalName ;
19- private int remoteHandle ;
20- private ModelContext context ;
17+ private String objectName ;
2118
22- public GXDynamicCall (int remoteHandle , ModelContext context ){
23- this .remoteHandle = remoteHandle ;
24- this .context = context ;
25- this .properties = new GXProperties ();
19+ public GXDynamicCall (){
20+ properties = new GXDynCallProperties ();
21+ properties .setPackageName (SpecificImplementation .Application .getPACKAGE ());
2622 }
2723
28- public GXProperties getProperties () {
24+ public GXDynCallProperties getProperties () {
2925 return properties ;
3026 }
3127
32- public void setProperties (GXProperties properties ) {
28+ public void setProperties (GXDynCallProperties properties ) {
3329 this .properties = properties ;
3430 }
3531
36- public String getExternalName (){
37- return externalName ;
32+ public String getObjectName (){
33+ return objectName ;
34+
3835 }
3936
40- public void setExternalName (String name ){
41- externalName =name ;
37+ public void setObjectName (String name ){
38+ objectName =name ;
39+ properties .setExternalName (name );
4240 }
4341
4442 public void execute (Vector <Object > parameters , Vector <SdtMessages_Message > errorsArray ) {
@@ -75,7 +73,7 @@ public Object execute(Vector<Object> parameters, GXDynCallMethodConf methodConfi
7573 {
7674 Class <?> auxClass =null ;
7775 try {
78- auxClass = loadClass (this . externalName , properties .get ( "PackageName" ));
76+ auxClass = loadClass (properties . getExternalName (), properties .getPackageName ( ));
7977 } catch (ClassNotFoundException e ) {
8078 CommonUtil .ErrorToMessages ("Load class Error" , e .getMessage (), errors );
8179 errorsArray .addAll (errors .getStruct ());
@@ -90,10 +88,12 @@ public Object execute(Vector<Object> parameters, GXDynCallMethodConf methodConfi
9088
9189 public void create (Vector <Object > constructParameters , Vector <SdtMessages_Message > errors ) {
9290 GXBaseCollection <SdtMessages_Message > error =new GXBaseCollection <SdtMessages_Message >();
91+ String objectNameToInvoke ;
9392 Constructor <?> constructor =null ;
94- if (!this .externalName .isEmpty ()) {
93+ objectNameToInvoke = constructParameters ==null ?objectName :properties .getExternalName ();
94+ if (!objectNameToInvoke .isEmpty ()) {
9595 try {
96- Class <?> objClass = loadClass (this . externalName , properties .get ( "PackageName" ));
96+ Class <?> objClass = loadClass (objectNameToInvoke , properties .getPackageName ( ));
9797 Object [] auxConstParameters ;
9898 Class <?>[] auxConstructorTypes ;
9999 if (constructParameters != null && constructParameters .size () > 0 ) {
@@ -104,9 +104,9 @@ public void create(Vector<Object> constructParameters, Vector<SdtMessages_Messag
104104 auxConstructorTypes [i ] = obj .getClass ();
105105 i ++;
106106 }
107- } else {
108- auxConstParameters = new Object [] {this . remoteHandle , this . context };
109- auxConstructorTypes = new Class [] {int .class , ModelContext . class };
107+ } else {
108+ auxConstParameters = new Object [] {Integer . valueOf (- 1 ) };
109+ auxConstructorTypes = new Class [] {int .class };
110110 }
111111 try {
112112 constructor = objClass .getConstructor (auxConstructorTypes );
@@ -258,7 +258,7 @@ private static void updateParams(Vector<Object> originalParameter, Object[] call
258258
259259 private Class <?> loadClass (String className , String sPackage ) throws ClassNotFoundException {
260260 String classPackage ="" ;
261- if (sPackage != null && ! sPackage . isEmpty () )
261+ if (sPackage != null )
262262 classPackage += sPackage + "." ;
263263 classPackage += className ;
264264 Class <?> c = Class .forName (classPackage );;
0 commit comments