13742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// /Copyright 2003-2005 Arthur van Hoff, Rick Blair
23742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// Licensed under Apache License version 2.0
33742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// Original license LGPL
43742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
53742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpackage javax.jmdns.impl;
63742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
73742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.JmDNS;
83742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.ServiceEvent;
93742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.ServiceInfo;
103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * ServiceEvent.
133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @author Werner Randelshofer, Rick Blair
153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/**
173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman *
183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */
193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpublic class ServiceEventImpl extends ServiceEvent {
203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private static final long serialVersionUID = 7107973622016897488L;
243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    // private static Logger logger = Logger.getLogger(ServiceEvent.class.getName());
253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * The type name of the service.
273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final String      _type;
293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * The instance name of the service. Or null, if the event was fired to a service type listener.
313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final String      _name;
333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * The service info record, or null if the service could be be resolved. This is also null, if the event was fired to a service type listener.
353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    private final ServiceInfo _info;
373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /**
393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * Creates a new instance.
403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *
413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param jmDNS
423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *            the JmDNS instance which originated the event.
433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param type
443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *            the type name of the service.
453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param name
463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *            the instance name of the service.
473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @param info
483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     *            the service info record, or null if the service could be be resolved.
493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public ServiceEventImpl(JmDNSImpl jmDNS, String type, String name, ServiceInfo info) {
513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        super(jmDNS);
523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        this._type = type;
533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        this._name = name;
543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        this._info = info;
553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.ServiceEvent#getDNS()
603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
623742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public JmDNS getDNS() {
633742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return (JmDNS) getSource();
643742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
653742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
663742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
673742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
683742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.ServiceEvent#getType()
693742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
703742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
713742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String getType() {
723742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _type;
733742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
743742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
753742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
763742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
773742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.ServiceEvent#getName()
783742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
793742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
803742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String getName() {
813742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _name;
823742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
833742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
843742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
853742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
863742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see java.util.EventObject#toString()
873742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
883742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
893742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public String toString() {
903742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        StringBuilder buf = new StringBuilder();
913742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("[" + this.getClass().getSimpleName() + "@" + System.identityHashCode(this) + " ");
923742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("\n\tname: '");
933742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append(this.getName());
943742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("' type: '");
953742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append(this.getType());
963742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("' info: '");
973742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append(this.getInfo());
983742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        buf.append("']");
993742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("' source: ");
1003742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("\n\t" + source + "");
1013742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        // buf.append("\n]");
1023742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return buf.toString();
1033742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
1043742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
1053742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
1063742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
1073742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.ServiceEvent#getInfo()
1083742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1093742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
1103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public ServiceInfo getInfo() {
1113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return _info;
1123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
1133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
1143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    /*
1153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * (non-Javadoc)
1163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     * @see javax.jmdns.ServiceEvent#clone()
1173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman     */
1183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    @Override
1193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    public ServiceEventImpl clone() {
1203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        ServiceInfoImpl newInfo = new ServiceInfoImpl(this.getInfo());
1213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman        return new ServiceEventImpl((JmDNSImpl) this.getDNS(), this.getType(), this.getName(), newInfo);
1223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman    }
1233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman
1243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman}
125