http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/CoreApi.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/CoreApi.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/CoreApi.java deleted file mode 100755 index 304bc25..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/CoreApi.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -/** - * Common super class for all core-API serializers, parsers, and serializer/parser groups. - * - * <h6 class='topic'>Description</h6> - * <p> - * Maintains an inner {@link BeanContextFactory} instance that can be used by serializer and parser subclasses - * to work with beans in a consistent way. - * <p> - * Provides several duplicate convenience methods from the {@link BeanContextFactory} class to set properties on that class from this class. - * <p> - * Also implements the {@link Lockable} interface to allow for easy locking and cloning. - * - * - * @author James Bognar (jbog...@us.ibm.com) - */ -public abstract class CoreApi extends Lockable { - - /** The bean context used by this object. */ - protected transient BeanContextFactory beanContextFactory = new BeanContextFactory(); - private BeanContext beanContext; - - - /** - * Returns the current value of the {@code beanContext} setting. - * - * @return The current setting value. - */ - public final BeanContext getBeanContext() { - if (beanContext == null) - beanContext = beanContextFactory.getBeanContext(); - return beanContext; - } - - /** - * Sets a property on this class. - * - * @param property The property name. - * @param value The property value. - * @return This class (for method chaining). - * @throws LockedException If {@link #lock()} has been called on this object. - */ - public CoreApi setProperty(String property, Object value) throws LockedException { - checkLock(); - beanContextFactory.setProperty(property, value); - return this; - } - - /** - * Sets multiple properties on this class. - * - * @param properties The properties to set on this class. - * @return This class (for method chaining). - * @throws LockedException If {@link #lock()} has been called on this object. - */ - public CoreApi setProperties(ObjectMap properties) throws LockedException { - checkLock(); - beanContextFactory.setProperties(properties); - return this; - } - - /** - * Shortcut for calling <code>getBeanContext().addNotBeanClasses(Class...)</code>. - * - * @see BeanContextFactory#addNotBeanClasses(Class...) - * @param classes The new setting value for the bean context. - * @throws LockedException If {@link BeanContextFactory#lock()} was called on this class or the bean context. - * @return This object (for method chaining). - */ - public CoreApi addNotBeanClasses(Class<?>...classes) throws LockedException { - checkLock(); - beanContextFactory.addNotBeanClasses(classes); - return this; - } - - /** - * Shortcut for calling <code>getBeanContext().addFilters(Class...)</code>. - * - * @see BeanContextFactory#addFilters(Class...) - * @param classes The new setting value for the bean context. - * @throws LockedException If {@link BeanContextFactory#lock()} was called on this class or the bean context. - * @return This object (for method chaining). - */ - public CoreApi addFilters(Class<?>...classes) throws LockedException { - checkLock(); - beanContextFactory.addFilters(classes); - return this; - } - - /** - * Shortcut for calling <code>getBeanContext().addImplClass(Class, Class)</code>. - * - * @see BeanContextFactory#addImplClass(Class, Class) - * @param interfaceClass The interface class. - * @param implClass The implementation class. - * @throws LockedException If {@link BeanContextFactory#lock()} was called on this class or the bean context. - * @param <T> The class type of the interface. - * @return This object (for method chaining). - */ - public <T> CoreApi addImplClass(Class<T> interfaceClass, Class<? extends T> implClass) throws LockedException { - checkLock(); - beanContextFactory.addImplClass(interfaceClass, implClass); - return this; - } - - /** - * Shortcut for calling <code>getBeanContext().setClassLoader(ClassLoader)</code>. - * - * @see BeanContextFactory#setClassLoader(ClassLoader) - * @param classLoader The new classloader. - * @throws LockedException If {@link BeanContextFactory#lock()} was called on this class or the bean context. - * @return This object (for method chaining). - */ - public CoreApi setClassLoader(ClassLoader classLoader) throws LockedException { - checkLock(); - beanContextFactory.setClassLoader(classLoader); - return this; - } - - /** - * Shortcut for calling {@link BeanContext#object()}. - * - * @return The reusable {@link ClassMeta} for representing the {@link Object} class. - */ - public ClassMeta<Object> object() { - return getBeanContext().object(); - } - - /** - * Shortcut for calling {@link BeanContext#string()}. - * - * @return The reusable {@link ClassMeta} for representing the {@link String} class. - */ - public ClassMeta<String> string() { - return getBeanContext().string(); - } - - //-------------------------------------------------------------------------------- - // Overridden methods - //-------------------------------------------------------------------------------- - - @Override /* Lockable */ - public void checkLock() { - super.checkLock(); - beanContext = null; - } - - @Override /* Lockable */ - public CoreApi lock() { - super.lock(); - beanContextFactory.lock(); - beanContext = beanContextFactory.getBeanContext(); - return this; - } - - @Override /* Lockable */ - public CoreApi clone() throws CloneNotSupportedException{ - CoreApi c = (CoreApi)super.clone(); - c.beanContextFactory = beanContextFactory.clone(); - c.beanContext = null; - return c; - } -}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.class deleted file mode 100755 index 1099224..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.java deleted file mode 100755 index 27e1b6d..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Delegate.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -/** - * An object that represents another object, often wrapping that object. - * <p> - * <b>*** Internal Interface - Not intended for external use ***</b> - * <p> - * For example, {@link BeanMap} is a map representation of a bean. - * - * @author James Bognar (jbog...@us.ibm.com) - * @param <T> The represented class type. - */ -public interface Delegate<T> { - - /** - * The {@link ClassMeta} of the class of the represented object. - * - * @return The class type of the represented object. - */ - public ClassMeta<T> getClassMeta(); -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.class deleted file mode 100755 index 9ad36e2..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.java deleted file mode 100755 index 4353979..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/InvalidDataConversionException.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2011, 2014. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -import java.text.*; - -/** - * General invalid conversion exception. - * <p> - * Exception that gets thrown if you try to perform an invalid conversion, such as when calling {@code ObjectMap.getInt(...)} on a non-numeric <code>String</code>. - * - * @author James Bognar (jbog...@us.ibm.com) - */ -public final class InvalidDataConversionException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - /** - * @param toType Attempting to convert to this class type. - * @param cause The cause. - * @param value The value being converted. - */ - public InvalidDataConversionException(Object value, Class<?> toType, Exception cause) { - super(MessageFormat.format("Invalid data conversion from type ''{0}'' to type ''{1}''. Value=''{2}''.", value == null ? null : value.getClass().getName(), toType.getName(), value), cause); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.class deleted file mode 100755 index 0600ad8..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.java deleted file mode 100755 index 0b8ecd8..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/Lockable.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -/** - * Superclass of all classes that have a locked state. - * <p> - * Used to mark bean contexts, serializers, and parsers as read-only so that - * settings can no longer be modified. - * <p> - * Also keeps track of when the object has been cloned and allows for lazy cloning through - * the {@link #onUnclone()} method. The idea behind this is that certain expensive fields don't - * need to be cloned unless the object is actually being modified. - * <p> - * Calling {@link #lock()} on the object causes it to be put into a read-only state. - * Once called, subsequent calls to {@link #checkLock()} will cause {@link LockedException LockedExceptions} - * to be thrown. - * <p> - * As a rule, cloned objects are unlocked by default. - * - * @author James Bognar (jbog...@us.ibm.com) - */ -public abstract class Lockable implements Cloneable { - - private boolean isLocked = false; - private boolean isCloned = false; - - /** - * Locks this object so that settings on it cannot be modified. - * - * @return This object (for method chaining). - */ - public Lockable lock() { - isLocked = true; - return this; - } - - /** - * @return <code><jk>true</jk></code> if this object has been locked. - */ - public boolean isLocked() { - return isLocked; - } - - /** - * Causes a {@link LockedException} to be thrown if this object has been locked. - * <p> - * Also calls {@link #onUnclone()} if this is the first time this method has been called since cloning. - * - * @throws LockedException If {@link #lock()} has been called on this object. - */ - public void checkLock() throws LockedException { - if (isLocked) - throw new LockedException(); - if (isCloned) - onUnclone(); - isCloned = false; - } - - /** - * Subclass can override this method to handle lazy-cloning on the first time {@link #checkLock()} is called after - * the object has been cloned. - */ - public void onUnclone() {} - - /** - * Creates an unlocked clone of this object. - * - * @throws CloneNotSupportedException If class cannot be cloned. - */ - @Override /* Object */ - public Lockable clone() throws CloneNotSupportedException { - Lockable c = (Lockable)super.clone(); - c.isLocked = false; - c.isCloned = true; - return c; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.class deleted file mode 100755 index 422d647..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.java deleted file mode 100755 index ce2f31e..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/LockedException.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2014. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -/** - * Exception that gets thrown when trying to modify settings on a locked {@link Lockable} object. - * <p> - * A locked exception indicates a programming error. - * Certain objects that are meant for reuse, such as serializers and parsers, provide - * the ability to lock the current settings so that they cannot be later changed. - * This exception indicates that a setting change was attempted on a previously locked object. - * - * @author James Bognar (jbog...@us.ibm.com) - */ -public final class LockedException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - LockedException() { - super("Object is locked and object settings cannot be modified."); - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.class deleted file mode 100755 index 53d21c1..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.java deleted file mode 100755 index c10e07c..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/MediaRange.java +++ /dev/null @@ -1,312 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2013, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -import java.util.*; -import java.util.Map.Entry; - -/** - * Describes a single type used in content negotiation between an HTTP client and server, as described in - * Section 14.1 and 14.7 of RFC2616 (the HTTP/1.1 specification). - */ -public final class MediaRange implements Comparable<MediaRange> { - - private final String type; // The media type (e.g. "text" for Accept, "utf-8" for Accept-Charset) - private final String subType; // The media sub-type (e.g. "json" for Accept, not used for Accept-Charset) - private final Float qValue; - private final Map<String,Set<String>> parameters, extensions; - - /** - * Returns the media type enclosed by this media range. - * <p> - * Examples: - * <ul> - * <li><js>"text/html"</js> - * <li><js>"text/*"</js> - * <li><js>"*\/*"</js> - * </ul> - * - * @return The media type of this media range, lowercased, never <jk>null</jk>. - */ - public String getMediaType() { - return type + "/" + subType; - } - - /** - * Return just the type portion of this media range. - * - * @return The type portion of this media range. - */ - public String getType() { - return type; - } - - /** - * Returns the <js>'q'</js> (quality) value for this type, as described in Section 3.9 of RFC2616. - * <p> - * The quality value is a float between <code>0.0</code> (unacceptable) and <code>1.0</code> (most acceptable). - * <p> - * If 'q' value doesn't make sense for the context (e.g. this range was extracted from a <js>"content-*"</js> header, as opposed to <js>"accept-*"</js> - * header, its value will always be <js>"1"</js>. - * - * @return The 'q' value for this type, never <jk>null</jk>. - */ - public Float getQValue() { - return qValue; - } - - /** - * Returns the optional set of parameters associated to the type as returned by {@link #getMediaType()}. - * <p> - * The parameters are those values as described in standardized MIME syntax. - * An example of such a parameter in string form might be <js>"level=1"</js>. - * <p> - * Values are lowercase and never <jk>null</jk>. - * - * @return The optional list of parameters, never <jk>null</jk>. - */ - public Map<String,Set<String>> getParameters() { - return parameters; - } - - /** - * Returns the optional set of custom extensions defined for this type. - * <p> - * Values are lowercase and never <jk>null</jk>. - * - * @return The optional list of extensions, never <jk>null</jk>. - */ - public Map<String,Set<String>> getExtensions() { - return extensions; - } - - /** - * Provides a string representation of this media range, suitable for use as an <code>Accept</code> header value. - * <p> - * The literal text generated will be all lowercase. - * - * @return A media range suitable for use as an Accept header value, never <code>null</code>. - */ - @Override /* Object */ - public String toString() { - StringBuffer sb = new StringBuffer().append(type).append('/').append(subType); - - if (! parameters.isEmpty()) - for (Entry<String,Set<String>> e : parameters.entrySet()) { - String k = e.getKey(); - for (String v : e.getValue()) - sb.append(';').append(k).append('=').append(v); - } - - // '1' is equivalent to specifying no qValue. If there's no extensions, then we won't include a qValue. - if (qValue.floatValue() == 1.0) { - if (! extensions.isEmpty()) { - sb.append(";q=").append(qValue); - for (Entry<String,Set<String>> e : extensions.entrySet()) { - String k = e.getKey(); - for (String v : e.getValue()) - sb.append(';').append(k).append('=').append(v); - } - } - } else { - sb.append(";q=").append(qValue); - for (Entry<String,Set<String>> e : extensions.entrySet()) { - String k = e.getKey(); - for (String v : e.getValue()) - sb.append(';').append(k).append('=').append(v); - } - } - return sb.toString(); - } - - /** - * Returns <jk>true</jk> if the specified object is also a <code>MediaType</code>, and has the same qValue, type, parameters, and extensions. - * - * @return <jk>true</jk> if object is equivalent. - */ - @Override /* Object */ - public boolean equals(Object o) { - - if (o == null || !(o instanceof MediaRange)) - return false; - - if (this == o) - return true; - - MediaRange o2 = (MediaRange) o; - return qValue.equals(o2.qValue) - && type.equals(o2.type) - && subType.equals(o2.subType) - && parameters.equals(o2.parameters) - && extensions.equals(o2.extensions); - } - - /** - * Returns a hash based on this instance's <code>media-type</code>. - * - * @return A hash based on this instance's <code>media-type</code>. - */ - @Override /* Object */ - public int hashCode() { - return type.hashCode() + subType.hashCode(); - } - - /** - * Creates a <code>MediaRange</code> object with the referenced values. - * - * @param type The MIME type of this media range (e.g. <js>"application"</js> in <js>"application/json"</js>) - * @param subType The MIME subtype of this media range (e.g. <js>"json"</js> in <js>"application/json"</js>). - * @param parameters The optional parameters for this range. - * @param qValue The quality value of this range. Must be between <code>0</code> and <code>1.0</code>. - * @param extensions The optional extensions to this quality value. - */ - private MediaRange(String type, String subType, Map<String,Set<String>> parameters, Float qValue, Map<String,Set<String>> extensions) { - this.type = type; - this.subType = subType; - this.parameters = (parameters == null ? new TreeMap<String,Set<String>>() : parameters); - this.extensions = (extensions == null ? new TreeMap<String,Set<String>>() : extensions); - this.qValue = qValue; - } - - /** - * Parses an <code>Accept</code> header value into an array of media ranges. - * <p> - * The returned media ranges are sorted such that the most acceptable media is available at ordinal position <js>'0'</js>, and the least acceptable at position n-1. - * <p> - * The syntax expected to be found in the referenced <code>value</code> complies with the syntax described in RFC2616, Section 14.1, as described below: - * <p class='bcode'> - * Accept = "Accept" ":" - * #( media-range [ accept-params ] ) - * - * media-range = ( "*\/*" - * | ( type "/" "*" ) - * | ( type "/" subtype ) - * ) *( ";" parameter ) - * accept-params = ";" "q" "=" qvalue *( accept-extension ) - * accept-extension = ";" token [ "=" ( token | quoted-string ) ] - * </p> - * This method can also be used on other headers such as <code>Accept-Charset</code> and <code>Accept-Encoding</code>... - * <p class='bcode'> - * Accept-Charset = "Accept-Charset" ":" - * 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] ) - * </p> - * - * @param value The value to parse. If <jk>null</jk> or empty, returns a single <code>MediaRange</code> is returned that represents all types. - * @return The media ranges described by the string. - * The ranges are sorted such that the most acceptable media is available at ordinal position <js>'0'</js>, and the least acceptable at position n-1. - */ - public static MediaRange[] parse(String value) { - - Set<MediaRange> ranges = new TreeSet<MediaRange>(); - - if (value == null || value.length() == 0) - return new MediaRange[]{new MediaRange("*", "*", null, 1f, null)}; - - value = value.toLowerCase(Locale.ENGLISH); - - for (String r : value.trim().split("\\s*,\\s*")) { - r = r.trim(); - - if (r.isEmpty()) - continue; - - String[] tokens = r.split("\\s*;\\s*"); - - tokens[0] = tokens[0].replace(' ', '+'); - - // There is at least a type. - String[] t = tokens[0].split("/"); - String type = t[0], subType = (t.length == 1 ? "*" : t[1]); - - // Only the type of the range is specified - if (tokens.length == 1) { - ranges.add(new MediaRange(type, subType, null, 1f, null)); - continue; - } - - Float qValue = 1f; - Map<String,Set<String>> params = new TreeMap<String,Set<String>>(); - Map<String,Set<String>> exts = new TreeMap<String,Set<String>>(); - - boolean isInExtensions = false; - for (int i = 1; i < tokens.length; i++) { - String[] parm = tokens[i].split("\\s*=\\s*"); - if (parm.length == 2) { - String k = parm[0], v = parm[1]; - if (isInExtensions) { - if (! exts.containsKey(parm[0])) - exts.put(parm[0], new TreeSet<String>()); - exts.get(parm[0]).add(parm[1]); - } else if (k.equals("q")) { - qValue = new Float(v); - isInExtensions = true; - } else /*(! isInExtensions)*/ { - if (! params.containsKey(parm[0])) - params.put(parm[0], new TreeSet<String>()); - params.get(parm[0]).add(parm[1]); - } - } - } - - ranges.add(new MediaRange(type, subType, params, qValue, exts)); - } - - return ranges.toArray(new MediaRange[ranges.size()]); - } - - /** - * Compares two MediaRanges for equality. - * <p> - * The values are first compared according to <code>qValue</code> values. - * Should those values be equal, the <code>type</code> is then lexicographically compared (case-insensitive) in ascending order, - * with the <js>"*"</js> type demoted last in that order. - * <code>MediaRanges</code> with the same type but different sub-types are compared - a more specific subtype is - * promoted over the 'wildcard' subtype. - * <code>MediaRanges</code> with the same types but with extensions are promoted over those same types with no extensions. - * - * @param o The range to compare to. Never <jk>null</jk>. - */ - @Override /* Comparable */ - public int compareTo(MediaRange o) { - - // Compare q-values. - int qCompare = Float.compare(o.qValue, qValue); - if (qCompare != 0) - return qCompare; - - // Compare media-types. - // Note that '*' comes alphabetically before letters, so just do a reverse-alphabetical comparison. - int i = o.type.compareTo(type); - if (i == 0) - i = o.subType.compareTo(subType); - return i; - } - - /** - * Returns <jk>true</jk> if the specified <code>MediaRange</code> matches this range. - * <p> - * This implies the types and subtypes are the same as or encompasses the other (e.g. <js>'application/xml'</js> and <js>'application/*'</js>). - * - * @param o The other media rage. - * @return <jk>true</jk> if the media ranges are the same or one encompasses the other. - */ - public boolean matches(MediaRange o) { - if (this == o) - return true; - - if (qValue == 0 || o.qValue == 0) - return false; - - if (type.equals(o.type) || (type.equals("*")) || (o.type.equals("*"))) - if (subType.equals(o.subType) || subType.equals("*") || o.subType.equals("*")) - return true; - - return false; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$1.class deleted file mode 100755 index cb9fa76..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2$1.class deleted file mode 100755 index 229273b..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2.class deleted file mode 100755 index 5dba15e..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList$2.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.class deleted file mode 100755 index 3204758..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.java ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.java b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.java deleted file mode 100755 index 74f00b0..0000000 --- a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectList.java +++ /dev/null @@ -1,447 +0,0 @@ -/******************************************************************************* - * Licensed Materials - Property of IBM - * (c) Copyright IBM Corporation 2011, 2015. All Rights Reserved. - * - * The source code for this program is not published or otherwise - * divested of its trade secrets, irrespective of what has been - * deposited with the U.S. Copyright Office. - *******************************************************************************/ -package com.ibm.juno.core; - -import java.io.*; -import java.util.*; - -import com.ibm.juno.core.json.*; -import com.ibm.juno.core.parser.*; -import com.ibm.juno.core.serializer.*; -import com.ibm.juno.core.utils.*; - -/** - * Java implementation of a JSON array. - * <p> - * An extension of {@link LinkedList}, so all methods available to in that class are also available - * to this class. - * <p> - * Note that the use of this class is optional. The serializers will accept any objects that implement - * the {@link Collection} interface. But this class provides some useful additional functionality - * when working with JSON models constructed from Java Collections Framework objects. For example, a - * constructor is provided for converting a JSON array string directly into a {@link List}. It also contains - * accessor methods for to avoid common typecasting when accessing elements in a list. - * - * <h6 class='topic'>Examples</h6> - * <p class='bcode'> - * <jc>// Construct an empty List</jc> - * List l = <jk>new</jk> ObjectList(); - * - * <jc>// Construct a list of objects using various methods</jc> - * l = <jk>new</jk> ObjectList().append(<js>"foo"</js>).append(123).append(<jk>true</jk>); - * l = <jk>new</jk> ObjectList().append(<js>"foo"</js>, 123, <jk>true</jk>); <jc>// Equivalent</jc> - * l = <jk>new</jk> ObjectList(<js>"foo"</js>, 123, <jk>true</jk>); <jc>// Equivalent</jc> - * - * <jc>// Construct a list of integers from JSON</jc> - * l = <jk>new</jk> ObjectList(<js>"[1,2,3]"</js>); - * - * <jc>// Construct a list of generic ObjectMap objects from JSON</jc> - * l = <jk>new</jk> ObjectList(<js>"[{foo:'bar'},{baz:'bing'}]"</js>); - * - * <jc>// Construct a list of integers from XML</jc> - * String xml = <js>"<array><number>1</number><number>2</number><number>3</number></array>"</js>; - * l = <jk>new</jk> ObjectList(xml, DataFormat.<jsf>XML</jsf>); - * l = (List)XmlParser.<jsf>DEFAULT</jsf>.parse(xml); <jc>// Equivalent</jc> - * l = (List)XmlParser.<jsf>DEFAULT</jsf>.parse(Object.<jk>class</jk>, xml); <jc>// Equivalent</jc> - * l = XmlParser.<jsf>DEFAULT</jsf>.parse(List.<jk>class</jk>, xml); <jc>// Equivalent</jc> - * l = XmlParser.<jsf>DEFAULT</jsf>.parse(ObjectList.<jk>class</jk>, xml); <jc>// Equivalent</jc> - * - * <jc>// Construct JSON from ObjectList</jc> - * l = <jk>new</jk> ObjectList(<js>"[{foo:'bar'},{baz:'bing'}]"</js>); - * String json = l.toString(); <jc>// Produces "[{foo:'bar'},{baz:'bing'}]"</jc> - * json = l.toString(JsonSerializer.<jsf>DEFAULT_CONDENSED</jsf>); <jc>// Equivalent</jc> - * json = JsonSerializer.<jsf>DEFAULT_CONDENSED</jsf>.serialize(l); <jc>// Equivalent</jc> - * - * <jc>// Get one of the entries in the list as an Integer</jc> - * l = <jk>new</jk> ObjectList(<js>"[1,2,3]"</js>); - * Integer i = l.getInt(1); - * i = l.get(Integer.<jk>class</jk>, 1); <jc>// Equivalent</jc> - * - * <jc>// Get one of the entries in the list as an Float</jc> - * l = <jk>new</jk> ObjectList(<js>"[1,2,3]"</js>); - * Float f = l.getFloat(1); <jc>// Returns 2f </jc> - * f = l.get(Float.<jk>class</jk>, 1); <jc>// Equivalent</jc> - * - * <jc>// Same as above, except converted to a String</jc> - * l = <jk>new</jk> ObjectList(<js>"[1,2,3]"</js>); - * String s = l.getString(1); <jc>// Returns "2" </jc> - * s = l.get(String.<jk>class</jk>, 1); <jc>// Equivalent</jc> - * - * <jc>// Get one of the entries in the list as a bean (converted to a bean if it isn't already one)</jc> - * l = <jk>new</jk> ObjectList(<js>"[{name:'John Smith',age:45}]"</js>); - * Person p = l.get(Person.<jk>class</jk>, 0); - * - * <jc>// Iterate over a list of beans using the elements() method</jc> - * ObjectList ObjectList = <jk>new</jk> ObjectList(<js>"[{name:'John Smith',age:45}]"</js>); - * <jk>for</jk> (Person p : ObjectList.elements(Person.<jk>class</jk>) { - * <jc>// Do something with p</jc> - * } - * </p> - * - * @author James Bognar (jbog...@us.ibm.com) - */ -public class ObjectList extends LinkedList<Object> { - private static final long serialVersionUID = 1L; - - private transient BeanContext beanContext = BeanContext.DEFAULT; - - /** - * An empty read-only ObjectList. - */ - public static final ObjectList EMPTY_LIST = new ObjectList() { - private static final long serialVersionUID = 1L; - - @Override /* List */ - public void add(int location, Object object) { - throw new UnsupportedOperationException(); - } - - @Override /* List */ - public ListIterator<Object> listIterator(final int location) { - return Collections.emptyList().listIterator(location); - } - - @Override /* List */ - public Object remove(int location) { - throw new UnsupportedOperationException(); - } - - @Override /* List */ - public Object set(int location, Object object) { - throw new UnsupportedOperationException(); - } - - @Override /* List */ - public List<Object> subList(int start, int end) { - return Collections.emptyList().subList(start, end); - } - }; - - /** - * Construct a JSON array directly from text using the specified parser. - * - * @param s The string being parsed. - * @param p The parser to use to parse the input. - * @throws ParseException If the input contains a syntax error or is malformed. - */ - public ObjectList(CharSequence s, ReaderParser p) throws ParseException { - this(p == null ? BeanContext.DEFAULT : p.getBeanContext()); - try { - if (p == null) - p = JsonParser.DEFAULT; - if (s != null) - p.parseIntoCollection(new CharSequenceReader(s), s.length(), this, beanContext.object()); - } catch (IOException e) { - throw new ParseException(e); - } - } - - /** - * Shortcut for <code><jk>new</jk> ObjectList(String,JsonParser.<jsf>DEFAULT</jsf>);</code> - * - * @param s The string being parsed. - * @throws ParseException If the input contains a syntax error or is malformed. - */ - public ObjectList(CharSequence s) throws ParseException { - this(s, null); - } - - /** - * Construct a JSON array directly from a reader using the specified parser. - * - * @param r The reader to read from. Will automatically be wrapped in a {@link BufferedReader} if it isn't already a BufferedReader. - * @param p The parser to use to parse the input. - * @throws ParseException If the input contains a syntax error or is malformed. - * @throws IOException If a problem occurred trying to read from the reader. - */ - public ObjectList(Reader r, ReaderParser p) throws ParseException, IOException { - parseReader(r, p); - } - - private void parseReader(Reader r, ReaderParser p) throws IOException, ParseException { - if (p == null) - p = JsonParser.DEFAULT; - p.parseIntoCollection(r, -1, this, beanContext.object()); - } - - /** - * Construct an empty JSON array. (i.e. an empty {@link LinkedList}). - */ - public ObjectList() { - this(BeanContext.DEFAULT); - } - - /** - * Construct an empty JSON array with the specified bean context. (i.e. an empty {@link LinkedList}). - * - * @param beanContext The bean context to associate with this object list for creating beans. - */ - public ObjectList(BeanContext beanContext) { - super(); - this.beanContext = beanContext; - } - - /** - * Construct a JSON array and fill it with the specified objects. - * - * @param o A list of objects to add to this list. - */ - public ObjectList(Object... o) { - super(Arrays.asList(o)); - } - - /** - * Construct a JSON array and fill it with the specified collection of objects. - * - * @param c A list of objects to add to this list. - */ - public ObjectList(Collection<?> c) { - super(c); - } - - /** - * Override the default bean context used for converting POJOs. - * <p> - * Default is {@link BeanContext#DEFAULT}, which is sufficient in most cases. - * <p> - * Useful if you're serializing/parsing beans with filters defined. - * - * @param beanContext The new bean context. - * @return This object (for method chaining). - */ - public ObjectList setBeanContext(BeanContext beanContext) { - this.beanContext = beanContext; - return this; - } - - /** - * Convenience method for adding multiple objects to this list. - * @param o The objects to add to the list. - * @return This object (for method chaining). - */ - public ObjectList append(Object...o) { - for (Object o2 : o) - add(o2); - return this; - } - - /** - * Get the entry at the specified index, converted to the specified type (if possible). - * <p> - * See {@link BeanContext#convertToType(Object, ClassMeta)} for the list of valid data conversions. - * - * @param type The type of object to convert the entry to. - * @param index The index into this list. - * @param <T> The type of object to convert the entry to. - * @return The converted entry. - */ - public <T> T get(Class<T> type, int index) { - return beanContext.convertToType(get(index), type); - } - - /** - * Shortcut for calling <code>get(String.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - */ - public String getString(int index) { - return get(String.class, index); - } - - /** - * Shortcut for calling <code>get(Integer.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public Integer getInt(int index) { - return get(Integer.class, index); - } - - /** - * Shortcut for calling <code>get(Boolean.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public Boolean getBoolean(int index) { - return get(Boolean.class, index); - } - - /** - * Shortcut for calling <code>get(Long.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public Long getLong(int index) { - return get(Long.class, index); - } - - /** - * Shortcut for calling <code>get(Map.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public Map<?,?> getMap(int index) { - return get(Map.class, index); - } - - /** - * Shortcut for calling <code>get(List.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public List<?> getList(int index) { - return get(List.class, index); - } - - /** - * Shortcut for calling <code>get(ObjectMap.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public ObjectMap getObjectMap(int index) { - return get(ObjectMap.class, index); - } - - /** - * Shortcut for calling <code>get(ObjectList.<jk>class</jk>, index)</code>. - * - * @param index The index. - * @return The converted value. - * @throws InvalidDataConversionException If value cannot be converted. - */ - public ObjectList getObjectList(int index) { - return get(ObjectList.class, index); - } - - /** - * Creates an {@link Iterable} with elements of the specified child type. - * <p> - * Attempts to convert the child objects to the correct type if they aren't already the correct type. - * <p> - * The <code>next()</code> method on the returned iterator may throw a {@link InvalidDataConversionException} if - * the next element cannot be converted to the specified type. - * <p> - * See {@link BeanContext#convertToType(Object, ClassMeta)} for a description of valid conversions. - * - * <dl> - * <dt>Example:</dt> - * <dd> - * <p class='bcode'> - * <jc>// Iterate over a list of ObjectMaps.</jc> - * ObjectList l = <jk>new</jk> ObjectList(<js>"[{foo:'bar'},{baz:123}]"</js>); - * for (ObjectMap m : l.elements(ObjectMap.<jk>class</jk>)) { - * <jc>// Do something with m.</jc> - * } - * - * <jc>// Iterate over a list of ints.</jc> - * ObjectList l = <jk>new</jk> ObjectList(<js>"[1,2,3]"</js>); - * for (Integer i : l.elements(Integer.<jk>class</jk>)) { - * <jc>// Do something with i.</jc> - * } - * - * <jc>// Iterate over a list of beans.</jc> - * <jc>// Automatically converts to beans.</jc> - * ObjectList l = <jk>new</jk> ObjectList(<js>"[{name:'John Smith',age:45}]"</js>); - * for (Person p : l.elements(Person.<jk>class</jk>)) { - * <jc>// Do something with p.</jc> - * } - * </p> - * </dd> - * </dl> - * - * @param <E> The child object type. - * @param childType The child object type. - * @return A new <code>Iterable</code> object over this list. - */ - public <E> Iterable<E> elements(final Class<E> childType) { - final Iterator<?> i = iterator(); - return new Iterable<E>() { - - @Override /* Iterable */ - public Iterator<E> iterator() { - return new Iterator<E>() { - - @Override /* Iterator */ - public boolean hasNext() { - return i.hasNext(); - } - - @Override /* Iterator */ - public E next() { - return beanContext.convertToType(i.next(), childType); - } - - @Override /* Iterator */ - public void remove() { - i.remove(); - } - - }; - } - }; - } - - /** - * Returns the {@link ClassMeta} of the class of the object at the specified index. - * - * @param index An index into this list, zero-based. - * @return The data type of the object at the specified index, or <jk>null</jk> if the value is null. - */ - public ClassMeta<?> getClassMeta(int index) { - return beanContext.getClassMetaForObject(get(index)); - } - - /** - * Serialize this array to a string using the specified serializer. - * - * @param serializer The serializer to use to convert this object to a string. - * @return This object as a serialized string. - * @throws SerializeException If a problem occurred trying to convert the output. - */ - public String toString(WriterSerializer serializer) throws SerializeException { - return serializer.serialize(this); - } - - /** - * Serialize this array to JSON using the {@link JsonSerializer#DEFAULT} serializer. - */ - @Override /* Object */ - public String toString() { - try { - return this.toString(JsonSerializer.DEFAULT_LAX); - } catch (SerializeException e) { - return e.getLocalizedMessage(); - } - } - - /** - * Convenience method for serializing this ObjectList to the specified Writer using - * the JsonSerializer.DEFAULT serializer. - * - * @param w The writer to send the serialized contents of this object. - * @throws IOException If a problem occurred trying to write to the writer. - * @throws SerializeException If a problem occurred trying to convert the output. - */ - public void serializeTo(Writer w) throws IOException, SerializeException { - JsonSerializer.DEFAULT.serialize(this); - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$1.class deleted file mode 100755 index a58f23d..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1$1.class deleted file mode 100755 index 57b81a7..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1.class deleted file mode 100755 index 0ccaec1..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2$1.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2.class deleted file mode 100755 index 777a312..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap$2.class and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/30947fd7/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap.class ---------------------------------------------------------------------- diff --git a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap.class b/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap.class deleted file mode 100755 index 5ed2e03..0000000 Binary files a/com.ibm.team.juno.releng/bin/core/com/ibm/juno/core/ObjectMap.class and /dev/null differ