private void fixConfig()

in meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java [579:614]


    private void fixConfig() {
        final Project project = getProject();

        // defaults
        if (classpath == null) {
            classpath = project.getConfigurations().getByName(MeecrowavePlugin.NAME);
        }

        if (dir == null) {
            dir = new File(project.getBuildDir(), "meecrowave/run").getAbsolutePath();
        }

        // extension override
        final MeecrowaveExtension extension = MeecrowaveExtension.class.cast(project.getExtensions().findByName(MeecrowavePlugin.NAME));
        if (extension != null) {
            for (final Field f : MeecrowaveTask.class.getDeclaredFields()) {
                if (f.isAnnotationPresent(Input.class)) {
                    try {
                        final Field extField = MeecrowaveExtension.class.getDeclaredField(f.getName());
                        if (!extField.isAccessible()) {
                            extField.setAccessible(true);
                        }
                        final Object val = extField.get(extension);
                        if (val != null) {
                            if (!f.isAccessible()) {
                                f.setAccessible(true);
                            }
                            f.set(this, val);
                        }
                    } catch (final IllegalAccessException | NoSuchFieldException e) {
                        getLogger().debug("No field " + f.getName() + " in " + extension, e);
                    }
                }
            }
        }
    }