001 import java.io.DataInputStream; 002 import java.io.DataOutputStream; 003 import java.io.IOException; 004 import java.util.ArrayList; 005 import java.util.HashMap; 006 import java.util.List; 007 import java.util.Map; 008 import java.util.logging.Level; 009 import java.util.logging.Logger; 010 011 public class gx { 012 013 private static final HashMap a = new HashMap(); 014 private final Map b = new HashMap(); 015 private boolean c; 016 017 public void a(int paramInt, Object paramObject) { 018 Integer localInteger = (Integer) a.get(paramObject.getClass()); 019 if (localInteger == null) { 020 throw new IllegalArgumentException("Unknown data type: " + paramObject.getClass()); 021 } 022 if (paramInt > 31) { 023 throw new IllegalArgumentException("Data value id is too big with " + paramInt + "! (Max is " + 31 + ")"); 024 } 025 if (this.b.containsKey(Integer.valueOf(paramInt))) { 026 throw new IllegalArgumentException("Duplicate id value for " + paramInt + "!"); 027 } 028 029 b localb = new b(localInteger.intValue(), paramInt, paramObject); 030 this.b.put(Integer.valueOf(paramInt), localb); 031 } 032 033 public byte a(int paramInt) { 034 Object a = ((b) this.b.get(Integer.valueOf(paramInt))).b(); 035 if (a instanceof Integer) 036 return ((Integer)a).byteValue(); 037 else 038 return ((Byte)a).byteValue(); 039 } 040 041 public void b(int paramInt, Object paramObject) { 042 b localb = (b) this.b.get(Integer.valueOf(paramInt)); 043 044 if (!paramObject.equals(localb.b())) { 045 localb.a(paramObject); 046 localb.a(true); 047 this.c = true; 048 } 049 } 050 051 public boolean a() { 052 return this.c; 053 } 054 055 public static void a(List paramList, DataOutputStream paramDataOutputStream) { 056 if (paramList != null) { 057 for (Object localb : paramList) { 058 a(paramDataOutputStream, (b)localb); 059 } 060 061 } 062 try { 063 paramDataOutputStream.writeByte(127); 064 } catch (IOException ex) { 065 Logger.getLogger(gx.class.getName()).log(Level.SEVERE, null, ex); 066 } 067 } 068 069 public ArrayList b() { 070 ArrayList localArrayList = null; 071 072 if (this.c) { 073 for (Object loca : this.b.values()) { 074 b localb = (b)loca; 075 if (localb.d()) { 076 localb.a(false); 077 078 if (localArrayList == null) { 079 localArrayList = new ArrayList(); 080 } 081 localArrayList.add(localb); 082 } 083 } 084 } 085 this.c = false; 086 087 return localArrayList; 088 } 089 090 public void a(DataOutputStream paramDataOutputStream) { 091 for (Object localb : this.b.values()) { 092 a(paramDataOutputStream, (b)localb); 093 } 094 try { 095 paramDataOutputStream.writeByte(127); 096 } catch (IOException ex) { 097 Logger.getLogger(gx.class.getName()).log(Level.SEVERE, null, ex); 098 } 099 } 100 101 private static void a(DataOutputStream paramDataOutputStream, b paramb) { 102 try { 103 int i = (paramb.c() << 5 | paramb.a() & 0x1F) & 0xFF; 104 paramDataOutputStream.writeByte(i); 105 switch (paramb.c()) { 106 case 0: 107 paramDataOutputStream.writeByte(((Byte) paramb.b()).byteValue()); 108 break; 109 case 1: 110 paramDataOutputStream.writeShort(((Short) paramb.b()).shortValue()); 111 break; 112 case 2: 113 paramDataOutputStream.writeInt(((Integer) paramb.b()).intValue()); 114 break; 115 case 3: 116 paramDataOutputStream.writeFloat(((Float) paramb.b()).floatValue()); 117 break; 118 case 4: 119 paramDataOutputStream.writeUTF((String) paramb.b()); 120 break; 121 case 5: 122 jl localjl = (jl) paramb.b(); 123 paramDataOutputStream.writeShort(localjl.a().ba); 124 paramDataOutputStream.writeByte(localjl.a); 125 paramDataOutputStream.writeShort(localjl.h()); 126 } 127 } catch (IOException ex) { 128 Logger.getLogger(gx.class.getName()).log(Level.SEVERE, null, ex); 129 } 130 } 131 132 public static List a(DataInputStream paramDataInputStream) { 133 ArrayList localArrayList = null; 134 try { 135 int i = paramDataInputStream.readByte(); 136 while (i != 127) { 137 if (localArrayList == null) { 138 localArrayList = new ArrayList(); 139 } 140 int j = (i & 0xE0) >> 5; 141 int k = i & 0x1F; 142 b localb = null; 143 switch (j) { 144 case 0: 145 localb = new b(j, k, Byte.valueOf(paramDataInputStream.readByte())); 146 break; 147 case 1: 148 localb = new b(j, k, Short.valueOf(paramDataInputStream.readShort())); 149 break; 150 case 2: 151 localb = new b(j, k, Integer.valueOf(paramDataInputStream.readInt())); 152 break; 153 case 3: 154 localb = new b(j, k, Float.valueOf(paramDataInputStream.readFloat())); 155 break; 156 case 4: 157 localb = new b(j, k, paramDataInputStream.readUTF()); 158 break; 159 case 5: 160 int m = paramDataInputStream.readShort(); 161 int n = paramDataInputStream.readByte(); 162 int i1 = paramDataInputStream.readShort(); 163 localb = new b(j, k, new jl(m, n, i1)); 164 } 165 localArrayList.add(localb); 166 i = paramDataInputStream.readByte(); 167 } 168 } catch (IOException ex) { 169 Logger.getLogger(gx.class.getName()).log(Level.SEVERE, null, ex); 170 } 171 return localArrayList; 172 } 173 174 static { 175 a.put(Byte.class, Integer.valueOf(0)); 176 a.put(Short.class, Integer.valueOf(1)); 177 a.put(Integer.class, Integer.valueOf(2)); 178 a.put(Float.class, Integer.valueOf(3)); 179 a.put(String.class, Integer.valueOf(4)); 180 a.put(jl.class, Integer.valueOf(5)); 181 } 182 }