Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/TernaryChoiceOperator.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/TernaryChoiceOperator.java143
1 files changed, 0 insertions, 143 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/TernaryChoiceOperator.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/TernaryChoiceOperator.java
deleted file mode 100644
index a6a36838a..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/validation/internal/el/operators/TernaryChoiceOperator.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * 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.validation.internal.el.operators;
-
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.jst.jsf.common.internal.types.IAssignable;
-import org.eclipse.jst.jsf.common.internal.types.LiteralType;
-import org.eclipse.jst.jsf.common.internal.types.TypeCoercer;
-import org.eclipse.jst.jsf.common.internal.types.TypeCoercionException;
-import org.eclipse.jst.jsf.common.internal.types.TypeConstants;
-import org.eclipse.jst.jsf.common.internal.types.TypeTransformer;
-import org.eclipse.jst.jsf.common.internal.types.ValueType;
-import org.eclipse.jst.jsf.validation.internal.el.diagnostics.DiagnosticFactory;
-
-/**
- * Represents the ternary choice op in EL: a ? b :c
- * Based on JSP.2.3.8
- *
- * @author cbateman
- *
- */
-public class TernaryChoiceOperator
-{
- private final DiagnosticFactory _diagnosticFactory;
-
-
- /**
- * @param diagnosticFactory
- */
- public TernaryChoiceOperator(DiagnosticFactory diagnosticFactory)
- {
- super();
- _diagnosticFactory = diagnosticFactory;
- }
-
- /**
- * @param choiceArg
- * @param whenTrueArg
- * @param whenFalseArg
- * @return the result of the choice arguments or null if indeterminant
- */
- public ValueType perform(ValueType choiceArg, ValueType whenTrueArg, ValueType whenFalseArg)
- {
- final boolean isChoiceBoolean =
- TypeCoercer.canCoerceToBoolean(TypeTransformer.transformBoxPrimitives(choiceArg.getSignature()));
-
- if (isChoiceBoolean)
- {
- if (choiceArg instanceof LiteralType)
- {
- try
- {
- Boolean result = ((LiteralType)choiceArg).coerceToBoolean();
-
- if (result != null)
- {
- return result.booleanValue() ? whenTrueArg : whenFalseArg;
- }
- }
- catch (TypeCoercionException tce)
- {
- return null;
- }
- }
-
- final String boxedWhenTrueArg =
- TypeTransformer.transformBoxPrimitives(whenTrueArg.getSignature());
-
- final String boxedWhenFalseArg =
- TypeTransformer.transformBoxPrimitives(whenFalseArg.getSignature());
- // check if the two results are the same type
- // TODO: could increase accuracy by appoximating type:i.e. if both
- // are numeric etc.
- if (boxedWhenTrueArg.equals(boxedWhenFalseArg))
- {
- return new ValueType(whenTrueArg, IAssignable.ASSIGNMENT_TYPE_RHS);
- }
-
- // otherwise, we have no idea what the resulting type is
- return null;
- }
-
- // if choice is not boolean, then can't resolve
- return null;
- }
-
- /**
- * @param choiceArg
- * @return a diagnostic validating the choice expr with these arguments
- */
- public Diagnostic validate(ValueType choiceArg)
- {
- if (TypeConstants.TYPE_JAVAOBJECT.equals(choiceArg.getSignature())) {
- return Diagnostic.OK_INSTANCE;
- }
-
- final boolean isChoiceBoolean =
- TypeCoercer.canCoerceToBoolean(TypeTransformer.transformBoxPrimitives(choiceArg.getSignature()));
-
- if (isChoiceBoolean)
- {
- if (choiceArg instanceof LiteralType)
- {
- try
- {
- Boolean result = ((LiteralType)choiceArg).coerceToBoolean();
-
- if (result != null)
- {
- String whichSelected = result.booleanValue() ? "first" : "second"; //$NON-NLS-1$ //$NON-NLS-2$
- return _diagnosticFactory.
- create_TERNARY_OP_CHOICE_IS_ALWAYS_SAME
- (result.booleanValue(), whichSelected);
- }
- }
- catch (TypeCoercionException tce)
- {
- return _diagnosticFactory.
- create_TERNARY_OP_CANNOT_COERCE_CHOICE_TO_BOOLEAN();
- }
- }
-
- // in both the case where the two arguments are the same and when
- // they are different types, the best we can say is "OK", since
- // we really don't know
- return Diagnostic.OK_INSTANCE;
- }
-
- // if choice is not boolean, then can't resolve
- return _diagnosticFactory.
- create_TERNARY_OP_CANNOT_COERCE_CHOICE_TO_BOOLEAN();
- }
-}

Back to the top