001: /*
002: * ====================================================================
003: * Copyright (c) 2004-2008 TMate Software Ltd. All rights reserved.
004: *
005: * This software is licensed as described in the file COPYING, which
006: * you should have received as part of this distribution. The terms
007: * are also available at http://svnkit.com/license.html
008: * If newer versions of this license are posted there, you may use a
009: * newer version instead, at your option.
010: * ====================================================================
011: */
012: package org.tmatesoft.svn.core.wc;
013:
014: import org.tmatesoft.svn.core.ISVNCanceller;
015: import org.tmatesoft.svn.core.SVNException;
016:
017: /**
018: * The <b>ISVNEventHandler</b> interface should be implemented in
019: * order to be further provided to an <b>SVN</b>*<b>Client</b>
020: * object as a handler of a sequence of events generated by
021: * <b>SVN</b>*<b>Client</b>'s do*() methods.
022: *
023: * <p>
024: * This is a way how a custom event handler can be registered:
025: * <pre class="javacode">
026: * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.ISVNOptions;
027: * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.SVNWCUtil;
028: * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.SVNClientManager;
029: * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.ISVNEventHandler;
030: * ...
031: *
032: * ISVNOptions options = SVNWCUtil.createDefaultOptions(<span class="javakeyword">true</span>);
033: * String authName = <span class="javastring">"myName"</span>;
034: * String authPassword = <span class="javastring">"myPassword"</span>;
035: * SVNClientManager clientManager = SVNClientManager.newInstance(options, authName, authPassword);
036: * clientManager.getCommitClient().setEventHandler(<span class="javakeyword">new</span> ISVNEventHandler(){
037: * <span class="javakeyword">public void</span> handleEvent(SVNEvent event, <span class="javakeyword">double</span> progress){
038: * <span class="javacomment">//handle event here</span>
039: * }
040: *
041: * <span class="javakeyword">public void</span> checkCancelled() <span class="javakeyword">throws</span> SVNCancelException {
042: * <span class="javacomment">//handle cancel of the operation - throw SVNCancelException</span>
043: * }
044: * });</pre>
045: * <br />
046: * or like this:
047: * <pre class="javacode">
048: * ...
049: * <span class="javakeyword">import</span> org.tmatesoft.svn.core.wc.SVNCommitClient;
050: * ...
051: *
052: * ISVNOptions options = SVNWCUtil.createDefaultOptions(<span class="javakeyword">true</span>);
053: * SVNCommitClient commitClient = new SVNCommitClient(null, options);
054: * commitClient.setEventHandler(<span class="javakeyword">new</span> ISVNEventHandler(){
055: * ...
056: * });</pre>
057: * </p>
058: * <p>
059: * All calls to <b>handleEvent()</b> and <b>checkCancelled()</b> methods
060: * are synchronous - that is the caller is blocked till a method
061: * finishes.
062: *
063: * @version 1.1.1
064: * @author TMate Software Ltd.
065: * @see SVNEvent
066: * @see <a target="_top" href="http://svnkit.com/kb/examples/">Examples</a>
067: *
068: */
069: public interface ISVNEventHandler extends ISVNCanceller {
070: /**
071: * Constant that is currently the value of the <code>progress</code>
072: * parameter (in {@link #handleEvent(SVNEvent, double) handleEvnt()})
073: */
074: public static final double UNKNOWN = -1;
075:
076: /**
077: * Handles the current event.
078: *
079: * <p>
080: * Generally all operations represented
081: * by do*() methods of <b>SVN</b>*<b>Client</b> objects are
082: * followed by generating a sequence of events that are passed to the
083: * registered <b>ISVNEventHandler</b> object for custom processing.
084: * For example, during an update operation each local item being modified
085: * is signaled about by dispatching a specific for this item <b>SVNEvent</b>
086: * object to this method where this event can be scrutinized and handled
087: * in a desired way.
088: *
089: * @param event the current event that keeps detailed information on
090: * the type of action occured and other attributes like path,
091: * status, etc.
092: *
093: * @param progress currently reserved for future use; now it's value
094: * is always set to {@link #UNKNOWN}
095: * @throws SVNException
096: */
097: public void handleEvent(SVNEvent event, double progress)
098: throws SVNException;
099:
100: }
|