Package nexj.core.meta

Examples of nexj.core.meta.TypeMismatchException


    * Normalizes the left operand with class type.
    * @see nexj.core.persistence.Operator#normalize(int)
    */
   protected Operator normalizeLeftMetaclass(int nFlags)
   {
      throw new TypeMismatchException(getSymbol());
   }
View Full Code Here


    * The left one if primitive.
    * @see nexj.core.persistence.Operator#normalize(int)
    */
   protected Operator normalizeRightMetaclass(int nFlags)
   {
      throw new TypeMismatchException(getSymbol());
   }
View Full Code Here

            Primitive opType = (Primitive)op.getType();

            if (firstType.findEQFunction(opType) == null)
            {
               throw new TypeMismatchException(getSymbol());
            }

            op.setValue(firstType.getConverter(opType).invoke(op.getValue()));
            op.setType(firstType);

            if (op.getValue() == null && !first.isConstant())
            {
               bNull = true;
               removeOperand(i--);
            }
         }

         if (first.isConstant())
         {
            setConstantValue(evaluate());
         }
         else
         {
            if (first.getOrdinal() == AttributeOperator.ORDINAL)
            {
               AttributeOperator aop = (AttributeOperator)first;
               Converter converter = aop.getConverter();

               if (converter != null)
               {
                  aop.setType(converter.getSourceType());
                  aop.setNoConversion(true);

                  for (int i = 1; i < m_nOperandCount; ++i)
                  {
                     Operator op = m_operandArray[i];

                     op.setValue(converter.getInverseFunction().invoke(op.getValue()));
                     op.setType(converter.getSourceType());
                  }
               }
            }

            if (bNull)
            {
               if (m_nOperandCount > 1)
               {
                  OrOperator or = new OrOperator();

                  or.setParent(m_parent);

                  EqualsOperator eq = new EqualsOperator();

                  eq.setParent(or);
                  eq.setLeft((Operator)first.clone());
                  eq.setRight(new ConstantOperator(null));

                  or.addOperand(eq.normalize(nFlags | NORMALIZE_NORECUR));
                  or.addOperand(this);

                  return or.normalize(nFlags | NORMALIZE_NORECUR);
               }
               else
               {
                  EqualsOperator eq = new EqualsOperator();

                  eq.setParent(m_parent);
                  eq.setLeft(first);
                  eq.setRight(new ConstantOperator(null));
                  eq.normalize(nFlags | NORMALIZE_NORECUR);

                  return eq;
               }
            }
         }

      }
      else
      {
         assert first.getOrdinal() == AttributeOperator.ORDINAL;

         for (int i = 1; i < m_nOperandCount; ++i)
         {
            Operator op = m_operandArray[i];

            if (op.getType() != null)
            {
               if (op.getType().isPrimitive() &&
                  (op.getType() != Primitive.ANY || !op.isConstant() ||
                   op.getValue() != null && !(op.getValue() instanceof OIDHolder)))
               {
                  throw new TypeMismatchException(getSymbol());
               }
            }
         }

         if (first.isConstant())
         {
            foldObjectIn(first);
            return this;
         }

         if ((nFlags & NORMALIZE_PERSISTENCE) != 0 && m_source != null)
         {
            PersistenceAdapter adapter = m_source.getAdapter();
            Field[] fieldArray = adapter.getFields(m_source);

            if (fieldArray != null)
            {
               int nCount = fieldArray.length;

               assert nCount > 0;

               if (nCount == 1)
               {
                  Field field = fieldArray[0];

                  first.setSource(field);
                  first.setType(field.getType());

                  for (int i = 1; i < m_nOperandCount; ++i)
                  {
                     Operator op = m_operandArray[i];

                     if (op.getValue() == null)
                     {
                        op.setType(null);
                     }
                     else
                     {
                        OID oid = ((OIDHolder)op.getValue()).getOID();

                        if (oid != null)
                        {
                           Object[] valueArray = adapter.getValues(oid, m_source);

                           if (valueArray.length != 1)
                           {
                              throw new TypeMismatchException(getSymbol());
                           }

                           op.setValue(valueArray[0]);
                           op.setType(Primitive.primitiveOf(op.getValue()));
                        }
                        else
                        {
                           removeOperand(i--);
                        }
                     }
                  }

                  return normalize(nFlags | NORMALIZE_NORECUR);
               }
               else
               {
                  OrOperator or = new OrOperator();

                  for (int i = 1; i < m_nOperandCount; ++i)
                  {
                     Operator op = m_operandArray[i];
                     Object[] valueArray = null;

                     if (op.getValue() != null)
                     {
                        OID oid = ((OIDHolder)op.getValue()).getOID();

                        if (oid != null)
                        {
                           valueArray = adapter.getValues(oid, m_source);

                           if (valueArray.length != nCount)
                           {
                              throw new TypeMismatchException(getSymbol());
                           }
                        }
                        else
                        {
                           continue;
View Full Code Here

      if (first.getValue() != null)
      {
         if (!(first.getValue() instanceof OIDHolder))
         {
            throw new TypeMismatchException(getSymbol());
         }

         OID oid = ((OIDHolder)first.getValue()).getOID();

         if (oid != null)
         {
            firstValues = oid.getValueArray();
         }
         else
         {
            bFirstReference = true;
         }
      }

      for (int i = 1; i < m_nOperandCount; ++i)
      {
         Operator op = m_operandArray[i];
         Object[] opValues = null;
         boolean bReference = false;

         if (op.getValue() != null)
         {
            if (!(op.getValue() instanceof OIDHolder))
            {
               throw new TypeMismatchException(getSymbol());
            }

            OID oid = ((OIDHolder)op.getValue()).getOID();

            if (oid != null)
            {
               opValues = oid.getValueArray();
            }
            else
            {
               bReference = true;
            }
         }

         if (bFirstReference & bReference)
         {
            m_value = Boolean.valueOf(first.getValue() == op.getValue());
         }
         else if (firstValues != null)
         {
            int nCount = firstValues.length;

            if (opValues != null && opValues.length != nCount)
            {
               throw new TypeMismatchException(getSymbol());
            }
            else
            {
               m_value = equal(firstValues, opValues, nCount);
            }
View Full Code Here

         }

         return Boolean.FALSE;
      }

      throw new TypeMismatchException(getSymbol());
   }
View Full Code Here

         if (fieldArray != null)
         {
            if (m_bUnique && fieldArray.length > 1)
            {
               // TODO: Support multi-part keys
               throw new TypeMismatchException(getSymbol());
            }

            op = new AttributeOperator(fieldArray[0]);
            setOperand(op);
            op = op.normalize(nFlags | NORMALIZE_NORECUR);
View Full Code Here

            return this;
         }

         if (op.getType() != Primitive.BOOLEAN)
         {
            throw new TypeMismatchException(getSymbol());
         }

         if (op.isConstant())
         {
            if (!Boolean.FALSE.equals(op.getValue()))
View Full Code Here

      }
      else if (type.isPrimitive())
      {
         if (type != Primitive.BOOLEAN)
         {
            throw new TypeMismatchException(getSymbol());
         }

         if (m_operand.isConstant())
         {
            setConstantValue(m_operand.getValue());
View Full Code Here

            if (instance instanceof OIDHolder)
            {
               return ((OIDHolder)instance).getOID();
            }

            throw new TypeMismatchException("getValue");
         }
      }

      return Undefined.VALUE;
   }
View Full Code Here

               bResult = (type != null && obj instanceof Typed && type.isUpcast(((Typed)obj).getType()));
            }
            else
            {
               throw new TypeMismatchException(getSymbol());
            }

            machine.returnValue(Boolean.valueOf(bResult), nArgCount);

            return false;
View Full Code Here

TOP

Related Classes of nexj.core.meta.TypeMismatchException

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.