Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/prov/installregistry/IInstallRegistry.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/prov/installregistry/IInstallRegistry.java171
1 files changed, 171 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/prov/installregistry/IInstallRegistry.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/prov/installregistry/IInstallRegistry.java
new file mode 100644
index 000000000..3cbc8b8f5
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/prov/installregistry/IInstallRegistry.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.prov.installregistry;
+
+import java.util.Collection;
+import org.eclipse.equinox.prov.engine.Profile;
+
+public interface IInstallRegistry {
+
+ /**
+ * Save the registry as XML. If exception is thrown, no change was made.
+ */
+ // public void saveXML() throws IOException {
+ // checkMetadata();
+ // File xmlFile = getLocation();
+ // plog.start(plog.debug("Saving {0}", xmlFile)); //$NON-NLS-1$
+ // if (isEmpty()) { // delete when empty
+ // xmlFile.delete();
+ // if (xmlFile.exists()) {
+ // throw new IOException(NLS.bind(Messages.InstallRegistry_Failed_To_Delete_Install_Registry, xmlFile));
+ // }
+ // } else {
+ // new FileUtil.SafeUpdate(xmlFile) {
+ // public void write(FileOutputStream stream) throws IOException {
+ // XMLWriter writer = new XMLWriter(stream, XML.getProcessingInstruction());
+ // XML.write(writer);
+ // writer.flush();
+ // stream.getFD().sync();
+ // writer.close();
+ // }
+ // }.write();
+ // }
+ // plog.stop();
+ // }
+ // private static class XML implements InstallRegistryXML {
+ // public static XMLWriter.ProcessingInstruction getProcessingInstruction() {
+ // return new XMLWriter.ProcessingInstruction(PI.INSTALL_REGISTRY, MetaInfo.formatVersion(MetaInfo.INSTALL_REGISTRY_VERSION));
+ // }
+ //
+ // public static void write(XMLWriter writer) {
+ // InstallRegistry ir = InstallRegistry.getInstance();
+ // writer.start(Elements.INSTALL_REGISTRY);
+ // writer.write(ir.profileRegistry.getProperties());
+ // for (Iterator i = ir.getProfileInstallRegistries().iterator(); i.hasNext();) {
+ // ProfileInstallRegistry registry = (ProfileInstallRegistry) i.next();
+ // if (!registry.isEmpty()) {
+ // writer.start(Elements.PROFILE);
+ // Profile profile = registry.getProfile();
+ // writer.attribute(Attrs.ID, profile.getProfileId());
+ // writer.attribute(Attrs.KIND, profile.getProfileKind());
+ // writer.writeProperty(Profile.INSTALL_LOCATION, profile.getInstallLocation());
+ // writer.write(profile.getAllData());
+ // InstallContext rootContext = profile.getRootContext();
+ // if (rootContext != null) {
+ // write(writer, rootContext);
+ // }
+ // registry.emitXML(writer);
+ // writer.end(Elements.PROFILE);
+ // }
+ // }
+ // writer.end(Elements.INSTALL_REGISTRY);
+ // }
+ //
+ // private static void write(XMLWriter writer, InstallContext installContext) {
+ // writer.start(Elements.INSTALL_CONTEXT);
+ // writer.attribute(Attrs.ID, installContext.getId());
+ // writer.attribute(Attrs.NAME, installContext.getName());
+ // writer.attribute(Attrs.DESCRIPTION, installContext.getDescription());
+ // writer.attribute(Attrs.SHAREABLE, installContext.isShareable(), true);
+ // writer.attribute(Attrs.QUALIFIABLE, installContext.isQualifiable(), false);
+ // InstallationContextScope scope = installContext.getScope();
+ // if (scope != InstallationContextScope.NONE_SCOPE) {
+ // writer.attribute(Attrs.SCOPE, scope.getName());
+ // }
+ // writer.write(installContext.getLocalProperties());
+ // String[] adapterTypes = installContext.getAdaptorTypes();
+ // for (int i = 0; i < adapterTypes.length; i += 1) {
+ // writer.start(Elements.ADAPTER);
+ // writer.attribute(Attrs.TYPE, adapterTypes[i]);
+ // writer.end();
+ // }
+ // InstallContext[] subcontexts = installContext.getSubcontexts();
+ // for (int i = 0; i < subcontexts.length; i += 1) {
+ // write(writer, subcontexts[i]);
+ // }
+ // writer.end(Elements.INSTALL_CONTEXT);
+ // }
+ // }
+ // /**
+ // * The file of the install registry.
+ // */
+ // public File getLocation() {
+ // return this.location;
+ // }
+ // // The location of the old install registry directory.
+ // // This is where the metadata is still stored.
+ // private File getLegacyLocation(String subdir) {
+ // String path = getLocation().getPath();
+ // if (path.endsWith(CommonDef.Extensions.Xml)) {
+ // path = path.substring(0, path.length() - CommonDef.Extensions.Xml.length());
+ // } else {
+ // path += ".dir"; //$NON-NLS-1$
+ // }
+ // return new File(path, subdir);
+ // }
+ public abstract IProfileInstallRegistry getProfileInstallRegistry(Profile profile);
+
+ /**
+ * Open the install registry. It must be open before any operations can be performed.
+ */
+ // public void open() throws IOException {
+ // // openFile(Agent.getInstance().getInstallRegistryLocation());
+ // }
+ //
+ // // This form is for AbstractAgentTestCase because the preferences aren't set correctly
+ // // when it needs the install registry.
+ // public void open(File dir) throws IOException {
+ // openFile(new File(dir, Agent.FILENAME_INSTALL_REGISTRY));
+ // }
+ //
+ // private void openFile(File file) throws IOException {
+ // if (isOpen()) {
+ // throw new InstallRegistryException(Messages2.InstallRegistry_Install_Registry_Is_Already_Open);
+ // }
+ // this.location = file;
+ // if (this.location.isDirectory()) {
+ // throw new InstallRegistryException(NLS.bind(Messages2.InstallRegistry_Install_Registry_Exists_And_Is_A_Directory, this.location));
+ // } else if (!this.location.exists()) {
+ // // verify we can write it
+ // this.location.getParentFile().mkdirs();
+ // new FileOutputStream(this.location).close();
+ // this.location.delete();
+ // }
+ //
+ // // TODO: move to cache
+ // File metadataDir = getLegacyLocation(METADATA_DIR);
+ // try {
+ // this.metadataRepo = StandardRepository.create(this.installedMetadata.getRepositoryGroup(), metadataDir);
+ // } catch (RuntimeException e) {
+ // // report error below
+ // }
+ // if (this.metadataRepo == null) {
+ // throw new InstallRegistryException(NLS.bind(Messages.InstallRegistry_Failed_To_Create_Install_Registry_Repo, metadataDir));
+ // }
+ // this.metadataRepo.setOpen(true);
+ // load();
+ // checkMetadata();
+ // }
+ //
+ // public void close() {
+ // this.installedMetadata.getRepositoryGroup().removeRepository(this.metadataRepo);
+ // this.metadataRepo = null;
+ // if (isEmpty()) {
+ // purge();
+ // }
+ // }
+ // public void purge() {
+ // getLocation().delete();
+ // FileUtil.rm_r(getLegacyLocation(""), /*removeRoot*/true); //$NON-NLS-1$
+ // }
+ public abstract Collection getProfileInstallRegistries();
+
+} \ No newline at end of file

Back to the top