Advertisement
kenzierocks

java detector

Apr 28th, 2014
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.57 KB | None | 0 0
  1.  
  2.     @SuppressWarnings("unchecked")
  3.     private Set<JLPFlag> checkFlags() {
  4.         Set<JLPFlag> flags = EnumSet.allOf(JLPFlag.class);
  5.         // store the last state
  6.         List<T> prev = new ArrayList<T>(backing);
  7.         List<T> list = backing;
  8.         if (list instanceof Cloneable) {
  9.             // no promise this works, see Clonable javadocs
  10.             Method clone;
  11.             try {
  12.                 clone = list.getClass().getDeclaredMethod("clone");
  13.                 list = (List<T>) clone.invoke(list);
  14.             } catch (Exception e) {
  15.                 System.err.println("No clone: " + e.getClass());
  16.             }
  17.         }
  18.         if (list == backing && list instanceof Serializable) {
  19.             list = (List<T>) cloneLikeSerial((Serializable) list);
  20.         }
  21.         boolean empty = list.isEmpty();
  22.         try {
  23.             if (!empty) {
  24.                 list.add(list.get(0));
  25.             } else {
  26.                 // hope that list allows null
  27.                 list.add(null);
  28.             }
  29.         } catch (Exception e) {
  30.             flags.remove(JLPFlag.ADD);
  31.         }
  32.         try {
  33.             list.set(0, list.get(1));
  34.         } catch (Exception e) {
  35.             flags.remove(JLPFlag.SET);
  36.         }
  37.         try {
  38.             list.remove(0);
  39.         } catch (Exception e) {
  40.             flags.remove(JLPFlag.REMOVE);
  41.         }
  42.         if (flags.contains(JLPFlag.REMOVE) && list == backing)
  43.             list.clear();
  44.         if (flags.contains(JLPFlag.ADD) && list == backing)
  45.             list.addAll(prev);
  46.         return flags;
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement