private void checkResourceClassSetters(final MethodList methodList, final boolean encodedFlag) {
   for (AnnotatedMethod method :
       methodList
           .withoutMetaAnnotation(HttpMethod.class)
           .withoutAnnotation(Path.class)
           .hasNumParams(1)
           .hasReturnType(void.class)
           .nameStartsWith("set")) {
     Parameter p =
         Parameter.create(
             handlerClass,
             method.getMethod().getDeclaringClass(),
             encodedFlag || method.isAnnotationPresent(Encoded.class),
             method.getParameterTypes()[0],
             method.getGenericParameterTypes()[0],
             method.getAnnotations());
     if (null != p) {
       ResourceMethodValidator.validateParameter(
           p,
           method.getMethod(),
           method.getMethod().toGenericString(),
           "1",
           InvocableValidator.isSingleton(handlerClass));
     }
   }
 }
  private Resource.Builder doCreateResourceBuilder() {
    if (!disableValidation) {
      checkForNonPublicMethodIssues();
    }

    final Class<?> annotatedResourceClass = ModelHelper.getAnnotatedResourceClass(handlerClass);
    final Path rPathAnnotation = annotatedResourceClass.getAnnotation(Path.class);

    final boolean keepEncodedParams = (null != annotatedResourceClass.getAnnotation(Encoded.class));

    final List<MediaType> defaultConsumedTypes =
        extractMediaTypes(annotatedResourceClass.getAnnotation(Consumes.class));
    final List<MediaType> defaultProducedTypes =
        extractMediaTypes(annotatedResourceClass.getAnnotation(Produces.class));
    final Collection<Class<? extends Annotation>> defaultNameBindings =
        ReflectionHelper.getAnnotationTypes(annotatedResourceClass, NameBinding.class);

    final MethodList methodList = new MethodList(handlerClass);

    checkResourceClassSetters(methodList, keepEncodedParams);
    checkResourceClassFields(keepEncodedParams, InvocableValidator.isSingleton(handlerClass));

    Resource.Builder resourceBuilder;

    if (null != rPathAnnotation) {
      resourceBuilder = Resource.builder(rPathAnnotation.value());
    } else {
      resourceBuilder = Resource.builder();
    }

    boolean extended = false;
    if (handlerClass.isAnnotationPresent(ExtendedResource.class)) {
      resourceBuilder.extended(true);
      extended = true;
    }

    resourceBuilder.name(handlerClass.getName());

    addResourceMethods(
        resourceBuilder,
        methodList,
        keepEncodedParams,
        defaultConsumedTypes,
        defaultProducedTypes,
        defaultNameBindings,
        extended);
    addSubResourceMethods(
        resourceBuilder,
        methodList,
        keepEncodedParams,
        defaultConsumedTypes,
        defaultProducedTypes,
        defaultNameBindings,
        extended);
    addSubResourceLocators(resourceBuilder, methodList, keepEncodedParams, extended);

    if (LOGGER.isLoggable(Level.FINEST)) {
      LOGGER.finest(
          LocalizationMessages.NEW_AR_CREATED_BY_INTROSPECTION_MODELER(resourceBuilder.toString()));
    }

    return resourceBuilder;
  }