diff options
| author | Thomas Watson | 2011-10-03 15:54:43 +0000 |
|---|---|---|
| committer | Thomas Watson | 2011-10-03 15:54:43 +0000 |
| commit | 83fe4a31818ffb39e51fd09ccc4dcd31b88701fb (patch) | |
| tree | b7db5055ec08b79c5b4acb7378a9ba013ea09fe2 | |
| parent | 69b8e65329062b8d0265ef104f7ec4c592558128 (diff) | |
| download | rt.equinox.incubator-83fe4a31818ffb39e51fd09ccc4dcd31b88701fb.tar.gz rt.equinox.incubator-83fe4a31818ffb39e51fd09ccc4dcd31b88701fb.tar.xz rt.equinox.incubator-83fe4a31818ffb39e51fd09ccc4dcd31b88701fb.zip | |
Remove use of equinox internals.
4 files changed, 215 insertions, 22 deletions
diff --git a/console/org.eclipse.equinox.console.supportability/META-INF/MANIFEST.MF b/console/org.eclipse.equinox.console.supportability/META-INF/MANIFEST.MF index 057d4652..7d499a0c 100644 --- a/console/org.eclipse.equinox.console.supportability/META-INF/MANIFEST.MF +++ b/console/org.eclipse.equinox.console.supportability/META-INF/MANIFEST.MF @@ -19,9 +19,6 @@ Import-Package: javax.security.auth;resolution:=optional, org.apache.sshd.server.session;version="0.5.0";resolution:=optional, org.apache.sshd.server.shell;version="0.5.0";resolution:=optional, org.eclipse.osgi.framework.console, - org.eclipse.osgi.framework.internal.core, - org.eclipse.osgi.internal.permadmin, - org.eclipse.osgi.internal.profile, org.eclipse.osgi.service.environment, org.eclipse.osgi.service.resolver, org.eclipse.osgi.util, diff --git a/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandProvider.java b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandProvider.java index b549f5d2..b6d45275 100644 --- a/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandProvider.java +++ b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandProvider.java @@ -14,8 +14,8 @@ package org.eclipse.equinox.console.commands; import java.io.File; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.net.URL; -import java.security.ProtectionDomain; import java.util.ArrayList; import java.util.Dictionary; import java.util.Enumeration; @@ -31,9 +31,6 @@ import org.apache.felix.service.command.Converter; import org.apache.felix.service.command.Descriptor; import org.apache.felix.service.command.Parameter; import org.eclipse.equinox.console.command.adapter.Activator; -import org.eclipse.osgi.framework.internal.core.AbstractBundle; -import org.eclipse.osgi.framework.internal.core.Util; -import org.eclipse.osgi.internal.profile.Profile; import org.eclipse.osgi.service.environment.EnvironmentInfo; import org.eclipse.osgi.service.resolver.BundleDescription; import org.eclipse.osgi.service.resolver.DisabledInfo; @@ -768,7 +765,7 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { * * @param bundles bundle(s) to display details for */ - @SuppressWarnings({ "deprecation", "restriction" }) + @SuppressWarnings({ "deprecation" }) @Descriptor(ConsoleMsg.CONSOLE_HELP_BUNDLE_COMMAND_DESCRIPTION) public void bundle(@Descriptor(ConsoleMsg.CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION)Bundle[] bundles) throws Exception { if (bundles.length == 0) { @@ -1027,13 +1024,7 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { } else { System.out.print(" "); //$NON-NLS-1$ System.out.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_NO_PLATFORM_ADMIN_MESSAGE); - } - - SecurityManager sm = System.getSecurityManager(); - if (sm != null) { - ProtectionDomain domain = ((AbstractBundle)bundle).getProtectionDomain(); - System.out.println(domain); - } + } } } @@ -1251,7 +1242,6 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { * * @param bundles bundle(s) whose headers to display */ - @SuppressWarnings("restriction") @Descriptor(ConsoleMsg.CONSOLE_HELP_HEADERS_COMMAND_DESCRIPTION) public List<Dictionary<String, String>> headers(@Descriptor(ConsoleMsg.CONSOLE_HELP_HEADERS_COMMAND_ARGUMENT_DESCRIPTION) Bundle... bundles) throws Exception { ArrayList<Dictionary<String, String>> headers = new ArrayList<Dictionary<String,String>>(); @@ -1263,7 +1253,7 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { for (Bundle bundle : bundles) { - headers.add(((AbstractBundle)bundle).getHeaders()); + headers.add(bundle.getHeaders()); } return headers; } @@ -1438,7 +1428,6 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { * in the embedded system. * */ - @SuppressWarnings("restriction") @Descriptor(ConsoleMsg.CONSOLE_THREADS_COMMAND_DESCRIPTION) public void threads() throws Exception { @@ -1637,10 +1626,11 @@ public class EquinoxCommandProvider implements SynchronousBundleListener { /** * Handles the profilelog command. */ - @SuppressWarnings("restriction") @Descriptor(ConsoleMsg.CONSOLE_HELP_PROFILELOG_COMMAND_DESCRIPTION) public void profilelog() throws Exception { - System.out.println(Profile.getProfileLog()); + Class<?> profileClass = BundleContext.class.getClassLoader().loadClass("org.eclipse.osgi.internal.profile.Profile"); + Method getProfileLog = profileClass.getMethod("getProfileLog", (Class<?>[]) null); + System.out.println(getProfileLog.invoke(null, (Object[]) null)); } /** diff --git a/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandsConverter.java b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandsConverter.java index 3ec60ced..76ce9111 100644 --- a/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandsConverter.java +++ b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/EquinoxCommandsConverter.java @@ -18,7 +18,6 @@ import java.util.Enumeration; import java.util.List; import org.apache.felix.service.command.Converter; -import org.eclipse.osgi.framework.internal.core.Util; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.Version; @@ -152,7 +151,6 @@ public class EquinoxCommandsConverter implements Converter { return true; } - @SuppressWarnings("restriction") private String printDictionary(Dictionary<?, ?> dic) { int count = dic.size(); String[] keys = new String[count]; diff --git a/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/Util.java b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/Util.java new file mode 100644 index 00000000..bb3c1920 --- /dev/null +++ b/console/org.eclipse.equinox.console.supportability/src/org/eclipse/equinox/console/commands/Util.java @@ -0,0 +1,208 @@ +/******************************************************************************* + * Copyright (c) 2003, 2011 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.console.commands; + +/** + * This class contains utility functions. + */ +public class Util { + /** + * Performs a quicksort of the given objects + * by their string representation in ascending order. + * <p> + * + * @param array The array of objects to sort + */ + public static void sortByString(Object[] array) { + qSortByString(array, 0, array.length - 1); + } + + /** + * Sorts the array of objects by their string representation + * in ascending order. + * <p> + * This is a version of C.A.R Hoare's Quick Sort algorithm. + * + * @param array the array of objects to sort + * @param start the start index to begin sorting + * @param stop the end index to stop sorting + * + * @exception ArrayIndexOutOfBoundsException when <code>start < 0</code> + * or <code>end >= array.length</code> + */ + public static void qSortByString(Object[] array, int start, int stop) { + if (start >= stop) + return; + + int left = start; // left index + int right = stop; // right index + Object temp; // for swapping + + // arbitrarily establish a partition element as the midpoint of the array + String mid = String.valueOf(array[(start + stop) / 2]); + + // loop through the array until indices cross + while (left <= right) { + // find the first element that is smaller than the partition element from the left + while ((left < stop) && (String.valueOf(array[left]).compareTo(mid) < 0)) { + ++left; + } + // find an element that is smaller than the partition element from the right + while ((right > start) && (mid.compareTo(String.valueOf(array[right])) < 0)) { + --right; + } + // if the indices have not crossed, swap + if (left <= right) { + temp = array[left]; + array[left] = array[right]; + array[right] = temp; + ++left; + --right; + } + } + // sort the left partition, if the right index has not reached the left side of array + if (start < right) { + qSortByString(array, start, right); + } + // sort the right partition, if the left index has not reached the right side of array + if (left < stop) { + qSortByString(array, left, stop); + } + } + + /** + * Sorts the specified range in the array in ascending order. + * + * @param array the Object array to be sorted + * @param start the start index to sort + * @param end the last + 1 index to sort + * + * @exception ClassCastException when an element in the array does not + * implement Comparable or elements cannot be compared to each other + * @exception IllegalArgumentException when <code>start > end</code> + * @exception ArrayIndexOutOfBoundsException when <code>start < 0</code> + * or <code>end > array.size()</code> + */ + @SuppressWarnings("unchecked") + public static void sort(Object[] array, int start, int end) { + int middle = (start + end) / 2; + if (start + 1 < middle) + sort(array, start, middle); + if (middle + 1 < end) + sort(array, middle, end); + if (start + 1 >= end) + return; // this case can only happen when this method is called by the user + if (((Comparable<Object>) array[middle - 1]).compareTo(array[middle]) <= 0) + return; + if (start + 2 == end) { + Object temp = array[start]; + array[start] = array[middle]; + array[middle] = temp; + return; + } + int i1 = start, i2 = middle, i3 = 0; + Object[] merge = new Object[end - start]; + while (i1 < middle && i2 < end) { + merge[i3++] = ((Comparable<Object>) array[i1]).compareTo(array[i2]) <= 0 ? array[i1++] : array[i2++]; + } + if (i1 < middle) + System.arraycopy(array, i1, merge, i3, middle - i1); + System.arraycopy(merge, 0, array, start, i2 - start); + } + + /** + * Sorts the specified range in the array in descending order. + * + * @param array the Object array to be sorted + * @param start the start index to sort + * @param end the last + 1 index to sort + * + * @exception ClassCastException when an element in the array does not + * implement Comparable or elements cannot be compared to each other + * @exception IllegalArgumentException when <code>start > end</code> + * @exception ArrayIndexOutOfBoundsException when <code>start < 0</code> + * or <code>end > array.size()</code> + */ + public static void dsort(Object[] array, int start, int end) { + // first sort in ascending order + sort(array, start, end); + // then swap the elements in the array + swap(array); + } + + /** + * Reverse the elements in the array. + * + * @param array the Object array to be reversed + */ + public static void swap(Object[] array) { + int start = 0; + int end = array.length - 1; + while (start < end) { + Object temp = array[start]; + array[start++] = array[end]; + array[end--] = temp; + } + } + + /** + * Returns a string representation of the object + * in the given length. + * If the string representation of the given object + * is longer then it is truncated. + * If it is shorter then it is padded with the blanks + * to the given total length. + * If the given object is a number then the padding + * is done on the left, otherwise on the right. + * + * @param object the object to convert + * @param length the length the output string + */ + public static String toString(Object object, int length) { + boolean onLeft = object instanceof Number; + return toString(object, length, ' ', onLeft); + } + + /** + * Returns a string representation of the object + * in the given length. + * If the string representation of the given object + * is longer then it is truncated. + * If it is shorter then it is padded to the left or right + * with the given character to the given total length. + * + * @param object the object to convert + * @param length the length the output string + * @param pad the pad character + * @param onLeft if <code>true</code> pad on the left, otherwise an the right + */ + public static String toString(Object object, int length, char pad, boolean onLeft) { + String input = String.valueOf(object); + int size = input.length(); + if (size >= length) { + int start = (onLeft) ? size - length : 0; + return input.substring(start, length); + } + + StringBuffer padding = new StringBuffer(length - size); + for (int i = size; i < length; i++) + padding.append(pad); + + StringBuffer stringBuffer = new StringBuffer(length); + if (onLeft) + stringBuffer.append(padding.toString()); + stringBuffer.append(input); + if (!onLeft) + stringBuffer.append(padding.toString()); + return stringBuffer.toString(); + } +} |
