Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate JetBrains google-app-engine-plugin into Google's plugin #780

Merged
merged 269 commits into from
Jul 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
269 commits
Select commit Hold shift + click to select a range
ab705de
removed unused dependencies on 'java-tests'
chashnikov Jun 3, 2015
e682c42
app engine for java: specify 'web' framework as dependency only in ID…
chashnikov Dec 8, 2015
c0a65a5
don't specify ITNReporter as errorHandler explicitly, it is automatic…
chashnikov Dec 17, 2015
513ccbc
google-app-engine-ultimate: cleanup dependencies
YannCebron Mar 31, 2016
082bafe
deprecated DebugProcessAdapter, use DebugProcessListener with default…
gorrus May 20, 2016
0aa4a12
javaee: some classes moved to javaee-api to get rid of dependency on …
chashnikov Jun 3, 2016
a94977c
Google App Engine plugin added
chashnikov May 4, 2009
69011b5
Google App Engine: fix for 8.x
chashnikov May 4, 2009
de7c10e
Google App Engine: fix for 8.x - 2
chashnikov May 4, 2009
2941237
compilation fix
chashnikov May 4, 2009
e598f8a
Google App Engine: inspection for forbidden code & support provider
chashnikov May 5, 2009
5c54aed
Google App Engine: version update
chashnikov May 5, 2009
a0a792c
Google App Engine: inspection for jsps fixed, descriptions updated
chashnikov May 5, 2009
af81bcf
Google App Engine: fix for 8.x
chashnikov May 5, 2009
7c1df58
Google App Engine: facet, fetching jre whitelist from sdk, create app…
chashnikov May 6, 2009
d87f9d3
Google App Engine: fix facet editor, set SDK in detected facet
chashnikov May 6, 2009
84e8b3d
Google App Engine persistence support: create descriptor and librarie…
chashnikov May 14, 2009
fdc5ea1
Google App Engine: version increased
chashnikov May 14, 2009
51fc093
Google App Engine: exc fixed
chashnikov May 15, 2009
ffccdc2
Google App Engine: configuring list of files to run JDO enhancer on
chashnikov May 15, 2009
3604486
Google App Engine: fix & version updated
chashnikov May 15, 2009
a79971d
App Engine: library sources fixed
chashnikov May 18, 2009
782998c
version updated
chashnikov May 18, 2009
0d3e71b
Google App Engine: fix server adding
chashnikov May 19, 2009
9a2c9cc
separate project and module for GoogleAppEngine plugin added
chashnikov May 19, 2009
4fe445e
Google App Engine: compiler resource patterns fixed
chashnikov May 20, 2009
a2a8a20
output from App Engine Plugin project exluded
chashnikov May 20, 2009
7034719
IDEADEV-36927: System.currentTImeMillis is highligthed as error in a …
chashnikov May 21, 2009
52403cc
until-build removed
chashnikov May 22, 2009
a61fdf3
IDEADEV-37869: Upload to App Engine feature should take in to conside…
chashnikov Jun 18, 2009
c88890f
Google App Engine: version updated
chashnikov Jun 18, 2009
bd83771
Google App Engine: option for Dev Server parameters added
chashnikov Aug 3, 2009
7abd8ce
Google App Engine: change notes fixed
chashnikov Aug 3, 2009
e686e12
IDEADEV-39288: Problems with JDO enhancer
chashnikov Aug 5, 2009
43a22ad
app engine: fixed problem with groovy and support for jpa
chashnikov Aug 27, 2009
622658c
app engine: class enhancer fixed
chashnikov Aug 27, 2009
4957a91
merge inspections-impl into java-impl
yole Aug 30, 2009
2bab201
JSP visitor separated from Java
yole Aug 31, 2009
e4607d6
'add framework support' ui imporved & FrameworkSupportProvider moved …
chashnikov Sep 18, 2009
03b48c7
remove meaningless since/until build numbers from bundled plugins
yole Sep 30, 2009
1f25961
migrated to artifacts
chashnikov Oct 2, 2009
7f31969
verifier to prevent UE plugins from loading in CE
yole Oct 5, 2009
14224bb
app engine: fixes for new version
chashnikov Oct 7, 2009
fc8a3ae
support for AppEngine SDK 1.2.6
chashnikov Oct 14, 2009
5111cfd
fixed creating artifacts for new modules
chashnikov Oct 26, 2009
21de043
'update' action for running javaee application added
chashnikov Oct 28, 2009
6f00def
IDEADEV-41212: Created an artifact from a folder, then renamed the ar…
chashnikov Nov 6, 2009
6b3f8d5
Inspections - pass onTheFly into ProblemDescriptors & use it to creat…
Nov 10, 2009
53937b8
restore api
akozlova Nov 11, 2009
ee73b99
cleanup: toArray -> toVirtualFileArray()
cdracm Nov 13, 2009
4b85803
IDEADEV-41380: Artifacts: results of manual editing of "Build artifac…
chashnikov Nov 18, 2009
1960052
ui fixes
chashnikov Dec 3, 2009
34288f6
appengine support wizard fixes
chashnikov Dec 10, 2009
61ed6f8
app engine run configuration: allow to select any artifact and show w…
chashnikov Dec 22, 2009
ecabbd9
hide 'Upload AppEngine App' action if there are no AppEngine facets i…
chashnikov Feb 19, 2010
b11b50a
option to start App Engine server for GWT Dev Mode configuration
chashnikov Feb 19, 2010
78ec4c6
IDEA-25864: Password is not protected when uploading a google app eng…
chashnikov Mar 26, 2010
3733ad7
IDEA-52723: Inspection error: Native JavaScript support in GWT code e…
chashnikov Mar 26, 2010
e003249
IDEA-53053: need to run JDO enhancer on entity subclass when supercla…
chashnikov Mar 26, 2010
338556b
IDEA-23295: no auto-reload when running Google App Engine app locally
chashnikov Apr 2, 2010
dbdb9e4
resolve namespace for appengine-web.xml file
chashnikov May 12, 2010
389a249
create correct artifact for new app engine project
chashnikov May 12, 2010
763d25d
get rid of LoactableConfigurationTYpe (I)
akozlova May 13, 2010
41e76fd
use interface RunnerAndConfigurationSettings where possible in order …
akozlova May 13, 2010
9d1be66
unthrown ConfigurationException declaration removed
chashnikov Jun 25, 2010
b55963d
designer forms updated
amakeev Jun 29, 2010
c5fba16
All scrollpanes replaces with JBScrollPane.
shafirov Jun 29, 2010
0667e24
get rid of ConfigurationException in app server editors
chashnikov Jul 6, 2010
00624a1
option to add support for application server in new module wizard
chashnikov Jul 6, 2010
766f576
'model' parameter propogated to FrameworkSupportConfigurableBase
chashnikov Jul 6, 2010
d5c4e0c
obsolete method deprecated
chashnikov Jul 20, 2010
a1fb519
added method to ModuleRootModel to get source roots without tests
chashnikov Aug 5, 2010
d96a9ea
fixed too long combobox for app server selection in new module wizard
chashnikov Sep 29, 2010
5e2a042
app engine: ui improvements in the new project wizard
chashnikov Oct 6, 2010
fad1589
IDEA-59284: Use proper name of GAE SDK in the Technologies page of th…
chashnikov Oct 6, 2010
cdfa9e3
restored namespace resolving for appengine-web.xml file & test added
chashnikov Oct 6, 2010
12acad0
app engine: show dialog to setup app name if it isn't specified when …
chashnikov Oct 6, 2010
2ffc6b4
IDEA-59395: Map.Entry (and probably other inner classes) reported not…
chashnikov Oct 6, 2010
c52c59e
refactored removing files from classpath for app engine enhancer
chashnikov Oct 6, 2010
5696a94
app engine enhancement compiler migrated to new api
chashnikov Oct 6, 2010
24f0d68
fixed long command line for app engine enhancement (IDEA-49701)
chashnikov Oct 7, 2010
2f6600e
app engine: fixed unresolved namespace in jdoconfig.xml
chashnikov Oct 7, 2010
509d052
IDEA-24339: IDEA should show error in 'Messages' window if GAE datanu…
chashnikov Oct 8, 2010
9665bb4
correct persistence api chosen for app engine facet created in wizard
chashnikov Oct 13, 2010
361e8cc
jdk->sdk rename refactoring
Oct 21, 2010
95578a2
framework support step: added method to listener to notify when step …
chashnikov Oct 22, 2010
b2cb8a2
facet types registered via extensions & IDEA-61232 fixed
chashnikov Nov 15, 2010
902e13c
IDEA-63068: Google App Engine Dev mode cannot compile JSPs
chashnikov Dec 16, 2010
90e3ae3
more convenient method
cdracm Mar 25, 2011
b0deabd
IDEA-68814: Static files are not saved before uploading a Google App …
chashnikov Apr 27, 2011
e9ce970
fixed starting app engine on mac for jdk 1.6.0_24 (IDEA-69684)
chashnikov May 26, 2011
421a314
AppEngineServerIntegration is no more ApplicationComponent
dmitry-avdeev May 26, 2011
5a7849e
platform icons
bulenkov Jun 22, 2011
1da4dc1
app engine: cleanup
chashnikov Jun 28, 2011
c45c26b
Applying new titled border
Jul 7, 2011
8e3dacb
method of border factory renamed and some forms refactored
Jul 22, 2011
c7390e9
added method to choose single file in FileChooser
chashnikov Jul 28, 2011
fd5cf93
border's font switched from Bold to Simple and some refactor
Aug 4, 2011
d7e9bdb
new framework detection: migrating facet detectors
chashnikov Aug 5, 2011
7ac4a6c
new framework detection: migrating facet detectors, part 2
chashnikov Aug 5, 2011
82414e6
IdeBorderFactory refactored for new titled borders
Aug 10, 2011
49919c1
VirtualFile.getIcon() -> VirtualFilePresentation.getIcon(file)
yole Aug 16, 2011
7855b82
Run configaration's form refactored and some other forms too
Aug 17, 2011
d2a4d85
rename
Aug 23, 2011
e59dfb0
rename and new border factories for borders with large font
Aug 23, 2011
6809c24
method pushed down
chashnikov Aug 24, 2011
0432607
run configurations layout with anchors
Sep 1, 2011
9f0b7f8
ArrayUtil API cleanup
trespasserw Sep 15, 2011
699f483
rename ComponentWithAnchor -> PanelWithAnchor
Sep 19, 2011
f227aec
inspections as extension points: App Engine
dmitry-avdeev Sep 30, 2011
ce7c431
language indicated for inspections
dmitry-avdeev Oct 11, 2011
7ff954e
run configurations for default project exceptions : IDEA-80092
akozlova Jan 19, 2012
c0ec9e9
fix incorrect content removal from compiler view: do not use custom …
Jan 20, 2012
52252bc
cleanup
chashnikov Jan 27, 2012
9c9152a
FileChooserDescriptor roots API to use paths instead of virtual files
trespasserw Feb 29, 2012
c8548ed
AppEngineFacetEditor. Toolbar decorator.
Mar 12, 2012
ed0b0f8
Drop no longer needed path APIs
trespasserw Mar 14, 2012
e383fd8
supply name in tests
cdracm Mar 28, 2012
b58208c
App Engine: add App Engine server library when new module is created
chashnikov Apr 9, 2012
245afe6
Simplify file chooser API; fix EA-35601
trespasserw Apr 16, 2012
7cc02ca
IDEA-85446 Settings for Google App Engine facet can make project conf…
chashnikov May 4, 2012
b97d89b
Unified access to icons.jar resources
shafirov May 30, 2012
e36cb1d
Move platform UI component out of util module
trespasserw May 30, 2012
a2c9acc
more ModuleRootModel modifications rewritten using util methods
chashnikov Jun 18, 2012
e633882
IDEA-88915 "IDEA" instead of "IntelliJ IDEA" in >200 file template de…
donnerpeter Jul 17, 2012
708f42b
Use VFS visitor in place of recursion (GAE)
trespasserw Aug 25, 2012
c0f293b
Icons classes generated for every plugin. Those aren't used yet though
shafirov Aug 28, 2012
4ac73d5
Refer to originating class so IconLoader doesn't have to guess via st…
shafirov Aug 30, 2012
b22885b
Use plugin reflective icons
shafirov Aug 30, 2012
5df62c8
Deprecate unnecessary ListCellRendererWrapper constructor parameter
trespasserw Sep 3, 2012
b39dbc4
Inline some static fields referencing newly introduced generated *Ico…
shafirov Sep 4, 2012
d894fcc
Kill plugin logos
shafirov Sep 6, 2012
190b9f4
optimisation: do not push/pop too much, reduce the hashmap overhead
cdracm Sep 25, 2012
52ef739
Single type for single parameter in visitor
trespasserw Sep 25, 2012
a2f0a6c
fixed adding artifacts to 'before launch tasks' when they are marked …
chashnikov Oct 8, 2012
930b411
google app engine: support for version 2 of enhancer
chashnikov Oct 29, 2012
3ff35db
external compiler: added support for appengine enhancer
chashnikov Oct 30, 2012
f9eefe0
jps model serialization: cleanup
chashnikov Oct 31, 2012
691ec84
please use project sdk instead of custom
develar Oct 31, 2012
5b16a1d
gwt compiler for external build: don't use CommandLineWrapper for GWT…
chashnikov Nov 1, 2012
e528f85
external build: fixed builder names in messages
chashnikov Nov 1, 2012
646dc25
external build: remove deleted files from src-output mapping only whe…
chashnikov Nov 2, 2012
92460d3
external artifact build: initial support for pre/post processing by a…
chashnikov Nov 6, 2012
47f13e0
external build: fixed updating files copied by resource compiler to m…
chashnikov Nov 6, 2012
49b3749
external build: show meaningful error message if JDK isn't specified …
chashnikov Nov 8, 2012
8867ac4
output consumers refactoring: custom interface for module-level build…
Nov 16, 2012
528ea11
JBColor
bulenkov Dec 11, 2012
1c3c788
python icons
bulenkov Jan 16, 2013
dd5c644
external build: accept only compilable files by file filter for Modul…
chashnikov Jan 24, 2013
4456419
IDEA-99680 Proxy support in IDEA
Iris24 Jan 24, 2013
d3d1d84
IDEA-98659: Google AppEngine template appengine-web.xml does not incl…
chashnikov Mar 27, 2013
2c09182
extracted common code
chashnikov Apr 8, 2013
5de4cfe
decoupling Google AppEngine facet from Web facet
chashnikov Apr 9, 2013
8bddb1b
always build an AppEngine artifact before uploading
chashnikov Apr 9, 2013
522a5f7
cleanup
chashnikov Apr 9, 2013
bbd708e
cleanup
chashnikov Apr 9, 2013
f367f1f
decoupling Google AppEngine facet from Web facet (IDEA-55536)
chashnikov Apr 9, 2013
5da4ecc
decoupling Google AppEngine facet from application servers (IDEA-55536)
chashnikov Apr 9, 2013
f9ef90a
unused files removed
chashnikov Apr 9, 2013
a428cca
extracted module for part of Google App Engine plugin which depends o…
chashnikov Apr 10, 2013
86fc151
part of Google App Engine plugin moved to community
chashnikov Apr 10, 2013
ec73144
copyrights updated in 'Google App Engine' plugin
chashnikov Apr 10, 2013
63b3be0
removed remaining dependencies from App Engine plugin to ultimate
chashnikov Apr 10, 2013
d78bff0
removed dependencies from App Engine plugin to jsp
chashnikov Apr 10, 2013
f37faa2
added missing dependency to App Engine plugin
chashnikov Apr 10, 2013
f1f8c9b
added implementation of JavaEE related stuff to community version of …
chashnikov Apr 10, 2013
626eaee
disabled plugin nafig
cdracm Apr 11, 2013
f4aeb97
App Engine plugin reenabled in tests and removed from ultimate tests …
chashnikov Apr 11, 2013
def08fe
removed unnecessary dependency
chashnikov Apr 22, 2013
14cf4f8
google app engine: create artifact when support for framework is adde…
chashnikov Apr 24, 2013
64229a6
google app engine: removed unused dependency
chashnikov Apr 24, 2013
8b7d8e1
google app engine: added converter for facet configuration [rev by Dm…
chashnikov May 13, 2013
5e088ae
clouds (remote servers) api: initial
chashnikov Jul 5, 2013
615cea1
@NotNull
trespasserw Jul 17, 2013
dcdd7e5
remote servers api: server-specific deployment configurations and ini…
chashnikov Aug 6, 2013
b38c8c5
remote servers api: packages rearranged
chashnikov Aug 6, 2013
b5a2bcf
remote servers api: infrastructure for async execution of tasks durin…
chashnikov Aug 6, 2013
1b63e5b
remote servers api: 'Test connection' button added
chashnikov Aug 6, 2013
36ff624
remote servers: show deployments in 'Application Servers' view
chashnikov Aug 9, 2013
6e0cb4f
remote servers: show deployment log in 'Application Servers' view
chashnikov Aug 13, 2013
434e14d
method renamed
chashnikov Aug 13, 2013
a3cb5fc
remote servers: CloudBees migrated to new api
chashnikov Aug 15, 2013
ee49f93
remote servers: 'undeploy' action is available by default
chashnikov Aug 16, 2013
23c2902
remote servers: fetch deployments from server when 'connect' button i…
chashnikov Aug 16, 2013
b888f3b
remote servers: java-dependent classes extracted to separate modules
chashnikov Aug 23, 2013
17c9d77
platform: URL class loader builder
trespasserw Aug 22, 2013
e08aef1
more usages of getSourceRoots corrected to fetch only java or only re…
chashnikov Aug 30, 2013
07882b1
remote servers: allow to show additional logs for deployments in 'Ser…
chashnikov Sep 10, 2013
e7af754
icon classes regenerated; please don't modify icons classes by hand, …
chashnikov Sep 16, 2013
8f42e42
icon classes regenerated: copyright added to generated files, more in…
chashnikov Sep 18, 2013
487ff72
remote servers view: supported 'edit configuration' action for deploy…
chashnikov Oct 28, 2013
7f56e30
remote servers: pass server configuration to deployment editor
chashnikov Nov 1, 2013
c1670ef
remote servers: generified
chashnikov Nov 1, 2013
2ee1c9b
google app engine: supported importing from Maven (IDEA-110891)
chashnikov Nov 1, 2013
495ab0b
IDEA-71691: appengine facet doesnt bring in required libraries
chashnikov Dec 24, 2013
6555818
App Engine: refresh library roots when new module created (IDEA-71691)
chashnikov Dec 24, 2013
ec731d6
get rid of ReflectionCache
bulenkov Jan 2, 2014
8a41494
show warning instead of error if Google AppEngine inspection is faile…
chashnikov Jan 14, 2014
e127757
It is safe now to deprecate launchBrowser
develar Feb 7, 2014
710d1e4
png optimization
Feb 25, 2014
7068867
test from jps modules extracted to separate modules to get rid of cyc…
chashnikov Feb 27, 2014
0f9ee61
removing unused parameter and field
Apr 1, 2014
bcf3bce
explicit 1.6 language level
akozlova Apr 1, 2014
4054e65
IDEA-122914 (unclosed ZipFile: JarFile usages)
trespasserw Apr 10, 2014
243078b
deleting old make implementation
May 28, 2014
577cd6f
appengine: fixed starting enhancer for latest versions of SDK
chashnikov Jul 24, 2014
32e6286
upload to AppEngine: show error message in EDT (EA-55438)
chashnikov Aug 5, 2014
5c13dc6
Cleanup (nullability)
trespasserw Aug 12, 2014
4fe3b07
Google App Engine: multi-module EARs supported for deployment and Dev…
chashnikov Sep 18, 2014
c2672bd
Google App Engine: automatic detection of appengine-application.xml s…
chashnikov Sep 18, 2014
d6b55fb
Google App Engine: not-null & cleanup
chashnikov Sep 18, 2014
bff8315
Google App Engine: method renamed
chashnikov Sep 18, 2014
86af331
Google App Engine: support for EAR application in 'New Project Wizard'
chashnikov Sep 18, 2014
77d9539
new project wizard: select 'web' framework automatically when 'Google…
chashnikov Sep 19, 2014
e18fde1
Google App Engine: generated class moved to separate source root
chashnikov Sep 19, 2014
30fdae7
IDEA-119102: Support oauth2 for uploading App Engine app
chashnikov Sep 22, 2014
1c51100
Google App Engine: 'Upload' action now creates deployment run configu…
chashnikov Sep 23, 2014
c896c65
Google App Engine deployment: don't show error if user pressed 'cance…
chashnikov Sep 23, 2014
a60b46b
Google App Engine: show in cloud configuration that password is stored
chashnikov Sep 23, 2014
1d7850e
Google App Engine: do not check connection to avoid confusing 'connec…
chashnikov Sep 23, 2014
58583fa
Google App Engine: corrected test SDK for Windows
chashnikov Sep 24, 2014
1d45f4b
FacetEditorTab#createComponent annotated as @NotNull
chashnikov Sep 24, 2014
de0ac1e
Google App Engine: use our ComboBox instead of JComboBox for SDK sele…
chashnikov Sep 24, 2014
45a0c94
remove font settings from inspection descriptions
akozlova Oct 9, 2014
802ef10
IDEA-27486 Make file templates per-project: fixing clients
dmitry-avdeev Dec 12, 2014
715c4cd
use https
develar Dec 19, 2014
f9c4fc1
Google AppEngine: added help topic for facet configuration editor (ID…
chashnikov Feb 5, 2015
7fed293
Google AppEngine: preselect 'Remember Password' option in Settings be…
chashnikov Mar 4, 2015
94226ed
Google AppEngine: don't use 'no_cookies' option for uploading with OA…
chashnikov Jun 8, 2015
e61aca0
IDEA-140785 Replace check getFacets().size() > 0 with hasFacet() whic…
Jul 2, 2015
3ae5617
IDEA-142225 File template descriptions are wrapped when shouldn't + b…
amakeev Jul 2, 2015
9dd8d3d
notnull
develar Jul 22, 2015
52904e6
converted to walking visitor
cdracm Jul 30, 2015
0a2a462
external system: use platform modifiable models during project import;
vladsoroka Sep 15, 2015
fb6a3d8
Made commandLine not-null in OSProcessHandler, BaseOSProcessHandler, …
cdracm Nov 24, 2015
e48ba1c
app engine for java: specify 'web' framework as dependency only in ID…
chashnikov Dec 8, 2015
e893cb8
app engine: removed unused classes related to old compiler implementa…
chashnikov Dec 14, 2015
375aef5
preparing to migrate to Java 8: explicitly set 'IDEA jdk' as 'Module …
chashnikov Dec 22, 2015
f78f394
anonym -> lambda
akozlova May 18, 2016
ba5b954
Revert: deprecated DebugProcessAdapter, use DebugProcessListener with…
chashnikov Jun 30, 2016
dc2ed69
Revert: anonym -> lambda
chashnikov Jun 30, 2016
cf264a2
app engine ultimate tests: added required classes from IDEA repository
chashnikov Jun 30, 2016
c240d62
app engine jps plugin: resources moved to a separate root
chashnikov Jun 30, 2016
e84a5b3
plugin.xml rearranged: added ultimate part as optional dependency to …
chashnikov Jun 30, 2016
f3e9e86
gradle build scripts configured
chashnikov Jun 30, 2016
00bc693
tests changed to load test data from classpath
chashnikov Jun 30, 2016
de1f9d7
test data corrected to fix JpsAppEngineSerializationTest
chashnikov Jun 30, 2016
115a599
copyright comments updated
chashnikov Jun 30, 2016
e225d07
readme added
chashnikov Jun 30, 2016
d08e9d0
Integrate google-app-engine-plugin into cloud tools plugin
etanshaul Jul 1, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@
**/*.iml
.gradle/
**/build/

# Whitelist iml files needed for tests
!**/testData/**/*.iml
6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,3 @@ If you wish to build this plugin from source, please see the


**None yet**

1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ subprojects {

apply plugin: 'org.jetbrains.intellij'
intellij {
type = ideaEdition
version = ideaVersion
updateSinceUntilBuild = false
downloadSources = true
Expand Down
25 changes: 24 additions & 1 deletion google-cloud-tools-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
sourceSets.main.java.srcDirs = ['src']
sourceSets.main.resources.srcDirs = ['resources']
sourceSets.test.java.srcDirs = ['testSrc']
sourceSets.test.resources.srcDirs = ['testResources']
sourceSets.test.resources.srcDirs = ['testResources', 'testData']

intellij {
pluginName = 'google-cloud-tools'
Expand All @@ -31,12 +31,25 @@ intellij {

project.afterEvaluate {
prepareSandbox.dependsOn ':google-account-plugin:prepareSandbox'

//todo: currently we need this to include 'ultimate' module to the plugin zip; it would be better to support such inclusion in 'intellij' plugin
def task = project.tasks.findByName("prepareSandbox")
task.dependsOn project('ultimate').jar
task.doLast {
copy {
from files(project('ultimate').jar)
into "$task.destinationDir/lib"
}
}
}

dependencies {
compile(project(':google-account-plugin'))
compile(project(':common-lib'))

compile project('jps-plugin')
compile project('runtime')

compile 'com.google.apis:google-api-services-clouddebugger:v2-rev7-1.21.0'
compile 'com.google.apis:google-api-services-cloudresourcemanager:v1beta1-rev12-1.21.0'
compile ('com.google.cloud.tools:appengine-plugins-core:0.1.0') {
Expand All @@ -48,9 +61,19 @@ dependencies {
testRuntime files('../google-account-plugin/lib/google-gct-login-context-ij-pg.jar')
}

task testJar(type: Jar, dependsOn: testClasses) {
baseName = "${project.archivesBaseName}-tests"
from sourceSets.test.output
}

configurations {
// this is already obtained from google-api-java-client-min-repackaged
compile.exclude group: 'com.google.api-client', module: 'google-api-client'
tests
}

artifacts {
tests testJar
}

test {
Expand Down
35 changes: 35 additions & 0 deletions google-cloud-tools-plugin/jps-plugin/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

sourceSets.main.java.srcDirs = ['src']
sourceSets.main.resources.srcDirs = ['resources']
sourceSets.test.java.srcDirs = ['testSrc']
sourceSets.test.resources.srcDirs = ['testData']

jar.archiveName = "google-app-engine-jps-plugin.jar"

// Overriding paths in root build file since this module is nested one level deeper
pmd {
ruleSetFiles = files('../../custom-pmd-ruleset.xml');
}
findbugs {
excludeFilter = file('../../findbugs-excludefilter.xml')
}

dependencies {
compile project(':google-cloud-tools-plugin:runtime')
testCompile group: 'com.jetbrains.intellij.idea', name:'jps-build-test', version: ideaVersion
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# Copyright 2000-2016 JetBrains s.r.o.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

org.jetbrains.jps.appengine.model.impl.JpsAppEngineExtensionServiceImpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# Copyright 2000-2016 JetBrains s.r.o.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

org.jetbrains.jps.appengine.builder.AppEngineEnhancerBuilderService
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.jetbrains.jps.appengine.model.impl.JpsAppEngineModelSerializerExtension
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
/*
* Copyright 2016 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.jetbrains.jps.appengine.builder;

import com.intellij.appengine.rt.EnhancerRunner;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.execution.ParametersListUtil;

import gnu.trove.THashSet;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.appengine.model.JpsAppEngineExtensionService;
import org.jetbrains.jps.appengine.model.JpsAppEngineModuleExtension;
import org.jetbrains.jps.appengine.model.PersistenceApi;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.FileProcessor;
import org.jetbrains.jps.builders.java.JavaBuilderUtil;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.builders.logging.ProjectBuilderLogger;
import org.jetbrains.jps.incremental.BuilderCategory;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ExternalProcessUtil;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.ModuleLevelBuilder;
import org.jetbrains.jps.incremental.ProjectBuildException;
import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
import org.jetbrains.jps.model.JpsDummyElement;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.java.JpsJavaSdkType;
import org.jetbrains.jps.model.library.sdk.JpsSdk;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.util.JpsPathUtil;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;

/**
* @author nik
*/
public class AppEngineEnhancerBuilder extends ModuleLevelBuilder {

public static final String NAME = "Google AppEngine Enhancer";

public AppEngineEnhancerBuilder() {
super(BuilderCategory.CLASS_POST_PROCESSOR);
}

@Override
public ExitCode build(final CompileContext context,
ModuleChunk chunk,
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder,
OutputConsumer outputConsumer)
throws ProjectBuildException, IOException {

boolean doneSomething = false;
for (final JpsModule module : chunk.getModules()) {
JpsAppEngineModuleExtension extension = JpsAppEngineExtensionService.getInstance()
.getExtension(module);
if (extension != null && extension.isRunEnhancerOnMake()) {
doneSomething |= processModule(context, dirtyFilesHolder, extension);
}
}

return doneSomething ? ExitCode.OK : ExitCode.NOTHING_DONE;
}

@Override
public List<String> getCompilableFileExtensions() {
return Collections.emptyList();
}

private static boolean processModule(final CompileContext context,
DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget> dirtyFilesHolder,
JpsAppEngineModuleExtension extension) throws IOException, ProjectBuildException {
final Set<File> roots = new THashSet<File>(FileUtil.FILE_HASHING_STRATEGY);
for (String path : extension.getFilesToEnhance()) {
roots.add(new File(FileUtil.toSystemDependentName(path)));
}

final List<String> pathsToProcess = new ArrayList<String>();
dirtyFilesHolder
.processDirtyFiles(new FileProcessor<JavaSourceRootDescriptor, ModuleBuildTarget>() {
@Override
public boolean apply(ModuleBuildTarget target, File file, JavaSourceRootDescriptor root)
throws IOException {
if (JpsPathUtil.isUnder(roots, file)) {
Collection<String> outputs = context.getProjectDescriptor().dataManager
.getSourceToOutputMap(target).getOutputs(file.getAbsolutePath());
if (outputs != null) {
pathsToProcess.addAll(outputs);
}
}
return true;
}
});
if (pathsToProcess.isEmpty()) {
return false;
}

JpsModule module = extension.getModule();
context.processMessage(
new ProgressMessage("Enhancing classes in module '" + module.getName() + "'..."));

List<String> classpath = new ArrayList<String>();
classpath.add(extension.getToolsApiJarPath());
classpath.add(PathManager.getJarPathForClass(EnhancerRunner.class));
boolean removeOrmJars = Boolean
.parseBoolean(System.getProperty("jps.appengine.enhancer.remove.orm.jars", "true"));
for (File file : JpsJavaExtensionService.dependencies(module).recursively().compileOnly()
.productionOnly().classes().getRoots()) {
if (removeOrmJars && FileUtil.isAncestor(new File(extension.getOrmLibPath()), file, true)) {
continue;
}
classpath.add(file.getAbsolutePath());
}

List<String> programParams = new ArrayList<String>();
final File argsFile = FileUtil.createTempFile("appEngineEnhanceFiles", ".txt");
PrintWriter writer = new PrintWriter(argsFile, StandardCharsets.UTF_8.name());
try {
for (String path : pathsToProcess) {
writer.println(FileUtil.toSystemDependentName(path));
}
} finally {
writer.close();
}

programParams.add(argsFile.getAbsolutePath());
programParams.add("com.google.appengine.tools.enhancer.Enhance");
programParams.add("-api");
PersistenceApi api = extension.getPersistenceApi();
programParams.add(api.getEnhancerApiName());
if (api.getEnhancerVersion() == 2) {
programParams.add("-enhancerVersion");
programParams.add("v2");
}
programParams.add("-v");

List<String> vmParams = Collections.singletonList("-Xmx256m");

JpsSdk<JpsDummyElement> sdk = JavaBuilderUtil.ensureModuleHasJdk(module, context, NAME);
List<String> commandLine = ExternalProcessUtil
.buildJavaCommandLine(JpsJavaSdkType.getJavaExecutable(sdk), EnhancerRunner.class.getName(),
Collections.<String>emptyList(), classpath, vmParams, programParams);

Process process = new ProcessBuilder(commandLine).start();
ExternalEnhancerProcessHandler handler = new ExternalEnhancerProcessHandler(process,
commandLine, context);
handler.startNotify();
handler.waitFor();
ProjectBuilderLogger logger = context.getLoggingManager().getProjectBuilderLogger();
if (logger.isEnabled()) {
logger.logCompiledPaths(pathsToProcess, NAME, "Enhancing classes:");
}
return true;
}


@NotNull
@Override
public String getPresentableName() {
return NAME;
}

private static class ExternalEnhancerProcessHandler extends EnhancerProcessHandlerBase {

private final CompileContext myContext;

public ExternalEnhancerProcessHandler(Process process, List<String> commandLine,
CompileContext context) {
super(process, ParametersListUtil.join(commandLine), null);
myContext = context;
}

@Override
protected void reportInfo(String message) {
myContext.processMessage(new CompilerMessage(NAME, BuildMessage.Kind.INFO, message));
}

@Override
protected void reportError(String message) {
myContext.processMessage(new CompilerMessage(NAME, BuildMessage.Kind.ERROR, message));
}
}
}
Loading