/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package org.arquillian.liferay.maven.internal;

import java.io.File;

import java.util.Map;

import org.jboss.shrinkwrap.resolver.api.maven.pom.ParsedPomFile;
import org.jboss.shrinkwrap.resolver.impl.maven.archive.plugins.AbstractPackagingPluginConfiguration;
import org.jboss.shrinkwrap.resolver.impl.maven.util.Validate;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author <a href="mailto:kamesh.sampath@liferay.com">Kamesh Sampath</a>
 */
public class LiferayPluginConfiguration
	extends AbstractPackagingPluginConfiguration {

	public static final String LIFERAY_PLUGIN_GA =
		"com.liferay.maven.plugins:liferay-maven-plugin";

	/**
	 * @param pomFile
	 */
	public LiferayPluginConfiguration(ParsedPomFile pomFile) {
		super(pomFile);
		Map<String, Object> configValues = pomFile.getPluginConfiguration(
			LIFERAY_PLUGIN_GA);

		if (_log.isTraceEnabled()) {
			_log.trace("Liferay Plugin Configuration:" + configValues);
		}

		appServerLibGlobalDir = (String)configValues.get(
			"appServerLibGlobalDir");

		if (Validate.isNullOrEmpty(appServerLibGlobalDir)) {
			throw new RuntimeException(
				"Please configure 'appServerLibGlobalDir' in maven liferay " +
					"plugin");
		}

		appServerPortalDir = (String)configValues.get("appServerPortalDir");

		if (Validate.isNullOrEmpty(appServerPortalDir)) {
			throw new RuntimeException(
				"Please configure 'appServerPortalDir' in maven liferay " +
					"plugin");
		}

		appServerClassesPortalDir = (String)configValues.get(
			"appServerClassesPortalDir");

		if (Validate.isNullOrEmpty(appServerClassesPortalDir)) {
			appServerClassesPortalDir = appServerPortalDir + "/WEB-INF/classes";
		}

		appServerLibPortalDir = (String)configValues.get(
			"appServerLibPortalDir");

		if (Validate.isNullOrEmpty(appServerLibPortalDir)) {
			appServerLibPortalDir = appServerPortalDir + "/WEB-INF/lib";
		}

		appServerTldPortalDir = (String)configValues.get(
			"appServerTldPortalDir");

		if (Validate.isNullOrEmpty(appServerTldPortalDir)) {
			appServerTldPortalDir = appServerPortalDir + "/WEB-INF/tld";
		}

		liferayVersion = (String)configValues.get("liferayVersion");

		if (Validate.isNullOrEmpty(liferayVersion)) {
			throw new RuntimeException(
				"Please configure 'liferayVersion' in maven liferay plugin");
		}

		pluginType = (String)configValues.get("pluginType");

		autoDeployDir = (String)configValues.get("autoDeployDir");

		appServerDeployDir = (String)configValues.get("appServerDeployDir");

		customPortletXml = Boolean.valueOf(
			(String)configValues.get("customPortletXml")).booleanValue();

		baseDir = pomFile.getBuildOutputDirectory().getAbsolutePath();
		destDir = pomFile.getBuildOutputDirectory().getAbsolutePath() + "/..";
		directDeployArchive = new File(
			pomFile.getBuildOutputDirectory(), pomFile.getFinalName());
	}

	/**
	 * @return the appServerClassesPortalDir
	 */
	public String getAppServerClassesPortalDir() {
		return appServerClassesPortalDir;
	}

	/**
	 * @return the appServerDeployDir
	 */
	public String getAppServerDeployDir() {
		return appServerDeployDir;
	}

	/**
	 * @return the appServerLibGlobalDir
	 */
	public String getAppServerLibGlobalDir() {
		return appServerLibGlobalDir;
	}

	/**
	 * @return the appServerLibPortalDir
	 */
	public String getAppServerLibPortalDir() {
		return appServerLibPortalDir;
	}

	/**
	 * @return the appServerPortalDir
	 */
	public String getAppServerPortalDir() {
		return appServerPortalDir;
	}

	/**
	 * @return the appServerTldPortalDir
	 */
	public String getAppServerTldPortalDir() {
		return appServerTldPortalDir;
	}

	public String getAppServerType() {
		return _APP_SERVER_TYPE;
	}

	/**
	 * @return the autoDeployDir
	 */
	public String getAutoDeployDir() {
		return autoDeployDir;
	}

	public String getBaseDir() {
		return baseDir;
	}

	/**
	 * @return the destDir
	 */
	public String getDestDir() {
		return destDir;
	}

	public File getDirectDeployArchive() {
		return directDeployArchive;
	}

	/**
	 * (non-Javadoc)
	 * @see org.jboss.shrinkwrap.resolver.impl.maven.archive.plugins.
	 * AbstractPackagingPluginConfiguration#getExcludes()
	 */
	@Override
	public String[] getExcludes() {

		// Nothing here

		return new String[0];
	}

	/**
	 * (non-Javadoc)
	 * @see org.jboss.shrinkwrap.resolver.impl.maven.archive.plugins.
	 * AbstractPackagingPluginConfiguration#getIncludes()
	 */
	@Override
	public String[] getIncludes() {

		// Nothing here

		return new String[0];
	}

	/**
	 * @return the liferayVersion
	 */
	public String getLiferayVersion() {
		return liferayVersion;
	}

	/**
	 * (non-Javadoc)
	 * @see org.jboss.shrinkwrap.resolver.impl.maven.archive.plugins.
	 * AbstractPackagingPluginConfiguration#getPluginGA()
	 */
	@Override
	public String getPluginGA() {
		return LIFERAY_PLUGIN_GA;
	}

	/**
	 * @return the pluginType
	 */
	public String getPluginType() {
		return pluginType;
	}

	public boolean isCustomPortletXml() {
		return customPortletXml;
	}

	// TODO change

	private static final String _APP_SERVER_TYPE = "tomcat";
	private static final Logger _log = LoggerFactory.getLogger(
		LiferayPluginConfiguration.class);

	private String appServerClassesPortalDir;
	private String appServerDeployDir;
	private String appServerLibGlobalDir;
	private String appServerLibPortalDir;
	private String appServerPortalDir;
	private String appServerTldPortalDir;
	private String autoDeployDir;
	private String baseDir;
	private boolean customPortletXml;
	private String destDir;
	private File directDeployArchive;
	private String liferayVersion;
	private String pluginType;

}
@@ -3111,15 +3111,20 @@
 ean.
-valueOf
+parseBoolean
 (%0A%09%09
@@ -3173,23 +3173,8 @@
 l%22))
-.booleanValue()
 ;%0A%0A%09

Use parseBoolean instead of booleanValue