A fork of the com.sun.codemodel 2.7-SNAPSHOT.
The classes in this project use a different package name com.helger.jcodemodel to avoid conflicts
with other com.sun.codemodel instances that might be floating around in the classpath.
That of course implies, that this artefact cannot directly be used with JAXB, since the configuration of
this would be very tricky.
A site with the links to the API docs etc. is available.
Add the following to your pom.xml to use this artifact:
<dependency>
<groupId>com.helger</groupId>
<artifactId>jcodemodel</artifactId>
<version>3.4.0</version>
</dependency>- v4.0.0 - work in progress
- Added
ph-commonsas a dependency for common stuff - Moved all exceptions to
exceptionspackage
- Added
- v3.4.0 - 2020-05-25
- Added special top-level construct
JResourceDirto represent pure resource directories (issue #74 from @guiguilechat) - Added new class
JCodeModelExceptionas the base class forJClassAlreadyExistsExceptionand the new classJResourceAlreadyExistsException - Existing APIs were changed to throw
JCodeModelExceptioninstead ofJClassAlreadyExistsException JCNameUtilities.getFullNameworks with classes in the default package- Extended
JCodeModelwith(get|set)FileSystemConventionto make the creation more flexible (also issue #74 from @guiguilechat) - Added mutable overloads to methods that only return an unmodifiable collection (issue #86)
- Fixed an issue with generating generics from anonymous classes (issue #84)
- Added special top-level construct
- v3.3.0 - 2019-11-24
- v3.2.4 - 2019-07-15
- Made class
JavaUnicodeEscapeWriterpublicly accessible - Extended enum constant ref API (issue #68 from @guiguilechat)
- Made class
- v3.2.3 - 2019-03-31
- Extended
JTryBlockAPI to have more control. - Added support for
try-with-resourcessupport (issue #67 from @gmcfall)
- Extended
- v3.2.2 - 2019-02-25
- Using
jsr305instead ofannotationsin POM (issue #66 from @jjYBdx4IL)
- Using
- v3.2.1 - 2019-01-23
- Added
varas reserved word - Made
JReturnconstructor public - Added
JInvocation._thisstatic method - Added
IJExpression.castTomethod - Added support to create
finalvariables infor eachloops JExpr.dotClassnow takesAbstractJTypeand not justAbstractJClass- Made constructors of subclasses of
IJStatementpublic - No line breaks for annotations to parameters
- Put each method parameter on a separate line if more than 3 parameters are present
- Added
- v3.2.0 - 2018-10-20
- Introduced class
JCMWriterthat should be used to emit the outgoing Java files. This replacescodemodel.buildand offers a more consistent API. Most existing method remain existing and deprecated and just forward toJCMWriter.- Instead of
cm.build (...)usenew JCMWriter (cm).build (...)
- Instead of
- Extracted
IJFormatterinterface for better separation of concerns.JFormatterwas moved to a sub-package ProgressCodeWriterno longer needs an explicitPrintStreambut aProgressCodeWriter.IProgressTrackerinstead.- Default charset for Java classes is now
UTF-8. - Added new
JAnnotationUsemethod overloads that automatically passvalueas the annotation parameter name (issue #64)
- Introduced class
- v3.1.0 - 2018-08-22
- Added
AbstractJType._new() - Change return types of special
JBlockmethods tovoidto avoid chaining (issue #62) - incompatible change! - Added new
JExpr.invokeThisandJExpr.invokeSuperstatic methods
- Added
- v3.0.3 - 2018-06-12
- v3.0.2 - 2018-04-11
- Fixed method resolution using direct class references (issue #58)
- Added some additional
JInvocation.arg...sanity methods - Enum constant argument list is now accessible
- v3.0.1 - 2017-10-25
- v3.0.0 - 2017-08-06
- v2.8.6 2016-07-19
- added PR (issue #49)
- v2.8.5 - 2016-05-13
- improved comment handling (issue #47)
- improved API checks (issue #45)
- extended API (issue #46)
- v2.8.4 - 2016-04-25
- Enum values in switch statements are no longer fully qualified (issue #41)
- fixed generation of narrowed classes without parameters (as in
HashMap<>) - added support for
strictfpkeyword.
- v2.8.3 - 2016-02-26
- Added support for single line comments in blocks
- improved generation of Lambdas
- v2.8.2 - 2016-01-19
- Customizable new line string and character set
- extensions by @sviperll
- v2.8.1 - 2015-12-03
- Extensions by @sviperll
- v2.8.0 - 2015-10-12
- Requires Java 1.6
- fixed potential double imports
- added virtual blocks
- integrated sviperll's metachicory
- v2.7.11 - 2015-09-24
- Bugfix release
- removed half done CSE implementation (issue #18)
- improved handling of directClasses
- added enumConstantReference
- v2.7.10 - 2015-06-30
- Synchronized block added
- initial support for lambda expressions
- v2.7.9 - 2015-03-19
- Minor extensions for error types
- v2.7.8 - 2015-02-05
- Enum constants for annotation parameters
- v2.7.7 - 2014-09-17
- mainly API extensions
- v2.7.6 - 2014-09-02
- Extended annotation parameter handling API
- v2.7.5 - 2014-08-14
- Support for multiple boundaries added (like
T extends AnyClass & Serializable)
- Support for multiple boundaries added (like
- v2.7.4 - 2014-06-12
- Bugfix release
- v2.7.3 - 2014-05-23
- Bugfix release
- v2.7.2 - 2014-05-21
- now on Maven Central
- v2.7.1 - 2014-05-19
- now as OSGi bundle
- v2.7.0 - 2014-05-16
- API extensions
- v2.6.4 - 2014-04-10
- 2013-09-23: Changes from https://github.com/UnquietCode/JCodeModel have been incorporated.
Pull requests must follow my personal Coding Styleguide
This project uses double-space for indentation. If you want to use tabs, you can ask git to modify the files when commiting them and when pulling them. For this, from your project directory :
- edit the file .git/info/attributes to make it contain
*.java filter=tabspace. This will tell git to apply the script tabspace on the *.java files - run
git config filter.tabspace.clean 'expand --tabs=2 --initial'to ask git to replace tabs with two spaces on commit of *.java files. - run
git config filter.tabspace.smudge 'unexpand --tabs=2 --first-only'to request git to replace double spaces with two tabs on checking a *.java file out.
For eclipse, a formatter xml and a cleanup xml are present in the meta/formatter/eclipse/ directory. You can load them from the "project properties > java code style" settings. Check "Enable project specific settings", then load them.
NOTE : you also need to change the save actions to make them meet the clean up actions. Save actions are done even when they are not present in the clean up.
On Twitter: @philiphelger | Kindly supported by YourKit Java Profiler