Skip to content

Make field final

Introduction

Add the final property to a field, so that it never changes once it is initialized. Pre and Post Conditions

Pre and Post Conditions

Pre Conditions:

  1. User must enter the field's name and the name of the source class in order to make it final

  2. Check if the field exists, then make it final

Post Conditions:

  1. The value of this field should never be changed in the project

__init__(self, common_token_stream=None, source_class=None, field_name=None) special

The Main listener which parses the file based on the provided information, using ANTLR parser generator and tokenization methods. Detects the desired field and changes its status to final.

Parameters:

Name Type Description Default
common_token_stream CommonTokenStream

A stream of tokens generated by parsing the main file using the ANTLR parser generator

None
source_class str

Name of the class in which the refactoring has to be done

None
field_name str

Name of the field whose final status has to be changed

None

Returns:

Type Description

No returns

Source code in refactorings\make_field_final.py
def __init__(self, common_token_stream: CommonTokenStream = None, source_class=None, field_name: str = None):
    """The Main listener which parses the file based on the provided information,
       using ANTLR parser generator and tokenization methods.
       Detects the desired field and changes its status to final.

       Args:
           common_token_stream (CommonTokenStream): A stream of tokens generated by parsing the main file using the ANTLR parser generator

           source_class (str): Name of the class in which the refactoring has to be done

           field_name (str): Name of the field whose final status has to be changed

       Returns:
           No returns
    """
    if field_name is None:
        self.field_name = ""
    else:
        self.field_name = field_name

    if source_class is None:
        self.source_class = ""
    else:
        self.source_class = source_class
    if common_token_stream is None:
        raise ValueError('common_token_stream is None')
    else:
        self.token_stream_rewriter = TokenStreamRewriter(common_token_stream)

    self.is_source_class = False
    self.is_final = False