2362N/A * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * Licensed Materials - Property of IBM 0N/A * Copyright IBM Corp. 1998 1999 All Rights Reserved 0N/A * ImplementationType represents any non-special class which implements 0N/A * one or more interfaces which inherit from java.rmi.Remote. 0N/A * The static forImplementation(...) method must be used to obtain an instance, 0N/A * and will return null if the ClassDefinition is non-conforming. 0N/A * @author Bryan Atsatt 0N/A //_____________________________________________________________________ 0N/A // Public Interfaces 0N/A //_____________________________________________________________________ 0N/A * Create an ImplementationType for the given class. 0N/A * If the class is not a properly formed or if some other error occurs, the 0N/A * return value will be null, and errors will have been reported to the 0N/A * supplied BatchEnvironment. 0N/A // Do we already have it? 0N/A // Yep, so return it... 0N/A // Could this be an implementation? 0N/A // Yes, so check it... 0N/A * Return a string describing this type. 0N/A return "Implementation";
0N/A //_____________________________________________________________________ 0N/A // Internal Interfaces 0N/A //_____________________________________________________________________ 0N/A * Create a ImplementationType instance for the given class. The resulting 0N/A * object is not yet completely initialized. 0N/A * Initialize this instance. 0N/A // Make up our collections... 0N/A // Check interfaces... 0N/A // Get methods from all interfaces... 0N/A // Make sure we have at least one remote interface... 0N/A // Now check the methods to ensure we have the 0N/A // correct throws clauses... 0N/A // We're ok, so pass 'em up... // Copy all the unique methods from type... // Now recurse thru all inherited interfaces... // Walk all methods of the class, and for each that is already in // the list, call setImplExceptions()... // Convert vector to array... for (
int i =
0; i <
length; i++) {
// Do we have a matching method? // Yes, so create exception list...