public NbProjectInfo loadInfo(File project, String... extraArgs) { NbProjectInfo ret = null; GradleConnector gconn = GradleConnector.newConnector(); ProjectConnection pconn = gconn.forProjectDirectory(project).connect(); BuildActionExecuter<NbProjectInfo> action = pconn.action(new NbProjectInfoAction()); action.setJvmArguments( "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006", "-DNETBEANS_TOOLING_JAR=" + buildDir + "/libs/netbeans-gradle-tooling.jar" ); ArrayList<String> args = new ArrayList<>(); args.add("-I"); args.add(buildDir + "/resources/main/nb-tooling.gradle"); args.addAll(Arrays.asList(extraArgs)); action.withArguments(args.toArray(new String[args.size()])); try { ret = action.run(); } catch (GradleConnectionException | IllegalStateException ex) { System.err.println("Failed to retrieve project information for: " + project); ex.printStackTrace(); } finally { try { pconn.close(); } catch (NullPointerException ex) { } } return ret; }
@SuppressWarnings("unchecked") BuildActionExecuter<AcumenTreeModel> action = connection.action(new AcumenModelAction()); action.addProgressListener(new ProgressListener() { public void statusChanged(ProgressEvent event) { toolingLogger.log(event.getDescription()); action.withArguments("--init-script", initAcumenFile.getAbsolutePath()); File jdkHome = getJdkHome(); if (jdkHome != null) { toolingLogger.log("Using Gradle JAVA_HOME=" + jdkHome); action.setJavaHome(jdkHome); atm = action.run();
executerArgs[executerArgs.length - 1] = initScriptRef.getFile().getPath(); executer.withArguments(executerArgs); return transformActionModels(executer.run()); } finally { initScriptRef.close();
@Override @SuppressWarnings("unchecked") public T run() 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.run(); this.cache.put(this.cacheKey, result); return result; } }
@Override public CachingBuildActionExecuter<T> withArguments(String... arguments) { this.cacheKey.setArguments(Arrays.asList(arguments)); this.delegate.withArguments(arguments); return this; }
@Override public CachingBuildActionExecuter<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener); return this; }
@Override public CachingBuildActionExecuter<T> setJvmArguments(String... jvmArguments) { this.cacheKey.setJvmArguments(Arrays.asList(jvmArguments)); this.delegate.setJvmArguments(jvmArguments); return this; }
@Override public CachingBuildActionExecuter<T> setJavaHome(File javaHome) { this.cacheKey.setJavaHome(javaHome); this.delegate.setJavaHome(javaHome); return this; }
@Override public CachingBuildActionExecuter<T> addArguments(Iterable<String> arguments) { this.cacheKey.addArguments(Lists.newArrayList(arguments)); this.delegate.addArguments(arguments); return this; }
@Override public CachingBuildActionExecuter<T> addJvmArguments(Iterable<String> jvmArguments) { this.cacheKey.addJvmArguments(Lists.newArrayList(jvmArguments)); this.delegate.addJvmArguments(jvmArguments); return this; }
@Override public Collection<T> call() throws Exception { BuildAction<Collection<T>> query = BuildActionUtil.compositeModelQuery(model); return DefaultModelProvider.this.gradleBuild.withConnection(connection -> connection.action(query).run(), monitor); } }, fetchStrategy, cacheKey);
@Override public CachingBuildActionExecuter<T> withArguments(Iterable<String> arguments) { this.cacheKey.setArguments(arguments == null ? null : Lists.newArrayList(arguments)); this.delegate.withArguments(arguments); return this; }
@Override public CachingBuildActionExecuter<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener, Set<OperationType> eventTypes) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener, eventTypes); return this; }
@Override public CachingBuildActionExecuter<T> setJvmArguments(Iterable<String> jvmArguments) { this.cacheKey.setJvmArguments(jvmArguments == null ? null : Lists.newArrayList(jvmArguments)); this.delegate.setJvmArguments(jvmArguments); return this; }
@Override public CachingBuildActionExecuter<T> addArguments(String... arguments) { this.cacheKey.addArguments(Arrays.asList(arguments)); this.delegate.addArguments(arguments); return this; }
@Override public CachingBuildActionExecuter<T> addJvmArguments(String... jvmArguments) { this.cacheKey.addJvmArguments(Arrays.asList(jvmArguments)); this.delegate.addJvmArguments(jvmArguments); return this; }
@Override @SuppressWarnings("unchecked") public void run(ResultHandler<? super T> handler) throws IllegalStateException { Object cachedValue = this.cacheKey.isInvalid() ? null : this.cache.getIfPresent(this.cacheKey); if (cachedValue != null) { handler.onComplete((T) cachedValue); } else { InspectableResultHandler<T> inspectableResultHandler = new InspectableResultHandler<>(); this.delegate.run(inspectableResultHandler); inspectableResultHandler.getResult().ifPresent(r -> this.cache.put(this.cacheKey, r)); inspectableResultHandler.forwardResults(handler); } } }
@Override public CachingBuildActionExecuter<T> addProgressListener(ProgressListener listener) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener); return this; }
@Override public void init(InitializationContext context, IProgressMonitor monitor) { GradleBuild gradleBuild = context.getGradleBuild(); try { Collection<EclipseProject> rootModels = gradleBuild.withConnection(connection -> connection.action(BuildActionUtil.compositeModelQuery(EclipseProject.class)).run(), monitor); this.locationToProject = rootModels.stream() .map(p -> ModelUtils.createCompatibilityModel(p)) .flatMap(p -> HierarchicalElementUtils.getAll(p).stream()) .collect(Collectors.toMap(p -> p.getProjectDirectory(), p -> p)); } catch (Exception e) { context.error("Cannot Query Eclipse model", e); } }
@Override public CachingBuildActionExecuter<T> addProgressListener(org.gradle.tooling.events.ProgressListener listener, OperationType... operationTypes) { this.cacheKey.markInvalid(); this.delegate.addProgressListener(listener, operationTypes); return this; }