1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package org.apache.myfaces.orchestra.conversation.spring; 21 22 import org.apache.myfaces.orchestra.conversation.ConversationBindingEvent; 23 import org.apache.myfaces.orchestra.conversation.ConversationBindingListener; 24 25 /** 26 * A simple class to tidy up persistence contexts. 27 * <p> 28 * An instance of this class can be stored into the attributes of a specific 29 * Conversation object. Because it implements ConversationBindingListener, it 30 * receives a valueUnbound callback when the Conversation is terminated. It 31 * then closes the persistence context object associated with the Conversation. 32 */ 33 public class PersistenceContextCloser implements ConversationBindingListener 34 { 35 private final PersistenceContext persistenceContext; 36 37 public PersistenceContextCloser(PersistenceContext persistenceContext) 38 { 39 this.persistenceContext = persistenceContext; 40 } 41 42 public PersistenceContext getPersistenceContext() 43 { 44 return persistenceContext; 45 } 46 47 public void valueBound(ConversationBindingEvent event) 48 { 49 } 50 51 public void valueUnbound(ConversationBindingEvent event) 52 { 53 persistenceContext.close(); 54 } 55 }