The sources affected by this commit have drifted in style since earlier
polishing commits such as f34d1f4 and a155518. The shared IDEA style
configuration file can help avoid this drift in the future. Simply run
Code->Reformat Code at the project level prior to committing. Note that
this code style configuration is not perfect, and not every change it
makes should be checked in. The ideal is to simply always write code that
conforms to the style conventions, but the automated settings are there
as a helping hand when necessary.
The churn caused by drifting style and the commits that fix it damage the
utility of git over time. Reviewing changes, analyzing history, surgically
reverting commits, and many other use cases with git simply do not work as
well when styles get mixed and fixed. Let's work toward a common style.
The affected sources have drifted from import organization conventions
since the shared IDEA configuration was added in commit a155518. There
are several ways to avoid this in the future:
1. Run Code->Optimize Imports manually prior to making any commit (or
use the shortcut key).
2. Select 'Optimize Imports on the Fly' from
Preferences->Editor->General->Auto Import.
If IDEA is not being used, simply follow convention.
This partially reverts commit c95f5ea, restoring use of Java 8 language
features and APIs to ethereumj-studio, while leaving etherumj-core
pinned to the Java 7 language level for Dalvik compatibility reasons.
For further details, see the prior commit and
https://github.com/ethereum/ethereumj/commit/c95f5ea#commitcomment-9119435.
Add .idea/codeStyleSettings.xml with explicit settings for each
2nd-level package used within ethereumj, adding a separator between
each (unfortunately there is no other way to gain this level of control
in IDEA).
Imports are generally in alphabetical order, with two key exceptions:
- org.ethereumj.* imports are always sorted at top, to simplify the
process of seeing how one ethereumj type relates to all others. This is
especially useful in the practice of avoiding cyclic package
dependencies.
- java.* and javax.* and sun.* imports are always sorted at bottom.
Wildcard imports are used for static imports whenever two or more
members of the same type are statically imported, but wildcards are
never used for non-static imports. This policy of explicitness helps
identify classes that are too "fat", i.e. have too many dependencies on
other types.
The root .gitignore file has been updated to allow
.idea/codeStyleSettings.xml, so as to automatically share it with other
team members. Any changes made to import organization settings will be
reflected in this file and should be checked in.
See updated ethereumj-studio/README.md for details. Note that this
commit removes the `build-post-package.xml` ant file (for now) to
simplify the Gradle arrangement. This functionality can be re-introduced
later and more simply using Gradle's native DSL. In the meantime, both
the -core and -studio projects can be run using `gradle run` or run as
executable jars by running `gradle shadowJar` followed by the usual
`java -jar` execution of the resulting `-all` jar file found in each
project's respective `build/libs` directory.
- Convert ethereumj-studio build from Maven to Gradle as well
- Extract common build elements to top-level build.gradle
- Update top-level README accordingly
Block#getMinGasPrice and Blockchain#getGasPrice were removed in commit
aad53ba, causing compilation failures in ethereumj-studio when building
against current master of ethereumj-core. As it is unclear whether these
methods have proper replacements, this commit simply replaces calls to
these now-missing methods with the value `42`. Obviously this is a
stopgap measure and should be addressed properly as soon as possible.
Prior to this change, the affected classes had Javadoc containing a url
as the first sentence. There were several issues with this:
- The url used was inconsistent, varying between www.etherj.com,
www.ethereumj.com and www.ethergit.com
- Use of a url in the first sentence of a Javadoc comment is not
consistent with Javadoc idioms. The first sentence should be the
a short, self-contained description--in this case, the description of
the class. If no such description is yet available, it is best to
simply omit all text, leaving any tags (such as @author or @since).
- Information about the project that this code belongs to should be
expressed in the license header for each file. Currently, most files
in ethereumj do not have license headers. This can be added in a
later commit.
- @since is recognized by Javadoc processor; "created on:" is not
- Remove hh:mm information as it is unnecessary
- Replace slashes in dates with dots, e.g. 26/12/2014 => 26.12.2014
- Do not align assignments on equals signs
- Use spaces before opening curly braces
- Add spaces between parameters as necessary
- Insert newlines between method declarations
- Other minor changes
This formatting pass is not comprehensive. For the most part, it does
not deal with Javadoc formatting, line wrapping, parameter alignment
rules or a number of other items that can be addressed later.
+ Spring IoC introduced
+ Block Store by sql/hibernate introduced
- Cache for blocks vanished
+ CLI for start
+ Connection architecture redesign for multiple connections
+ Server for incoming connections
+ Test adaption for new architecture and fix
+ Performance major improve: loading empty blocks: 10,000 for 40 secs
+ Blocks forking/alternative chains sollution
+ Network redesign for better user expirience, all the handlers are known to PeerClient now, and MessageQueue is also managed in the PeerClient
+ Listener callback for sync done
+ tx.isCreateContract() bug fix
+ repository.getBlock() bug fix