blob: 7ea86712493e248d9580f98ea38d1abca3c20fe2 [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.savan.subscription;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ServiceContext;
import org.apache.savan.SavanException;
import org.apache.savan.SavanMessageContext;
import org.apache.savan.storage.SubscriberStore;
import org.apache.savan.subscribers.AbstractSubscriber;
import org.apache.savan.subscribers.Subscriber;
import org.apache.savan.util.CommonUtil;
/**
* Abstractly defines subscription methods.
* Each protocol may extend this to add its own work.
*/
public abstract class SubscriptionProcessor {
public abstract void init (SavanMessageContext smc) throws SavanException;
public void unsubscribe(SavanMessageContext endSubscriptionMessage) throws SavanException {
String subscriberID = getSubscriberID (endSubscriptionMessage);
if (subscriberID==null) {
String message = "Cannot find the subscriber ID";
throw new SavanException (message);
}
SubscriberStore store = endSubscriptionMessage.getSubscriberStore();
if (store==null)
throw new SavanException ("AbstractSubscriber store not found");
store.delete (subscriberID);
}
public void renewSubscription(SavanMessageContext renewMessage) throws SavanException {
SubscriberStore store = renewMessage.getSubscriberStore();
if (store==null)
throw new SavanException ("AbstractSubscriber store not found");
ExpirationBean bean = getExpirationBean(renewMessage);
AbstractSubscriber subscriber = (AbstractSubscriber) store.retrieve(bean.getSubscriberID());
if (subscriber==null) {
throw new SavanException ("Given subscriber is not present");
}
subscriber.renewSubscription(bean);
}
public void subscribe(SavanMessageContext subscriptionMessage) throws SavanException {
SubscriberStore store = subscriptionMessage.getSubscriberStore();
if (store==null)
throw new SavanException ("AbstractSubscriber store not found");
if (store==null)
throw new SavanException ("Sabscriber store not found");
Subscriber subscriber = getSubscriberFromMessage (subscriptionMessage);
store.store (subscriber);
}
public void endSubscription(String subscriberID,String reason,ServiceContext serviceContext) throws SavanException {
SubscriberStore store =CommonUtil.getSubscriberStore(serviceContext.getAxisService());
if (store==null) {
//TODO do something
}
Subscriber subscriber = store.retrieve(subscriberID);
doProtocolSpecificEndSubscription(subscriber,reason,serviceContext.getConfigurationContext());
store.delete(subscriberID);
}
public abstract void pauseSubscription (SavanMessageContext pauseSubscriptionMessage) throws SavanException;
public abstract void resumeSubscription (SavanMessageContext resumeSubscriptionMessage) throws SavanException;
public abstract Subscriber getSubscriberFromMessage (SavanMessageContext smc) throws SavanException;
public abstract ExpirationBean getExpirationBean (SavanMessageContext renewMessage) throws SavanException;
public abstract String getSubscriberID (SavanMessageContext smc) throws SavanException;
public abstract void doProtocolSpecificEndSubscription (Subscriber subscriber,String reason,ConfigurationContext configurationContext) throws SavanException;
}