001    /**
002     * Copyright 2005-2012 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.ksb.messaging;
017    
018    import org.kuali.rice.core.api.util.io.SerializationUtils;
019    import org.kuali.rice.ksb.api.KsbApiServiceLocator;
020    import org.kuali.rice.ksb.api.messaging.AsynchronousCall;
021    
022    import javax.persistence.*;
023    import java.io.Serializable;
024    
025    /**
026     * Holds message payload content.  Needed to proxy the content so we don't have to 
027     * take the hit when grabbing large amounts of persisted messages at time.
028     * 
029     * @author Kuali Rice Team (rice.collab@kuali.org)
030     *
031     */
032    @Entity
033    @Table(name="KRSB_MSG_PYLD_T")
034    public class PersistedMessagePayload implements Serializable {
035        
036        private static final long serialVersionUID = 508778527504899029L;
037        
038        @Id
039            @Column(name="MSG_QUE_ID")
040            private Long routeQueueId;
041        @Lob
042            @Basic(fetch=FetchType.LAZY)
043            @Column(name="MSG_PYLD", length=4000)
044            private String payload;
045        @Transient
046        private AsynchronousCall methodCall;
047        @Transient
048        private PersistedMessageBO message;
049        
050        public PersistedMessagePayload() {}
051        
052        public PersistedMessagePayload (AsynchronousCall methodCall, PersistedMessageBO message) {
053            this.setPayload(SerializationUtils.serializeToBase64(methodCall));
054            this.methodCall = methodCall;
055            this.message = message;
056        }
057        
058        public String getPayload() {
059            return this.payload;
060        }
061        public void setPayload(String payload) {
062            this.payload = payload;
063        }
064        public Long getRouteQueueId() {
065            return this.routeQueueId;
066        }
067        public void setRouteQueueId(Long routeQueueId) {
068            this.routeQueueId = routeQueueId;
069        }
070        public AsynchronousCall getMethodCall() {
071            if (this.methodCall != null) {
072                return this.methodCall;
073            } 
074            this.methodCall = (AsynchronousCall) SerializationUtils.deserializeFromBase64(getPayload());
075            return this.methodCall;
076        }
077    
078        public PersistedMessageBO getMessage() {
079            return this.message;
080        }
081    
082        public void setMessage(PersistedMessageBO message) {
083            this.message = message;
084        }
085    
086        public void setMethodCall(AsynchronousCall methodCall) {
087            this.methodCall = methodCall;
088        }
089        
090    
091    }
092