blob: 12478e6d0237df04f4d99bcbd229292d7475d783 [file] [log] [blame]
package org.eclipse.core.runtime.model;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.core.internal.runtime.Assert;
/**
* An object which has the general characteristics of all elements
* in a plug-in manifest.
* <p>
* This class may be subclassed.
* </p>
*/
public abstract class PluginModelObject {
// DTD properties (included in plug-in manifest)
private String name = null;
// transient properties (not included in plug-in manifest)
private boolean readOnly = false;
/**
* Checks that this model object is writeable. A runtime exception
* is thrown if it is not.
*/
protected final void assertIsWriteable() {
Assert.isTrue(!isReadOnly(), "Model is read-only");
}
/**
* Returns the name of this element.
*
* @return the name of this element or <code>null</code>
*/
public String getName() {
return name;
}
/**
* Returns whether or not this model object is read-only.
*
* @return <code>true</code> if this model object is read-only,
* <code>false</code> otherwise
* @see #markReadOnly
*/
public boolean isReadOnly() {
return readOnly;
}
/**
* Sets this model object and all of its descendents to be read-only.
* Subclasses may extend this implementation.
*
* @see #isReadOnly
*/
public void markReadOnly() {
readOnly = true;
}
/**
* Sets the name of this element.
*
* @param value the new name of this element. May be <code>null</code>.
*/
public void setName(String value) {
assertIsWriteable();
name = value;
}
}