/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.wc; import java.io.File; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.SVNURL; /** * The <b>ISVNPropertyHandler</b> interface should be implemented * to be further provided to <b>SVNWCClient</b>'s property managing * methods for handling properties. Those methods that receive a * developer's property handler as a parameter call one of the handler's * <b>handleProperty()</b> methods on every successful setting or * getting a property. * * <p> * If the aim is to get a property (the following behaviour is the same for versioned and unversioned): * <ul><li> * the property obtained is wrapped into an <b>SVNPropertyData</b> * object and passed to an appropriate <b>handleProperty()</b> method * where it's up to a developer how to process it. * </li></ul> * If the aim is to set a property (the following behaviour is the same for versioned and unversioned): * <ul><li> * the property successfully set is also wrapped into an <b>SVNPropertyData</b> * object and passed to an appropriate <b>handleProperty()</b> method * to notify a developer. * </li></ul> * * @version 1.3 * @author TMate Software Ltd. * @since 1.2 * @see SVNPropertyData * @see SVNWCClient */ public interface ISVNPropertyHandler { /** * This is just a default implementation which does nothing. * Provided to property managing methods of {@link SVNWCClient} when * there's no need to take any processing on properties. For example, when only * needing to set a property without any additional handling that * property - use this default handler. */ public static ISVNPropertyHandler NULL = new ISVNPropertyHandler() { public void handleProperty(File path, SVNPropertyData property) { } public void handleProperty(SVNURL url, SVNPropertyData property) { } public void handleProperty(long revision, SVNPropertyData property) { } }; /** * Handles local item's properties (located in a Working Copy). * Not called for revision properties. * * @param path an item's path * @param property an item's versioned property * @throws SVNException */ public void handleProperty(File path, SVNPropertyData property) throws SVNException; /** * Handles remote item's properies (located in a repository). * Not called for revision properties. * * @param url an item's repository location * @param property an item's versioned property * @throws SVNException */ public void handleProperty(SVNURL url, SVNPropertyData property) throws SVNException; /** * Handles a revision property. <b>SVNWCClient</b>'s methods operating on * revision properties call this method to handle properties. * * @param revision a repository revision which <code>property</code> * is to be handled * @param property a revision (unversioned) property * @throws SVNException * @see SVNWCClient */ public void handleProperty(long revision, SVNPropertyData property) throws SVNException; }