Skip to content

Commit ae76085

Browse files
committed
Unit test and minors changes
1 parent 49f964a commit ae76085

File tree

7 files changed

+488
-17
lines changed

7 files changed

+488
-17
lines changed

gxdynamiccall/client.cfg

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
[Client]
2+
MODEL_NUM= 2
3+
GENERATOR_NUM= 12
4+
LOGIN_AS_USERID=0
5+
SMTP_HOST=
6+
NAME_SPACE= com.genexus.gxdynamiccall.test
7+
NAME_HOST=
8+
CORBA_SERVER_NAME=
9+
DCOM_GUID=
10+
CONN_TIMEOUT=300
11+
HELP_MODE=WINHTML
12+
HELP_BASEURL=
13+
PREFERRED_UI=BEST
14+
JFC_LF=NATIVE
15+
CALENDAR=1
16+
CALC=1
17+
WP_RESIZE=1
18+
SHOW_STATUS=1
19+
FIELD_EXIT=Tab
20+
ESCAPE_FUNCTION=Exit_form
21+
KEY_REFRESH=5
22+
KEY_PROMPT=4
23+
MDI_FORMS=1
24+
REMOTE_CALLS=NEVER
25+
IMAGE_SUBST=0
26+
CS_CONNECT=First
27+
CS_REORG=1
28+
CS_REORGJAVA=1
29+
SUBFILE_ORDER=Y
30+
FC_READONLY=GRAYED
31+
PACKAGE=com.genexus.gxdynamiccall.test
32+
DECIMAL_POINT=.
33+
DATE_FMT= MDY
34+
CTOD_DATE_FMT= L
35+
BLANK_EMPTY_DATE=0
36+
TIME_FMT=12
37+
YEAR_LIMIT=40
38+
COMPRESS_HTML=1
39+
DocumentType=HTML5
40+
IE_COMPATIBILITY_VIEW=EmulateIE7
41+
EXPOSE_METADATA= 0
42+
WEB_IMAGE_DIR=/static
43+
HTTP_BACKEND_URL=
44+
WEB_STATIC_DIR=
45+
ORQ_CLIENT_URL=
46+
ORQ_SERVER_DIR=
47+
TMPMEDIA_DIR=PrivateTempStorage
48+
PRINT_LAYOUT_METADATA_DIR=LayoutMetadata
49+
HTTP_PROTOCOL=Unsecure
50+
SAMESITE_COOKIE=Lax
51+
StorageTimeZone= 1
52+
GX_BUILD_NUMBER=1302769
53+
ODBC_CALLS=0
54+
NameSpace1= com.genexus.gxdynamiccall.test
55+
LANGUAGE=eng
56+
LANG_NAME=English
57+
Theme=Carmine
58+
CS_BLOB_PATH=PublicTempStorage
59+
SUBMIT_POOL_SIZE=5
60+
CACHE_TTL_0=-1
61+
CACHE_TTL_1=60
62+
CACHE_TTL_2=600
63+
CACHE_TTL_3=0
64+
CACHE_STORAGE_SIZE=0
65+
CACHING=0
66+
SMART_CACHING=0
67+
CACHE_INVALIDATION_TOKEN=20224512174246
68+
EVENT_BEFORE_COMMIT=
69+
EVENT_AFTER_COMMIT=
70+
EVENT_BEFORE_ROLLBACK=
71+
EVENT_AFTER_ROLLBACK=
72+
EVENT_BEFORE_CONNECT=
73+
EVENT_AFTER_CONNECT=
74+
ENABLE_MANAGEMENT=0
75+
EnableIntegratedSecurity=0
76+
IntegratedSecurityLoginWeb=
77+
IntegratedSecurityNotAuthorizedWeb=
78+
HTTPCLIENT_MAX_SIZE=1000
79+
HTTPCLIENT_MAX_PER_ROUTE=1000
80+
VER_STAMP=
81+
[language|English]
82+
code= eng
83+
time_fmt= 12
84+
decimal_point= .
85+
thousand_sep= ,
86+
date_fmt= MDY
87+
culture= en-US
88+
[com.genexus.gxdynamiccall.test]
89+
GXDB_LOCATION=
90+
JTA=0
91+
DataSource1=DEFAULT
92+
JDBC_LOG=
93+
JDBCLogEnabled=0
94+
JDBCUniqueName=0
95+
JDBCLogPath=
96+
JDBCLogLevel=0
97+
JDBCLogBuffer=0
98+
JDBCLogDetail=0
99+
[com.genexus.gxdynamiccall.test|DEFAULT]
100+
CS_DBNAME=KbPrueba
101+
INFORMIX_DB=ANSI
102+
CS_LIBL400=
103+
CS_PACKAGE400=
104+
DB2400_DATE_DATATYPE=
105+
CS_SCHEMA=
106+
USER_ID=Elj20MqY44RPdvT8FEpDD0==
107+
USER_PASSWORD=tjRYpiaJ+HYQ0GpWgRGwfo8w59nKWO7H1rRFYPoZo/w=
108+
CS_CONNECT=First
109+
WAIT_RECORD=0
110+
LOCK_RETRY=10
111+
LoginInServer=1
112+
JDBC_DRIVER=net.sourceforge.jtds.jdbc.Driver
113+
DB_URL=jdbc:jtds:sqlserver://GXN1088:1433/KbPrueba
114+
USE_JDBC_DATASOURCE=0
115+
JDBC_DATASOURCE=
116+
MAX_CURSOR=100
117+
INITIALIZE_NEW=1
118+
ISOLATION_LEVEL=CR
119+
XBASE_TINT=1
120+
DBMS=sqlserver
121+
UnlimitedRWPool=1
122+
PoolRWEnabled=1
123+
RecycleRW=1
124+
RecycleRWType=1
125+
RecycleRWMin=30
126+
POOLSIZE_RW=10
127+
POOL_STARTUP=0

gxdynamiccall/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,10 @@
1919
<artifactId>gxcommon</artifactId>
2020
<version>${project.version}</version>
2121
</dependency>
22+
<dependency>
23+
<groupId>${project.groupId}</groupId>
24+
<artifactId>gxclassR</artifactId>
25+
<version>${project.version}</version>
26+
</dependency>
2227
</dependencies>
2328
</project>

gxdynamiccall/server.cfg

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
[Client]
2+
MODEL_NUM= 2
3+
GENERATOR_NUM= 12
4+
LOGIN_AS_USERID=0
5+
SMTP_HOST=
6+
NAME_SPACE= com.genexus.gxdynamiccall.test
7+
NAME_HOST=
8+
CORBA_SERVER_NAME=
9+
DCOM_GUID=
10+
CONN_TIMEOUT=300
11+
HELP_MODE=WINHTML
12+
HELP_BASEURL=
13+
PREFERRED_UI=BEST
14+
JFC_LF=NATIVE
15+
CALENDAR=1
16+
CALC=1
17+
WP_RESIZE=1
18+
SHOW_STATUS=1
19+
FIELD_EXIT=Tab
20+
ESCAPE_FUNCTION=Exit_form
21+
KEY_REFRESH=5
22+
KEY_PROMPT=4
23+
MDI_FORMS=1
24+
REMOTE_CALLS=NEVER
25+
IMAGE_SUBST=0
26+
CS_CONNECT=First
27+
CS_REORG=1
28+
CS_REORGJAVA=1
29+
SUBFILE_ORDER=Y
30+
FC_READONLY=GRAYED
31+
PACKAGE=com.genexus.gxdynamiccall.test
32+
DECIMAL_POINT=.
33+
DATE_FMT= MDY
34+
CTOD_DATE_FMT= L
35+
BLANK_EMPTY_DATE=0
36+
TIME_FMT=12
37+
YEAR_LIMIT=40
38+
COMPRESS_HTML=1
39+
DocumentType=HTML5
40+
IE_COMPATIBILITY_VIEW=EmulateIE7
41+
EXPOSE_METADATA= 0
42+
WEB_IMAGE_DIR=/static
43+
HTTP_BACKEND_URL=
44+
WEB_STATIC_DIR=
45+
ORQ_CLIENT_URL=
46+
ORQ_SERVER_DIR=
47+
TMPMEDIA_DIR=PrivateTempStorage
48+
PRINT_LAYOUT_METADATA_DIR=LayoutMetadata
49+
HTTP_PROTOCOL=Unsecure
50+
SAMESITE_COOKIE=Lax
51+
StorageTimeZone= 1
52+
GX_BUILD_NUMBER=1302769
53+
ODBC_CALLS=0
54+
NameSpace1= com.genexus.gxdynamiccall.test
55+
LANGUAGE=eng
56+
LANG_NAME=English
57+
Theme=Carmine
58+
CS_BLOB_PATH=PublicTempStorage
59+
SUBMIT_POOL_SIZE=5
60+
CACHE_TTL_0=-1
61+
CACHE_TTL_1=60
62+
CACHE_TTL_2=600
63+
CACHE_TTL_3=0
64+
CACHE_STORAGE_SIZE=0
65+
CACHING=0
66+
SMART_CACHING=0
67+
CACHE_INVALIDATION_TOKEN=20224512174246
68+
EVENT_BEFORE_COMMIT=
69+
EVENT_AFTER_COMMIT=
70+
EVENT_BEFORE_ROLLBACK=
71+
EVENT_AFTER_ROLLBACK=
72+
EVENT_BEFORE_CONNECT=
73+
EVENT_AFTER_CONNECT=
74+
ENABLE_MANAGEMENT=0
75+
EnableIntegratedSecurity=0
76+
IntegratedSecurityLoginWeb=
77+
IntegratedSecurityNotAuthorizedWeb=
78+
HTTPCLIENT_MAX_SIZE=1000
79+
HTTPCLIENT_MAX_PER_ROUTE=1000
80+
VER_STAMP=
81+
[language|English]
82+
code= eng
83+
time_fmt= 12
84+
decimal_point= .
85+
thousand_sep= ,
86+
date_fmt= MDY
87+
culture= en-US
88+
[com.genexus.gxdynamiccall.test]
89+
GXDB_LOCATION=
90+
JTA=0
91+
DataSource1=DEFAULT
92+
JDBC_LOG=
93+
JDBCLogEnabled=0
94+
JDBCUniqueName=0
95+
JDBCLogPath=
96+
JDBCLogLevel=0
97+
JDBCLogBuffer=0
98+
JDBCLogDetail=0
99+
[com.genexus.gxdynamiccall.test|DEFAULT]
100+
CS_DBNAME=KbPrueba
101+
INFORMIX_DB=ANSI
102+
CS_LIBL400=
103+
CS_PACKAGE400=
104+
DB2400_DATE_DATATYPE=
105+
CS_SCHEMA=
106+
USER_ID=Elj20MqY44RPdvT8FEpDD0==
107+
USER_PASSWORD=tjRYpiaJ+HYQ0GpWgRGwfo8w59nKWO7H1rRFYPoZo/w=
108+
CS_CONNECT=First
109+
WAIT_RECORD=0
110+
LOCK_RETRY=10
111+
LoginInServer=1
112+
JDBC_DRIVER=net.sourceforge.jtds.jdbc.Driver
113+
DB_URL=jdbc:jtds:sqlserver://GXN1088:1433/KbPrueba
114+
USE_JDBC_DATASOURCE=0
115+
JDBC_DATASOURCE=
116+
MAX_CURSOR=100
117+
INITIALIZE_NEW=1
118+
ISOLATION_LEVEL=CR
119+
XBASE_TINT=1
120+
DBMS=sqlserver
121+
UnlimitedRWPool=1
122+
PoolRWEnabled=1
123+
RecycleRW=1
124+
RecycleRWType=1
125+
RecycleRWMin=30
126+
POOLSIZE_RW=10
127+
POOL_STARTUP=0

gxdynamiccall/src/main/java/com/genexus/gxdynamiccall/GXDynamicCall.java

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.genexus.gxdynamiccall;
22

33
import java.lang.reflect.Array;
4+
import java.lang.reflect.Constructor;
45
import java.lang.reflect.Method;
56

67
import com.genexus.CommonUtil;
78
import com.genexus.GXBaseCollection;
89
import com.genexus.GXSimpleCollection;
10+
import com.genexus.ModelContext;
911
import com.genexus.SdtMessages_Message;
1012
import com.genexus.common.interfaces.SpecificImplementation;
1113

@@ -24,8 +26,8 @@ public GXDynCallProperties getProperties() {
2426

2527
public void setProperties(GXDynCallProperties properties) {
2628
this.properties = properties;
27-
packageName = properties.getPackageName()==null?SpecificImplementation.Application.getPACKAGE():packageName;
28-
externalName = properties.getExternalName();
29+
packageName = properties.getPackageName()==null?SpecificImplementation.Application.getPACKAGE():properties.getPackageName();
30+
externalName = properties.getExternalName()==null?objectName:properties.getExternalName();
2931
}
3032

3133
public String getObjectName(){
@@ -40,9 +42,11 @@ public void execute(Object[] parametersArray, Object[] errorsArray) {
4042
//Create the instance with default constructor
4143
create(null, errorsArray);
4244
//Create methodconfiguration
43-
GXDynCallMethodConf method = new GXDynCallMethodConf();
44-
//Execute with thefault method configuration
45-
execute(parametersArray, method, errorsArray);
45+
if(errorsArray.length>0){
46+
GXDynCallMethodConf method = new GXDynCallMethodConf();
47+
//Execute with default method configuration
48+
execute(parametersArray, method, errorsArray);
49+
}
4650
}
4751

4852
public Object execute(Object[] parametersArray, GXDynCallMethodConf methodConfiguration, Object[] errorsArray) {
@@ -86,6 +90,7 @@ public Object execute(Object[] parametersArray, GXDynCallMethodConf methodConfig
8690
public void create(GXSimpleCollection<Object> constructParameters, Object[] errors) {
8791
GXBaseCollection<SdtMessages_Message> error =new GXBaseCollection<SdtMessages_Message>();
8892
String objectNameToInvoke;
93+
Constructor<?> constructor=null;
8994
objectNameToInvoke = constructParameters==null?objectName:externalName;
9095
if (!objectNameToInvoke.isEmpty()) {
9196
try {
@@ -97,23 +102,45 @@ public void create(GXSimpleCollection<Object> constructParameters, Object[] erro
97102
auxConstParameters = constructParameters.toArray();
98103
int i = 0;
99104
for (Object obj : constructParameters) {
100-
auxConstructorTypes[i] = obj.getClass();
105+
auxConstructorTypes[i] = obj.getClass();
101106
i++;
102107
}
103-
} else {
104-
auxConstParameters = (Object[]) Array.newInstance(Object.class, 0);
105-
auxConstructorTypes = new Class[] { int.class,
106-
SpecificImplementation.Application.getModelContextClass() };
108+
} else {
109+
auxConstParameters = new Object[] {Integer.valueOf(-1)};
110+
auxConstructorTypes = new Class[] {int.class};
111+
}
112+
try{
113+
constructor = objClass.getConstructor(auxConstructorTypes);
114+
}catch(Exception e1){
115+
Constructor<?> [] constructors = objClass.getConstructors();
116+
for (Constructor<?> acutualCons : constructors) {
117+
if(acutualCons.getParameterCount() == Array.getLength(auxConstParameters)){
118+
constructor=acutualCons;
119+
120+
}
121+
}
122+
}
123+
if(constructor != null){
124+
instanceObject=constructor.newInstance(auxConstParameters);
125+
}
126+
else{
127+
CommonUtil.ErrorToMessages("CreateInstance Error", "None constructor found", error);
128+
errors[0]=error;
129+
return;
107130
}
108-
instanceObject = objClass.getConstructor(auxConstructorTypes).newInstance(auxConstParameters);
109131
} catch (Exception e) {
110-
CommonUtil.ErrorToMessages("CreateInstance Error", e.getMessage(), (GXBaseCollection<SdtMessages_Message>) error);
132+
CommonUtil.ErrorToMessages("CreateInstance Error", e.getMessage(), error);
133+
e.printStackTrace();
134+
errors[0]=error;
135+
return;
111136
}
112137
}
113138
else{
114-
CommonUtil.ErrorToMessages("CreateInstance Error", "Object name not set", (GXBaseCollection<SdtMessages_Message>) error);
139+
CommonUtil.ErrorToMessages("CreateInstance Error", "Object name not set", error);
140+
errors[0]=error;
141+
return;
115142
}
116-
errors[0]=error;
143+
117144
}
118145

119146
private Object executeMethod(Object objectToInvoke, String method, GXSimpleCollection<Object> params, GXBaseCollection<SdtMessages_Message> errors, boolean isStatic) {
@@ -232,10 +259,11 @@ private static void updateParams(GXSimpleCollection<Object> originalParameter, O
232259
}
233260

234261
private Class<?> loadClass(String className, String sPackage) throws ClassNotFoundException {
235-
String classPackage = sPackage + "." + className;
262+
String classPackage="";
263+
if(sPackage != null)
264+
classPackage+= sPackage + ".";
265+
classPackage+= className;
236266
Class<?> c = Class.forName(classPackage);;
237267
return c;
238268
}
239-
//usar .size
240-
//returns y no preguntar por los null
241269
}

0 commit comments

Comments
 (0)