Package com.thoughtworks.xstream.core.util

Examples of com.thoughtworks.xstream.core.util.OrderRetainingMap


        assertBothWays(sample, expected);
    }

    public void testWithAliasedItemNameMatchingTheAliasedNameOfTheFieldWithTheMap() {
        SampleMaps sample = new SampleMaps();
        sample.bad = new OrderRetainingMap();
        sample.bad.put("Windows", new Software("Microsoft", "Windows"));
        sample.bad.put("Linux", new Software("Red Hat", "Linux"));

        String expected = "" +
                "<sample>\n" +
View Full Code Here


        assertBothWays(sample, expected);
    }

    public void testWithNullElement() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put(null, null);
        sample.good.put("Linux", new Software("Red Hat", "Linux"));

        String expected = "" +
                "<sample>\n" +
View Full Code Here

        assertBothWays(sample, expected);
    }

    public void testWithAliasAndNullElement() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put(null, null);
        sample.good.put("Linux", new Software("Red Hat", "Linux"));

        String expected = "" +
                "<sample>\n" +
View Full Code Here

        assertBothWays(sample, expected);
    }

    public void testCollectsDifferentTypesWithFieldOfSameName() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put("iPhone", new Product("iPhone", "i", 399.99));
        sample.good.put("Linux", new Software("Red Hat", "Linux"));
        sample.good.put("Intel", new Hardware("i386", "Intel"));

        String expected = "" +
View Full Code Here

        assertBothWays(sample, expected);
    }

    public void testSeparatesItemsBasedOnItemName() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put("Chrome", new Software("Google", "Chrome"));
        sample.bad = new OrderRetainingMap();
        sample.bad.put("Linux", new Software("Red Hat", "Linux"));
        sample.bad.put("Windows", new Software("Microsoft", "Windows"));

        String expected = "" +
                "<sample>\n" +
View Full Code Here

        assertBothWays(sample, expected);
    }

    public void testWithoutKeyField() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put("Windows", new Software("Microsoft", "Windows"));
        sample.good.put("Linux", new Software("Red Hat", "Linux"));

        String expected = "" +
                "<sample>\n" +
View Full Code Here

        assertBothWays(sample, expected);
    }

    public void testCanUsePrimitiveAsKey() {
        SampleMaps sample = new SampleMaps();
        sample.good = new OrderRetainingMap();
        sample.good.put(new Double(399.99), new Product("iPhone", "i", 399.99));

        String expected = "" +
                "<sample>\n" +
                "  <product>\n" +
View Full Code Here

        final String clsName = cls.getName();
        if (!keyedByFieldNameCache.containsKey(clsName)) {
            synchronized (keyedByFieldKeyCache) {
                if (!keyedByFieldNameCache.containsKey(clsName)) { // double check
                    final Map keyedByFieldName = new HashMap();
                    final Map keyedByFieldKey = new OrderRetainingMap();
                    while (!Object.class.equals(cls)) {
                        Field[] fields = cls.getDeclaredFields();
                        if (JVM.reverseFieldDefinition()) {
                            for (int i = fields.length >> 1; i-- > 0;) {
                                final int idx = fields.length-i-1;
                                final Field field = fields[i];
                                fields[i] = fields[idx];
                                fields[idx] = field;
                            }
                        }
                        for (int i = 0; i < fields.length; i++) {
                            Field field = fields[i];
                            field.setAccessible(true);
                            if (!keyedByFieldName.containsKey(field.getName())) {
                                keyedByFieldName.put(field.getName(), field);
                            }
                            keyedByFieldKey.put(new FieldKey(field.getName(), field.getDeclaringClass(), i), field);
                        }
                        cls = cls.getSuperclass();
                    }
                    keyedByFieldNameCache.put(clsName, keyedByFieldName);
                    keyedByFieldKeyCache.put(clsName, keyedByFieldKey);
View Full Code Here

                Map lastKeyedByFieldKey = Collections.EMPTY_MAP;
                for (final Iterator iter = superClasses.iterator(); iter.hasNext();) {
                    cls = (Class)iter.next();
                    if (!keyedByFieldNameCache.containsKey(cls)) {
                        final Map keyedByFieldName = new HashMap(lastKeyedByFieldName);
                        final Map keyedByFieldKey = new OrderRetainingMap(lastKeyedByFieldKey);
                        Field[] fields = cls.getDeclaredFields();
                        if (JVM.reverseFieldDefinition()) {
                            for (int i = fields.length >> 1; i-- > 0;) {
                                final int idx = fields.length - i - 1;
                                final Field field = fields[i];
                                fields[i] = fields[idx];
                                fields[idx] = field;
                            }
                        }
                        for (int i = 0; i < fields.length; i++) {
                            Field field = fields[i];
                            FieldKey fieldKey = new FieldKey(field.getName(), field
                                .getDeclaringClass(), i);
                            field.setAccessible(true);
                            Field existent = (Field)keyedByFieldName.get(field.getName());
                            if (existent == null
                            // do overwrite statics
                                || ((existent.getModifiers() & Modifier.STATIC) != 0)
                                // overwrite non-statics with non-statics only
                                || (existent != null && ((field.getModifiers() & Modifier.STATIC) == 0))) {
                                keyedByFieldName.put(field.getName(), field);
                            }
                            keyedByFieldKey.put(fieldKey, field);
                        }
                        keyedByFieldNameCache.put(cls, keyedByFieldName);
                        keyedByFieldKeyCache.put(cls, sorter.sort(type, keyedByFieldKey));
                    }
                    lastKeyedByFieldName = (Map)keyedByFieldNameCache.get(cls);
View Full Code Here

  private final Map map = new WeakHashMap();

  public Map sort(Class type, Map keyedByFieldKey) {
    if (map.containsKey(type)) {
      Map result = new OrderRetainingMap();
      FieldKey[] fieldKeys = (FieldKey[]) keyedByFieldKey.keySet()
          .toArray(new FieldKey[keyedByFieldKey.size()]);
      Arrays.sort(fieldKeys, (Comparator) map.get(type));
      for (int i = 0; i < fieldKeys.length; i++) {
        result.put(fieldKeys[i], keyedByFieldKey.get(fieldKeys[i]));
      }
      return result;
    } else {
      return keyedByFieldKey;
    }
View Full Code Here

TOP

Related Classes of com.thoughtworks.xstream.core.util.OrderRetainingMap

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.