Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRCommandProvider.java')
-rw-r--r--bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRCommandProvider.java810
1 files changed, 0 insertions, 810 deletions
diff --git a/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRCommandProvider.java b/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRCommandProvider.java
deleted file mode 100644
index 5598a4aaa..000000000
--- a/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/SCRCommandProvider.java
+++ /dev/null
@@ -1,810 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 1997-2011 by ProSyst Software GmbH
- * http://www.prosyst.com
- * 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:
- * ProSyst Software GmbH - initial API and implementation
- * Simon Archer - bug.id = 288783
- * Lazar Kirchev - bug.id = 320377
- *******************************************************************************/
-package org.eclipse.equinox.internal.ds;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.equinox.internal.ds.impl.ComponentInstanceImpl;
-import org.eclipse.equinox.internal.ds.model.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.component.ComponentConstants;
-
-/**
- * SCRCommandProvider class provides some useful commands for managing the Service Component Runtime
- *
- * @author Stoyan Boshev
- * @version 1.0
- */
-public class SCRCommandProvider implements CommandProvider {
-
- private Resolver resolver;
- private SCRManager scrManager;
-
- private int curID = 1;
- private Hashtable componentRefsIDs = null;
-
- protected SCRCommandProvider(SCRManager scrManager) {
- this.scrManager = scrManager;
- this.resolver = InstanceProcess.resolver;
- }
-
- public String getHelp() {
- return getHelp(null);
- }
-
- /*
- * This method either returns the help message for a particular command,
- * or returns the help messages for all commands (if commandName is null)
- */
- private String getHelp(String commandName) {
- boolean all = commandName == null;
- StringBuffer res = new StringBuffer(1000);
- if (all) {
- res.append("---").append(Messages.SCR).append("---\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- if (all || "list".equals(commandName) || "ls".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\tlist/ls [-c] [bundle id] - ").append(Messages.LIST_ALL_COMPONENTS); //$NON-NLS-1$
- res.append("\r\n\t\t\t").append(Messages.LIST_ALL_BUNDLE_COMPONENTS); //$NON-NLS-1$
- }
- if (all || "component".equals(commandName) || "comp".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\r\n\tcomponent/comp <component id> - ").append(Messages.PRINT_COMPONENT_INFO); //$NON-NLS-1$
- res.append("\r\n\t\t\t<component id> - ").append(Messages.COMPONENT_ID_DEFINIED_BY_LIST_COMMAND); //$NON-NLS-1$
- }
- if (all || "enable".equals(commandName) || "en".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\r\n\tenable/en <component id> - ").append(Messages.ENABLE_COMPONENT); //$NON-NLS-1$
- res.append("\r\n\t\t\t<component id> - ").append(Messages.COMPONENT_ID_DEFINIED_BY_LIST_COMMAND); //$NON-NLS-1$
- }
- if (all || "disable".equals(commandName) || "dis".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\n\tdisable/dis <component id> - ").append(Messages.DISABLE_COMPONENT); //$NON-NLS-1$
- res.append("\n\t\t\t<component id> - ").append(Messages.COMPONENT_ID_DEFINIED_BY_LIST_COMMAND); //$NON-NLS-1$
- }
- if (all || "enableAll".equals(commandName) || "enAll".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\r\n\tenableAll/enAll [bundle id] - ").append(Messages.ENABLE_ALL_COMPONENTS); //$NON-NLS-1$
- }
- if (all || "disableAll".equals(commandName) || "disAll".equals(commandName)) { //$NON-NLS-1$ //$NON-NLS-2$
- res.append("\n\tdisableAll/disAll [bundle id] - ").append(Messages.DISABLE_ALL_COMPONENTS).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return res.toString();
- }
-
- /**
- * Handle the list command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _list(CommandInterpreter intp) throws Exception {
- boolean completeInfo = false;
- Bundle b = null;
- String[] params = getParams(intp);
- if (params.length > 0) {
- if (params[0].equals("-c")) { //$NON-NLS-1$
- completeInfo = true;
- if (params.length > 1) {
- b = getBundle(intp, params[1]);
- if (b == null) {
- return;
- }
- }
- } else {
- b = getBundle(intp, params[0]);
- if (b == null) {
- return;
- }
- }
- }
- listComponents(intp, b, completeInfo);
- }
-
- /**
- * Shortcut to list command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _ls(CommandInterpreter intp) throws Exception {
- _list(intp);
- }
-
- /**
- * Handle the component command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _component(CommandInterpreter intp) throws Exception {
- String[] params = getParams(intp);
- if (params.length > 0) {
- int compIndex = -1;
- try {
- compIndex = Integer.parseInt(params[0]);
- } catch (NumberFormatException nfe) {
- intp.println(NLS.bind(Messages.WRONG_PARAMETER, params[0]));
- return;
- }
- printComponentDetails(intp, compIndex);
- return;
- }
- intp.println(Messages.EXPECTED_PARAMETER_COMPONENT_ID);
- }
-
- /**
- * Shortcut to component command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _comp(CommandInterpreter intp) throws Exception {
- _component(intp);
- }
-
- /**
- * Handle the enable command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _enable(CommandInterpreter intp) throws Exception {
- String[] params = getParams(intp);
- if (params.length > 0) {
- int compIndex = -1;
- try {
- compIndex = Integer.parseInt(params[0]);
- } catch (NumberFormatException nfe) {
- intp.println(NLS.bind(Messages.WRONG_PARAMETER, params[0]));
- return;
- }
- enableComponent(intp, compIndex);
- return;
- }
- intp.println(Messages.EXPECTED_PARAMETER_COMPONENT_ID);
- }
-
- /**
- * Shortcut to enable command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _en(CommandInterpreter intp) throws Exception {
- _enable(intp);
- }
-
- /**
- * Handle the disable command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _disable(CommandInterpreter intp) throws Exception {
- String[] params = getParams(intp);
- if (params.length > 0) {
- int compIndex = -1;
- try {
- compIndex = Integer.parseInt(params[0]);
- } catch (NumberFormatException nfe) {
- intp.println(NLS.bind(Messages.WRONG_PARAMETER, params[0]));
- return;
- }
- disableComponent(intp, compIndex);
- return;
- }
- intp.println(Messages.EXPECTED_PARAMETER_COMPONENT_ID);
- }
-
- /**
- * Shortcut to disable command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _dis(CommandInterpreter intp) throws Exception {
- _disable(intp);
- }
-
- /**
- * Handle the enableAll command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _enableAll(CommandInterpreter intp) throws Exception {
- String[] params = getParams(intp);
- Bundle b = null;
- if (params.length > 0) {
- b = getBundle(intp, params[0]);
- if (b == null) {
- return;
- }
- }
- enableAll(intp, b);
- }
-
- /**
- * Shortcut to enableAll command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _enAll(CommandInterpreter intp) throws Exception {
- _enableAll(intp);
- }
-
- /**
- * Handle the disableAll command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _disableAll(CommandInterpreter intp) throws Exception {
- String[] params = getParams(intp);
- Bundle b = null;
- if (params.length > 0) {
- b = getBundle(intp, params[0]);
- if (b == null) {
- return;
- }
- }
- disableAll(intp, b);
- }
-
- /**
- * Shortcut to disableAll command
- *
- * @param intp A CommandInterpreter object containing the command and it's arguments.
- */
- public void _disAll(CommandInterpreter intp) throws Exception {
- _disableAll(intp);
- }
-
- /**
- * Handles the help command
- *
- * @param intp
- * @return description for a particular command or false if there is no command with the specified name
- */
- public Object _help(CommandInterpreter intp) {
- String commandName = intp.nextArgument();
- if (commandName == null) {
- return Boolean.FALSE;
- }
- String help = getHelp(commandName);
-
- if (help.length() > 0) {
- return help;
- }
- return Boolean.FALSE;
- }
-
- private String[] getParams(CommandInterpreter intp) {
- Vector arguments = new Vector();
- String arg = intp.nextArgument();
- while (arg != null) {
- if (arg != null) {
- arguments.addElement(arg);
- }
- arg = intp.nextArgument();
- }
- String[] res = new String[arguments.size()];
- arguments.copyInto(res);
- return res;
- }
-
- private Bundle getBundle(CommandInterpreter intp, String bidString) {
- long bid = -1;
- try {
- bid = Long.parseLong(bidString);
- } catch (NumberFormatException nfe) {
- intp.println(NLS.bind(Messages.WRONG_PARAMETER2, bidString));
- return null;
- }
- Bundle b = Activator.bc.getBundle(bid);
- if (b == null) {
- intp.println(NLS.bind(Messages.BUNDLE_NOT_FOUND, bidString));
- }
- return b;
- }
-
- private ComponentRef findComponentWithID(int compID) {
- if (componentRefsIDs != null) {
- Enumeration keys = componentRefsIDs.keys();
- while (keys.hasMoreElements()) {
- ComponentRef key = (ComponentRef) keys.nextElement();
- if (key.id == compID) {
- return key;
- }
- }
- }
- return null;
- }
-
- private void printComponentDetails(CommandInterpreter intp, int componentIndex) {
- ComponentRef cRef = findComponentWithID(componentIndex);
- if (cRef == null) {
- intp.println(Messages.INVALID_COMPONENT_ID);
- return;
- }
-
- Bundle b = Activator.bc.getBundle(cRef.bid);
- if (b != null) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(b);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- if (sc.name.equals(cRef.name)) {
- printComponentDetails(intp, sc);
- break;
- }
- }
- }
- } else {
- intp.println(Messages.CANNOT_FIND_COMPONENT_BUNDLE);
- }
- }
-
- private void printComponentDetails(CommandInterpreter intp, ServiceComponent sc) {
- intp.println("\t" + sc.toString()); //$NON-NLS-1$
- intp.println(Messages.DYNAMIC_INFO);
- Vector unresulvedReferences = getUnresolvedReferences(sc);
- boolean resolved = true;
- if (unresulvedReferences != null) {
- for (int i = 0; i < unresulvedReferences.size(); i++) {
- if (isMandatory((ComponentReference) unresulvedReferences.elementAt(i))) {
- resolved = false;
- break;
- }
- }
- }
- if (resolved) {
- intp.println(Messages.COMPONENT_RESOLVED);
- } else {
- intp.println(Messages.COMPONENT_NOT_RESOLVED);
- }
-
- if (unresulvedReferences != null) {
- intp.println(Messages.NOT_RESOLVED_REFERENCES);
- for (int i = 0; i < unresulvedReferences.size(); i++) {
- intp.println(" " + unresulvedReferences.elementAt(i)); //$NON-NLS-1$
- }
- } else {
- intp.println(Messages.ALL_REFERENCES_RESOLVED);
- }
- intp.println(Messages.COMPONENT_CONFIGURATIONS);
- Vector enabledSCPs = (Vector) resolver.scpEnabled.clone();
- for (int i = 0; i < enabledSCPs.size(); i++) {
- ServiceComponentProp scp = (ServiceComponentProp) enabledSCPs.elementAt(i);
- if (scp.serviceComponent == sc) {
- printSCP(intp, scp);
- }
- }
- if (sc.getConfigurationPolicy() == ServiceComponent.CONF_POLICY_REQUIRE) {
- if (resolved && (sc.componentProps == null || sc.componentProps.size() == 0)) {
- intp.println(Messages.NO_BUILT_COMPONENT_CONFIGURATIONS);
- }
- }
- intp.println();
- }
-
- private void printSCP(CommandInterpreter intp, ServiceComponentProp scp) {
- Hashtable props = scp.properties;
- intp.println(Messages.CONFIG_PROPERTIES);
- Enumeration keys = props.keys();
- while (keys.hasMoreElements()) {
- Object key = keys.nextElement();
- Object value = props.get(key);
- intp.print(" " + key + " = "); //$NON-NLS-1$ //$NON-NLS-2$
- intp.print(SCRUtil.getStringRepresentation(value));
- intp.println();
- }
- intp.println(" Instances:"); //$NON-NLS-1$
- if (scp.instances.size() > 0) {
- ComponentInstanceImpl instance = null;
- for (int i = 0; i < scp.instances.size(); i++) {
- instance = (ComponentInstanceImpl) scp.instances.elementAt(i);
- intp.println(" " + instance); //$NON-NLS-1$
- if (instance.bindedServices.size() > 0) {
- intp.println(" Bound References:"); //$NON-NLS-1$
- Enumeration refs = instance.bindedServices.keys();
- ServiceReference sr = null;
- while (refs.hasMoreElements()) {
- sr = (ServiceReference) refs.nextElement();
- Object interfaces = sr.getProperty(Constants.OBJECTCLASS);
- intp.println(" " + SCRUtil.getStringRepresentation(interfaces)); //$NON-NLS-1$
- intp.println(" -> " + instance.bindedServices.get(sr)); //$NON-NLS-1$
- }
- }
- }
- } else {
- // there are no instances either because the references are not satisfied or because some runtime issues appear; for example the bind method was not found in the class
- String issues = scp.serviceComponent.getComponentIssues();
- if (issues != null) {
- intp.println(" No instances were created because: " + issues); //$NON-NLS-1$
- }
- }
- }
-
- private Vector getUnresolvedReferences(ServiceComponent sc) {
- Vector unresolved = new Vector();
- if (sc.references != null) {
- for (int i = 0; i < sc.references.size(); i++) {
- ComponentReference ref = (ComponentReference) sc.references.elementAt(i);
- if (!hasProviders(ref)) {
- unresolved.addElement(ref);
- }
- }
- }
-
- return unresolved.isEmpty() ? null : unresolved;
- }
-
- private boolean hasProviders(ComponentReference ref) {
- ////check whether the component's bundle has service GET permission
- if (System.getSecurityManager() != null && !ref.component.bc.getBundle().hasPermission(new ServicePermission(ref.interfaceName, ServicePermission.GET))) {
- return false;
- }
- //// Get all service references for this target filter
- try {
- ServiceReference[] serviceReferences = null;
- serviceReferences = ref.component.bc.getServiceReferences(ref.interfaceName, ref.target);
- if (serviceReferences != null) {
- return true;
- }
- } catch (InvalidSyntaxException e) {
- //do nothing
- }
- return false;
- }
-
- private boolean isMandatory(ComponentReference ref) {
- return ref.cardinality == ComponentReference.CARDINALITY_1_1 || ref.cardinality == ComponentReference.CARDINALITY_1_N;
- }
-
- private void enableAll(CommandInterpreter intp, Bundle b) {
- Vector componentsToEnable = new Vector();
- if (b != null) {
- intp.println(NLS.bind(Messages.ENABLING_ALL_BUNDLE_COMPONENTS, getBundleRepresentationName(b)));
- } else {
- intp.println(Messages.ENABLING_ALL_COMPONENTS);
- }
- if (b != null) {
- if (scrManager.bundleToServiceComponents != null) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(b);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- if (!sc.enabled) {
- componentsToEnable.addElement(sc);
- sc.enabled = true;
- }
- }
- if (!componentsToEnable.isEmpty()) {
- resolver.enableComponents(componentsToEnable);
- }
- }
- }
- } else {
- if (scrManager.bundleToServiceComponents != null) {
- Bundle[] allBundles = Activator.bc.getBundles();
- for (int j = 0; j < allBundles.length; j++) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(allBundles[j]);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- if (!sc.enabled) {
- componentsToEnable.addElement(sc);
- sc.enabled = true;
- }
- }
- }
- }
- if (!componentsToEnable.isEmpty()) {
- resolver.enableComponents(componentsToEnable);
- }
- }
- }
- }
-
- private void disableAll(CommandInterpreter intp, Bundle b) {
- Vector componentsToDisable = new Vector();
- if (b != null) {
- intp.println(NLS.bind(Messages.DISABLING_ALL_BUNDLE_COMPONENTS, getBundleRepresentationName(b)));
- } else {
- intp.println(Messages.DISABLING_ALL_COMPONENTS);
- }
- if (b != null) {
- if (scrManager.bundleToServiceComponents != null) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(b);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- if (sc.enabled) {
- componentsToDisable.addElement(sc);
- sc.enabled = false;
- }
- }
- if (!componentsToDisable.isEmpty()) {
- resolver.disableComponents(componentsToDisable, ComponentConstants.DEACTIVATION_REASON_DISABLED);
- }
- }
- }
- } else {
- if (scrManager.bundleToServiceComponents != null) {
- Bundle[] allBundles = Activator.bc.getBundles();
- for (int j = 0; j < allBundles.length; j++) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(allBundles[j]);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- if (sc.enabled) {
- componentsToDisable.addElement(sc);
- sc.enabled = false;
- }
- }
- }
- }
- if (!componentsToDisable.isEmpty()) {
- resolver.disableComponents(componentsToDisable, ComponentConstants.DEACTIVATION_REASON_DISABLED);
- }
- }
- }
- }
-
- private void enableComponent(CommandInterpreter intp, int componentIndex) {
- ComponentRef cRef = findComponentWithID(componentIndex);
- if (cRef == null) {
- intp.println(Messages.INVALID_COMPONENT_ID);
- return;
- }
- scrManager.enableComponent(cRef.name, Activator.bc.getBundle(cRef.bid));
- intp.println(NLS.bind(Messages.SENT_ENABLING_REQUEST, cRef.name));
- }
-
- private void disableComponent(CommandInterpreter intp, int componentIndex) {
- ComponentRef cRef = findComponentWithID(componentIndex);
- if (cRef == null) {
- intp.println(Messages.INVALID_COMPONENT_ID);
- return;
- }
- scrManager.disableComponent(cRef.name, Activator.bc.getBundle(cRef.bid));
- intp.println(NLS.bind(Messages.SENT_DISABLING_REQUEST, cRef.name));
- }
-
- /* commands */
-
- private void listComponents(CommandInterpreter intp, Bundle b, boolean completeInfo) {
- if (componentRefsIDs == null)
- componentRefsIDs = new Hashtable(101);
-
- if (b != null) {
- intp.println(NLS.bind(Messages.COMPONENTS_IN_BUNDLE, getBundleRepresentationName(b)));
- if (componentRefsIDs.isEmpty()) {
- initComponentRefs();
- }
- } else {
- intp.println(Messages.ALL_COMPONENTS);
- }
-
- if (b == null || scrManager.bundleToServiceComponents != null && scrManager.bundleToServiceComponents.get(b) != null) {
- intp.print("ID"); //$NON-NLS-1$
- if (completeInfo) {
- intp.println(Messages.COMPONENT_DETAILS);
- } else {
- intp.print(Messages.STATE);
- intp.print(Messages.COMPONENT_NAME);
- intp.println(Messages.LOCATED_IN_BUNDLE);
- }
- }
-
- if (b != null) {
- if (scrManager.bundleToServiceComponents != null) {
-
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(b);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- ComponentRef aRef = new ComponentRef(b.getBundleId(), sc.name);
- ComponentRef ref = (ComponentRef) componentRefsIDs.get(aRef);
- if (ref == null) {
- ref = aRef;
- ref.id = generateID();
- componentRefsIDs.put(ref, ref);
- }
- if (completeInfo) {
- intp.print(ref.id + ""); //$NON-NLS-1$
- printComponentDetails(intp, sc);
- } else {
- ////print short info
- intp.print("" + ref.id); //$NON-NLS-1$
- intp.print("\t" + SCRUtil.getStateStringRepresentation(sc.getState())); //$NON-NLS-1$
- intp.print("\t\t" + sc.name); //$NON-NLS-1$
- intp.println("\t\t\t" + getBundleRepresentationName(b) + "(bid=" + b.getBundleId() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- }
-
- // check the bundle for issues during components resolving
- // first check for service component header in this bundle
- String dsHeader = null;
- Dictionary allHeaders = b.getHeaders(""); //$NON-NLS-1$
-
- if (!((dsHeader = (String) allHeaders.get(ComponentConstants.SERVICE_COMPONENT)) != null)) {
- // no component descriptions in this bundle
- intp.println("No ServiceComponent header was found in bundle " + b.toString()); //$NON-NLS-1$
- return;
- }
-
- // second check if the ds xml is correct
- Vector issues = parseXMLDeclaration(b, dsHeader);
- if (issues.size() > 0) {
- intp.println();
- intp.println("Issues encountered when parsing components xml declarations"); //$NON-NLS-1$
- for (int i = 0; i < issues.size(); i++) {
- intp.println("\t" + issues.get(i)); //$NON-NLS-1$
- intp.println();
- }
- }
-
- }
-
- } else {
- if (scrManager.bundleToServiceComponents != null) {
- Bundle[] allBundles = Activator.bc.getBundles();
- for (int j = 0; j < allBundles.length; j++) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(allBundles[j]);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- ComponentRef aRef = new ComponentRef(allBundles[j].getBundleId(), sc.name);
- ComponentRef ref = (ComponentRef) componentRefsIDs.get(aRef);
- if (ref == null) {
- ref = aRef;
- ref.id = generateID();
- componentRefsIDs.put(ref, ref);
- }
-
- if (completeInfo) {
- intp.print(ref.id + ""); //$NON-NLS-1$
- printComponentDetails(intp, sc);
- } else {
- ////print short info
- intp.print("" + ref.id); //$NON-NLS-1$
- intp.print("\t" + SCRUtil.getStateStringRepresentation(sc.getState())); //$NON-NLS-1$
- intp.print("\t\t" + sc.name); //$NON-NLS-1$
- intp.println("\t\t\t" + getBundleRepresentationName(allBundles[j]) + "(bid=" + allBundles[j].getBundleId() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- }
- }
- }
- }
- }
-
- private void initComponentRefs() {
- if (scrManager.bundleToServiceComponents != null) {
- Bundle[] allBundles = Activator.bc.getBundles();
- for (int j = 0; j < allBundles.length; j++) {
- Vector components = (Vector) scrManager.bundleToServiceComponents.get(allBundles[j]);
- if (components != null) {
- for (int i = 0; i < components.size(); i++) {
- ServiceComponent sc = (ServiceComponent) components.elementAt(i);
- ComponentRef aRef = new ComponentRef(allBundles[j].getBundleId(), sc.name);
- ComponentRef ref = (ComponentRef) componentRefsIDs.get(aRef);
- if (ref == null) {
- ref = aRef;
- ref.id = generateID();
- componentRefsIDs.put(ref, ref);
- }
- }
- }
- }
- }
- }
-
- private String getBundleRepresentationName(Bundle b) {
- String res = b.getSymbolicName();
- if (res == null) {
- res = "with ID " + b.getBundleId(); //$NON-NLS-1$
- }
- return res;
- }
-
- private synchronized int generateID() {
- return curID++;
- }
-
- protected Vector parseXMLDeclaration(Bundle bundle, String dsHeader) {
- Vector componentsIssues = new Vector();
- Vector components = new Vector();
- try {
- if (dsHeader != null) {
- StringTokenizer tok = new StringTokenizer(dsHeader, ","); //$NON-NLS-1$
- DeclarationParser parser = new DeclarationParser(true);
- // process all definition file
- while (tok.hasMoreElements()) {
- String definitionFile = tok.nextToken().trim();
- int ind = definitionFile.lastIndexOf('/');
- String path = ind != -1 ? definitionFile.substring(0, ind) : "/"; //$NON-NLS-1$
- InputStream is = null;
-
- Enumeration urls = bundle.findEntries(path, ind != -1 ? definitionFile.substring(ind + 1) : definitionFile, false);
- if (urls == null || !urls.hasMoreElements()) {
- componentsIssues.add(NLS.bind(Messages.COMPONENT_XML_NOT_FOUND, bundle.getSymbolicName(), definitionFile));
- continue;
- }
-
- // illegal components are ignored, but framework event is posted for
- // them; however, it will continue and try to load any legal
- // definitions
- URL url;
- while (urls.hasMoreElements()) {
- url = (URL) urls.nextElement();
- if (Activator.DEBUG) {
- Activator.log.debug("ComponentStorage.parseXMLDeclaration(): loading " + url.toString(), null); //$NON-NLS-1$
- }
- try {
- is = url.openStream();
- if (is == null) {
- componentsIssues.add(NLS.bind(Messages.CANT_OPEN_STREAM_TO_COMPONENT_XML, url));
- } else {
- try {
- parser.parse(is, bundle, components, url.toString());
- } catch (Exception e) {
- componentsIssues.add(e.getMessage());
- }
- }
- } catch (IOException ie) {
- componentsIssues.add(NLS.bind(Messages.ERROR_OPENING_COMP_XML, url) + "\n\t" + ie); //$NON-NLS-1$
- } catch (Throwable t) {
- componentsIssues.add(NLS.bind(Messages.ILLEGAL_DEFINITION_FILE, url) + "\n\t" + t); //$NON-NLS-1$
- } finally {
- if (is != null) {
- is.close();
- }
- }
- }
- } // end while
-
- components = parser.components;
- // make sure the clean-up the parser cache, for the next bundle to
- // work properly!!!
- parser.components = null;
- }
- } catch (Exception e) {
- componentsIssues.add("Exception [" + e + "] while parsing DS xml definition."); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return componentsIssues;
- }
-
- private static class ComponentRef {
- ////the ID of the bundle holding this service component
- long bid;
- ////the name of the service component
- String name;
- ////the temporary id given to this reference. It will be used by certain console commands
- int id = -1;
-
- public ComponentRef(long bid, String name) {
- this.bid = bid;
- this.name = name;
- }
-
- public boolean equals(Object o) {
- if (o instanceof ComponentRef) {
- ComponentRef obj = (ComponentRef) o;
- return (obj.bid == bid && name.equals(obj.name));
- }
- return false;
- }
-
- public int hashCode() {
- return name.hashCode();
- }
-
- }
-
-}

Back to the top