77import com .genexus .util .GXProperties ;
88
99import java .io .InputStream ;
10- import java .io .StringWriter ;
10+ import java .io .StringWriter ;
11+ import java .lang .reflect .Method ;
12+ import java .util .HashMap ;
13+ import java .util .HashSet ;
14+
1115import com .genexus .xml .GXXMLSerializer ;
1216
1317public class GxSilentTrnSdt extends com .genexus .xml .GXXMLSerializable
1418{
15- public static final ILogger logger = LogManager .getLogger (GxSilentTrnSdt .class );
19+ static final ILogger logger = LogManager .getLogger (GxSilentTrnSdt .class );
20+ static final String SET_METHOD_PREFIX = "setgxTv_" ;
21+ static final String GET_METHOD_PREFIX = "getgxTv_" ;
1622 IPendingEventHelper pendingHelper ;
1723 GXProperties dirties = new GXProperties ();
1824
@@ -264,7 +270,7 @@ public void setvalue(String name, String value)
264270 try
265271 {
266272 Class <?> me = getClass ();
267- String methodName = "setgxTv_" + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
273+ String methodName = SET_METHOD_PREFIX + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
268274 for (java .lang .reflect .Method method : me .getMethods ())
269275 {
270276 if (method .getName ().equals (methodName ))
@@ -274,7 +280,7 @@ public void setvalue(String name, String value)
274280 {
275281 if (GXSimpleCollection .class .isAssignableFrom (parmTypes [0 ]))
276282 {
277- String methodNameGet = "getgxTv_" + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
283+ String methodNameGet = GET_METHOD_PREFIX + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
278284 GXSimpleCollection col = (GXSimpleCollection )me .getMethod (methodNameGet , new Class []{}).invoke (this , (Object [])null );
279285 col .removeAllItems ();
280286 col .fromJSonString (value );
@@ -294,11 +300,27 @@ public void copy(GxSilentTrnSdt source)
294300 {
295301 try
296302 {
297- Class <?> superClass = source .getClass ();
298- for (java .lang .reflect .Field field : superClass .getDeclaredFields ())
303+ Class <?> me = getClass ();
304+ HashMap <String , Method > setMethods = new HashMap <>();
305+ HashMap <String , Method > getMethods = new HashMap <>();
306+ for (java .lang .reflect .Method method : me .getDeclaredMethods ())
299307 {
300- field .set (this , field .get (source ));
308+ String methodName = method .getName ();
309+ if (methodName .startsWith (SET_METHOD_PREFIX ))
310+ {
311+ setMethods .put (methodName , method );
312+ }else if (methodName .startsWith (GET_METHOD_PREFIX )){
313+ getMethods .put (methodName , method );
314+ }
301315 }
316+ for (java .lang .reflect .Method setMethod : setMethods .values ()) {
317+ String getMethod = setMethod .getName ().replace (SET_METHOD_PREFIX , GET_METHOD_PREFIX );
318+ if (getMethods .containsKey (getMethod )) {
319+ Object value = getMethods .get (getMethod ).invoke (source , (Object []) null );
320+ setMethod .invoke (this , new Object []{value });
321+ }
322+ }
323+
302324 }catch (Exception e )
303325 {
304326 logger .fatal (e .getMessage (), e );
@@ -310,7 +332,7 @@ public String getvalue(String name)
310332 try
311333 {
312334 Class <?> me = getClass ();
313- String methodName = "getgxTv_" + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
335+ String methodName = GET_METHOD_PREFIX + me .getSimpleName () + "_" + name .substring (0 , 1 ).toUpperCase () + name .substring (1 ).toLowerCase ();
314336
315337 Object obj = me .getMethod (methodName , new Class []{}).invoke (this , (Object [])null );
316338 if (obj instanceof GXSimpleCollection )
0 commit comments