#65815: MDR transactions are not correctly ended in sporadic cases BLD200601081900
authorjbecicka@netbeans.org
Thu, 05 Jan 2006 16:24:27 +0000
changeset 173985804cc6e89d
parent 1738 a78b926fc61c
child 1740 7a49d2fc6c0b
#65815: MDR transactions are not correctly ended in sporadic cases
This commit should increase robustness of starting/ending transactions.
mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java
mdr/src/org/netbeans/mdr/handlers/ClassProxyHandler.java
mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java
     1.1 --- a/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java	Fri Dec 30 18:09:09 2005 +0000
     1.2 +++ b/mdr/src/org/netbeans/mdr/NBMDRepositoryImpl.java	Thu Jan 05 16:24:27 2006 +0000
     1.3 @@ -252,6 +252,9 @@
     1.4          } catch (RuntimeException e) {
     1.5              mdrStorage.enableEvents();
     1.6              throw e;
     1.7 +        } catch (Error e) {
     1.8 +            mdrStorage.enableEvents();
     1.9 +            throw e;
    1.10          } finally {
    1.11              decrementWait();
    1.12          }
     2.1 --- a/mdr/src/org/netbeans/mdr/handlers/ClassProxyHandler.java	Fri Dec 30 18:09:09 2005 +0000
     2.2 +++ b/mdr/src/org/netbeans/mdr/handlers/ClassProxyHandler.java	Thu Jan 05 16:24:27 2006 +0000
     2.3 @@ -94,11 +94,14 @@
     2.4      }
     2.5      
     2.6      protected final void _postCreate(RefObject result, Object extraInfo, boolean fail) {
     2.7 -        if (extraInfo != null) {
     2.8 -            CreateInstanceEvent event = (CreateInstanceEvent) extraInfo;
     2.9 -            event.setInstance(result);
    2.10 +        try {
    2.11 +            if (extraInfo != null) {
    2.12 +                CreateInstanceEvent event = (CreateInstanceEvent) extraInfo;
    2.13 +                event.setInstance(result);
    2.14 +            }
    2.15 +        } finally {
    2.16 +            _unlock(fail);
    2.17          }
    2.18 -        _unlock(fail);
    2.19      }
    2.20      
    2.21      protected final Object _preEnum(String enumName, String literal) {
     3.1 --- a/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java	Fri Dec 30 18:09:09 2005 +0000
     3.2 +++ b/mdr/src/org/netbeans/mdr/handlers/InstanceHandler.java	Thu Jan 05 16:24:27 2006 +0000
     3.3 @@ -51,8 +51,8 @@
     3.4      private void _setReference(String name, Object value) {
     3.5          Object extraInfo = null;
     3.6          boolean fail = true;
     3.7 +        extraInfo = _preSetR(name, value);
     3.8          try {
     3.9 -            extraInfo = _preSetR(name, value);
    3.10              _handleSetR(name, value);
    3.11              fail = false;
    3.12          } catch (NullPointerException e) {
    3.13 @@ -67,8 +67,8 @@
    3.14          Object extraInfo = null;
    3.15          Object result = null;
    3.16          boolean fail = true;
    3.17 +        extraInfo = _preGetR(name);
    3.18          try {
    3.19 -            extraInfo = _preGetR(name);
    3.20              result = _handleGetR(name);
    3.21              fail = false;
    3.22              return result;