/*******************************************************************************
 * Copyright (c) 2012, 2014 Oracle and/or its affiliates. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
 * which accompanies this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *     Denise Smith - November 2012
 ******************************************************************************/
package org.eclipse.persistence.oxm;

/**
 * <p>JSONWithPadding is used to hold an Object along with the corresponding callback name
 * to marshal.
 * <p>Sample Usage:
 * {@literal JSONWithPadding<Person>} jsonWithPaddingObject = new JSONWithPadding(person, "theCallBackName");
 * Marshal this jsonWithPaddingObject object would result in JSON like this:
 *     theCallBackName({"person":{"id":10,"name":"Bob"}});
 */
public class JSONWithPadding<T> {
	private T rootObject;
    private String callbackName;
    
    public static final String DEFAULT_CALLBACK_NAME = "callback";
    
    public JSONWithPadding(){
    	this.callbackName = DEFAULT_CALLBACK_NAME;
    }
    
    public JSONWithPadding(T rootObject){	
		this(rootObject, DEFAULT_CALLBACK_NAME);
	}
    
	public JSONWithPadding(T rootObject, String callbackName){
		this.rootObject = rootObject;
		setCallbackName(callbackName);
	}
	
	/**
	 * The Object that will be marshalled
	 * @return
	 */
    public T getObject() {
		return rootObject;
	}

    /**
     * The Object to be marshalled
     * @param rootObject
     */
	public void setObject(T rootObject) {
		this.rootObject = rootObject;
	}

	/**
	 * The callback name that should me marshalled with the object
	 * @return
	 */
	public String getCallbackName() {
		return callbackName;
	}

	/**
	 * The callback name that should me marshalled with the object
	 */
	public void setCallbackName(String callbackName) {
		if(callbackName == null){
			this.callbackName = DEFAULT_CALLBACK_NAME;
		}else{
		    this.callbackName = callbackName;
		}
	}	
}
