/* * Copyright 2013, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. * See the copyright.txt in the distribution for a * full listing of individual contributors. * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU Lesser General Public License, v. 2.1. * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License, * v.2.1 along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * (C) 2013 * @author JBoss Inc. */ package com.arjuna.ats.internal.jta.tools.osb.mbean.jta; import javax.management.MBeanException; import javax.transaction.xa.XAResource; import com.arjuna.ats.arjuna.coordinator.AbstractRecord; import com.arjuna.ats.arjuna.tools.osb.mbean.*; import com.arjuna.ats.internal.jta.resources.arjunacore.CommitMarkableResourceRecord; import com.arjuna.ats.internal.jta.xa.XID; import com.arjuna.ats.jta.xa.XATxConverter; import com.arjuna.ats.jta.xa.XidImple; /** * MBean implementation of a transaction participant corresponding to a JTA * XAResource */ /** * @deprecated as of 5.0.5.Final In a subsequent release we will change packages names in order to * provide a better separation between public and internal classes. */ @Deprecated // in order to provide a better separation between public and internal classes. public class CommitMarkableResourceRecordBean extends LogRecordWrapper implements CommitMarkableResourceRecordBeanMBean { String className; String eisProductName; String eisProductVersion; String jndiName; int timeout; XidImple xidImple; int heuristic; public CommitMarkableResourceRecordBean(UidWrapper w) { super(w.getUid()); init(); } public CommitMarkableResourceRecordBean(ActionBean parent, AbstractRecord rec, ParticipantStatus listType) { super(parent, rec, listType); init(); // xares = new JTAXAResourceRecordWrapper(rec.order()); } private void init() { jndiName = getUid().stringForm(); className = "unavailable"; eisProductName = "unavailable"; eisProductVersion = "unavailable"; timeout = 0; heuristic = -1; xidImple = new XidImple(new XID()); } public boolean activate() { boolean ok = super.activate(); XAResource xares = (XAResource) rec.value(); className = rec.getClass().getName(); if (rec instanceof CommitMarkableResourceRecord) { CommitMarkableResourceRecord xarec = (CommitMarkableResourceRecord) rec; eisProductName = xarec.getProductName(); eisProductVersion = xarec.getProductVersion(); jndiName = xarec.getJndiName(); heuristic = xarec.getHeuristic(); } if (xares != null) { className = xares.getClass().getName(); try { timeout = xares.getTransactionTimeout(); } catch (Exception e) { } } return ok; } public String getClassName() { return className; } public String getEisProductName() { return eisProductName; } public String getEisProductVersion() { return eisProductVersion; } @Override public int getTimeout() { return timeout; } @Override public String getJndiName() { return jndiName; } @Override public String getHeuristicStatus() { String hs = super.getHeuristicStatus(); if (heuristic != -1 && HeuristicStatus.UNKNOWN.name().equals(hs)) { hs = HeuristicStatus.intToStatus(heuristic).name(); } return hs; } @Override public byte[] getGlobalTransactionId() { return xidImple.getGlobalTransactionId(); } @Override public byte[] getBranchQualifier() { return xidImple.getBranchQualifier(); } @Override public int getFormatId() { return xidImple.getFormatId(); } @Override public String getNodeName() { return XATxConverter.getNodeName(xidImple.getXID()); } @Override public int getHeuristicValue() { return heuristic; } @Override public boolean forget() { if (rec instanceof CommitMarkableResourceRecord) { CommitMarkableResourceRecord xarec = (CommitMarkableResourceRecord) rec; return xarec.forgetHeuristic(); } return false; } @Override public String remove() throws MBeanException { if (forget()) return super.remove(); return "Operation in progress"; } }