blob: 5631b8700ba8a8bf405bdd913ca3c1403f87ebfa [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cameron Bateman/Oracle - initial API and implementation
*
********************************************************************************/
package org.eclipse.jst.jsf.common.internal.types;
import java.math.BigDecimal;
import java.math.BigInteger;
import org.eclipse.jdt.core.Signature;
/**
* Represents an FloatLiteral as defined by JSP.2.9
* @author cbateman
*
*/
public class FloatLiteralType extends NumericTypeLiteral
{
private final double _literalValue;
/**
* @param literalValue
*/
public FloatLiteralType(double literalValue)
{
// according to the notes to JSP.2.9, bullet 5, float literals are doubles
super(Signature.SIG_DOUBLE);
_literalValue = literalValue;
}
protected Number getBoxedValue()
{
return new Double(_literalValue);
}
public Number coerceToNumber(Class T) throws TypeCoercionException
{
if (T == BigInteger.class)
{
return new BigDecimal(_literalValue).toBigInteger();
}
else if (T == BigDecimal.class)
{
return new BigDecimal(_literalValue);
}
Number commonCoercion = super.coerceToNumber(T);
if (commonCoercion == null)
{
throw new IllegalArgumentException("Not a target numeric type: "+T); //$NON-NLS-1$
}
return commonCoercion;
}
}