001package org.granite.tide.data;
002
003import javax.transaction.Synchronization;
004
005import org.granite.tide.data.DataEnabled.PublishMode;
006
007
008public class TideDataPublishingSynchronization implements Synchronization {
009        
010        private final boolean removeContext;
011        
012        public TideDataPublishingSynchronization(boolean removeContext) {
013                this.removeContext = removeContext;
014        }
015
016        public void beforeCompletion() {
017                DataContext.publish(PublishMode.ON_COMMIT);
018                if (removeContext)
019                        DataContext.remove();
020        }
021
022        public void afterCompletion(int status) {
023                if (removeContext)
024                        DataContext.remove();
025        }
026        
027}