001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    
018    package org.apache.geronimo.security.remoting.jmx;
019    import java.io.ObjectStreamException;
020    import java.io.Serializable;
021    /**
022     * @version $Rev: 487175 $ $Date: 2006-12-14 03:10:31 -0800 (Thu, 14 Dec 2006) $
023     */
024    public final class InvocationType implements Serializable {
025    
026    
027        private static final long serialVersionUID = 4049360807479227955L;
028        
029        // Be careful here.  If you change the ordinals, this class must be changed on evey client.
030        private static int MAX_ORDINAL = 2;
031        private static final InvocationType[] values = new InvocationType[MAX_ORDINAL + 1];
032        public static final InvocationType REQUEST = new InvocationType("REQUEST", 0);
033        public static final InvocationType DATAGRAM = new InvocationType("DATAGRAM", 1);
034    
035        private final transient String name;
036        private final int ordinal;
037    
038        private InvocationType(String name, int ordinal) {
039            assert ordinal < MAX_ORDINAL;
040            assert values[ordinal] == null;
041            this.name = name;
042            this.ordinal = ordinal;
043            values[ordinal] = this;
044        }
045    
046        public String toString() {
047            return name;
048        }
049    
050        Object readResolve() throws ObjectStreamException {
051            return values[ordinal];
052        }
053    }