Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.metadata.xml;
 
 
 import java.util.List;

You'll normally not use this class directly, use Data.toXml instead. TODO: clearify name against DomSerializer.
 
 public class Serializer {
     private final Tree tree;
     private final List<Objectids;
     private final List<Objectidrefs;
     
     public Serializer(Tree treeList<Objectids) {
         this. = tree;
         this. = ids;
         this. = new ArrayList<Object>();
     }
 
     public void run(String nameType declaredTypeObject objthrows IOException {
         int id;
         List<Item<?>> items;
         boolean empty;
         Type actualType;
         String typeAttribute;
         
         if (obj == null) {
             return;
         }
         id = index(obj);
         if (id != -1) {
             .ref(nameid);
         } else {
             actualType = declaredType.getSchema().type(obj.getClass());
             if (actualType.equals(declaredType)) {
                 typeAttribute = null;
             } else {
                 typeAttribute = actualType.getType().getName();
             }
             if (actualType instanceof SimpleType) {
                 .text(nametypeAttribute, ((SimpleTypeactualType).valueToString(obj));
             } else {
                 id = getId(obj);
                 items = ((ComplexTypeactualType).items();
                 empty = items.size() == 0;
                 .begin(nameidtypeAttributeempty);
                 if (!empty) {
                     for (Item<?> item : items) {
                         for (Object itemObj : item.get(obj)) {
                             run(item.getXmlName(), item.getType(), itemObj);
                         }
                     }
                     .end(name);
                 }
             }
         }
     }
 
     //--
 
     // TODO: visitor
     public static List<Objectids(Type rootTypeObject rootObject) {
         List<Objectresult;
         List<TypeclosureTypes;
         List<ObjectclosureObjects;
         Object obj;
         Type type;
         List<Item<?>> items;
         int idx;
         
         closureTypes = new ArrayList<Type>();
         closureTypes.add(rootType);
         closureObjects = new ArrayList<Object>();
         closureObjects.add(rootObject);
         result = new ArrayList<Object>();
        for (int i = 0; i < closureObjects.size(); i++) { // size grows
            obj = closureObjects.get(i);
            type = closureTypes.get(i);
            if (type instanceof ComplexType) {
                items = ((ComplexTypetype).items();
                for (Item<?> item : items) {
                    for (Object itemObj : item.get(obj)) {
                        idx = index(closureObjectsitemObj);
                        if (idx != -1) {
                            result.add(itemObj);
                        } else {
                            closureObjects.add(itemObj);
                            closureTypes.add(item.getType());
                        }
                    }
                }
            } else {
                // simple type - nothing to check
            }
        }
        return result;
    }
    
    private int getId(Object obj) {
        int idx;
        
        idx = index(obj);
        if (idx == -1) {
            return -1;
        } else {
            .add(.remove(idx));
            return .size() - 1;
        }
    }
    private static int index(List<ObjectlstObject obj) {
        int max;
        
        max = lst.size();
        for (int i = 0; i < maxi++) {
            if (obj == lst.get(i)) {
                return i;
            }
        }
        return -1;
    }
New to GrepCode? Check out our FAQ X