All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jabsorb.serializer.FixUp Maven / Gradle / Ivy

There is a newer version: 6.0.86
Show newest version
/*
 * jabsorb - a Java to JavaScript Advanced Object Request Broker
 * http://www.jabsorb.org
 *
 * Copyright 2007-2009 The jabsorb team
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
package org.jabsorb.serializer;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;

/**
 * Encapsulates a single fix up entry for a circular reference or duplicate
 * detected during processing of Java into JSON (aka marshalling.)
 */
public class FixUp
{
  /**
   * A List of String|Integer's representing references to locate the place
   * where this fixup entry needs to be created.
   */
  private List fixupLocation;

  /**
   * List of String|Integer's representing references to locate the original
   * location of the circular reference or duplicate that this FixUp applies to.
   */
  private List originalLocation;

  /**
   * Create a FixUp for a duplicate or circular reference.
   * 
   * @param fixupLocation a List of String|Integer's representing references to
   *          locate the place where this fixup entry needs to be created.
   * 
   * @param originalLocation List of String|Integer's representing references to
   *          locate the original location of the circular reference or
   *          duplicate that this FixUp applies to.
   */
  public FixUp(List fixupLocation, List originalLocation)
  {
    this.fixupLocation = new ArrayList(fixupLocation);
    // pop root object that won't be used in the fixup off the stack
    if (this.fixupLocation.size() > 0)
    {
      this.fixupLocation.remove(0);
    }
    this.originalLocation = new ArrayList(originalLocation);
    // pop root object that won't be used in the fixup off the stack
    if (this.originalLocation.size() > 0)
    {
      this.originalLocation.remove(0);
    }

  }

  /**
   * Convert this FixUp to a JSONArray for transmission over JSON-RPC. The
   * JSONArray will contain two sub JSONArrays, the first one representing the
   * fixup location and the 2nd one representing the original location.
   * 
   * @return the FixUp represented as a JSONArray.
   */
  public JSONArray toJSONArray()
  {
    JSONArray json = new JSONArray();

    JSONArray fixup = new JSONArray(fixupLocation);
    JSONArray original = new JSONArray(originalLocation);

    json.put(fixup);
    json.put(original);

    return json;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy