Examples of EnumField


Examples of jadx.core.dex.attributes.nodes.EnumClassAttr.EnumField

    if (staticMethod == null) {
      ErrorsCounter.classError(cls, "Enum class init method not found");
      // for this broken enum puts found fields and mark as inconsistent
      for (FieldNode field : enumFields) {
        attr.getFields().add(new EnumField(field.getName(), 0));
      }
      return false;
    }
    attr.setStaticMethod(staticMethod);

    // move enum specific instruction from static method to separate list
    BlockNode staticBlock = staticMethod.getBasicBlocks().get(0);
    List<InsnNode> insns = new ArrayList<InsnNode>();
    List<InsnNode> list = staticBlock.getInstructions();
    int size = list.size();
    for (int i = 0; i < size; i++) {
      InsnNode insn = list.get(i);
      insns.add(insn);
      if (insn.getType() == InsnType.SPUT) {
        IndexInsnNode fp = (IndexInsnNode) insn;
        FieldInfo f = (FieldInfo) fp.getIndex();
        if (f.getName().equals("$VALUES")) {
          if (i == size - 1) {
            cls.getMethods().remove(staticMethod);
          } else {
            list.subList(0, i + 1).clear();
          }
          break;
        }
      }
    }

    for (InsnNode insn : insns) {
      if (insn.getType() == InsnType.CONSTRUCTOR) {
        ConstructorInsn co = (ConstructorInsn) insn;
        if (insn.getArgsCount() < 2) {
          continue;
        }
        ClassInfo clsInfo = co.getClassType();
        ClassNode constrCls = cls.dex().resolveClass(clsInfo);
        if (constrCls == null) {
          continue;
        }
        if (!clsInfo.equals(cls.getClassInfo()) && !constrCls.getAccessFlags().isEnum()) {
          continue;
        }
        RegisterArg nameArg = (RegisterArg) insn.getArg(0);
        // InsnArg pos = insn.getArg(1);
        // TODO add check: pos == j
        String name = (String) nameArg.getConstValue(cls.dex());
        if (name == null) {
          throw new JadxException("Unknown enum field name: " + cls);
        }
        EnumField field = new EnumField(name, insn.getArgsCount() - 2);
        attr.getFields().add(field);
        for (int i = 2; i < insn.getArgsCount(); i++) {
          InsnArg constrArg;
          InsnArg iArg = insn.getArg(i);
          if (iArg.isLiteral()) {
            constrArg = iArg;
          } else {
            constrArg = CodeShrinker.inlineArgument(staticMethod, (RegisterArg) iArg);
            if (constrArg == null) {
              throw new JadxException("Can't inline constructor arg in enum: " + cls);
            }
          }
          field.getArgs().add(constrArg);
        }

        if (co.getClassType() != cls.getClassInfo()) {
          // enum contains additional methods
          for (ClassNode innerCls : cls.getInnerClasses()) {
            if (innerCls.getClassInfo().equals(co.getClassType())) {
              // remove constructor, because it is anonymous class
              for (Iterator<?> mit = innerCls.getMethods().iterator(); mit.hasNext(); ) {
                MethodNode innerMth = (MethodNode) mit.next();
                if (innerMth.getAccessFlags().isConstructor()) {
                  mit.remove();
                }
              }
              field.setCls(innerCls);
              innerCls.add(AFlag.DONT_GENERATE);
            }
          }
        }
      }
View Full Code Here

Examples of jadx.core.dex.attributes.nodes.EnumClassAttr.EnumField

    if (enumFields == null) {
      return;
    }
    InsnGen igen = null;
    for (Iterator<EnumField> it = enumFields.getFields().iterator(); it.hasNext(); ) {
      EnumField f = it.next();
      code.startLine(f.getName());
      if (!f.getArgs().isEmpty()) {
        code.add('(');
        for (Iterator<InsnArg> aIt = f.getArgs().iterator(); aIt.hasNext(); ) {
          InsnArg arg = aIt.next();
          if (igen == null) {
            // don't init mth gen if this is simple enum
            MethodGen mthGen = new MethodGen(this, enumFields.getStaticMethod());
            igen = new InsnGen(mthGen, false);
          }
          igen.addArg(code, arg);
          if (aIt.hasNext()) {
            code.add(", ");
          }
        }
        code.add(')');
      }
      if (f.getCls() != null) {
        code.add(' ');
        new ClassGen(f.getCls(), this, fallback).addClassBody(code);
      }
      if (it.hasNext()) {
        code.add(',');
      }
    }
View Full Code Here

Examples of org.drools.verifier.components.EnumField

            data.add( restriction );
            solvers.addPatternComponent( restriction );
        } else {

            EnumField enumField = (EnumField) data.getFieldByObjectTypeAndFieldName( base,
                                                                                     fieldName );
            if ( enumField == null ) {

                ObjectType objectType = data.getObjectTypeByFullName( base );

                if ( objectType == null ) {
                    Import objectImport = data.getImportByName( base );

                    if ( objectImport != null ) {
                        objectType = ObjectTypeFactory.createObjectType( objectImport );
                    } else {
                        objectType = ObjectTypeFactory.createObjectType( base );
                    }

                    data.add( objectType );
                }

                enumField = new EnumField();

                enumField.setObjectTypePath( objectType.getPath() );
                enumField.setObjectTypeName( objectType.getName() );
                enumField.setName( fieldName );

                objectType.getFields().add( enumField );

                data.add( enumField );
            }

            EnumRestriction restriction = new EnumRestriction( pattern );

            restriction.setPatternIsNot( pattern.isPatternNot() );
            restriction.setConstraintPath( constraint.getPath() );
            restriction.setFieldPath( constraint.getFieldPath() );
            restriction.setOperator( Operator.determineOperator( descr.getEvaluator(),
                                                                 descr.isNegated() ) );
            restriction.setEnumBasePath( enumField.getPath() );
            restriction.setEnumBase( base );
            restriction.setEnumName( fieldName );
            restriction.setOrderNumber( orderNumber );
            restriction.setParentPath( pattern.getPath() );
            restriction.setParentType( pattern.getVerifierComponentType() );
View Full Code Here

Examples of org.drools.verifier.components.EnumField

        saveVerifierComponentAndGet( new PatternEval( pattern ) );
    }

    @Test
    public void testSaveVerifierComponentAndGetForAllFields() {
        saveVerifierComponentAndGet( new EnumField() );
        saveVerifierComponentAndGet( new Field() );
    }
View Full Code Here

Examples of org.drools.verifier.components.EnumField

        saveVerifierComponentAndGet( new PatternEval( pattern ) );
    }

    @Test
    public void testSaveVerifierComponentAndGetForAllFields() {
        saveVerifierComponentAndGet( new EnumField(new PackageDescr("testPackage1")) );
        saveVerifierComponentAndGet( new Field(new PackageDescr("testPackage1")) );
    }
View Full Code Here

Examples of org.drools.verifier.components.EnumField

            data.add( restriction );
            solvers.addPatternComponent( restriction );
        } else {

            EnumField enumField = (EnumField) data.getFieldByObjectTypeAndFieldName( base,
                                                                                     fieldName );
            if ( enumField == null ) {

                ObjectType objectType = data.getObjectTypeByFullName( base );

                if ( objectType == null ) {
                    Import objectImport = data.getImportByName( base );

                    if ( objectImport != null ) {
                        objectType = ObjectTypeFactory.createObjectType( objectImport );
                    } else {
                        objectType = ObjectTypeFactory.createObjectType( base );
                    }

                    data.add( objectType );
                }

                enumField = new EnumField();

                enumField.setObjectTypePath( objectType.getPath() );
                enumField.setObjectTypeName( objectType.getName() );
                enumField.setName( fieldName );

                objectType.getFields().add( enumField );

                data.add( enumField );
            }

            EnumRestriction restriction = new EnumRestriction( pattern );

            restriction.setPatternIsNot( pattern.isPatternNot() );
            restriction.setConstraintPath( constraint.getPath() );
            restriction.setFieldPath( constraint.getFieldPath() );
            restriction.setOperator( Operator.determineOperator( descr.getEvaluator(),
                                                                 descr.isNegated() ) );
            restriction.setEnumBasePath( enumField.getPath() );
            restriction.setEnumBase( base );
            restriction.setEnumName( fieldName );
            restriction.setOrderNumber( orderNumber );
            restriction.setParentPath( pattern.getPath() );
            restriction.setParentType( pattern.getVerifierComponentType() );
View Full Code Here

Examples of org.drools.verifier.components.EnumField

        saveVerifierComponentAndGet( new PatternEval( pattern ) );
    }

    @Test
    public void testSaveVerifierComponentAndGetForAllFields() {
        saveVerifierComponentAndGet( new EnumField(new PackageDescr("testPackage1")) );
        saveVerifierComponentAndGet( new Field(new PackageDescr("testPackage1")) );
    }
View Full Code Here

Examples of org.drools.verifier.components.EnumField

      data.add(restriction);
      solvers.addRestriction(restriction);
    } else {

      EnumField enumField = (EnumField) data
          .getFieldByObjectTypeAndFieldName(base, fieldName);
      if (enumField == null) {
        ObjectType objectType = findOrCreateNewObjectType(base);

        enumField = new EnumField();
        enumField.setObjectTypeId(objectType.getId());
        enumField.setClassName(objectType.getName());
        enumField.setName(fieldName);

        objectType.getFields().add(enumField);

        data.add(enumField);
      }

      EnumRestriction restriction = new EnumRestriction();

      restriction.setRuleId(currentRule.getId());
      restriction.setPatternId(currentPattern.getId());
      restriction.setPatternIsNot(currentPattern.isPatternNot());
      restriction.setConstraintId(currentConstraint.getId());
      restriction.setFieldId(currentConstraint.getFieldId());
      restriction.setOperator(Operator.determineOperator(descr
          .getEvaluator(), descr.isNegated()));
      restriction.setEnumBaseId(enumField.getId());
      restriction.setEnumBase(base);
      restriction.setEnumName(fieldName);
      restriction.setOrderNumber(orderNumber);
      restriction.setParent(parent);
View Full Code Here

Examples of org.drools.verifier.components.EnumField

            data.add(restriction);
            solvers.addPatternComponent(restriction);
        } else {

            EnumField enumField = (EnumField) data.getFieldByObjectTypeAndFieldName(base,
                    fieldName);
            if (enumField == null) {

                ObjectType objectType = data.getObjectTypeByFullName(base);

                if (objectType == null) {
                    Import objectImport = data.getImportByName(base);

                    if (objectImport != null) {
                        objectType = ObjectTypeFactory.createObjectType(descr,objectImport);
                    } else {
                        objectType = ObjectTypeFactory.createObjectType(descr,base);
                    }

                    data.add(objectType);
                }

                enumField = new EnumField(descr);

                enumField.setObjectTypePath(objectType.getPath());
                enumField.setObjectTypeName(objectType.getName());
                enumField.setName(fieldName);

                objectType.getFields().add(enumField);

                data.add(enumField);
            }

            EnumRestriction restriction = new EnumRestriction(pattern);

            restriction.setPatternIsNot(pattern.isPatternNot());
            restriction.setFieldPath(field.getPath());
            restriction.setOperator(Operator.determineOperator(descr.getEvaluator(),
                    descr.isNegated()));
            restriction.setEnumBasePath(enumField.getPath());
            restriction.setEnumBase(base);
            restriction.setEnumName(fieldName);
            restriction.setOrderNumber(orderNumber);
            restriction.setParentPath(pattern.getPath());
            restriction.setParentType(pattern.getVerifierComponentType());
View Full Code Here

Examples of org.drools.verifier.components.EnumField

        saveVerifierComponentAndGet( new PatternEval( pattern ) );
    }

    @Test
    public void testSaveVerifierComponentAndGetForAllFields() {
        saveVerifierComponentAndGet( new EnumField() );
        saveVerifierComponentAndGet( new Field() );
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.