示例#1
0
 @Override
 public Serializable get() {
   while (true) {
     Serializable s = data.get();
     if (!(s instanceof ByteArrayWrapper)) {
       return s;
     }
     try {
       ByteArrayWrapper w = (ByteArrayWrapper) s;
       ObjectInputStream stream =
           new PluginClassResolverObjectInputStream(new ByteArrayInputStream(w.getArray()));
       Object result;
       try {
         result = stream.readObject();
       } finally {
         IOUtils.closeQuietly(stream);
       }
       Serializable deserialized = (Serializable) result;
       if (data.compareAndSet(s, deserialized)) {
         return deserialized;
       }
     } catch (IOException e) {
       return null;
     } catch (ClassNotFoundException e) {
       return null;
     } catch (ClassCastException e) {
       return null;
     }
   }
 }