Modification of the BeanProxy / PropertyProxyRegistry ?

Hello,
We've just re-deployed our application, with quite a few features and fixes. We've also updated it as follows:
Spring-Flex : 1.0.3.RELEASE -> 1.5.2.RELEASE (spring-flex-core)
Spring : 3.0.5.RELEASE -> 3.1.2.RELEASE
Hibernate : 3.6.9.Final -> 4.1.6.Final
We tested it entirely (but clearly not enough), because we have a big problem coming from the BeanProxy / PropertyProxyRegistry : Apparently, we no longer pass in the getValue / setValue functions for the objects we are returning from Java to Flex (but it works for the objects coming from Flex going to Java).
Does anyone have an idea of things that may have altered this feature? (or how to get it back to work...)
If it may be of any help, here's the code of the "FlexProxy":
public class FlexProxy extends BeanProxy {
    private Integer clientOffset;
     * Register proxy
    public void init() {
        PropertyProxyRegistry.getRegistry().register(java.lang.Object.class, this);
          @Override
          public Object getValue(Object instance, String propertyName) {
                    Class<?> propertyType = getBeanProperty(instance, propertyName)
                                        .getType();
                    Object result = super.getValue(instance, propertyName);
                    if (result == null
                                        && (BigDecimal.class == propertyType
                                                            || BigInteger.class == propertyType
                                                            || Integer.class == propertyType
                                                            || Long.class == propertyType || Double.class == propertyType)) {
                              return Double.NaN;
                    if (result != null && Date.class == propertyType
                                        && !isTimeStamp(instance, propertyName)
                                        && getClientOffset() - getServerOffset() > 0) {
                              Date date = (Date) result;
                              Calendar cal = new GregorianCalendar(TimeZone.getDefault());
                              cal.setTime(date);
                              cal.add(Calendar.MINUTE, getClientOffset() - getServerOffset());
                              date.setTime(cal.getTimeInMillis());
                              result = date;
                    return result;
           @Override
          public void setValue(Object object, String propName, Object value) {
                    if (value != null && value.getClass().equals(Double.class)
                                        && Double.isNaN(((Double) value).doubleValue())) {
                              super.setValue(object, propName, null);
                    } else if (getClientOffset() != null && value != null
                                        && value.getClass().equals(Date.class)
                                        && !isTimeStamp(object, propName)
                                        && getServerOffset() - getClientOffset() > 0) {
                              Date date = (Date) value;
                              Calendar cal = new GregorianCalendar(TimeZone.getDefault());
                              cal.setTime(date);
                              cal.add(Calendar.MINUTE, getServerOffset() - getClientOffset());
                              date.setTime(cal.getTimeInMillis());
                              super.setValue(object, propName, date);
                     } else {
                              super.setValue(object, propName, value);
          private Boolean isTimeStamp(Object object, String propName){
                    Boolean isTimeStamp=false;
                    Field field;
                    try {
                              field = ReflectionUtils.getField(object.getClass(),
                                                  propName);
                              Temporal annotation = field.getAnnotation(Temporal.class);
                              if (annotation != null) {
                                        if (annotation.value().equals(
                                                            javax.persistence.TemporalType.TIMESTAMP)) {
                                                  isTimeStamp = true;
                    } catch (ReflexionException e) {
                              LOG.info("error",e);
                    return isTimeStamp;
    public Integer getClientOffset() {
        if (null != FlexContext.getFlexSession()) {
            clientOffset = (Integer) FlexContext.getFlexSession().getAttribute("TIMEZONE_CLIENT_OFFSET");
            return clientOffset;
        return null;
    public Integer getServerOffset() {
        return Calendar.getInstance().getTimeZone().getOffset(new Date().getTime()) / 1000 / 60 * -1;
And here is how the bean is defined:
<bean id="flexProxy" class="com.fdilogbox.artemis.tools.FlexProxy" init-method="init" />
Any help will be very appreciated!

After having dug a bit more into the problems, we have found that it's actually a bit more complicated: We do pass in the get / set value functions, but only for the object-types used during the first connection. Ever after, we don't pass in these functions, unless it's on the same "page" (or object-type ?) as the first one.
The funny thing is that I don't see any dependency of a thread, session, channel-set or anything like that!
The less funny thing is that the users (and the boss) are really impatient to get a solution, since they risk corrupting the database if they don't pay attention (which is quite common...)
Regards

Similar Messages

  • [svn:bz-trunk] 21155: bug fix BLZ-623 BeanProxy/ PropertyProxyRegistry have unsynchronized access to registry/cache

    Revision: 21155
    Revision: 21155
    Author:   [email protected]
    Date:     2011-04-27 10:16:52 -0700 (Wed, 27 Apr 2011)
    Log Message:
    bug fix BLZ-623 BeanProxy/PropertyProxyRegistry have unsynchronized access to registry/cache
    adding the locking in the get of Maps in both classes
    checkintests pass
    Ticket Links:
        http://bugs.adobe.com/jira/browse/BLZ-623
    Modified Paths:
        blazeds/trunk/modules/core/src/flex/messaging/io/BeanProxy.java
        blazeds/trunk/modules/core/src/flex/messaging/io/PropertyProxyRegistry.java

  • Lightroom 5 says "There has been an error during the modification of the modules." Lightroom does not open, freezes.

    Hi, I've got Creative Cloud, on a Mac Pro late 2010, 6 Core, 3.3 Gz, which has just been emptied and re-set with Yosemite. I've downloaded the Adobe stuff I need, especially Ps, Il, Id, Pp, Ae and Lightroom 5. Everything works find except Lightroom which doesn't open, giving me this message each time: "There has been an error during the modification of the modules."  There is no error number attached and the program freezes. I've got a deadline which has been broken because I can't finish the work I've started in Lightroom 5 on my old computer which I deactivated in order to run the new one. Now I don't know what to do nor where to look for the problem. I've placed the Lightroom Library on an external LaCie 4Big 8Tb Raid 5.

    Error changing modules | Lightroom

  • Modification of the Work Order Program TCode IW31

    I need to do a modification to the work order program. Tcode IW31
    When creating a work order with reference to an old work order, we want to clear any PRT data that might be in any item of the operations tab of the old order.
    My question is:  Which method should I use to get this change done?
    I looked at the badi = IWO1_ORDER_BADI --> the method REFERENCE_ORDER_CHK, but I do not think this is the right one.
    Please help me...
    Thanks.
    Regards,
    Francisco.
    Message was edited by:
            Francisco Alonzo

    To check for the suitable badi, Go to transaction SE24 and give the Object type as CL_EXITHANDLER and click on Display button.
    Double click on method GET_INSTANCE, put a break point on case statement.
    Execute your transaction and look for variable EXIT_NAME at your scenario then It will show the available badi's.
    Reward if it is useful.
    Thanks,
    Srinivas

  • Modification of the ship to address in the sales order at item level

    SAP ECC6
    Sales order. Transaction code VA01/VA02
    Creation/modification of the ship to address at item level/Allowed by SAP when sold to ≠ ship to/Impossible when
    sold to = ship to
    Hello All,
    I would like to set up an enhancement on the sales order.
    > What we want : we want to have the possibility to modify the ship to party address at item level. Indeed, we sometimes make slight modifications to address, such as adding the words "to the attention of"
    > What we don’t want : create a new ship to, to take into account the address modification or manage this modification in an item text
    > What SAP allows : At item level (as at header level) SAP allows you to modifiy the ship to address when the sold to ≠ ship to. BUT, SAP forbids the modification of the ship to address when the sold to = ship to
    Is there a means on the customizing to authorize these modification address at item level each time the sold to = ship to ?
    Many thanx
    Best regards
    Vincent

    sold to party=ship to party
    goto item and tab partner
    select partner function ship to party, again enter same code and press enter
    now see item partner automaticlly selcted.
    now double click on ship to party and change addrss etc accordingly.
    Hii Vincent,
    It is possible to change address of shipt to party at item level and it doest matter if sold to part & ship to party are same or different at header level.
    Please see above images.
    All you have to do is to select ship to party again in item tab-partners and enter code.
    Please check item you are using is activated for business data.
    Regards,
    Nouman

  • MIRO: blocking the modification of the filed "invoicing party"

    Hi All,
    With reference to the t.code MIRO, I'd like to know if is possible to block the modification of the filed "invoicing party" in the tab "invoice"
    THANKS

    can you try if it is there in field selection

  • Modification in the Analysis Table in WAD

    Has anybody anytime used modification option for Analysis wad properties. it has entries single module, multiple modules and others.
    I want to use this and write or configure for reading the entries in the data cell.
    Thank you

    Dear Sandeep,
    If you do not want to use the default display and behavior of the Analysis Web item, you can use the Modification parameter to change them. You can modify the table structure and the table cells.
    The Modification parameter provides modules whose use can be controlled using additional parameters.
    This function enables you to use similar options to those available in earlier releases with the Web Design API for Tables. Unlike the Web Design API for Tables, modifications enable you to make targeted changes to the display and behavior without any programming.
    Prerequisites
    The modules are the main prerequisites for making modifications to the Analysis Web item. The modules are implemented in Java. The SAP Basis infrastructure in SAP NetWeaver 7.0 does not support any customer modifications or extensions to Java coding. Customers are therefore not able to develop their own modules for modifications to the Analysis Web item.
    SAP delivers a number of sample modules. You can use parameters to modify the display and behavior of these modules.
    Procedure
    You use the modules as follows:
           1.      Select a module from the sample modules.
           2.      Specify the module in the Modification parameter of the Analysis Web item.
           3.      Control the display and behavior of the module by specifying the module-specific parameters.
    Please see the below link for more understanding..
    http://help.sap.com/saphelp_nw70/helpdata/EN/1a/456a3badc1b315e10000000a114084/frameset.htm
    Hope this helps u..
    Best Regards,
    VVenkat..

  • Can we make modification to the smartform generated FM?

    Hello Friends,
    Can we make modification to the smartform auto generated FM?
    If yes, please let me know the procedure.
    Thanks,
    Shreekant

    if u modify your SF it will automatically modify that FM.
    what is the need of modifying the FM
    <b>Reward If USEFUL</b>

  • Java legal stuff-  modifications to the standard library

    I have been programming with Java for about a few months now. I find Java to be a wonderful language. Now I am wondering am I allowed to make a modification to the standard library and use that modification in my programs? Refering to Sun Java SDK. I am just wondering.

    Thank you for the code, never tought about usign reflection. I tend to stay away from reflection as much as I can. Btw: very nicely done.
    We have a really silly task to in Java as part of the lab excersizes for the lessons in programming. We have to make a program that simulates the motion of balls in a panel, the trick is that the balls ofcourse bounce off the enges of the panel but they also collide and bounce of each other. Ok, no problem, soo I did the task with just one Timer. It workd very well. But the assistant didnt accept my solution. Since it was written in the description of the excersize that each ball must be moved by a thread. How stupid is that! Soo I didnt have any good idea on how to achive that. But I do think that a Barrier is the best way to go in this unfortunate circumastance. If you have a better idea please I will be very interested. I mean what I do is I create a barrier and then each ball has
    while(true){
    move()
    barrier.await()
    in the run method. That means each out of n balls will move and then wait. When all the balls will move then I will do collision detection, redraw the panel and pause the frame for about 30 ms thus achivieng the illusion of having about 30 fps and then repeting the process. Soo the Barrier pattern I think should do good in this case. Well I have just been programming for a few months in Java soo I really can only speculate. Now the tricky part is that what if I add a new ball? What I want is simply to increment the nr of parties that the barrier has to n + 1. That will not cause any problems. If I were to decrement there might be some problems. But I dont want to create a new CyclicBarrier everytime a new Ball is created. Soo one way I think might work is to get the source of the CyclicBarrier and add an incrementParties method. Again I am a very inexperienced java beginner soo ....

  • Requesting feedback and advice on modifications to the FIDL examples

    Hello,
    With the help of this forum, I've been learning about FlexRIOs, low-level FPGA programming, the higher-level FlexRIO Instrument Development Library, and general techniques for high-speed synchronization and acquisition.
    I believe I'm now on the right track, and would like to ask for feedback/advice from someone who's experienced with FlexRIO (or general PXI FPGA) programming on what I've done. I modified Acq Engine on 5734 PXIe-7962R.lvproj:FPGA Top Generic PXIe.vi to let all 15 cards trigger a synchronized acquisition. I replaced the trigger detection mechanism, but left everything else untouched:
    Brief background
    Equipment list
    Controller: PXIe-8135 (Windows 7)
    Chassis: PXIe-1085
    Input cards: PXIe-7962R FlexRIO base with NI-5734 digitizer (Total of 15 cards = 60 channels)
    Requirements
    The system continuously monitors 60 channels for events. (An "event" is when any one channel exceeds a user-defined threshold. Events are up to 30 minutes apart)
    When an event is detected, data is acquired simultaneously from all 60 channels (200 μs pre-event, 300 μs post-event)
    Data is sampled at 10 MHz
    Explanation for code modifications
    Idea
    When a card detects an event, it fires the "Detection" trigger to the Master.
    When the Master receives a "Detection" trigger, it fires the "Acquisition" trigger to all cards.
    When a card receives the "Acquisition" trigger, it transfers data to the host.
    Implementation
    The FlexRIO cards are spread across 3 different PXI busses, so I use 3 "Detection" trigger lines.
    I hijacked Acquisition Engine - FPGA.lvlib:acqEngineTriggerPoly.vi by feed my custom trigger into acq.Trigger Immediate.
    Questions
    Is this a good way to do things? It works overall and the channels are all synchronized, but the additional trigger layer seemed to introduce a delay of ~17 ns (2 samples at 120 MHz, but I think it's negligible at 10 MHz)
    How can I decimate the data to 10 MHz? As a simple first step, I thought I'd put a case structure around everything in the timed loop, and run this case every 12 iterations. However, FIDL Synchronization v1.lvclass:Create.vi only goes down to 17 MHz.
    Thanks in advance!

    David-A wrote:
    Seems fine. I've always just used a single trigger connected to the master, but what you've done to allow any of the slaves to notify the master that it needs to distribute a synchronized trigger to all the slaves should work fine.  Not sure what delay you are referring to though. It probably doesn't matter as long as all of the modules see the synchronized trigger at the same time since you can always just increase the number of pre-trigger samples you collect.  
    Thanks for confirming, David.
    About the delay: With the default example, if I specify 50 pre-trigger samples, then on the host graph I see the y-threshold crossed at t=50. With my modifications, I see the y-threshold crossed at t=48.
    But you're right. Since the shift is constant across all cards, all I need to do is read 2 extra pre-trigger samples to compensate -- not a problem.
    David-A wrote:
    Regarding decimation, I suppose you could just dump 11 of every 12 samples to decimate the data down to 10MS/s, but like Rob mentioned, you may get some nasty aliasing. I would look into using the decimation filter he mentioned.
    I understand the importance of a decimation filter.
    To clarify my question: After filtering my signals, how do I get the FIDL multi-record system to pass downsampled data to the host?
    I tried modifying Acquisition Engine - Facade.lvlib: Packer.vi to Enable every 12th sample:
    Explanation
    If AcqInProgress is FALSE, Counter is always 0.
    If AcqInProgress is TRUE, Counter decrements from 11 to 0 cyclically.
    Enable is TRUE if (AcqInProgress == TRUE and Counter == 0)
    However, the data received by the host is corrupted. Below is from a 100 kHz sine wave input, sampled at 10 MHz. I asked for 100 pre-trigger and 200 post-trigger samples, which should give me 3 cycles. It looks like the wrong sections from the buffer are being read from:
    What did I do wrong?

  • Reagrding modification in the select statement of smart form

    hi,
    i have been assigned to make modifications in smart form and now if i want to add field in the existing slect statement it gives error . when i check smart form there is no structure but dere in types declaration
    d internal table is passed as a table itself in the form interface and also defined the variables in the global definations . but problem is how reterive data from dese variables in to smart forms which i want add right now as i am new to the smart forms.
    Edited by: ric .s on Mar 12, 2008 10:16 AM

    hi,
    i had checked the internal table which is passsed in the program whihc conatins statement :-
    data : ivbkd like vbkd occurs 0 with header line.
    data : ikna1 like kna1 occurs 0 with header line.
    and also passed in the form in d program as it is .
    den what s the problem coming after doing all these steps .
    plzz help me out as help will be deinfately rewarded.

  • Partition key modification effect the performence of the table ?

    we have a partitioned table with more than 15 partitions(Range partition 9i version).
    now we want to modify the partition key using row movement option,
    but i found in forums and google that partition key modification may effetcs the database performence.
    i want to know it will effects the db performence or not,if yes, what extent it effects the db performence and what are the issues may rise ?
    Edited by: Nagendra T on Sep 19, 2011 9:32 PM
    Edited by: Nagendra T on Sep 19, 2011 9:34 PM

    >
    i want to know it will effects the db performence or not,if yes, what extent it effects the db performence and what are the issues may rise ?
    One thing I can think of is partition pruning.
    If the new partition key is not being used in the predicates then partition pruning may not occur.
    You should choose partition key wisely to ensure that pruning happens almost for all DMLs.
    >
    i want to know it will effects the db performence or not,if yes, what extent it effects the db performence and what are the issues may rise ?
    Well, due to lack of pruning, you may even see table full scan instead of single partition scan which will drastically hamper the performance

  • Business Process Monitoring - Modification of the standard alert mechnisms

    Hi All,
    Am using Solution Manager 7.0 BPMON and the alert mechanisms used is the email notification from BPM_NOTIF.
    Would like to know if the email format can be modified Some e.g of the modification which I am looking at
    1) The subject as of now is the standard the Solution name. Can the sbuject be modified to suit what kind of alert this is.
    2) In the body there a couple of details which may not be used and some other details may need to be added for e.g for a dialog performance monitor the user  id which has hit the threshold is not visible in the alert hence can this be added to the email alert?
    Thanks.
    Rgds,
    Letchu

    Hello,
    with ST400 SPS23 and hence ST-SER 701_2010_1 it is directly possible to influence subject and body of an email in BPMon. Additionally you can use other BAdIs to further enrich your notifications or trigger "real" auto-reactions. Please refer to the following SDN blog /people/johannes.fleig/blog/2010/06/02/create-your-own-auto-reaction-messages-in-business-process-monitoring-via-badi-exit
    Best Regards
    Volker

  • Modification in the screen with referenced documents in VA01

    Hi everyone,
    When you are in transaction VA01 and you indicate a material, if this one has outline agreements associated, you can display a list. I would like to add some fields to this structure (LISTVBAP). I made this by se11 but when I try to fill these fields in MV45AFZZ, it doesn't work because the exit is executed before the filling of the structure. Besides, the function that creates the ALV doesn't consider these fields, so I can't see them in the window neither empty.  I checked the others exits and i think none of them works for this. How can I make this modification ?
    Thanks in advance!

    The Data for the Popup is handled in internal tables using the structure LISTVBAP. The new fields must be inserted in this structure (modification in data dictionary). The new fields will show in the popup at the position where they are located in the structure.
    For displaying the fields BSTNK and AUDAT, the form routine AUSGABE_LISTE_HINWEIS in include LV45CF0A must be modified. The new fields must be transferred to itab GT_LISTDOCU and in itab LT_FIELDCAT the flag TECH needs to be cleared for the fields to be displayed (coding below).
    The variable KOPFEBENE is set by the calling program and used for varying the popup for different uses, so make your modification according to this.
    For the usage of the popup in VA01 for the use descibed by Yelimar, the supplying of the data is found in include MV45AFDB_VAPMA_SELECT. Modify it to fill the new fields (coding snippet below).
    *Include LV45CF0A ****
    FORM AUSGABE_LISTE_HINWEIS.
        ELSEIF KOPFEBENE CA ' '.
          GT_LISTDOCU-POSNR  = LISTDOCU-POSNR.
          GT_LISTDOCU-KWMENG = LISTDOCU-KWMENG.
          GT_LISTDOCU-MEINS  = LISTDOCU-MEINS.
          GT_LISTDOCU-NETWR  = LISTDOCU-NETWR.
          GT_LISTDOCU-WAERK  = LISTDOCU-WAERK.
    *{   INSERT         T02K948641                                        1
          GT_LISTDOCU-BSTNK  = LISTDOCU-BSTNK.
          GT_LISTDOCU-AUDAT  = LISTDOCU-AUDAT.
          WHEN 'POSNR' OR 'KWMENG' OR 'MEINS' OR 'NETWR' OR 'WAERK'.
            IF KOPFEBENE CA ' '.
              CLEAR <LS_FIELDCAT>-TECH.
            ENDIF.
    *{   INSERT         T02K948641                                        2
          WHEN 'BSTNK' OR 'AUDAT'.
            IF kopfebene = ' '.
              CLEAR <LS_FIELDCAT>-TECH.
            ENDIF.
    *}   INSERT
    ** include MV45AFDB_VAPMA_SELECT
            CH_POSITION_EXIST = CHARX.
            HNW_VBAP-VBELN = VAPMA-VBELN.
    *{   INSERT         T02K948641                                        1
            HNW_VBAP-BSTNK = VAPMA-BSTNK.
            HNW_VBAP-AUDAT = VAPMA-AUDAT.
    *}   INSERT
            HNW_VBAP-POSNR = VAPMA-POSNR.
            HNW_VBAP-MATNR = VAPMA-MATNR.
    Edited by: Jochen Lang on Apr 3, 2010 11:23 AM

  • Urgent: regarding modification in the ystock report

    hi,
    i am making a report in which i have to display the stock as on date 13.03.2008 ( for instance),but the table form where the field is coming from  the table which is similar to the MSEG,and it is displaying the updation of stock on last day of every month.
    my problem is if  i am making the stock changes then it is displayed on 31.03.2008 but not on 13.03.2008 and i want to display it on todays date.
    plzz help me out as it is really urgent to me.

    hi,
    dis is d part of my code and i want to modify in it,
    PARAMETERS : P_DATE LIKE ZSTOCKSUM-STLDATE OBLIGATORY DEFAULT sy-datum.
      SELECT ASTLDATE AMATNR AWERKS ALGORT ASTSTOCK ASTDEBIT A~STCREDIT
      CMEINS  CMTART CMATKL CNTGEW C~GEWEI
      FROM ZSTOCKSUM AS A
      INNER JOIN MARA AS C ON AMATNR = CMATNR
      INTO TABLE STIT
      WHERE AWERKS = P_WERKS AND MTART IN MAT_TYPE AND AMATNR IN P_MATNR AND STLDATE <= P_DATE
      AND ( MTART = 'FERT' OR MTART = 'HALB' OR MTART = 'ZBOP' OR MTART = 'ZSCR' OR MTART = 'ROH' )
      AND A~LGORT IN P_STLOC.
      LOOP AT STIT WHERE MATNR = ITAB-MATNR AND LGORT = ITAB-LGORT.
            V_QTY = V_QTY + STIT-STDEBIT - STIT-STCREDIT.
            IF P_DATE >= STIT-STLDATE.
              V_QTY1 = V_QTY1 + V_QTY  + ( STIT-STDEBIT - STIT-STCREDIT ).
              ENDIF.
        ENDLOOP.

Maybe you are looking for