use of com.google.cloud.tools.intellij.appengine.sdk.CloudSdkInternals in project google-cloud-intellij by GoogleCloudPlatform.
the class AppEngineStandardSupportProviderTest method setupAppEngine.
private void setupAppEngine(AppEngineStandardLibraryPanel libraryPanel, Library library) {
CloudSdkService sdkService = mock(CloudSdkService.class);
CloudSdkServiceManager sdkServiceManager = mock(CloudSdkServiceManager.class);
when(sdkServiceManager.getCloudSdkService()).thenReturn(sdkService);
CloudSdkInternals mockSdkInternals = mock(CloudSdkInternals.class);
when(mockSdkInternals.getLibraries()).thenReturn(new File[] {});
CloudSdkInternals.setInstance(mockSdkInternals);
MavenRepositoryLibraryDownloader libraryDownloader = mock(MavenRepositoryLibraryDownloader.class);
when(libraryDownloader.downloadLibrary(any(Module.class), any(AppEngineStandardMavenLibrary.class))).thenReturn(library);
MutablePicoContainer applicationContainer = (MutablePicoContainer) ApplicationManager.getApplication().getPicoContainer();
applicationContainer.unregisterComponent(CloudSdkService.class.getName());
applicationContainer.registerComponentInstance(CloudSdkService.class.getName(), sdkService);
applicationContainer.unregisterComponent(MavenRepositoryLibraryDownloader.class.getName());
applicationContainer.registerComponentInstance(MavenRepositoryLibraryDownloader.class.getName(), libraryDownloader);
FrameworkSupportInModuleConfigurable configurable = selectFramework(AppEngineStandardFrameworkType.ID);
if (libraryPanel != null && configurable instanceof AppEngineSupportConfigurable) {
((AppEngineSupportConfigurable) configurable).setAppEngineStandardLibraryPanel(libraryPanel);
}
CloudSdkServiceUserSettings.getInstance().setCustomSdkPath(AppEngineCodeInsightTestCase.getSdkPath());
}
use of com.google.cloud.tools.intellij.appengine.sdk.CloudSdkInternals in project google-cloud-intellij by GoogleCloudPlatform.
the class AppEngineGwtServer method patchParameters.
@Override
public void patchParameters(@NotNull JavaParameters parameters, String originalOutputDir, @NotNull GwtFacet gwtFacet) {
final ParametersList programParameters = parameters.getProgramParametersList();
programParameters.add("-server");
programParameters.add("com.google.appengine.tools.development.gwt.AppEngineLauncher");
final CloudSdkService sdkService = CloudSdkService.getInstance();
CloudSdkInternals sdkInternals = CloudSdkInternals.getInstance();
sdkInternals.patchJavaParametersForDevServer(parameters.getVMParametersList());
// used (see IDEA-63068)
if (sdkInternals.getLibraries() != null) {
for (File jar : ArrayUtil.mergeArrays(sdkInternals.getLibraries(), sdkInternals.getJspLibraries())) {
parameters.getClassPath().addFirst(FileUtil.toSystemIndependentName(jar.getAbsolutePath()));
}
}
if (sdkInternals.getToolsApiJarFile() != null) {
parameters.getClassPath().add(sdkInternals.getToolsApiJarFile());
}
}
use of com.google.cloud.tools.intellij.appengine.sdk.CloudSdkInternals in project google-cloud-intellij by GoogleCloudPlatform.
the class AppEngineForbiddenCodeInspection method checkFile.
@Override
public ProblemDescriptor[] checkFile(@NotNull PsiFile file, @NotNull final InspectionManager manager, final boolean isOnTheFly) {
final Project project = manager.getProject();
Module module = ModuleUtilCore.findModuleForPsiElement(file);
final AppEngineStandardFacet appEngineStandardFacet = AppEngineStandardFacet.getAppEngineFacetByModule(module);
if (appEngineStandardFacet == null) {
return null;
}
if (appEngineStandardFacet.getRuntimeJavaVersion().atLeast(JavaVersion.JAVA_1_8)) {
return null;
}
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
final List<ProblemDescriptor> problems = new ArrayList<ProblemDescriptor>();
file.accept(new JavaRecursiveElementWalkingVisitor() {
CloudSdkInternals sdkInternals = CloudSdkInternals.getInstance();
@Override
public void visitDocComment(PsiDocComment comment) {
}
@Override
public void visitMethod(PsiMethod method) {
final PsiModifierList modifierList = method.getModifierList();
if (modifierList.hasModifierProperty(PsiModifier.NATIVE)) {
if (!isNativeMethodAllowed(method)) {
problems.add(manager.createProblemDescriptor(modifierList, "Native methods aren't allowed in App Engine application", isOnTheFly, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.GENERIC_ERROR_OR_WARNING));
}
}
super.visitMethod(method);
}
@Override
public void visitNewExpression(PsiNewExpression expression) {
final PsiJavaCodeReferenceElement classReference = expression.getClassReference();
if (classReference != null) {
final PsiElement resolved = classReference.resolve();
if (resolved instanceof PsiClass) {
final String qualifiedName = ((PsiClass) resolved).getQualifiedName();
if (qualifiedName != null && sdkInternals.isMethodInBlacklist(qualifiedName, "new")) {
final String message = "App Engine application should not create new instances of '" + qualifiedName + "' class";
problems.add(manager.createProblemDescriptor(classReference, message, isOnTheFly, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.GENERIC_ERROR_OR_WARNING));
}
}
}
super.visitNewExpression(expression);
}
@Override
public void visitMethodCallExpression(PsiMethodCallExpression expression) {
final PsiReferenceExpression methodExpression = expression.getMethodExpression();
final PsiElement element = methodExpression.resolve();
if (element instanceof PsiMethod) {
final PsiMethod method = (PsiMethod) element;
final PsiClass psiClass = method.getContainingClass();
if (psiClass != null) {
final String qualifiedName = psiClass.getQualifiedName();
final String methodName = method.getName();
if (qualifiedName != null && sdkInternals.isMethodInBlacklist(qualifiedName, methodName)) {
final String message = "AppEngine application should not call '" + StringUtil.getShortName(qualifiedName) + "" + methodName + "' method";
problems.add(manager.createProblemDescriptor(methodExpression, message, isOnTheFly, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.GENERIC_ERROR_OR_WARNING));
}
}
}
super.visitMethodCallExpression(expression);
}
@Override
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
final PsiElement resolved = reference.resolve();
if (resolved instanceof PsiClass) {
final PsiFile psiFile = resolved.getContainingFile();
if (psiFile != null) {
final VirtualFile virtualFile = psiFile.getVirtualFile();
if (virtualFile != null && !fileIndex.isInSource(virtualFile)) {
final List<OrderEntry> list = fileIndex.getOrderEntriesForFile(virtualFile);
for (OrderEntry entry : list) {
if (entry instanceof JdkOrderEntry) {
final String className = ClassUtil.getJVMClassName((PsiClass) resolved);
if (className != null && !sdkInternals.isClassInWhiteList(className)) {
problems.add(manager.createProblemDescriptor(reference, "Class '" + className + "' is not included in App Engine JRE White List", isOnTheFly, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.GENERIC_ERROR_OR_WARNING));
}
}
}
}
}
}
super.visitReferenceElement(reference);
}
});
return problems.toArray(new ProblemDescriptor[problems.size()]);
}
use of com.google.cloud.tools.intellij.appengine.sdk.CloudSdkInternals in project google-cloud-intellij by GoogleCloudPlatform.
the class AppEngineCodeInsightTestCase method addAppEngineSupport.
private void addAppEngineSupport(Module module) {
CloudSdkService sdkService = mock(CloudSdkService.class);
CloudSdkInternals mockSdkInternals = mock(CloudSdkInternals.class);
when(mockSdkInternals.getWebSchemeFile()).thenReturn(getWebSchemeFile());
CloudSdkInternals.setInstance(mockSdkInternals);
MutablePicoContainer applicationContainer = (MutablePicoContainer) ApplicationManager.getApplication().getPicoContainer();
applicationContainer.unregisterComponent(CloudSdkService.class.getName());
applicationContainer.registerComponentInstance(CloudSdkService.class.getName(), sdkService);
FacetManager.getInstance(module).addFacet(AppEngineStandardFacet.getFacetType(), "AppEngine", null);
}
Aggregations