Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java')
-rw-r--r--plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java124
1 files changed, 122 insertions, 2 deletions
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java
index b3e299bdc..7a0f8db68 100644
--- a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/IRuntimeWorkingCopy.java
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2003 IBM Corporation and others.
+ * Copyright (c) 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
@@ -15,17 +15,137 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.wst.server.core.model.IRuntimeWorkingCopyDelegate;
/**
+ * A working copy runtime object used for formulating changes
+ * to a runtime instance ({@link IRuntime}).
+ * <p>
+ * [issue: The default value of location and test environment
+ * should be specified here (or in IServerType.createRuntime).
+ * If the initial value is unsuitable for actual use, then
+ * save needs to deal with the case where the client forgets
+ * to initialize this property.]
+ * </p>
+ * <p>
+ * [issue: There can be other runtime-type-specific properties.
+ * The default values for these need to be specified somewhere
+ * too (probably in the API subclass of IRuntimeWorkingCopyDelegate).]
+ * </p>
+ * <p>
+ * [issue: IElementWorkingCopy and IElement support an open-ended set
+ * of attribute-value pairs. What is relationship between these
+ * attributes and (a) the get/setXXX methods found on this interface,
+ * and (b) get/setXXX methods provided by specific server types?
+ * Is it the case that these attribute-values pairs are the only
+ * information about a runtime instance that can be preserved
+ * between workbench sessions? That is, any information recorded
+ * just in instance fields of an IRuntimeDelegate implementation
+ * will be lost when the session ends.]
+ * </p>
+ * <p>
+ * This interface is not intended to be implemented by clients.
+ * </p>
+ * <p>
+ * <it>Caveat: The server core API is still in an early form, and is
+ * likely to change significantly before the initial release.</it>
+ * </p>
*
- * <p>This interface is not intended to be implemented by clients.</p>
+ * @since 1.0
*/
public interface IRuntimeWorkingCopy extends IRuntime, IElementWorkingCopy {
+
+ /**
+ * Returns the runtime instance that this working copy is
+ * associated with.
+ * <p>
+ * For a runtime working copy created by a call to
+ * {@link IRuntime#getWorkingCopy()},
+ * <code>this.getOriginal()</code> returns the original
+ * runtime object. For a runtime working copy just created by
+ * a call to {@link IRuntimeType#createRuntime(String)},
+ * <code>this.getOriginal()</code> returns <code>null</code>.
+ * </p>
+ *
+ * @return the associated runtime instance, or <code>null</code> if none
+ */
public IRuntime getOriginal();
+ /**
+ * Returns the delegate for this runtime working copy.
+ * The runtime working copy delegate is a
+ * runtime-type-specific object. By casting the runtime working copy
+ * delegate to the type prescribed in the API documentation for that
+ * particular runtime working copy type, the client can access
+ * runtime-type-specific properties and methods.
+ * <p>
+ * [issue: Exposing IRuntimeWorkingCopyDelegate to clients
+ * of IRuntimeWorkingCopy is same problem as exposing
+ * IRuntimeDelegate to clients of IRuntime. The suggested fix
+ * is to replace this method with something like
+ * getRuntimeWorkingCopyExtension() which
+ * returns an IRuntimeWorkingCopyExtension.]
+ * </p>
+ * <p>
+ * [issue: runtimeTypes schema, workingCopyClass attribute is optional.
+ * This suggests that a runtime need not provide a working copy
+ * delegate class. Like the class attribute, this seems implausible.
+ * I've spec'd this method as if working copy delegate is mandatory.]
+ * </p>
+ *
+ * @return the delegate for the runtime working copy
+ */
public IRuntimeWorkingCopyDelegate getWorkingCopyDelegate();
+ /**
+ * Sets the location of this runtime.
+ * <p>
+ * [issue: Explain what this "location" is.]
+ * </p>
+ *
+ * @param path the location of this runtime, or <code>null</code> if none
+ * @see IRuntime#getLocation()
+ */
public void setLocation(IPath path);
+ /**
+ * Commits the changes made in this working copy. If there is
+ * no extant runtime instance with a matching id and runtime
+ * type, this will create a runtime instance with attributes
+ * taken from this working copy. If there an existing runtime
+ * instance with a matching id and runtime type, this will
+ * change the runtime instance accordingly.
+ * <p>
+ * [issue: What is relationship to
+ * this.getOriginal() and the IRuntime returned by this.save()?
+ * The answer should be: they're the same runtime, for an
+ * appropriate notion of "same". As currently implemented, they
+ * are different IRuntime instances but have the same runtime
+ * id and same runtime types. Client that are hanging on to
+ * the old runtime instance will not see the changes.
+ * If IRuntime were some kind of handle object as elsewhere in
+ * Eclipse Platform, this kind of change could be done much
+ * more smoothly.]
+ * </p>
+ * <p>
+ * [issue: What if this object has already been saved
+ * or released?]
+ * </p>
+ * <p>
+ * [issue: What is lifecycle for IRuntimeWorkingCopyDelegate
+ * associated with this working copy?]
+ * </p>
+ *
+ * @param monitor a progress monitor, or <code>null</code> if progress
+ * reporting and cancellation are not desired
+ * @return a new runtime instance
+ * @throws CoreException [missing]
+ */
public IRuntime save(IProgressMonitor monitor) throws CoreException;
+ /**
+ * Sets whether this runtime can be used as a test environment.
+ *
+ * @param b <code>true</code> if this runtime can be use as a
+ * test environment, and <code>false</code> if it cannot
+ * @see IRuntime#isTestEnvironment()
+ */
public void setTestEnvironment(boolean b);
} \ No newline at end of file

Back to the top