/* * Copyright 2016 Stormpath, 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.stormpath.sdk.convert; import com.stormpath.sdk.lang.Assert; /** * An ElementsConversion reflects directives that indicate how to convert elements in a Collection resource into * converted output. * * @since 1.3.0 */ public class ElementsConversion { public static final String DEFAULT_NAME = "items"; private String name; private boolean enabled; private Conversion each; /** * Default constructor that, by default, will represent a collection as an object with a nested {@code items} * list. */ public ElementsConversion() { this.name = DEFAULT_NAME; this.enabled = true; this.each = new Conversion(); } /** * Returns the assigned name of the elements list within a wrapping object. This property is ignored if the * parent collection's {@link Conversion} strategy is set to {@link ConversionStrategyName#LIST LIST}. In the * {@code LIST} case, the collection elements will be returned directly and not wrapped in an object. * * @return the assigned name of the elements list within a wrapping object. * @see ConversionStrategyName#LIST */ public String getName() { return name; } /** * Sets the assigned name of the elements list within a wrapping object. This property is ignored if the * parent collection's {@link Conversion} strategy is set to {@link ConversionStrategyName#LIST LIST}. In the * {@code LIST} case, the collection elements will be returned directly and not wrapped in an object. * * @param name the assigned name of the elements list within a wrapping object. * @return this object for method chaining. * @see ConversionStrategyName#LIST */ public ElementsConversion setName(String name) { Assert.hasText("name argument cannot be null or empty."); this.name = name; return this; } /** * Returns {@code true} if this conversion is enabled and the elements should be converted, {@code false} if * the elements should not be converted and skipped/removed from the resulting output entirely. * * @return {@code true} if this conversion is enabled and the elements should be converted, {@code false} if * the elements should not be converted and skipped/removed from the resulting output entirely. */ public boolean isEnabled() { return enabled; } /** * Sets whether or not this conversion is enabled. A {@code true} value indicates that this conversion is enabled * and the elements should be converted, a {@code false} value indicates that the elements should not be converted * and skipped/removed from the resulting output entirely. * * @param enabled whether or not this conversion is enabled. * @return this object for method chaining. */ public ElementsConversion setEnabled(boolean enabled) { this.enabled = enabled; return this; } /** * Returns the Conversion that directs how to convert each element within the collection. * * @return the Conversion that directs how to convert each element within the collection. */ public Conversion getEach() { return each; } /** * Sets the Conversion that directs how to convert each element within the collection. * * @param each the Conversion that directs how to convert each element within the collection. * @return this object for method chaining. */ public ElementsConversion setEach(Conversion each) { this.each = each; return this; } }