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

com.liferay.gradle.plugins.rest.builder.BuildRESTTask Maven / Gradle / Ivy

Go to download

The REST Builder Gradle plugin lets you generate a Liferay REST service layer defined in a rest.yaml file.

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.gradle.plugins.rest.builder;

import com.liferay.gradle.util.GradleUtil;
import com.liferay.gradle.util.Validator;

import java.io.File;

import java.util.ArrayList;
import java.util.List;

import org.gradle.api.provider.Property;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.JavaExec;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity;

/**
 * @author Peter Shin
 */
@CacheableTask
public class BuildRESTTask extends JavaExec {

	public BuildRESTTask() {
		Property mainClass = getMainClass();

		mainClass.set("com.liferay.portal.tools.rest.builder.RESTBuilder");

		_forceClientVersionDescription = GradleUtil.getTaskPrefixedProperty(
			this, "forceClientVersionDescription");
		_forcePredictableOperationId = GradleUtil.getTaskPrefixedProperty(
			this, "forcePredictableOperationId");
	}

	@Override
	public void exec() {
		setArgs(_getCompleteArgs());

		super.exec();
	}

	@InputFile
	@Optional
	@PathSensitive(PathSensitivity.RELATIVE)
	public File getCopyrightFile() {
		return GradleUtil.toFile(getProject(), _copyrightFile);
	}

	@Input
	@Optional
	public String getForceClientVersionDescription() {
		return GradleUtil.toString(_forceClientVersionDescription);
	}

	@Input
	@Optional
	public String getForcePredictableOperationId() {
		return GradleUtil.toString(_forcePredictableOperationId);
	}

	@InputDirectory
	@PathSensitive(PathSensitivity.RELATIVE)
	public File getRESTConfigDir() {
		return GradleUtil.toFile(getProject(), _restConfigDir);
	}

	public void setCopyrightFile(Object copyrightFile) {
		_copyrightFile = copyrightFile;
	}

	public void setForceClientVersionDescription(
		Object forceClientVersionDescription) {

		_forceClientVersionDescription = forceClientVersionDescription;
	}

	public void setForcePredictableOperationId(
		Object forcePredictableOperationId) {

		_forcePredictableOperationId = forcePredictableOperationId;
	}

	public void setRESTConfigDir(Object restConfigDir) {
		_restConfigDir = restConfigDir;
	}

	private static void _addArg(List args, String name, File file) {
		if (file != null) {
			_addArg(args, name, file.getAbsolutePath());
		}
	}

	private static void _addArg(List args, String name, String value) {
		if (Validator.isNotNull(value)) {
			args.add(name);
			args.add(value);
		}
	}

	private List _getCompleteArgs() {
		List args = new ArrayList<>(getArgs());

		_addArg(args, "--copyright-file", getCopyrightFile());
		_addArg(args, "--rest-config-dir", getRESTConfigDir());

		String forceClientVersionDescription =
			getForceClientVersionDescription();

		if (forceClientVersionDescription != null) {
			args.add("--force-client-version-description");
			args.add(forceClientVersionDescription);
		}

		String forcePredictableOperationId = getForcePredictableOperationId();

		if (forcePredictableOperationId != null) {
			args.add("--force-predictable-operation-id");
			args.add(forcePredictableOperationId);
		}

		if (_isJakartaEnabled()) {
			args.add("--javaee-package");
			args.add("jakarta");
		}

		return args;
	}

	private boolean _isJakartaEnabled() {

		// TODO Return a value based on the branch or workspace

		return false;
	}

	private Object _copyrightFile;
	private Object _forceClientVersionDescription;
	private Object _forcePredictableOperationId;
	private Object _restConfigDir;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy