package eu.dnetlib.enabling.is.sn;

import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.wsaddressing.W3CEndpointReference;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import eu.dnetlib.common.rmi.BaseService;

/**
 * This is a basic notification invoker which calls dnet1.0 compatible notify() methods.
 * 
 * @author marko
 *
 */
public class NotificationInvokerImpl implements NotificationInvoker {
	/**
	 * logger.
	 */
	private static final Log log = LogFactory.getLog(NotificationInvokerImpl.class); // NOPMD by marko on 11/24/08 5:02 PM

	/** 
	 * {@inheritDoc}
	 * @see eu.dnetlib.enabling.is.sn.NotificationInvoker#send(javax.xml.ws.wsaddressing.W3CEndpointReference, eu.dnetlib.enabling.is.sn.NotificationMessage, int)
	 */
	public void send(final W3CEndpointReference destination, final NotificationMessage message, final int timeout) {
		final BaseService service = destination.getPort(BaseService.class, new WebServiceFeature[] {});
		log.info("phisically sending notification: " + message.getTopic());
		
		service.notify(message.getSubscriptionId(), message.getTopic(), message.getResourceId(), message.getBody());
	}

}
