litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.orsup.base; import java.io.*; import org.litesoft.changemanagement.*; import org.litesoft.commonfoundation.typeutils.*; import org.litesoft.core.*; import org.litesoft.orsup.transact.*; public class CacheMaintainer implements TransactionCommitListener { public static void create( Finder pFinder, CacheMaintenanceListener pListener ) { Objects.assertNotNull( "Finder", pFinder ); Objects.assertNotNull( "Listener", pListener ); CacheMaintainer zMaintainer = new CacheMaintainer( pListener, pFinder.getNextSequenceNumber( "CacheMaintainer" ) ); pFinder.getTransactionCommitListenerManager().addListener( zMaintainer ); zMaintainer.registerForChangesFromClusterPeers(); } private void registerForChangesFromClusterPeers() { getMasterCLM().addListener( new MyChangeListener(), mListener.getClass() ); } private void sendChangesToClusterPeers( Serializable pCacheUpdate ) { String zName = mListener.getClass().getName(); ServerStateChange zChange = new ServerStateChange( ServerStateChange.Action.UPDATED, // zName, // ChangedObjectTypeName mOurID, // ChangedObjectUniqueKey null, // ChangedObjectDisplayValue pCacheUpdate ); getMasterCLM().notifyAllRemoteListeners( new ServerStateChangeSet( mOurID, // SourceUniqueID zName, // SourceClassname zChange ) ); } private ChangeListenerManager getMasterCLM() { DataStore zMasterDataStore = ServerContext.getMasterServerStore().get( DataStore.class ); Objects.assertNotNull( "MasterDataStore", zMasterDataStore ); return zMasterDataStore.getChangeListenerManager(); } private CacheMaintainer( CacheMaintenanceListener pListener, Long pOurID ) { mListener = pListener; mOurID = pOurID; } private CacheMaintenanceListener mListener; private Long mOurID; @Override public TransactionSuccessfulCommitCallBack aboutToCommit( PersistentObject[] pCommitParticipants ) { Serializable zResult = mListener.aboutToCommit( pCommitParticipants ); return (zResult != null) ? new MyCallBack( zResult ) : null; } private class MyCallBack implements TransactionSuccessfulCommitCallBack { private Serializable mResult; public MyCallBack( Serializable pResult ) { mResult = pResult; } @Override public void commitSucceeded() { sendChangesToClusterPeers( mResult ); mListener.updateCache( mResult ); } } private class MyChangeListener implements ServerStateChangedListener { @Override public void serverStateChanged( ServerStateChangeSet pServerStateChangeSet ) { for ( ServerStateChange zChange : pServerStateChangeSet.getChanges() ) { mListener.updateCache( (Serializable) zChange.getExtraInfo() ); } } } } |
Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/orsup/base/CacheMaintainer.java
Revision | Author | Commited | Message |
---|---|---|---|
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
804 Diff | GeorgeS | Wed 15 Aug, 2012 12:48:51 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
24 Diff | GeorgeS | Wed 24 Feb, 2010 01:51:38 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |