james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Manuel Carrasco Moñino <man...@apache.org>
Subject Re: NoSQL backend for James
Date Thu, 13 Oct 2011 19:28:14 GMT
Hi Pepjin, could be possible to share your code anywhere, so as I
could checkout it and take a look?

Don't worry about if the code is ok or not, I think github could be
ok, but you could send a compressed file via email or whatever you
prefer.

- Manolo


On Thu, Oct 13, 2011 at 8:12 PM, Pepijn de Vos <pepijndevos@yahoo.com> wrote:
> Okay, I put up the result for the day.
> I made a CouchDbMailbox with Ektorp @annotations.
> I made an attempt to make the MailboxMapper, but I got stuck at the <type> casting
sugar which I don't grok. My IDE keeps complaining it can't resolve the incompatible types,
while both are just Mailboxes.
> I stuffed the CouchDB connection in a class, not happy with it.
> I'm not sure how to implement the findMailboxWithPathLike and hasChildren methods.
> Any help appreciated, especially with the... <> things. list() is the only one
that's red wiggly lines, the others are just unchecked casts. I've been adding random casts
and <> left and right.
>
> https://github.com/pepijndevos/james-couchdb
>
> Pepijn
>
> On Oct 13, 2011, at 6:23 PM, Pepijn de Vos wrote:
>
>> More questions. I started hacking!
>>
>> I'm going with Ektorp. I figured out most of it, I think. Except that I don't understand
the configuration. It does have a Spring module. Any pointers on how to organize the config
and connections?
>>
>> What does findMailboxWithPathLike do? The implementations seem to do weird things
with regexes. Preferably I make that into a nice CouchDB view. CouchDB can't do fulltext search.
As far as I can tell, the IMAP RFC doesn't say anything about it.
>>
>> To have custom message and mailbox classes, do I need to do anything else besides
subclassing the corresponding *Manager class to return one?
>>
>> I'm getting there!
>>
>> Pepijn
>>
>> On Oct 12, 2011, at 9:35 PM, Manuel Carrasco Moñino wrote:
>>
>>> Actually Ektorp is not a full implementation of JPA, but it provides a
>>> JPA like API with support to many of its annotations etc.
>>>
>>> Anyway, based on my experience, Ektorp simplifies the access from java
>>> to couchdb and the bootstrap of couchdb, so as theoretically when
>>> James starts the first time, the database, views, design, mapreduce,
>>> etc should be created.
>>>
>>> - Manolo
>>>
>>> On Wed, Oct 12, 2011 at 1:05 PM, Pepijn de Vos <pepijndevos@yahoo.com>
wrote:
>>>> Ektorp seems nice, but I'm more comfortable just using something that resembles
the HTTP API, since I'm not familiar with JPA. Haven't decided yet.
>>>>
>>>> Pepijn
>>>>
>>>> On Oct 11, 2011, at 5:08 PM, Manuel Carrasco Moñino wrote:
>>>>
>>>>> Hi Pepijn
>>>>>
>>>>> Which java library are you considering to use to connect with couchdb?
>>>>> I'm using [1] ektorp and makes really easy to map domain models.
>>>>>
>>>>> - Manolo
>>>>>
>>>>> [1] http://www.ektorp.org/reference_documentation.html#d0e532
>>>>>
>>>>> On Mon, Oct 10, 2011 at 10:44 PM, Pepijn de Vos <pepijndevos@yahoo.com>
wrote:
>>>>>>
>>>>>> Thanks a lot.
>>>>>>
>>>>>> On Oct 10, 2011, at 8:24 PM, Ioan Eugen Stan wrote:
>>>>>>
>>>>>>> Have patience. You will need it if you wish to complete something.
>>>>>>> Patience and perseverance or else you'll be just another one
who
>>>>>>> tried.
>>>>>>
>>>>>> I don't expect to have it finished by the end of the week, but if
I'm still completely clueless by then, it's just not worth the effort.
>>>>>> I don't have the ambition to become a James commiter or even a Java
dev, I just thought it would be nice to use CouchDB for my application.
>>>>>> Somewhere is a point where pragmatism beats learning. There isn't
any technical reason why I can't use JPA.
>>>>>>>
>>>>>>>> Can I just copy an existing one and rename stuff? In other
words, how are the modules glued into the whole? How does the server know which class to load?
It's not in the pom.xml, afaict.
>>>>>>>
>>>>>>> Not sure what you mean by that. It uses dependency injection
provided
>>>>>>> by Spring framework (and soon Guice) to inject object references
into
>>>>>>> other objects at runtime.
>>>>>>
>>>>>> Ah, dependency injection. *googles* So just the fact that I implement
the interface is enough to @autowire it into James?
>>>>>>>
>>>>>>>> The sample config is gone btw: http://james.apache.org/server/3/config-mailbox.html
>>>>>>>> Do I inherit tests as well? I would imagine that a lot of
tests are common to all mailbox implementations.
>>>>>>>
>>>>>>> I think this is because the configuration changed and now it's
spring
>>>>>>> based, and more modular. I see you are very ambitious but I sense
you
>>>>>>> have a lot of catching up. James is complex so give it time,
if you
>>>>>>> expect too much from yourself and fail you will probably be too
>>>>>>> disappointed.
>>>>>> Yea, I read a Java book long ago, never did any big projects with
it.
>>>>>>>
>>>>>>> Make a public repo, commit something and ask if you get stuck.
I will
>>>>>>> try to help when/if I can. I suggest you start with simple
>>>>>>> implementation that passes some unit tests.
>>>>>>
>>>>>> So If I take any mailbox impl, put it in a separate repo, will it
work? All sorts of things refer to the parent pom. I'll put something on github once I figure
it out. I think it'll work out once I get to the point where I can write some code.
>>>>>>>
>>>>>>> See for example the unit tests I did for Mailbox interface in
HBase
>>>>>>> implementation:
>>>>>>> http://svn.apache.org/repos/asf/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java
>>>>>> What I mean with inheriting tests is that these all look very generic.
They look like they could test any mailbox implementation.
>>>>>>
>>>>>> Pepijn
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ioan Eugen Stan
>>>>>>> http://ieugen.blogspot.com/
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>>>>>>> For additional commands, e-mail: server-dev-help@james.apache.org
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>>>>>> For additional commands, e-mail: server-dev-help@james.apache.org
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-dev-help@james.apache.org
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-dev-help@james.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-dev-help@james.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-dev-help@james.apache.org
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message