Hi Martin,
Martin Kalén wrote:
Armin Waibel wrote:
Long time no see!
Yes, it's sure been a while! :)
I know that at least Armin usually does not like more attributes in
repository.xml, but this time I will try to make you accept an
exception to the rule. :) Since null-check configuration is very
similar to conversion, I propose the following DTD change for
<field-descriptor/>:
The null-check attribute contains a fully qualified class name.
This class must implement the interface
org.apache.ojb.broker.accesslayer.NullCheck.
A NullCheck can be used to implement special requirements for
the definitions of a field's 'null' value as Java representation.
null-check CDATA #IMPLIED
an alternative would be to use a custom attribute "null-check" in
field-descriptor (then we don't need to change the dtd). But I agree
that a new attribute will be more transparent.
I was considering the custom attribute, but that felt a bit too much
like "untyped" properties and the documentation sort of hints that
the custom attributes are used as "property-bag" for extended or
specialized FieldDescriptor implementations.
Much like RDBMS-specific JDBC-properties set on the connection descriptor.
Agree. Nevertheless we can use custom attributes to "test" new
features/properties or to introduce a workaround for existing bugs
without changing the repository.dtd and integrate these properties as
elements/attributes in the next major release.
What about OJB's xdoclet module, do we need to adapt the @ojb.field
tag too?
Yes I think so, I would need help with this (probably Tom's?) as I don't
know enough about the xdoclet part myself.
My plan was to:
1. discuss the implementation and make appropriate changes in my local
codebase
2. update OJB-150 and check in code on 1.0.x branch for everything
except xdoclet
3. get helt to make xdoclet additions
4. forward-port to OJB 1.1 branch
5. close OJB-150
+1, but there is one thing I don't understand, you said:
> The relaxed version works perfectly for my use-case where a primary
> key numeric field is represented by a Java Long, is not nullable
> but where id=0 is a valid db-value that should not trigger sequence
> autonumbering or any delete/insert checks in OJB.
I would expect that the current version of #representsNull allows id=0
for non-primitive fields (e.g. Long).
What about the FK fields? These fields have to reflect the same
behavior as the PK fields. Do you expect that the user defines the
same "null-check" attribute in all FK fields of the referenced
objects? If this is the case we should add some kind of "check" (check
if the PK field and FK field use the same NullCheck implementation, if
not log an error msg or throw an exception) when OJB collects the FK
fields of a reference the first time.
You're right. This needs to be consistent on "both sides" of the FK,
I will give that some thought and test different approaches on my local
use-case...
+1
BTW, what's the currently endorsed strategy for additions like this?
We don't have a strategy (we decide as the case arises).
OK, so if my 5-step-plan above seems about right, could you guys give me
a short "OJB vs. SVN" 101 course? :)
What should I check out from SVN if I want to make additions that I want
included in a future 1.0.5 maintenance release.
Sorry, I'm a rookie in SVN stuff.
Did you prepare your apache account?
http://apache.org/dev/version-control.html
For development I use intellij and I simply check out
../branches/OJB_1_0_RELEASE and .../trunk from
https://svn.apache.org:443/repos/asf
But for example I don't know how to "diff" between /trunk and
/branches/OJB_1_0_RELEASE in Intellij IDE - I love CVS ;-)
regards,
Armin
And later on, what do I check out when I want to merge this with the 1.1
branch?
Locally I have made additions to "db/ojb/tags/OJB_1_0_4" to be able to
compare with results from 1.0.4 release, but I guess commits there would
actually update a tag that should be frozen?
As you have figured out now I'm a bit of a SVN rookie, stuck with CVS...
Regards,
Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]