TXState implements TXStateInterface { @Override public InternalDistributedMember getOriginatingMember() { return proxy.getOnBehalfOfClientMember(); } TXState(TXStateProxy proxy, boolean onBehalfOfRemoteStub,
      StatisticsClock statisticsClock);  TXState(TXStateProxy proxy, boolean onBehalfOfRemoteStub,
      SingleThreadJTAExecutor singleThreadJTAExecutor, StatisticsClock statisticsClock); @Override String toString(); @Override TransactionId getTransactionId(); void firePendingCallbacks(); void freePendingCallbacks(); List<EntryEventImpl> getPendingCallbacks(); @Override TXRegionState readRegion(InternalRegion r); @Override void rmRegion(LocalRegion r); @Override TXRegionState writeRegion(InternalRegion r); @Override long getBeginTime(); @Override int getChanges(); @Override boolean isInProgress(); @Override int nextModSerialNum(); @Override boolean needsLargeModCount(); @Override void precommit(); @Override void commit(); @Override void rollback(); boolean waitForPreviousCompletion(); @Override TXEvent getEvent(); @Override void close(); @Override List getEvents(); @Override synchronized void beforeCompletion(); @Override synchronized void afterCompletion(int status); void setAfterReservation(Runnable afterReservation); void setAfterConflictCheck(Runnable afterConflictCheck); void setDuringApplyChanges(Runnable duringApplyChanges); void setAfterApplyChanges(Runnable afterApplyChanges); void setAfterReleaseLocalLocks(Runnable afterReleaseLocalLocks); void setDuringIndividualSend(Runnable duringIndividualSend); void setAfterIndividualSend(Runnable afterIndividualSend); void setDuringIndividualCommitProcess(Runnable duringIndividualCommitProcess); void setAfterIndividualCommitProcess(Runnable afterIndividualCommitProcess); void setAfterSend(Runnable afterSend); void setBeforeSend(Runnable r); @Override InternalCache getCache(); @Override Collection<InternalRegion> getRegions(); @Override TXRegionState txWriteRegion(final InternalRegion internalRegion, final KeyInfo entryKey); @Override TXRegionState txReadRegion(InternalRegion internalRegion); @Override boolean txPutEntry(final EntryEventImpl event, boolean ifNew, boolean requireOldValue,
      boolean checkResources, Object expectedOldValue); @Override boolean containsValueForKey(KeyInfo keyInfo, LocalRegion region); @Override void destroyExistingEntry(final EntryEventImpl event, final boolean cacheWrite,
      Object expectedOldValue); @Override void invalidateExistingEntry(final EntryEventImpl event, boolean invokeCallbacks,
      boolean forceNewEntry); @Override Entry getEntry(final KeyInfo keyInfo, final LocalRegion region, boolean allowTombstones); @Override Entry accessEntry(KeyInfo keyInfo, LocalRegion localRegion); @Override TXEntryState txReadEntry(KeyInfo keyInfo, LocalRegion localRegion, boolean rememberRead,
      boolean createIfAbsent); @Override Object getDeserializedValue(KeyInfo keyInfo, LocalRegion localRegion, boolean updateStats,
      boolean disableCopyOnRead, boolean preferCD, EntryEventImpl clientEvent,
      boolean returnTombstones, boolean retainResult, boolean createIfAbsent); @Override @Retained Object getSerializedValue(LocalRegion localRegion, KeyInfo keyInfo, boolean doNotLockEntry,
      ClientProxyMembershipID requestingClient, EntryEventImpl clientEvent,
      boolean returnTombstones); @Override int entryCount(LocalRegion localRegion); @Override boolean containsKey(KeyInfo keyInfo, LocalRegion localRegion); @Override @Retained Object getValueInVM(KeyInfo keyInfo, LocalRegion localRegion, boolean rememberRead); @Override boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld,
      Object expectedOldValue, boolean requireOldValue, long lastModified,
      boolean overwriteDestroyed); @Override boolean putEntry(EntryEventImpl event, boolean ifNew, boolean ifOld,
      Object expectedOldValue, boolean requireOldValue, long lastModified,
      boolean overwriteDestroyed, boolean invokeCallbacks, boolean throwConcurrentModification); @Override boolean isDeferredStats(); @Override Object findObject(KeyInfo key, LocalRegion r, boolean isCreate, boolean generateCallbacks,
      Object value, boolean disableCopyOnRead, boolean preferCD,
      ClientProxyMembershipID requestingClient, EntryEventImpl clientEvent,
      boolean returnTombstones); @Override Object getEntryForIterator(KeyInfo curr, LocalRegion currRgn, boolean rememberReads,
      boolean allowTombstones); @Override Object getKeyForIterator(KeyInfo curr, LocalRegion currRgn, boolean rememberReads,
      boolean allowTombstones); @Override Set getAdditionalKeysForIterator(LocalRegion currRgn); @Override boolean isInProgressAndSameAs(TXStateInterface otherState); @Override boolean putEntryOnRemote(EntryEventImpl event, boolean ifNew, boolean ifOld,
      Object expectedOldValue, boolean requireOldValue, long lastModified,
      boolean overwriteDestroyed); @Override boolean isFireCallbacks(); boolean isOriginRemoteForEvents(); @Override void destroyOnRemote(EntryEventImpl event, boolean cacheWrite, Object expectedOldValue); @Override void invalidateOnRemote(EntryEventImpl event, boolean invokeCallbacks,
      boolean forceNewEntry); @Override void checkSupportsRegionDestroy(); @Override void checkSupportsRegionInvalidate(); @Override void checkSupportsRegionClear(); @Override Set getBucketKeys(LocalRegion localRegion, int bucketId, boolean allowTombstones); @Override Entry getEntryOnRemote(KeyInfo key, LocalRegion localRegion, boolean allowTombstones); @Override ReentrantLock getLock(); @Override Set getRegionKeysForIteration(LocalRegion currRegion); @Override boolean isRealDealLocal(); @Override InternalDistributedMember getOriginatingMember(); @Override boolean isMemberIdForwardingRequired(); @Override TXCommitMessage getCommitMessage(); @Override void postPutAll(final DistributedPutAllOperation putallOp,
      final VersionedObjectList successfulPuts, InternalRegion reg); @Override void postRemoveAll(final DistributedRemoveAllOperation op,
      final VersionedObjectList successfulOps, InternalRegion reg); @Override void suspend(); @Override void resume(); @Override void recordTXOperation(ServerRegionDataAccess region, ServerRegionOperation op, Object key,
      Object arguments[]); @Override void updateEntryVersion(EntryEventImpl event); @Override boolean isTxState(); @Override boolean isTxStateStub(); @Override boolean isTxStateProxy(); @Override boolean isDistTx(); @Override boolean isCreatedOnDistTxCoordinator(); void setProxyServer(DistributedMember proxyServer); DistributedMember getProxyServer(); boolean hasPerformedAnyOperation();  }
@Test public void getOriginatingMemberReturnsNullIfNotOriginatedFromClient() { TXState txState = spy(new TXState(txStateProxy, false, disabledClock())); assertThat(txState.getOriginatingMember()).isSameAs(txStateProxy.getOnBehalfOfClientMember()); }