geirm 2004/02/18 07:32:31
Added: applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/util ObjectInstanceComparator.java Log: Norm's comparitor from the console-web, as I don't want to depend on that tree for now Revision Changes Path 1.1 incubator-geronimo/applications/jmxdebug/src/java/org/apache/geronimo/jmxdebug/util/ObjectInstanceComparator.java Index: ObjectInstanceComparator.java =================================================================== /** * * Copyright 2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.geronimo.jmxdebug.util; import java.util.Comparator; import java.util.StringTokenizer; import javax.management.ObjectInstance; import javax.management.ObjectName; /** * Taken from orignial console-web module * * This class sort ObjectNames by canonical name. Unfortunately, it * will not place single token domains before multiple token domains of * the same type (foo.bar > foo at the moment). * * @version $Revision: 1.1 $ $Date: 2004/02/18 15:32:31 $ */ public class ObjectInstanceComparator implements Comparator { private static final int LEFT_GREATER = 1; private static final int RIGHT_GREATER = -1; private static final int EQUAL = 0; public int compare(Object o1, Object o2) { ObjectName left = ((ObjectInstance) o1).getObjectName(); ObjectName right = ((ObjectInstance) o2).getObjectName(); String leftName = left.getCanonicalName(); String rightName = right.getCanonicalName(); StringTokenizer leftDomainTokenizer = new StringTokenizer(leftName, "."); StringTokenizer rightDomainTokenizer = new StringTokenizer(rightName, "."); while (leftDomainTokenizer.hasMoreTokens()) { if (!rightDomainTokenizer.hasMoreTokens()) { return RIGHT_GREATER; } String leftToken = leftDomainTokenizer.nextToken(); String rightToken = rightDomainTokenizer.nextToken(); int comparison = leftToken.compareToIgnoreCase(rightToken); if (comparison != 0) { return comparison; } } // left has no more tokens if (rightDomainTokenizer.hasMoreTokens()) { return LEFT_GREATER; } // both ran out of tokens so they are equal return EQUAL; } }