| /* |
| * Copyright 2010 Google Inc. |
| * |
| * 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 com.google.web.bindery.autobean.shared; |
| |
| import com.google.web.bindery.autobean.shared.impl.StringQuoter; |
| |
| import java.util.List; |
| |
| /** |
| * This interface provides an abstraction around the underlying data model |
| * (JavaScriptObject, {@code org.json}, or XML) used to encode an AutoBeanCodex |
| * payload. |
| */ |
| public interface Splittable { |
| /** |
| * A value that represents {@code null}. |
| */ |
| Splittable NULL = StringQuoter.nullValue(); |
| |
| /** |
| * Returns a boolean representation of the data. |
| */ |
| boolean asBoolean(); |
| |
| /** |
| * Returns a numeric representation of the data. |
| */ |
| double asNumber(); |
| |
| /** |
| * Assign the splittable to the specified index of the {@code parent} object. |
| */ |
| void assign(Splittable parent, int index); |
| |
| /** |
| * Assign the splittable to the named property of the {@code parent} object. |
| */ |
| void assign(Splittable parent, String propertyName); |
| |
| /** |
| * Returns a string representation of the data. |
| */ |
| String asString(); |
| |
| /** |
| * Clones the Splittable, ignoring cycles and tags. |
| */ |
| Splittable deepCopy(); |
| |
| /** |
| * Returns the nth element of a list. |
| */ |
| Splittable get(int index); |
| |
| /** |
| * Returns the named property. |
| */ |
| Splittable get(String key); |
| |
| /** |
| * Returns a wire-format representation of the data. |
| */ |
| String getPayload(); |
| |
| /** |
| * Returns all keys available in the Splittable. This method may be expensive |
| * to compute. |
| */ |
| List<String> getPropertyKeys(); |
| |
| /** |
| * Returns a value previously set with {@link #setReified(String, Object)}. |
| */ |
| Object getReified(String key); |
| |
| /** |
| * Returns {@code true} if the value of the Splittable is a boolean. |
| */ |
| boolean isBoolean(); |
| |
| /** |
| * Returns {@code} true if {@link #size()} and {@link #get(int)} can be |
| * expected to return meaningful values. |
| */ |
| boolean isIndexed(); |
| |
| /** |
| * Returns {@code} true if {@link #getPropertyKeys()} and {@link #get(String)} |
| * can be expected to return meaningful values. |
| */ |
| boolean isKeyed(); |
| |
| /** |
| * Indicates if the nth element of a list is null or undefined. |
| */ |
| boolean isNull(int index); |
| |
| /** |
| * Indicates if the named property is null or undefined. |
| */ |
| boolean isNull(String key); |
| |
| /** |
| * Returns {@code true} if the value of the Splittable is numeric. |
| */ |
| boolean isNumber(); |
| |
| /** |
| * Returns {@code true} if {@link #setReified(String, Object)} has been called |
| * with the given key. |
| */ |
| boolean isReified(String key); |
| |
| /** |
| * Returns {@code} true if {@link #asString()} can be expected to return a |
| * meaningful value. |
| */ |
| boolean isString(); |
| |
| /** |
| * Returns {@code true} if the value of the key is undefined. |
| */ |
| boolean isUndefined(String key); |
| |
| /** |
| * Associates a tag value with the Splittable. |
| */ |
| void setReified(String key, Object object); |
| |
| /** |
| * Resets the length of an indexed Splittable. |
| */ |
| void setSize(int i); |
| |
| /** |
| * Returns the size of an indexed Splittable. |
| */ |
| int size(); |
| } |