- Factor out repetitive SQL query building tasks into DbMapping.appendCondition()
- Implement automatic extended prototype filter for collections
- add prototype ids, but with simplified implementation (be agnostic
about numeric ids vs. prototype names)
* Rewrite relational node insertion code
* Make better use of DbColumn class wherever possible
* Minor code improvements throughout the place
* Factor out invokeOnInit() method from Node.init() in order to implement onInit() invocation
for the embedded database.
* Make properties starting with an _underscore transient in the embedded database,
mirroring the behaviour of the object relational storage.
* Keep filter.additionalTables from being included in prefetchNode() queries, fixing bug 472.
* Some minor code cleanup and simplification.
default properties will get picked up even if they were already consumed by other
child properties.
* Reimplement update algorithm using a temporary ResourceProperties object to
avoid getting into unconsistent state by invoking clear().
* Use uppercase name for final CACHE_TIME field.
* Make update() synchronized as concurrent invocation could be absolutely harmful.
where Mozilla/Firefox displayed an empty page when fetching the same page
with different headers within a short timeframe.
* Fix Last-Modified handler heading which was broken in more than one way.
* Don't generate ETag headers for error pages.
* Rename ResponseTrans.writeErrorReport() to reportError().
* Set response status to 500 (internal server error) in ResponseTrans.reportError().
the wrapped objects, they prevent them from being garbage collected if stored as
WeakHashMap values.
* Clean up parsing of rhino.optlevel property. Don't run into exceptions and log
an error message if it couldn't be parsed.
* Remove some variable initializers that weren't necessary after all.
- It allows us to replace the __builddate__ token in Server.java without changing the original file.
- It makes sure all files are recompiled each time, avoiding compatible type change errors.
it is already set when the RequestEvaluator calls
Application.getDataRoot(), which may result in a function
invocation (chicken and egg problem, sort of)
to avoid deadlocks.
* Do not synchronize PropertyRecorder methods, instead mark fields as volatile.
* Check for "global" reference before doing the default lookup in get().
otherwise we risk to run on the wrong thread scope for nested functions, which will
result in buggy behaviour _only_ if the baked-in thread scope is currently active in
another request (otherwise most of its properties will be unset and the lookup forwarded
to the shared global object, which will proxy it to the proper thread scope).
This means we do dynamic lookup in both the shared and the thread scopes, which
means we can use the same class for both cases and dump DynamicGlobalObject.
In return, dynamic lookup should be somewhat optimized, so we don't do double
lookups for both thread and shared scope.