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

io.gatling.javaapi.core.Session Maven / Gradle / Ivy

There is a newer version: 3.13.1
Show newest version
/*
 * Copyright 2011-2024 GatlingCorp (https://gatling.io)
 *
 * 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 io.gatling.javaapi.core;

import static io.gatling.javaapi.core.internal.Converters.*;

import edu.umd.cs.findbugs.annotations.NonNull;
import edu.umd.cs.findbugs.annotations.Nullable;
import io.gatling.javaapi.core.internal.Sessions;
import java.util.*;
import scala.collection.Seq;

/**
 * The state of a given virtual user.
 *
 * 

Immutable, so all methods return a new occurrence and leave the original unmodified. */ public final class Session { private final io.gatling.core.session.Session wrapped; public Session(io.gatling.core.session.Session wrapped) { this.wrapped = wrapped; } /** * Get a stored value by its key * * @param key the storage key * @param the type of the desired value * @return the value if it exists, null otherwise */ public @Nullable T get(@NonNull String key) { return wrapped.attributes().getOrElse(key, () -> null); } /** * Get a stored String by its key * * @param key the storage key * @return the value if it exists, null otherwise */ public @Nullable String getString(@NonNull String key) { Object value = get(key); return value != null ? value.toString() : null; } /** * Get a stored {@link Integer} by its key. String representation of Integers will be parsed. * * @param key the storage key * @return the value if it exists, null otherwise * @throws NumberFormatException if the value is a String that can't be parsed into a int * @throws ClassCastException if the value is neither a number nor a String */ public @Nullable Integer getIntegerWrapper(@NonNull String key) { Object value = get(key); if (value instanceof Integer) { return (Integer) value; } else if (value instanceof String) { return Integer.valueOf((String) value); } else if (value == null) { return null; } else { throw new ClassCastException(value + " is not an Integer: " + value.getClass()); } } /** * Get a stored int by its key * * @param key the storage key * @return the value if it exists * @throws NullPointerException if the value is undefined * @throws NumberFormatException if the value is a String that can't be parsed into a int * @throws ClassCastException if the value is neither a number nor a String */ public int getInt(@NonNull String key) { Object value = wrapped.attributes().apply(key); if (value instanceof Integer) { return (Integer) value; } else if (value instanceof String) { return Integer.parseInt((String) value); } else if (value == null) { throw new NullPointerException(key + " is null"); } else { throw new ClassCastException(value + " is not an Integer: " + value.getClass()); } } /** * Get a stored {@link Long} by its key. String representation of Longs will be parsed. * * @param key the storage key * @return the value if it exists, null otherwise * @throws NumberFormatException if the value is a String that can't be parsed into a long * @throws ClassCastException if the value is neither a number nor a String */ public @Nullable Long getLongWrapper(@NonNull String key) { Object value = get(key); if (value instanceof Integer) { return ((Integer) value).longValue(); } else if (value instanceof Long) { return (Long) value; } else if (value instanceof String) { return Long.valueOf((String) value); } else if (value == null) { return null; } else { throw new ClassCastException(value + " is not an Long: " + value.getClass()); } } /** * Get a stored long by its key String representation of Longs will be parsed. * * @param key the storage key * @return the value if it exists * @throws NullPointerException if the value is undefined * @throws NumberFormatException if the value is a String that can't be parsed into a long * @throws ClassCastException if the value is neither a number nor a String */ public long getLong(@NonNull String key) { Object value = wrapped.attributes().apply(key); if (value instanceof Integer) { return ((Integer) value).longValue(); } else if (value instanceof Long) { return (Long) value; } else if (value instanceof String) { return Long.parseLong((String) value); } else if (value == null) { throw new NullPointerException(key + " is null"); } else { throw new ClassCastException(value + " is not an Long: " + value.getClass()); } } /** * Get a stored {@link Double} by its key. String representation of Doubles will be parsed. * * @param key the storage key * @return the value if it exists, null otherwise * @throws NumberFormatException if the value is a String that can't be parsed into a double * @throws ClassCastException if the value is neither a number nor a String */ public @Nullable Double getDoubleWrapper(@NonNull String key) { Object value = get(key); if (value instanceof Integer) { return ((Integer) value).doubleValue(); } else if (value instanceof Long) { return ((Long) value).doubleValue(); } else if (value instanceof Double) { return (Double) value; } else if (value instanceof String) { return Double.valueOf((String) value); } else if (value == null) { return null; } else { throw new ClassCastException(value + " is not an Double: " + value.getClass()); } } /** * Get a stored double by its key. String representation of Doubles will be parsed. * * @param key the storage key * @return the value if it exists * @throws NullPointerException if the value is undefined * @throws NumberFormatException if the value is a String that can't be parsed into a double * @throws ClassCastException if the value is neither a number nor a String */ public double getDouble(@NonNull String key) { Object value = wrapped.attributes().apply(key); if (value instanceof Integer) { return ((Integer) value).doubleValue(); } else if (value instanceof Long) { return ((Long) value).doubleValue(); } else if (value instanceof Double) { return (Double) value; } else if (value instanceof String) { return Double.parseDouble((String) value); } else if (value == null) { throw new NullPointerException(key + " is null"); } else { throw new ClassCastException(value + " is not an Double: " + value.getClass()); } } /** * Get a stored {@link Boolean} by its key. String representation of Booleans will be parsed. * * @param key the storage key * @return the value if it exists, null otherwise * @throws NumberFormatException if the value is a String that can't be parsed into a boolean * @throws ClassCastException if the value is neither a boolean nor a String */ public @Nullable Boolean getBooleanWrapper(@NonNull String key) { Object value = get(key); if (value instanceof Boolean) { return (Boolean) value; } else if (value instanceof String) { return Boolean.valueOf((String) value); } else if (value == null) { return null; } else { throw new ClassCastException(value + " is not an Boolean: " + value.getClass()); } } /** * Get a stored boolean by its key. String representation of Booleans will be parsed. * * @param key the storage key * @return the value if it exists * @throws NullPointerException if the value is undefined * @throws NumberFormatException if the value is a String that can't be parsed into a boolean * @throws ClassCastException if the value is neither a boolean nor a String */ public boolean getBoolean(@NonNull String key) { Object value = wrapped.attributes().apply(key); if (value instanceof Boolean) { return (Boolean) value; } else if (value instanceof String) { return Boolean.parseBoolean((String) value); } else if (value == null) { throw new NullPointerException(key + " is null"); } else { throw new ClassCastException(value + " is not an Boolean: " + value.getClass()); } } /** * Get a stored {@link List} by its key. * * @param key the storage key * @return the value if it exists, an empty List otherwise * @throws ClassCastException if the value is not a List */ @NonNull @SuppressWarnings("unchecked") public List getList(@NonNull String key) { Object value = get(key); if (value instanceof List) { return (List) value; } else if (value instanceof Seq) { return toJavaList((Seq) value); } else if (value == null) { return Collections.emptyList(); } else { throw new ClassCastException(value + " is not an List: " + value.getClass()); } } /** * Get a stored {@link Set} by its key. * * @param key the storage key * @return the value if it exists, an empty Set otherwise * @throws ClassCastException if the value is not a Set */ @NonNull @SuppressWarnings("unchecked") public Set getSet(@NonNull String key) { Object value = get(key); if (value instanceof Set) { return (Set) value; } else if (value instanceof scala.collection.Set) { return toJavaSet((scala.collection.Set) value); } else if (value != null) { throw new ClassCastException(value + " is not an Set: " + value.getClass()); } else { return Collections.emptySet(); } } /** * Get a stored {@link Map} by its key. * * @param key the storage key * @return the value if it exists, an empty Map otherwise * @throws ClassCastException if the value is not a Map */ @NonNull @SuppressWarnings("unchecked") public Map getMap(@NonNull String key) { Object value = get(key); if (value instanceof Map) { return (Map) value; } else if (value instanceof scala.collection.Map) { return toJavaMap((scala.collection.Map) value); } else if (value == null) { return Collections.emptyMap(); } else { throw new ClassCastException(value + " is not an Map: " + value.getClass()); } } /** * Create a new instance updated with a given attribute, possibly overriding an existing one * * @param key the attribute key * @param value the attribute value * @return a new instance with the new stored attribute */ @NonNull public Session set(@NonNull String key, Object value) { return new Session(wrapped.set(key, value)); } /** * Create a new instance updated with multiple attributes, possibly overriding existing ones * * @param newAttributes the new attributes * @return a new instance with the new stored attributes */ @NonNull public Session setAll(@NonNull Map newAttributes) { return new Session(wrapped.setAll(toScalaMap(newAttributes))); } /** * Create a new instance updated with an attribute removed * * @param key the key of the attribute to remove * @return a new instance with the attribute removed */ @NonNull public Session remove(@NonNull String key) { return new Session(wrapped.remove(key)); } /** * Create a new instance updated with all attributes removed except Gatling internal ones * * @return a new instance with a reset user state */ @NonNull public Session reset() { return new Session(wrapped.reset()); } /** * Create a new instance updated with multiple attributes removed * * @param keys the keys of the attributes to remove * @return a new instance with the attributes removed */ @NonNull public Session removeAll(@NonNull String... keys) { return new Session(wrapped.removeAll(toScalaSeq(keys))); } /** * Check if the Session contains a given attribute key * * @param key the attribute key * @return true is the key is defined */ public boolean contains(@NonNull String key) { return wrapped.contains(key); } /** @return if the Session's status is failure */ public boolean isFailed() { return wrapped.isFailed(); } /** * Create a new instance with the status forced to "succeeded" * * @return a new instance with the new status */ @NonNull public Session markAsSucceeded() { return new Session(wrapped.markAsSucceeded()); } /** * Create a new instance with the status forced to "failed" * * @return a new instance with the new status */ @NonNull public Session markAsFailed() { return new Session(wrapped.markAsFailed()); } /** * Provide the name of the scenario of the virtual user * * @return the virtual user's scenario name */ public String scenario() { return wrapped.scenario(); } /** * Provide the list of groups at the current position for the virtual user * * @return the list of groups, from shallowest to deepest */ public List groups() { return Sessions.groups(this); } /** * Provide the unique (for this injector) id of the virtual user * * @return the virtual user's id */ public long userId() { return wrapped.userId(); } public io.gatling.core.session.Session asScala() { return wrapped; } @Override public String toString() { return wrapped.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy