protected ChangeParameterMetaData createChangeParameterMetadata(String parameterName) {

        try {
            String displayName = parameterName.replaceAll("([A-Z])", " $1");
            displayName = displayName.substring(0, 1).toUpperCase() + displayName.substring(1);

            PropertyDescriptor property = null;
            for (PropertyDescriptor prop : PropertyUtils.getInstance().getDescriptors(getClass())) {
                if (prop.getDisplayName().equals(parameterName)) {
                    property = prop;
                    break;
                }
            }
            if (property == null) {
                throw new UnexpectedLiquibaseException("Could not find property " + parameterName);
            }

            Method readMethod = property.getReadMethod();
            if (readMethod == null) {
                readMethod = getClass().getMethod("is" + StringUtil.upperCaseFirst(property.getName()));
            }
            Type type = readMethod.getGenericReturnType();

            DatabaseChangeProperty changePropertyAnnotation = readMethod.getAnnotation(DatabaseChangeProperty.class);

            String mustEqualExisting = createMustEqualExistingMetaData(parameterName, changePropertyAnnotation);
            String description = createDescriptionMetaData(parameterName, changePropertyAnnotation);
            Map<String, Object> examples = createExampleValueMetaData(parameterName, changePropertyAnnotation);
            String since = createSinceMetaData(parameterName, changePropertyAnnotation);
            SerializationType serializationType = createSerializationTypeMetaData(
                parameterName, changePropertyAnnotation
            );
            String[] requiredForDatabase = createRequiredDatabasesMetaData(parameterName, changePropertyAnnotation);
            String[] supportsDatabase = createSupportedDatabasesMetaData(parameterName, changePropertyAnnotation);

            return new ChangeParameterMetaData(this, parameterName, displayName, description, examples, since,
                type, requiredForDatabase, supportsDatabase, mustEqualExisting, serializationType);
        } catch (IntrospectionException|UnexpectedLiquibaseException|NoSuchMethodException|SecurityException e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
protected ChangeParameterMetaData createChangeParameterMetadata(String parameterName) {

        try {
            String displayName = parameterName.replaceAll("([A-Z])", " $1");
            displayName = displayName.substring(0, 1).toUpperCase() + displayName.substring(1);

            PropertyDescriptor property = null;
            for (PropertyDescriptor prop : PropertyUtils.getInstance().getDescriptors(getClass())) {
                if (prop.getDisplayName().equals(parameterName)) {
                    property = prop;
                    break;
                }
            }
            if (property == null) {
                throw new UnexpectedLiquibaseException("Could not find property " + parameterName);
            }

            Method readMethod = property.getReadMethod();
            if (readMethod == null) {
                readMethod = getClass().getMethod("is" + StringUtil.upperCaseFirst(property.getName()));
            }
            Type type = readMethod.getGenericReturnType();

            DatabaseChangeProperty changePropertyAnnotation = readMethod.getAnnotation(DatabaseChangeProperty.class);

            String mustEqualExisting = createMustEqualExistingMetaData(parameterName, changePropertyAnnotation);
            String description = createDescriptionMetaData(parameterName, changePropertyAnnotation);
            Map<String, Object> examples = createExampleValueMetaData(parameterName, changePropertyAnnotation);
            String since = createSinceMetaData(parameterName, changePropertyAnnotation);
            SerializationType serializationType = createSerializationTypeMetaData(
                parameterName, changePropertyAnnotation
            );
            String[] requiredForDatabase = createRequiredDatabasesMetaData(parameterName, changePropertyAnnotation);
            String[] supportsDatabase = createSupportedDatabasesMetaData(parameterName, changePropertyAnnotation);

            return new ChangeParameterMetaData(this, parameterName, displayName, description, examples, since,
                type, requiredForDatabase, supportsDatabase, mustEqualExisting, serializationType);
        } catch (IntrospectionException|UnexpectedLiquibaseException|NoSuchMethodException|SecurityException e) {
            throw new UnexpectedLiquibaseException(e);
        }
    }
protected ChangeParameterMetaData createChangeParameterMetadata ( String parameterName ) { try { String displayName = parameterName . replaceAll ( "([A-Z])" , " $1" ) ; displayName = displayName . substring ( 0 , 1 ) . toUpperCase ( ) + displayName . substring ( 1 ) ; PropertyDescriptor property = null ; for ( PropertyDescriptor prop : PropertyUtils . getInstance ( ) . getDescriptors ( getClass ( ) ) ) { if ( prop . getDisplayName ( ) . equals ( parameterName ) ) { property = prop ; break ; } } if ( property == null ) { throw new UnexpectedLiquibaseException ( "Could not find property " + parameterName ) ; } Method readMethod = property . getReadMethod ( ) ; if ( readMethod == null ) { readMethod = getClass ( ) . getMethod ( "is" + StringUtil . upperCaseFirst ( property . getName ( ) ) ) ; } Type type = readMethod . getGenericReturnType ( ) ; DatabaseChangeProperty changePropertyAnnotation = readMethod . getAnnotation ( DatabaseChangeProperty . class ) ; String mustEqualExisting = createMustEqualExistingMetaData ( parameterName , changePropertyAnnotation ) ; String description = createDescriptionMetaData ( parameterName , changePropertyAnnotation ) ; Map < String , Object > examples = createExampleValueMetaData ( parameterName , changePropertyAnnotation ) ; String since = createSinceMetaData ( parameterName , changePropertyAnnotation ) ; SerializationType serializationType = createSerializationTypeMetaData ( parameterName , changePropertyAnnotation ) ; String [ ] requiredForDatabase = createRequiredDatabasesMetaData ( parameterName , changePropertyAnnotation ) ; String [ ] supportsDatabase = createSupportedDatabasesMetaData ( parameterName , changePropertyAnnotation ) ; return new ChangeParameterMetaData ( this , parameterName , displayName , description , examples , since , type , requiredForDatabase , supportsDatabase , mustEqualExisting , serializationType ) ; } catch ( IntrospectionException | UnexpectedLiquibaseException | NoSuchMethodException | SecurityException e ) { throw new UnexpectedLiquibaseException ( e ) ; } }
Called by {@link #createChangeMetaData()} to create metadata for a given parameter. It finds the method that corresponds to the parameter
and calls the corresponding create*MetaData methods such as {@link #createRequiredDatabasesMetaData(String, DatabaseChangeProperty)} to determine the
correct values for the ChangeParameterMetaData fields.

@throws UnexpectedLiquibaseException if the passed parameter does not exist
Called by { @link #createChangeMetaData () } to create metadata for a given parameter . It finds the method that corresponds to the parameter and calls the corresponding create * MetaData methods such as { @link #createRequiredDatabasesMetaData ( String DatabaseChangeProperty ) } to determine the correct values for the ChangeParameterMetaData fields .