@Override @SuppressWarnings("unchecked") public T get() throws GradleConnectionException, IllegalStateException { Object cachedValue = this.cacheKey.isInvalid() ? null : this.cache.getIfPresent(this.cacheKey); if (cachedValue != null) { return (T) cachedValue; } else { T result = this.delegate.get(); this.cache.put(this.cacheKey, result); return result; } }
@Override public CachingModelBuilder<T> withArguments(Iterable<String> arguments) { this.cacheKey.setArguments(arguments == null ? null : Lists.newArrayList(arguments)); this.delegate.withArguments(arguments); return this; }
@Override public ModelBuilder<T> addArguments(String... arguments) { this.cacheKey.addArguments(Arrays.asList(arguments)); this.delegate.addArguments(arguments); return this; }
@Override public PrideProjectModel execute(File moduleDirectory, ProjectConnection connection) { try { // Load the model for the build ModelBuilder<PrideProjectModel> builder = connection.model(PrideProjectModel.class); ImmutableList.Builder<String> arguments = ImmutableList.builder(); if (verbose) { arguments.add("--info", "--stacktrace"); } else { arguments.add("-q"); } // Add gradle-pride-projectmodel-plugin // See https://github.com/prezi/pride/issues/94 arguments.add("--init-script", modelInitFile.getAbsolutePath()); // See https://github.com/prezi/pride/issues/57 arguments.add("-P", "pride.disable"); //noinspection ToArrayCallWithZeroLengthArrayArgument builder.withArguments(arguments.build().toArray(new String[0])); return builder.get(); } catch (Exception ex) { String message = "Could not evaluate Gradle module in " + moduleDirectory + ": " + ex + "."; if (!verbose) { message += " You can get more detailed information about the error by rerunning Pride with --verbose."; } throw new PrideException(message, ex); } } });
@Override public CachingModelBuilder<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener); return this; }
@Override public CachingModelBuilder<T> forTasks(String... tasks) { this.cacheKey.setTasks(Arrays.asList(tasks)); this.delegate.forTasks(tasks); return this; }
@Override public ModelBuilder<T> addJvmArguments(String... jvmArguments) { this.cacheKey.addJvmArguments(Arrays.asList(jvmArguments)); this.delegate.addJvmArguments(jvmArguments); return this; }
static AndroidProject getAndroidProject( final File root, final org.gradle.tooling.model.GradleProject gradleProject) { String path = gradleProject.getPath(); String name = path.substring(1); File childDir = new File(root, name); GradleConnector childConnector = GradleConnector.newConnector().forProjectDirectory(childDir); ProjectConnection childConnection = childConnector.connect(); try { ModelBuilder<AndroidProject> modelBuilder = childConnection .model(AndroidProject.class) .withArguments("-Pandroid.injected.build.model.only.versioned=3"); if (nonNull(modelBuilder)) { return modelBuilder.get(); } return null; } catch (Exception e) { log.debug("not android project", e); return null; } finally { childConnection.close(); } }
@Override public CachingModelBuilder<T> addProgressListener(ProgressListener listener) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener); return this; }
@Override public CachingModelBuilder<T> forTasks(Iterable<String> tasks) { this.cacheKey.setTasks(tasks == null ? null : Lists.newArrayList(tasks)); this.delegate.forTasks(tasks); return this; }
@Override public ModelBuilder<T> addJvmArguments(Iterable<String> jvmArguments) { this.cacheKey.addJvmArguments(Lists.newArrayList(jvmArguments)); this.delegate.addJvmArguments(jvmArguments); return this; }
@Override public <T> T getModel(Class<T> modelType) throws GradleConnectionException, IllegalStateException { return model(modelType).get(); }
@Override public CachingModelBuilder<T> withArguments(String... arguments) { this.cacheKey.setArguments(Arrays.asList(arguments)); this.delegate.withArguments(arguments); return this; }
@Override public CachingModelBuilder<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener, OperationType... operationTypes) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener, operationTypes); return this; }
@Override public ModelBuilder<T> addArguments(Iterable<String> arguments) { this.cacheKey.addArguments(Lists.newArrayList(arguments)); this.delegate.addArguments(arguments); return this; }
@Override public <T> void getModel(Class<T> modelType, ResultHandler<? super T> handler) throws IllegalStateException { model(modelType).get(handler); }
@Override public CachingModelBuilder<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener, Set<OperationType> eventTypes) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener, eventTypes); return this; }
@Override public <T> void getModel(Class<T> modelType, ResultHandler<? super T> handler) throws IllegalStateException { model(modelType).get(handler); }
@Override public <T> T getModel(Class<T> modelType) throws GradleConnectionException, IllegalStateException { return model(modelType).get(); }
public <T> T getModel(Class<T> modelType) { return model(modelType).get(); }