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

org.owasp.esapi.codecs.AbstractPushbackSequence Maven / Gradle / Ivy

Go to download

The Enterprise Security API (ESAPI) project is an OWASP project to create simple strong security controls for every web platform. Security controls are not simple to build. You can read about the hundreds of pitfalls for unwary developers on the OWASP website. By providing developers with a set of strong controls, we aim to eliminate some of the complexity of creating secure web applications. This can result in significant cost savings across the SDLC.

There is a newer version: 2.5.5.0
Show newest version
/**
 * OWASP Enterprise Security API (ESAPI)
 * 
 * This file is part of the Open Web Application Security Project (OWASP)
 * Enterprise Security API (ESAPI) project. For details, please see
 * http://www.owasp.org/index.php/ESAPI.
 *
 * Copyright (c) 2017 - The OWASP Foundation
 * 
 * The ESAPI is published by OWASP under the BSD license. You should read and accept the
 * LICENSE before you use, modify, and/or redistribute this software.
 * 
 * @author Matt Seil (mseil .at. owasp.org)
 * @created 2017
 * 
 */

package org.owasp.esapi.codecs;

/**
 * This Abstract class provides the generic logic for using a {@link PushbackSequence}
 * in regards to iterating strings.  The final Impl is intended for the user to supply
 * a type T such that the pushback interface can be utilized for sequences
 * of type T.  Presently this generic class is limited by the fact that 
 * input is a String.  
 *  
 * @author Matt Seil
 *
 * @param 
 */
public abstract class AbstractPushbackSequence implements PushbackSequence {
	protected String input;
	protected T pushback;
	protected T temp;
	protected int index = 0;
	protected int mark = 0;

	public AbstractPushbackSequence(String input) {
		this.input = input;
	}

	/**
	 * {@inheritDoc}
	 */
	public void pushback(T c) {
		pushback = c;
	}

	/**
	 * {@inheritDoc}
	 */
	public int index() {
		return index;
	}

	/**
	 * {@inheritDoc}
	 */
	public boolean hasNext() {
		if (pushback != null)
			return true;
		if (input == null)
			return false;
		if (input.length() == 0)
			return false;
		if (index >= input.length())
			return false;
		return true;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy