Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/Supplementer.java')
-rw-r--r--bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/Supplementer.java233
1 files changed, 0 insertions, 233 deletions
diff --git a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/Supplementer.java b/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/Supplementer.java
deleted file mode 100644
index 20ec8b78e..000000000
--- a/bundles/org.eclipse.equinox.weaving.hook/src/org/eclipse/equinox/service/weaving/Supplementer.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 Martin Lippert 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:
- * David Knibb initial implementation
- * Martin Lippert supplementing mechanism reworked
- * Martin Lippert fragment handling fixed
- *******************************************************************************/
-
-package org.eclipse.equinox.service.weaving;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.Bundle;
-
-/**
- * A supplementer object is created for every bundle that contains one or many
- * of the supplementer headers in its header.
- *
- * The corresponding supplementer object contains the information which headers
- * the bundle defines and which bundles it supplements in the running system.
- *
- * @author Martin Lippert
- */
-public class Supplementer {
-
- private final ManifestElement[] supplementBundle;
-
- private final Set<Bundle> supplementedBundles; // elements of type Bundle
-
- private final Bundle supplementer;
-
- private final Bundle supplementerHost;
-
- private final ManifestElement[] supplementExporter;
-
- private final ManifestElement[] supplementImporter;
-
- /**
- * Creates a supplementer object for the given bundle.
- *
- * @param bundle The bundle that defines the supplementer headers
- * @param bundleHost The host bundle of the supplementer bundle, if the
- * bundle is a fragment, otherwise null
- * @param supplementBundle The parsed manifest headers defined for
- * Eclipse-SupplementBundle
- * @param supplementImporter The parsed manifest headers defined for
- * Eclipse-SupplementImporter
- * @param supplementExporter The parsed manifest headers defined for
- * Eclipse-SupplementExporter
- */
- public Supplementer(final Bundle bundle, final Bundle bundleHost,
- final ManifestElement[] supplementBundle,
- final ManifestElement[] supplementImporter,
- final ManifestElement[] supplementExporter) {
- this.supplementer = bundle;
- this.supplementerHost = bundleHost != null ? bundleHost : bundle;
- this.supplementBundle = supplementBundle;
- this.supplementImporter = supplementImporter;
- this.supplementExporter = supplementExporter;
- this.supplementedBundles = new HashSet<Bundle>();
- }
-
- /**
- * Add a bundle to the list of supplemented bundles
- *
- * @param supplementedBundle The bundle that is supplemented by this
- * supplementer
- */
- public void addSupplementedBundle(final Bundle supplementedBundle) {
- this.supplementedBundles.add(supplementedBundle);
- }
-
- /**
- * Gives information about which bundles are currently supplemented by this
- * supplementer
- *
- * @return The currently supplemented bundles
- */
- public Bundle[] getSupplementedBundles() {
- return supplementedBundles.toArray(new Bundle[supplementedBundles
- .size()]);
- }
-
- /**
- * Returns the bundle that defines the supplementer headers (this
- * supplementer object belongs to)
- *
- * @return The bundle object this supplementer belongs to
- */
- public Bundle getSupplementerBundle() {
- return supplementer;
- }
-
- /**
- * Returns the host of the supplementer bundle, if it is a fragment,
- * otherwise this returns the same as getSupplementerBundle()
- *
- * @return The host bundle this supplementer belongs to
- */
- public Bundle getSupplementerHost() {
- return supplementerHost;
- }
-
- /**
- * The symbolic name of the supplementer bundle
- *
- * @return The symbolic name of the supplementer bundle
- */
- public String getSymbolicName() {
- return supplementer.getSymbolicName();
- }
-
- /**
- * Provides information about whether a given bundle is supplemented by this
- * supplementer or not
- *
- * @param bundle The bundle that might be supplemented by this supplementer
- * @return true, if the bundle is supplemented by this supplementer,
- * otherwise false
- */
- public boolean isSupplemented(final Bundle bundle) {
- return supplementedBundles.contains(bundle);
- }
-
- /**
- * Checks if the given export-package header definitions matches the
- * supplement-exporter definitions of this supplementer
- *
- * @param exports The headers to check for matching against this
- * supplementer
- * @return true, if this supplementer matches against the given
- * export-package headers
- */
- public boolean matchesSupplementExporter(final ManifestElement[] exports) {
- boolean matches = false;
-
- if (supplementExporter != null)
- for (int i = 0; !matches && i < supplementExporter.length; i++) {
- final ManifestElement supplementExport = supplementExporter[i];
- for (int j = 0; !matches && j < exports.length; j++) {
- final ManifestElement exportPackage = exports[j];
- if (supplementExport.getValue().equals(
- exportPackage.getValue())) matches = true;
- }
- }
-
- return matches;
- }
-
- /**
- * Checks if the given import-package header definitions matches the
- * supplement-importer definitions of this supplementer
- *
- * @param imports The headers to check for matching against this
- * supplementer
- * @return true, if this supplementer matches against the given
- * import-package headers
- */
- public boolean matchesSupplementImporter(final ManifestElement[] imports) {
- boolean matches = false;
-
- if (supplementImporter != null)
- for (int i = 0; !matches && i < supplementImporter.length; i++) {
- final ManifestElement supplementImport = supplementImporter[i];
- for (int j = 0; !matches && j < imports.length; j++) {
- final ManifestElement importPackage = imports[j];
- if (supplementImport.getValue().equals(
- importPackage.getValue())) matches = true;
- }
- }
-
- return matches;
- }
-
- /**
- * Checks if the given bundle symbolic name definition matches the
- * supplement-bundle definition of this supplementer
- *
- * @param symbolicName The symbolic name of the bundle that shoudl be
- * checked
- * @return true, if this supplementer matches against the given bundle
- * symbolic name
- */
- public boolean matchSupplementer(final String symbolicName) {
- boolean matches = false;
-
- if (supplementBundle != null)
- for (int i = 0; !matches && i < supplementBundle.length; i++) {
- final ManifestElement bundle = supplementBundle[i];
- if (equals_wild(bundle.getValue(), symbolicName))
- matches = true;
- }
-
- return matches;
- }
-
- /**
- * Removes the given bundle from the set of supplemented bundles (that are
- * supplemented by this supplementer)
- *
- * @param supplementedBundle The bundle that is no longer supplemented by
- * this supplementer
- */
- public void removeSupplementedBundle(final Bundle supplementedBundle) {
- this.supplementedBundles.remove(supplementedBundle);
- }
-
- //knibb
- //test if two Strings are equal
- //with wild card support - only supports strings ending in *
- private boolean equals_wild(final String input, final String match) {
- if (input.equals(match)) {
- //its a match so just return true
- return true;
- }
- if (input.endsWith("*") == false) {
- //no wildcards are being used here
- return false;
- }
- final String wild_in = input.substring(0, input.length() - 1);
- if (match.startsWith(wild_in)) return true;
-
- return false;
- }
-
-}

Back to the top