001    package org.granite.tide.data;
002    
003    import javax.transaction.Synchronization;
004    
005    import org.granite.tide.data.DataEnabled.PublishMode;
006    
007    
008    public 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    }