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 java.io.File;
015:
016: import org.tmatesoft.svn.core.SVNException;
017: import org.tmatesoft.svn.core.SVNURL;
018:
019: /**
020: * The <b>ISVNPropertyHandler</b> interface should be implemented
021: * to be further provided to <b>SVNWCClient</b>'s property managing
022: * methods for handling properties. Those methods that receive a
023: * developer's property handler as a parameter call one of the handler's
024: * <b>handleProperty()</b> methods on every successful setting or
025: * getting a property.
026: *
027: * <p>
028: * If the aim is to get a property (the following behaviour is the same for versioned and unversioned):
029: * <ul><li>
030: * the property obtained is wrapped into an <b>SVNPropertyData</b>
031: * object and passed to an appropriate <b>handleProperty()</b> method
032: * where it's up to a developer how to process it.
033: * </li></ul>
034: * If the aim is to set a property (the following behaviour is the same for versioned and unversioned):
035: * <ul><li>
036: * the property successfully set is also wrapped into an <b>SVNPropertyData</b>
037: * object and passed to an appropriate <b>handleProperty()</b> method
038: * to notify a developer.
039: * </li></ul>
040: *
041: * @version 1.1.1
042: * @author TMate Software Ltd.
043: * @see SVNPropertyData
044: * @see SVNWCClient
045: */
046: public interface ISVNPropertyHandler {
047: /**
048: * This is just a default implementation which does nothing.
049: * Provided to property managing methods of {@link SVNWCClient} when
050: * there's no need to take any processing on properties. For example, when only
051: * needing to set a property without any additional handling that
052: * property - use this default handler.
053: */
054: public static ISVNPropertyHandler NULL = new ISVNPropertyHandler() {
055: public void handleProperty(File path, SVNPropertyData property) {
056: }
057:
058: public void handleProperty(SVNURL url, SVNPropertyData property) {
059: }
060:
061: public void handleProperty(long revision,
062: SVNPropertyData property) {
063: }
064: };
065:
066: /**
067: * Handles local item's properties (located in a Working Copy).
068: * Not called for revision properties.
069: *
070: * @param path an item's path
071: * @param property an item's versioned property
072: * @throws SVNException
073: */
074: public void handleProperty(File path, SVNPropertyData property)
075: throws SVNException;
076:
077: /**
078: * Handles remote item's properies (located in a repository).
079: * Not called for revision properties.
080: *
081: * @param url an item's repository location
082: * @param property an item's versioned property
083: * @throws SVNException
084: */
085: public void handleProperty(SVNURL url, SVNPropertyData property)
086: throws SVNException;
087:
088: /**
089: * Handles a revision property. <b>SVNWCClient</b>'s methods operating on
090: * revision properties call this method to handle properties.
091: *
092: * @param revision a repository revision which <code>property</code>
093: * is to be handled
094: * @param property a revision (unversioned) property
095: * @throws SVNException
096: * @see SVNWCClient
097: */
098: public void handleProperty(long revision, SVNPropertyData property)
099: throws SVNException;
100: }
|