Package com.google.gwt.core.ext.typeinfo

Examples of com.google.gwt.core.ext.typeinfo.JAbstractMethod


    try {
      Class<?> cls = Class.forName(parameter.getEnclosingMethod().getEnclosingType().getQualifiedSourceName(),
              false, Thread.currentThread().getContextClassLoader());

      JAbstractMethod jMethod = parameter.getEnclosingMethod();

      int index = -1;
      for (int i = 0; i < jMethod.getParameters().length; i++) {
        if (jMethod.getParameters()[i].getName().equals(parameter.getName())) {
          index = i;
        }
      }

      Constructor c = null;
      try {
        c = cls.getConstructor(GWTClass.jParmToClass(jMethod.getParameters()));
      }
      catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
      }
View Full Code Here


    try {
      Class<?> cls = Class.forName(parameter.getEnclosingMethod().getEnclosingType().getQualifiedSourceName(),
              false, Thread.currentThread().getContextClassLoader());

      JAbstractMethod jMethod = parameter.getEnclosingMethod();

      int index = -1;
      for (int i = 0; i < jMethod.getParameters().length; i++) {
        if (jMethod.getParameters()[i].getName().equals(parameter.getName())) {
          index = i;
        }
      }

      Constructor c = null;
      try {
        c = cls.getConstructor(GWTClass.jParmToClass(jMethod.getParameters()));
      }
      catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
      }
View Full Code Here

    final OwnerFieldClass ownerFieldClass = OwnerFieldClass.getFieldClass(type,
        writer.getLogger());

    // See if there's a factory method
    JAbstractMethod creator = writer.getOwnerClass().getUiFactoryMethod(type);
    if (creator == null) {
      // If not, see if there's a @UiConstructor
      creator = ownerFieldClass.getUiConstructor();
    }

    if (creator != null) {
      for (JParameter param : creator.getParameters()) {
        unfilledRequiredParams.put(param.getName(), param);
      }
    }

    // Work through the localized attribute values and assign them
    // to appropriate constructor params or setters (which had better be
    // ready to accept strings)

    for (Entry<String, String> property : localizedValues.entrySet()) {
      String key = property.getKey();
      String value = property.getValue();

      JParameter param = unfilledRequiredParams.get(key);
      if (param != null) {
        if (!isString(writer, param)) {
          writer.die("In %s, cannot appply message attribute to non-string "
              + "constructor argument %s %s.", elem,
              param.getType().getSimpleSourceName(), key);
        }

        requiredValues.put(key, value);
        unfilledRequiredParams.remove(key);
     } else {
        JMethod setter = ownerFieldClass.getSetter(key);
        JParameter[] params = setter == null ? null : setter.getParameters();

        if (setter == null || !(params.length == 1)
            || !isString(writer, params[0])) {
          writer.die("In %s, no method found to apply message attribute %s",
              elem, key);
        } else {
          setterValues.put(key, value);
        }
      }
    }

    // Now go through the element and dispatch its attributes, remembering
    // that constructor arguments get first dibs
    for (int i = elem.getAttributeCount() - 1; i >= 0; i--) {
      // Backward traversal b/c we're deleting attributes from the xml element

      XMLAttribute attribute = elem.getAttribute(i);

      // Ignore xmlns attributes
      if (attribute.getName().startsWith("xmlns:")) {
        continue;
      }

      String propertyName = attribute.getLocalName();
      if (setterValues.keySet().contains(propertyName)
          || requiredValues.containsKey(propertyName)) {
        // TODO(rjrjr) A fine example of why res: namespace hack must die
        writer.die("Duplicate attribute name: %s", propertyName);
      }

      if (unfilledRequiredParams.keySet().contains(propertyName)) {
        JParameter parameter = unfilledRequiredParams.get(propertyName);
        AttributeParser parser =
            writer.getAttributeParser(attribute, parameter);
        if (parser == null) {
          writer.die("In %s, unable to parse %s as constructor argument "
              + "of type %s", elem, attribute,
              parameter.getType().getSimpleSourceName());
        }
        requiredValues.put(propertyName, parser.parse(attribute.consumeValue(),
            writer));
        unfilledRequiredParams.remove(propertyName);
      } else {
        JMethod setter = ownerFieldClass.getSetter(propertyName);
        if (setter == null) {
          writer.die("In %s, class %s has no appropriate set%s() method", elem,
              elem.getLocalName(), initialCap(propertyName));
        }

        JParameter[] params = setter.getParameters();

        AttributeParser parser = writer.getAttributeParser(attribute, params);

        if (parser == null) {
          writer.die("In %s, unable to parse %s.", elem, attribute);
        }
        setterValues.put(propertyName, parser.parse(attribute.consumeValue(),
            writer));
      }
    }

    if (!unfilledRequiredParams.isEmpty()) {
      StringBuilder b =
          new StringBuilder(String.format("%s missing required arguments:",
              elem));
      for (String name : unfilledRequiredParams.keySet()) {
        b.append(" ").append(name);
      }
      writer.die(b.toString());
    }

    if (creator != null) {
      String[] args = makeArgsList(requiredValues, creator);
      if (creator instanceof JMethod) { // Factory method
        String factoryMethod = String.format("owner.%s(%s)", creator.getName(),
            UiBinderWriter.asCommaSeparatedList(args));
        writer.setFieldInitializer(fieldName, factoryMethod);
      } else { // Annotated Constructor
        writer.setFieldInitializerAsConstructor(fieldName, type, args);
      }
View Full Code Here

    final OwnerFieldClass ownerFieldClass = OwnerFieldClass.getFieldClass(type,
        writer.getLogger());

    // See if there's a factory method
    JAbstractMethod creator = writer.getOwnerClass().getUiFactoryMethod(type);
    if (creator == null) {
      // If not, see if there's a @UiConstructor
      creator = ownerFieldClass.getUiConstructor();
    }

    if (creator != null) {
      for (JParameter param : creator.getParameters()) {
        unfilledRequiredParams.put(param.getName(), param.getType());
      }
    }

    // Work through the localized attribute values and assign them
    // to appropriate constructor params or setters (which had better be
    // ready to accept strings)

    for (Entry<String, String> property : localizedValues.entrySet()) {
      String key = property.getKey();
      String value = property.getValue();

      JType paramType = unfilledRequiredParams.get(key);
      if (paramType != null) {
        if (!isString(writer, paramType)) {
          writer.die("In %s, cannot apply message attribute to non-string "
              + "constructor argument %s %s.", elem,
              paramType.getSimpleSourceName(), key);
        }

        requiredValues.put(key, value);
        unfilledRequiredParams.remove(key);
      } else {
        JMethod setter = ownerFieldClass.getSetter(key);
        JParameter[] params = setter == null ? null : setter.getParameters();

        if (setter == null || !(params.length == 1)
            || !isString(writer, params[0].getType())) {
          writer.die("In %s, no method found to apply message attribute %s",
              elem, key);
        } else {
          setterValues.put(key, value);
        }
      }
    }

    // Now go through the element and dispatch its attributes, remembering
    // that constructor arguments get first dibs
    for (int i = elem.getAttributeCount() - 1; i >= 0; i--) {
      // Backward traversal b/c we're deleting attributes from the xml element

      XMLAttribute attribute = elem.getAttribute(i);

      // Ignore xmlns attributes
      if (attribute.getName().startsWith("xmlns:")) {
        continue;
      }

      String propertyName = attribute.getLocalName();
      if (setterValues.keySet().contains(propertyName)
          || requiredValues.containsKey(propertyName)) {
        writer.die("In %s, duplicate attribute name: %s", elem, propertyName);
      }

      if (unfilledRequiredParams.keySet().contains(propertyName)) {
        JType paramType = unfilledRequiredParams.get(propertyName);
        String value = elem.consumeAttributeWithDefault(attribute.getName(),
            null, paramType);
        if (value == null) {
          writer.die("In %s, unable to parse %s as constructor argument "
              + "of type %s", elem, attribute, paramType.getSimpleSourceName());
        }
        requiredValues.put(propertyName, value);
        unfilledRequiredParams.remove(propertyName);
      } else {
        JMethod setter = ownerFieldClass.getSetter(propertyName);
        if (setter == null) {
          writer.die("In %s, class %s has no appropriate set%s() method", elem,
              elem.getLocalName(), initialCap(propertyName));
        }
        String n = attribute.getName();
        String value = elem.consumeAttributeWithDefault(n,
            null, getParamTypes(setter));

        if (value == null) {
          writer.die("In %s, unable to parse %s.", elem, attribute);
        }
        setterValues.put(propertyName, value);
      }
    }

    if (!unfilledRequiredParams.isEmpty()) {
      StringBuilder b = new StringBuilder(String.format(
          "%s missing required attribute(s):", elem));
      for (String name : unfilledRequiredParams.keySet()) {
        b.append(" ").append(name);
      }
      writer.die(b.toString());
    }

    if (creator != null) {
      String[] args = makeArgsList(requiredValues, creator);
      if (creator instanceof JMethod) { // Factory method
        String factoryMethod = String.format("owner.%s(%s)", creator.getName(),
            UiBinderWriter.asCommaSeparatedList(args));
        writer.setFieldInitializer(fieldName, factoryMethod);
      } else { // Annotated Constructor
        writer.setFieldInitializerAsConstructor(fieldName, type, args);
      }
View Full Code Here

    final OwnerFieldClass ownerFieldClass = OwnerFieldClass.getFieldClass(type,
        writer.getLogger());

    // See if there's a factory method
    JAbstractMethod creator = writer.getOwnerClass().getUiFactoryMethod(type);
    if (creator == null) {
      // If not, see if there's a @UiConstructor
      creator = ownerFieldClass.getUiConstructor();
    }

    if (creator != null) {
      for (JParameter param : creator.getParameters()) {
        unfilledRequiredParams.put(param.getName(), param.getType());
      }
    }

    // Work through the localized attribute values and assign them
    // to appropriate constructor params or setters (which had better be
    // ready to accept strings)

    for (Entry<String, String> property : localizedValues.entrySet()) {
      String key = property.getKey();
      String value = property.getValue();

      JType paramType = unfilledRequiredParams.get(key);
      if (paramType != null) {
        if (!isString(writer, paramType)) {
          writer.die("In %s, cannot apply message attribute to non-string "
              + "constructor argument %s %s.", elem,
              paramType.getSimpleSourceName(), key);
        }

        requiredValues.put(key, value);
        unfilledRequiredParams.remove(key);
      } else {
        JMethod setter = ownerFieldClass.getSetter(key);
        JParameter[] params = setter == null ? null : setter.getParameters();

        if (setter == null || !(params.length == 1)
            || !isString(writer, params[0].getType())) {
          writer.die("In %s, no method found to apply message attribute %s",
              elem, key);
        } else {
          setterValues.put(key, value);
        }
      }
    }

    // Now go through the element and dispatch its attributes, remembering
    // that constructor arguments get first dibs
    for (int i = elem.getAttributeCount() - 1; i >= 0; i--) {
      // Backward traversal b/c we're deleting attributes from the xml element

      XMLAttribute attribute = elem.getAttribute(i);

      // Ignore xmlns attributes
      if (attribute.getName().startsWith("xmlns:")) {
        continue;
      }

      String propertyName = attribute.getLocalName();
      if (setterValues.keySet().contains(propertyName)
          || requiredValues.containsKey(propertyName)) {
        writer.die("In %s, duplicate attribute name: %s", elem, propertyName);
      }

      if (unfilledRequiredParams.keySet().contains(propertyName)) {
        JType paramType = unfilledRequiredParams.get(propertyName);
        String value = elem.consumeAttributeWithDefault(attribute.getName(),
            null, paramType);
        if (value == null) {
          writer.die("In %s, unable to parse %s as constructor argument "
              + "of type %s", elem, attribute, paramType.getSimpleSourceName());
        }
        requiredValues.put(propertyName, value);
        unfilledRequiredParams.remove(propertyName);
      } else {
        JMethod setter = ownerFieldClass.getSetter(propertyName);
        if (setter == null) {
          writer.die("In %s, class %s has no appropriate set%s() method", elem,
              elem.getLocalName(), initialCap(propertyName));
        }

        String value = elem.consumeAttributeWithDefault(attribute.getName(),
            null, getParamTypes(setter));

        if (value == null) {
          writer.die("In %s, unable to parse %s.", elem, attribute);
        }
        setterValues.put(propertyName, value);
      }
    }

    if (!unfilledRequiredParams.isEmpty()) {
      StringBuilder b = new StringBuilder(String.format(
          "%s missing required arguments:", elem));
      for (String name : unfilledRequiredParams.keySet()) {
        b.append(" ").append(name);
      }
      writer.die(b.toString());
    }

    if (creator != null) {
      String[] args = makeArgsList(requiredValues, creator);
      if (creator instanceof JMethod) { // Factory method
        String factoryMethod = String.format("owner.%s(%s)", creator.getName(),
            UiBinderWriter.asCommaSeparatedList(args));
        writer.setFieldInitializer(fieldName, factoryMethod);
      } else { // Annotated Constructor
        writer.setFieldInitializerAsConstructor(fieldName, type, args);
      }
View Full Code Here

    return true;
  }

  private boolean resolveMethod(TreeLogger logger, char[] unitSource,
      JClassType enclosingType, AbstractMethodDeclaration jmethod) {
    JAbstractMethod method;

    if (jmethod instanceof Clinit) {
      // Pretend we didn't see this.
      //
      return true;
    }

    String name = null;
    int declStart = jmethod.declarationSourceStart;
    int declEnd = jmethod.declarationSourceEnd;
    int bodyStart = jmethod.bodyStart;
    int bodyEnd = jmethod.bodyEnd;

    if (jmethod.isConstructor()) {
      name = String.valueOf(enclosingType.getSimpleSourceName());
      method = new JConstructor(enclosingType, name, declStart, declEnd,
          bodyStart, bodyEnd);
    } else {
      name = String.valueOf(jmethod.binding.selector);
      method = new JMethod(enclosingType, name, declStart, declEnd, bodyStart,
          bodyEnd);

      // Set the return type.
      //
      TypeBinding jreturnType = ((MethodDeclaration) jmethod).returnType.resolvedType;
      JType returnType = resolveType(logger, jreturnType);
      if (returnType == null) {
        // Unresolved type.
        //
        return false;
      }
      ((JMethod) method).setReturnType(returnType);
    }

    // Parse modifiers.
    //
    method.addModifierBits(Shared.bindingToModifierBits(jmethod.binding));
    if (enclosingType.isInterface() != null) {
      // Always add implicit modifiers on interface methods.
      //
      method.addModifierBits(Shared.MOD_PUBLIC | Shared.MOD_ABSTRACT);
    }

    // Add the parameters.
    //
    Argument[] jparams = jmethod.arguments;
View Full Code Here

    try {
      Class<?> cls = Class.forName(parameter.getEnclosingMethod().getEnclosingType().getQualifiedSourceName(),
          false, Thread.currentThread().getContextClassLoader());

      JAbstractMethod jMethod = parameter.getEnclosingMethod();

      int index = -1;
      for (int i = 0; i < jMethod.getParameters().length; i++) {
        if (jMethod.getParameters()[i].getName().equals(parameter.getName())) {
          index = i;
        }
      }

      Method method = null;
      try {
        method = cls.getDeclaredMethod(jMethod.getName(),
            InjectUtil.jParmToClass(jMethod.getParameters()));
      }
      catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
      }
      catch (ClassNotFoundException e) {
View Full Code Here

    try {
      Class<?> cls = Class.forName(parameter.getEnclosingMethod().getEnclosingType().getQualifiedSourceName(),
          false, Thread.currentThread().getContextClassLoader());

      JAbstractMethod jMethod = parameter.getEnclosingMethod();

      int index = -1;
      for (int i = 0; i < jMethod.getParameters().length; i++) {
        if (jMethod.getParameters()[i].getName().equals(parameter.getName())) {
          index = i;
        }
      }

      Constructor c = null;
      try {
        c = cls.getConstructor(InjectUtil.jParmToClass(jMethod.getParameters()));
      }
      catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
      }
View Full Code Here

        logger.log( TreeLogger.Type.WARN, message );
        throw new UnsupportedTypeException( message );
    }

    private void generateInstanceBuilderCreateMethod( SourceWriter source, BeanInfo info, ImmutableMap<String, PropertyInfo> properties ) {
        JAbstractMethod method = info.getCreatorMethod().get();

        StringBuilder parametersBuilder = new StringBuilder();
        StringBuilder parametersNameBuilder = new StringBuilder();
        for ( Map.Entry<String, JParameter> parameterEntry : info.getCreatorParameters().entrySet() ) {
            if ( parametersBuilder.length() > 0 ) {
                parametersBuilder.append( ", " );
                parametersNameBuilder.append( ", " );
            }
            PropertyInfo property = properties.get( parameterEntry.getKey() );

            parametersBuilder.append( property.getType().getParameterizedQualifiedSourceName() ).append( " " ).append( property
                    .getPropertyName() );
            parametersNameBuilder.append( property.getPropertyName() );
        }

        if ( method.isPrivate() ) {
            // private method, we use jsni
            source.println( "private native %s create(%s) /*-{", info.getType().getParameterizedQualifiedSourceName(), parametersBuilder
                    .toString() );
            source.indent();

            if ( null != method.isConstructor() ) {
                JConstructor constructor = method.isConstructor();
                source.println( "return %s(%s);", constructor.getJsniSignature(), parametersNameBuilder.toString() );
            } else {
                JMethod factory = method.isMethod();
                source.println( "return %s(%s);", factory.getJsniSignature(), parametersNameBuilder.toString() );
            }

            source.outdent();
            source.println( "}-*/;" );
        } else {
            source.println( "private %s create(%s) {", info.getType().getParameterizedQualifiedSourceName(), parametersBuilder.toString() );
            source.indent();

            if ( null != method.isConstructor() ) {
                source.println( "return new %s(%s);", info.getType().getParameterizedQualifiedSourceName(), parametersNameBuilder
                        .toString() );
            } else {
                source.println( "return %s.%s(%s);", info.getType().getQualifiedSourceName(), method.getName(), parametersNameBuilder
                        .toString() );
            }

            source.outdent();
            source.println( "}" );
View Full Code Here

    try {
      Class<?> cls = Class.forName(parameter.getEnclosingMethod().getEnclosingType().getQualifiedSourceName(),
          false, Thread.currentThread().getContextClassLoader());

      JAbstractMethod jMethod = parameter.getEnclosingMethod();

      int index = -1;
      for (int i = 0; i < jMethod.getParameters().length; i++) {
        if (jMethod.getParameters()[i].getName().equals(parameter.getName())) {
          index = i;
        }
      }

      Method method = null;
      try {
        method = cls.getDeclaredMethod(jMethod.getName(),
            GenUtil.jParmToClass(jMethod.getParameters()));
      }
      catch (NoSuchMethodException e) {
        throw new RuntimeException(e);
      }
      catch (ClassNotFoundException e) {
View Full Code Here

TOP

Related Classes of com.google.gwt.core.ext.typeinfo.JAbstractMethod

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.