Package org.objectweb.jorm.api

Examples of org.objectweb.jorm.api.PBindingCtrl


        return new RdbSequencePName(this, en);
      }
    }

    //Binder role
    PBindingCtrl pb = (PBindingCtrl) en;
    byte nextstate = PStateGraph.nextStatePBinding(pb.getStatus(),
                             PBinding.ACTION_EXPORT);
    if (nextstate == PBinding.LIFECYCLE_ERROR)
      throw new PExceptionProtocol("Unauthorized operation");

    PName pn = null;
    boolean connectionAllocatedLocaly = false;
    try {
      if (c == null) {
        c = getBinderClassMapping().getPMapper().getConnection();
        connectionAllocatedLocaly = true;
      }
      initSequenceHelper();
      long lid = ((Long) sequence.next()).longValue();
      //TODO : if factory, lid = factory.next
      pn = new RdbSequencePName(this, new Long(lid));
    } finally {
      if (connectionAllocatedLocaly) {
        getBinderClassMapping().getPMapper().closeConnection(c);
      } else if (c instanceof ConnectionHolder) {
        try {
          ((ConnectionHolder) c).releaseCHConnection();
        } catch (PersistenceException e) {
          throw new PException(e, "Problem with Perseus connection releasing.");
        }
      }
    }

    if (cache != null) {
      synchronized (cache) {
        if (cache.lookup(pn) != null) {
          throw new PExceptionExistingName("[" + getClassName()
                           + "]: an object has been already export with the same identifier");
        }
        try {
          cache.fix(cache.bind(pn, pb));
        } catch (CacheException e) {
          throw new PException(e, "[" + getClassName()
                      + "]: problem with cache management");
        }
      }
    }
    pb.setPName(pn);
    pb.setStatus(nextstate);
    return pn;
  }
View Full Code Here

TOP

Related Classes of org.objectweb.jorm.api.PBindingCtrl

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.