/*
 * Copyright 2012 the original author or authors.
 *
 * 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 org.broadleafcommerce.core.web.processor;

import org.broadleafcommerce.common.money.Money;
import org.thymeleaf.Arguments;
import org.thymeleaf.dom.Element;
import org.thymeleaf.processor.attr.AbstractTextChildModifierAttrProcessor;
import org.thymeleaf.standard.expression.StandardExpressionProcessor;

/**
 * A Thymeleaf processor that renders a Money object according to the currently set locale options.
 * For example, when rendering "6.99" in a US locale, the output text would be "$6.99".
 * When viewing in France for example, you might see "6,99 (US)$". Alternatively, if currency conversion
 * was enabled, you may see "5,59 (euro-symbol)"
 * 
 * @author apazzolini
 */
public class PriceTextDisplayProcessor extends AbstractTextChildModifierAttrProcessor {

	/**
	 * Sets the name of this processor to be used in Thymeleaf template
	 */
	public PriceTextDisplayProcessor() {
		super("price");
	}
	
	@Override
	public int getPrecedence() {
		return 10000;
	}

	// TODO: Actually make the returned text formatted for the given locale
	@Override
	protected String getText(Arguments arguments, Element element, String attributeName) {
		Money price = (Money) StandardExpressionProcessor.processExpression(arguments, element.getAttributeValue(attributeName));
		return "$" + price.getAmount().toString();
	}
}

@@ -1885,16 +1885,88 @@
 Name));%0A
+%09%09if (price == null %7C%7C price.isZero()) %7B%0A%09%09%09return %22$0.00%22;%0A%09%09%7D else %7B%0A%09
 %09%09return
@@ -2002,13 +2002,17 @@
 ring();%0A
+%09%09%7D%0A
 %09%7D%0A%7D%0A

Fix NPE