public function validate() {

		hypePrototyper()->prototype->saveStickyValues($this->action);

		$valid = true;

		foreach ($this->fields as $field) {
			if (!$field instanceof Field) {
				continue;
			}

			$validation = $field->validate($this->entity);
			hypePrototyper()->prototype->setFieldValidationStatus($this->action, $field->getShortname(), $validation);

			if (!$validation->isValid()) {
				$valid = false;
			}
		}
		
		if (!$valid) {
			throw new \hypeJunction\Exceptions\ActionValidationException("Invalid input");
		}

		hypePrototyper()->prototype->clearStickyValues($this->action);
		return true;
	}