Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.enterprise.resource;
 
 
 import  javax.resource.spi.ConnectionEventListener;
 import  javax.transaction.Transaction;
ResourceHandle encapsulates a resource connection. Equality on the handle is based on the id field

Author(s):
Tony Ng
 
 public class ResourceHandle implements
 
     // unique ID for resource handles
     static private long idSequence;
 
     private long id;
     private ClientSecurityInfo info;
     private Object resource;  // represents MC
     private ResourceSpec spec;
     private XAResource xares;
     private Object usercon;   // represents connection-handle to user
     private ResourceAllocator alloc;
     private Object instance;  // the component instance holding this resource
     private int shareCount;   // sharing within a component (XA only)
     private boolean supportsXAResource = false;
 
     private volatile boolean busy;
 
     private Subject subject = null;
 
     private ResourceState state = null;
     private ConnectionEventListener listener = null;
 
     private boolean enlistmentSuspended = false;
 
     private boolean supportsLazyEnlistment_ = false;
     private boolean supportsLazyAssoc_ = false;
 
     private static Logger logger = LogDomains.getLogger(ResourceHandle.class.);
 
     public final Object lock = new Object();
     private long lastValidated//holds the latest time at which the connection was validated.
     private int usageCount//holds the no. of times the handle(connection) is used so far.
     private int partition;
 
    static private long getNextId() {
        synchronized (ResourceHandle.class) {
            ++;
            return ;
        }
    }
    private boolean markedReclaim = false;
    
    public ResourceHandle(Object resource,
                          ResourceSpec spec,
                          ResourceAllocator alloc,
                          ClientSecurityInfo info) {
        this. = getNextId();
        this. = spec;
        this. = info;
        this. = resource;
        this. = alloc;
        if (alloc instanceof LocalTxConnectorAllocator)
             = false;
        else
             = true;
        if (resource instanceof
                javax.resource.spi.LazyEnlistableManagedConnection) {
             = true;
        }
        if (resource instanceof
                javax.resource.spi.DissociatableManagedConnection) {
             = true;
        }
    }
/*    public ResourceHandle(Object resource,
                          ResourceSpec spec,
                          ResourceAllocator alloc,
                          ClientSecurityInfo info,
                          boolean supportsXA) {
        this.id = getNextId();
        this.spec = spec;
        this.info = info;
        this.resource = resource;
        this.alloc = alloc;
        supportsXAResource = supportsXA;
        if (resource instanceof
                javax.resource.spi.LazyEnlistableManagedConnection) {
            supportsLazyEnlistment_ = true;
        }
        if (resource instanceof
                javax.resource.spi.DissociatableManagedConnection) {
            supportsLazyAssoc_ = true;
        }
    } */


    
Does this resource need enlistment to transaction manager?
    public boolean isTransactional() {
        return .isTransactional();
    }

    
To check whether lazy enlistment is suspended or not.
If true, TM will not do enlist/lazy enlist.

Returns:
boolean
    public boolean isEnlistmentSuspended() {
        return ;
    }
    public void setEnlistmentSuspended(boolean enlistmentSuspended) {
        this. = enlistmentSuspended;
    }
    public void markForReclaim(boolean reclaim) {
        this. = reclaim;
    }

    
To check if the resourceHandle is marked for leak reclaim or not.

Returns:
boolean
    public boolean isMarkedForReclaim() {
        return ;
    }
    public boolean supportsXA() {
        return ;
    }
        return ;
    }
    public Object getResource() {
        return ;
    }
        return ;
    }
    public void setResourceSpec(ResourceSpec spec) {
        this. = spec;
    }
    public ResourceSpec getResourceSpec() {
        return ;
    }
    public XAResource getXAResource() {
        return ;
    }
    public Object getUserConnection() {
        return ;
    }
    public void setComponentInstance(Object instance) {
        this. = instance;
    }
    public void closeUserConnection() throws PoolingException {
    }
    public Object getComponentInstance() {
        return ;
    }
    public long getId() {
        return ;
    }
    public void fillInResourceObjects(Object userConnection,
                                      XAResource xaRes) {
        if (userConnection != null = userConnection;
        if (xaRes != null) {
            if (.isLoggable(.)) {
                //When Log level is Finest, XAResourceWrapper is used to log
                //all XA interactions - Don't wrap XAResourceWrapper if it is
                //already wrapped
                if ((xaRes instanceof XAResourceWrapper) ||
                        (xaRes instanceof ConnectorXAResource)) {
                    this. = xaRes;
                } else {
                    this. = new XAResourceWrapper(xaRes);
                }
            } else {
                this. = xaRes;
            }
        }
    }
    // For XA-capable connections, multiple connections within a
    // component are collapsed into one. shareCount keeps track of
    // the number of additional shared connections
    public void incrementCount() {
        ++;
    }
    public void decrementCount() {
        if ( == 0) {
            throw new IllegalStateException("shareCount cannot be negative");
        } else {
            --;
        }
    }
    public int getShareCount() {
        return ;
    }
    public void setSubject(Subject subject) {
        this. = subject;
    }
    public Subject getSubject() {
        return ;
    }
    public boolean equals(Object other) {
        if (other == nullreturn false;
        if (other instanceof ResourceHandle) {
            return this. == (((ResourceHandleother).);
        }
        return false;
    }
    public int hashCode() {
        return Long.valueOf().hashCode();
    }
    public String toString() {
        return String.valueOf();
    }
    private boolean connectionErrorOccurred = false;
    public void setConnectionErrorOccurred() {
         = true;
    }
    public boolean hasConnectionErrorOccurred() {
        return ;
    }
    public void setResourceState(ResourceState state) {
        this. = state;
    }
    public ResourceState getResourceState() {
        return ;
    }
    public void setListener(ConnectionEventListener l) {
        this. = l;
    }
    public ConnectionEventListener getListener() {
        return ;
    }
    public boolean isShareable() {
        return .shareableWithinComponent();
    }
    public void destroyResource() {
        throw new UnsupportedOperationException("Transaction is not supported yet");
    }
    public boolean isEnlisted() {
        return  != null && .isEnlisted();
    }
    public long getLastValidated() {
        return ;
    }
    public void setLastValidated(long lastValidated) {
        this. = lastValidated;
    }
    public int getUsageCount() {
        return ;
    }
    public void incrementUsageCount() {
        ++;
    }
    public int getPartition() {
        return ;
    }
    public void setPartition(int partition) {
        this. = partition;
    }
    public String getName() {
        return .getResourceId();
    }
    public boolean supportsLazyEnlistment() {
        return ;
    }
    public boolean supportsLazyAssociation() {
        return ;
    }
    public void enlistedInTransaction(Transaction tranthrows IllegalStateException {
        ConnectorRuntime.getRuntime().getPoolManager().resourceEnlisted(tranthis);
    }
    public void setBusy(boolean isBusy){
         = isBusy;
    }
    public boolean isBusy(){
        return ;
    }
New to GrepCode? Check out our FAQ X