Field.java
01 /*
02  *
03  * Licensed to the Apache Software Foundation (ASF) under one
04  * or more contributor license agreements.  See the NOTICE file
05  * distributed with this work for additional information
06  * regarding copyright ownership.  The ASF licenses this file
07  * to you under the Apache License, Version 2.0 (the
08  * "License"); you may not use this file except in compliance
09  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  */
21 package org.apache.qpid.transport;
22 
23 import org.apache.qpid.transport.codec.Decoder;
24 import org.apache.qpid.transport.codec.Encoder;
25 
26 
27 /**
28  * Field
29  *
30  */
31 
32 public abstract class Field<C,T>
33 {
34 
35     private final Class<C> container;
36     private final Class<T> type;
37     private final String name;
38     private final int index;
39 
40     Field(Class<C> container, Class<T> type, String name, int index)
41     {
42         this.container = container;
43         this.type = type;
44         this.name = name;
45         this.index = index;
46     }
47 
48     public final Class<C> getContainer()
49     {
50         return container;
51     }
52 
53     public final Class<T> getType()
54     {
55         return type;
56     }
57 
58     public final String getName()
59     {
60         return name;
61     }
62 
63     public final int getIndex()
64     {
65         return index;
66     }
67 
68     protected final C check(Object struct)
69     {
70         return container.cast(struct);
71     }
72 
73     public abstract boolean has(Object struct);
74 
75     public abstract void has(Object struct, boolean value);
76 
77     public abstract T get(Object struct);
78 
79     public abstract void read(Decoder dec, Object struct);
80 
81     public abstract void write(Encoder enc, Object struct);
82 
83 }