package com.voxeo.moho.presence.impl; import java.util.Map; import com.voxeo.moho.event.AcceptableEvent.Reason; import com.voxeo.moho.event.PublishEvent; import com.voxeo.moho.event.SubscribeEvent; import com.voxeo.moho.presence.PresenceService; import com.voxeo.moho.presence.sip.SIPPresenceService; import com.voxeo.moho.sip.SIPPublishEvent; import com.voxeo.moho.sip.SIPSubscribeEvent; import com.voxeo.moho.spi.ExecutionContext; public class PresenceServiceImpl implements PresenceService { private ExecutionContext _context; private SIPPresenceService _sipPesenceService; @Override public void doSubscribe(SubscribeEvent event) { if (event instanceof SIPSubscribeEvent) { if (_sipPesenceService == null) { _sipPesenceService = _context.getService(SIPPresenceService.class); } _sipPesenceService.doSubscribe((SIPSubscribeEvent) event); } else { event.reject(Reason.DECLINE); } } @Override public void doPublish(PublishEvent event) { if (event instanceof SIPPublishEvent) { if (_sipPesenceService == null) { _sipPesenceService = _context.getService(SIPPresenceService.class); } _sipPesenceService.doPublish((SIPPublishEvent) event); } else { event.reject(Reason.DECLINE); } } @Override public void init(ExecutionContext context, Map<String, String> props) throws Exception { _context = context; } @Override public void destroy() { if (_sipPesenceService != null) { _sipPesenceService.destroy(); _sipPesenceService = null; } } @Override public String getName() { return PresenceService.class.getName(); } }