blob: 0a6964b75fdb6b9cb62d004f3cf3e480c32fcf9a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.internal.provisional.p2.core.repository;
import java.net.URL;
import java.util.EventObject;
/**
* An event indicating a repository was added, removed, changed,
* or discovered.
*
* @noextend This class is not intended to be subclassed by clients.
*/
public class RepositoryEvent extends EventObject {
private static final long serialVersionUID = 3082402920617281765L;
/**
* A change kind constant (value 0), indicating a repository was added to the
* list of repositories known to a repository manager.
*/
public static final int ADDED = 0;
/**
* A change kind constant (value 1), indicating a repository was removed from
* the list of repositories known to a repository manager.
*/
public static final int REMOVED = 1;
/**
* A change kind constant (value 2), indicating a repository known to a
* repository manager was modified.
*/
public static final int CHANGED = 2;
/**
* A change kind constant (value 4), indicating a new repository was discovered.
* This event is a way to notify repository managers in a generic way about
* a newly discovered repository. The repository manager will typically receive
* this event, add the repository to its list of known repositories, and issue
* a subsequent {@link #ADDED} event. Other clients should not typically
* listen for this kind of event.
*/
public static final int DISCOVERED = 4;
private final int kind, type;
/**
* Creates a new repository event.
*
* @param location the location of the repository that changed.
* @param repositoryType the type of repository that was changed
* @param kind the kind of change that occurred.
*/
public RepositoryEvent(URL location, int repositoryType, int kind) {
super(location);
this.kind = kind;
this.type = repositoryType;
}
/**
* Returns the kind of change that occurred.
*
* @return the kind of change that occurred.
* @see #ADDED
* @see #REMOVED
* @see #CHANGED
* @see #DISCOVERED
*/
public int getKind() {
return kind;
}
/**
* Returns the location of the repository associated with this event.
*
* @return the location of the repository associated with this event.
*/
public URL getRepositoryLocation() {
return (URL) getSource();
}
/**
* Returns the type of repository associated with this event. Clients
* should not assume that the set of possible repository types is closed;
* clients should ignore events from repository types they don't know about.
*
* @return the type of repository associated with this event.
* ({@link IRepository#TYPE_METADATA} or {@link IRepository#TYPE_ARTIFACT}).
*/
public int getRepositoryType() {
return type;
}
}