liquibase-core/src/main/java/liquibase/change/AbstractChange.java
@Override
    public ChangeMetaData createChangeMetaData() {
        try {
            DatabaseChange databaseChange = this.getClass().getAnnotation(DatabaseChange.class);

            if (databaseChange == null) {
                throw new UnexpectedLiquibaseException("No @DatabaseChange annotation for " + getClass().getName());
            }

            Set<ChangeParameterMetaData> params = new HashSet<>();
            for (PropertyDescriptor property : PropertyUtils.getInstance().getDescriptors(getClass())) {
                if (isInvalidProperty(property)) {
                    continue;
                }
                Method readMethod = property.getReadMethod();
                Method writeMethod = property.getWriteMethod();
                if (readMethod == null) {
                    try {
                        readMethod = this.getClass().getMethod(
                            "is" + StringUtil.upperCaseFirst(property.getName())
                        );
                    } catch (NoSuchMethodException|SecurityException ignore) {
                        //it was worth a try
                    }
                }
                if ((readMethod != null) && (writeMethod != null)) {
                    DatabaseChangeProperty annotation = readMethod.getAnnotation(DatabaseChangeProperty.class);
                    if ((annotation == null) || annotation.isChangeProperty()) {
                        params.add(createChangeParameterMetadata(property.getDisplayName()));
                    }
                }

            }

            Map<String, String> notes = new HashMap<>();
            for (DatabaseChangeNote note : databaseChange.databaseNotes()) {
                notes.put(note.database(), note.notes());
            }

            return new ChangeMetaData(databaseChange.name(), databaseChange.description(), databaseChange.priority(),
                databaseChange.appliesTo(), notes, params);
        } catch (UnexpectedLiquibaseException|IntrospectionException e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
@Override
    public ChangeMetaData createChangeMetaData() {
        try {
            DatabaseChange databaseChange = this.getClass().getAnnotation(DatabaseChange.class);

            if (databaseChange == null) {
                throw new UnexpectedLiquibaseException("No @DatabaseChange annotation for " + getClass().getName());
            }

            Set<ChangeParameterMetaData> params = new HashSet<>();
            for (PropertyDescriptor property : PropertyUtils.getInstance().getDescriptors(getClass())) {
                if (isInvalidProperty(property)) {
                    continue;
                }
                Method readMethod = property.getReadMethod();
                Method writeMethod = property.getWriteMethod();
                if (readMethod == null) {
                    try {
                        readMethod = this.getClass().getMethod(
                            "is" + StringUtil.upperCaseFirst(property.getName())
                        );
                    } catch (NoSuchMethodException|SecurityException ignore) {
                        //it was worth a try
                    }
                }
                if ((readMethod != null) && (writeMethod != null)) {
                    DatabaseChangeProperty annotation = readMethod.getAnnotation(DatabaseChangeProperty.class);
                    if ((annotation == null) || annotation.isChangeProperty()) {
                        params.add(createChangeParameterMetadata(property.getDisplayName()));
                    }
                }

            }

            Map<String, String> notes = new HashMap<>();
            for (DatabaseChangeNote note : databaseChange.databaseNotes()) {
                notes.put(note.database(), note.notes());
            }

            return new ChangeMetaData(databaseChange.name(), databaseChange.description(), databaseChange.priority(),
                databaseChange.appliesTo(), notes, params);
        } catch (UnexpectedLiquibaseException|IntrospectionException e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
@ Override public ChangeMetaData createChangeMetaData ( ) { try { DatabaseChange databaseChange = this . getClass ( ) . getAnnotation ( DatabaseChange . class ) ; if ( databaseChange == null ) { throw new UnexpectedLiquibaseException ( "No @DatabaseChange annotation for " + getClass ( ) . getName ( ) ) ; } Set < ChangeParameterMetaData > params = new HashSet <> ( ) ; for ( PropertyDescriptor property : PropertyUtils . getInstance ( ) . getDescriptors ( getClass ( ) ) ) { if ( isInvalidProperty ( property ) ) { continue ; } Method readMethod = property . getReadMethod ( ) ; Method writeMethod = property . getWriteMethod ( ) ; if ( readMethod == null ) { try { readMethod = this . getClass ( ) . getMethod ( "is" + StringUtil . upperCaseFirst ( property . getName ( ) ) ) ; } catch ( NoSuchMethodException | SecurityException ignore ) { //it was worth a try } } if ( ( readMethod != null ) && ( writeMethod != null ) ) { DatabaseChangeProperty annotation = readMethod . getAnnotation ( DatabaseChangeProperty . class ) ; if ( ( annotation == null ) || annotation . isChangeProperty ( ) ) { params . add ( createChangeParameterMetadata ( property . getDisplayName ( ) ) ) ; } } } Map < String , String > notes = new HashMap <> ( ) ; for ( DatabaseChangeNote note : databaseChange . databaseNotes ( ) ) { notes . put ( note . database ( ) , note . notes ( ) ) ; } return new ChangeMetaData ( databaseChange . name ( ) , databaseChange . description ( ) , databaseChange . priority ( ) , databaseChange . appliesTo ( ) , notes , params ) ; } catch ( UnexpectedLiquibaseException | IntrospectionException e ) { throw new UnexpectedLiquibaseException ( e ) ; } }
Generate the ChangeMetaData for this class. Default implementation reads from the @{@link DatabaseChange } annotation
and calls out to {@link #createChangeParameterMetadata(String)} for each property.

@throws UnexpectedLiquibaseException if no @DatabaseChange annotation on this Change class
Generate the ChangeMetaData for this class . Default implementation reads from the @ { @link DatabaseChange } annotation and calls out to { @link #createChangeParameterMetadata ( String ) } for each property .