Ok it works, I didnt know how to inject beans in my main class...
It loads all the james app before sending one mail to the bdd, but it works
:) In fact I hacked all the spring-bean.xml (from J3M2) without deleting any
bean... I just have to select those I need.

Thanks for your help,
Luc

2011/1/20 Eric Charles <e...@apache.org>

> Hi,
>
> Yes, direct injection does not work in main class because it is not fetched
> from spring context.
>
> 1. you can create a bean and move the @Resource within, define the bean in
> spring xml context, spring should inject the mailboxmanager in your bean.
> You can get your bean with context.getBean("mybean") in main class.
>
> 2. or simply call from the main class context.getBean("mailboxmanager"), it
> should give you the mailboxmanager,... but it seems you had an exception (if
> such, could you provide the stack trace ?).
>
> Tks,
>
> Eric
>
>
>
> On 20/01/2011 15:42, Luc Saulière wrote:
>
>> Hello Eric,
>> That was quite the code I tested yesterday, but I got still the same
>> exception, because the MailboxManager is not initialized (null pointer
>> exception).
>> I tried the @Resource annotation, I got 'null pointer' and I tried the
>> BeanFactory way but I got a 'bean creation exception'...
>> I think the first method is the good one, but I'm still looking after the
>> magic method to instantiate my MailboxManager.
>>
>> Thx,
>> Luc.
>>
>>
>> 2011/1/20 Eric Charles<e...@apache.org>
>>
>>  Hi,
>>>
>>> Probably you did not instantiate spring context.
>>>
>>> As first shot, you could copy Main to YourMain
>>>
>>>
>>> https://svn.apache.org/repos/asf/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/Main.java
>>>
>>> and hack it with for example with code sample in [1].
>>>
>>> You can also hack the spring context xml files if you don't want to load
>>> all the beans, but you will still need a few of them to access the
>>> mailbox.
>>>
>>> Obviously, we could discuss the following:
>>> 1. Add some code simple samples for basic operations on mailbox.
>>> 2. Have a spring context for mailbox that could be used as a stand-alone
>>> (and also be imported in server).
>>>
>>> Tks,
>>>
>>> Eric
>>>
>>> [1] code sample (non compiling).
>>>
>>> public class YourMain {
>>>
>>>    private static Log log = LogFactory.getLog(Main.class.getName());
>>>
>>>    @Ressource(name="mailboxmanager")
>>>    private static MailboxManager;
>>>
>>>    public static void main(String[] args) throws IOException {
>>>
>>>        final JamesServerApplicationContext context = new
>>> JamesServerApplicationContext(new String[] {
>>> "context/james-server-context.xml" });
>>>        context.registerShutdownHook();
>>>
>>>        // Bad code practice - Refactor it!!!
>>>
>>>        MailboxPath mailboxPath = MailboxPath.inbox("userName");
>>>
>>>        MailboxSession mailboxSession =
>>> mailboxManager.createSystemSession(userName30, log)
>>>        mailboxManager.startProcessingRequest(mailboxSession);
>>>        try {
>>>                mailboxManager.createMailbox(mailboxPath, mailboxSession);
>>>        }
>>>        catch (MailboxExistsException e) {
>>>                // Do nothing, the mailbox already exists.
>>>        }
>>>
>>>        mailboxManager.endProcessingRequest(mailboxSession);
>>>
>>>
>>>        MessageManager messageManager =
>>> mailboxManager.getMailbox("mailboxPath", mailboxSession);
>>>
>>>       // instanciate an input stream that contains your email content
>>> (body, header,...)
>>>
>>>        messageManager.appendMessage(your-input-stream,
>>>                       new Date(),
>>>                       mailboxSession,
>>>                       isRecent,
>>>                       flags);
>>>               mailboxManager.endProcessingRequest(mailboxSession);
>>>           }
>>>
>>>    }
>>>
>>> }
>>>
>>>
>>>
>>> On 19/01/2011 20:07, Luc Saulière wrote:
>>>
>>>  Thx for answering so quickly, I tried this in a new package inside
>>>> james-server-container-spring project...
>>>> I have a public static void main(String[] args) containing my private
>>>> staticMailboxManager mailboxManager which
>>>>
>>>> is injected with the annotation @Resource(name="mailboxmanager") from
>>>> the
>>>> spring-bean.xml.
>>>> But it does not succeed in initializing the variable and I get a
>>>> NullPointerException as soon as I use it...
>>>> How can I initialize my beans without running the entire James app?
>>>>
>>>> Tks.
>>>>
>>>>
>>>> 2011/1/19 Eric Charles<e...@apache.org>
>>>>
>>>>  Hi Luc,
>>>>
>>>>> Yes, code has changed in trunk since M2 (we don't use MailServer
>>>>> anymore).
>>>>> In M2, or in trunk, the way to store mail is the same.
>>>>> If you are deploying the your code/class in the james spring container,
>>>>> you
>>>>> need to inject the mailboxmanager (with
>>>>> @Resources(name="mailboxmanager")
>>>>> and have a block of code such as:
>>>>>
>>>>> MailboxPath mailboxPath = MailboxPath.inbox(userName30);
>>>>> MailboxSession mailboxSession =
>>>>> mailboxManager.createSystemSession(userName30, log)
>>>>> MessageManager messageManager = mailboxManager.getMailbox(mailboxPath,
>>>>> mailboxSession);
>>>>> messageManager.appendMessage(your-input-stream,
>>>>>                        new Date(),
>>>>>                        mailboxSession,
>>>>>                        isRecent,
>>>>>                        flags);
>>>>>                mailboxManager.endProcessingRequest(mailboxSession);
>>>>>            }
>>>>>
>>>>> I just realize I can't find a simple test case to in trunk to show this
>>>>> (or
>>>>> maybe I didn't look good).
>>>>> If we don't have this, maybe you could open a jira so we can further
>>>>> provide test samples.
>>>>> (this comes from  the fact that all our tests were made from an "imap
>>>>> perspective", we moved the imap test to another  project, but we
>>>>> probably
>>>>> should further enrich the pure mailbox test cases/samples).
>>>>>
>>>>> Tks,
>>>>>
>>>>> Eric
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 19/01/2011 18:04, Luc Sauličre wrote:
>>>>>
>>>>>  Hello,
>>>>>
>>>>>> I'm developing with Math on the same mail app. We didn't succeed in
>>>>>> storing
>>>>>> mail as james3 does. In fact the SieveMailet class does not have a
>>>>>> setUsersRepo method, I think you're dealing with a newer version of
>>>>>> James3...
>>>>>> We are developing with the M2 one and SieveMailet have a setMailserver
>>>>>> method instead.
>>>>>> So, is there any way to store a mail (from another IMAP connection for
>>>>>> instance) in the James3 mySQL db, as James3 does (i.e. filling
>>>>>> correctly
>>>>>> all
>>>>>> the appropriate tables...)?
>>>>>>
>>>>>> Thx for helping.
>>>>>> Luc.
>>>>>>
>>>>>> 2011/1/17 Eric Charles<e...@apache.org>
>>>>>>
>>>>>>  Hi,
>>>>>>
>>>>>>  The mails store magic occurs in LocalDelivery where the
>>>>>>> MailboxManager
>>>>>>> is
>>>>>>> injected.
>>>>>>> (more precise, LocalDelivery uses the SieveMailet initialized with
>>>>>>> the
>>>>>>> MailboxManager)
>>>>>>>        sieveMailet.setUsersRepository(usersRepository);
>>>>>>>        sieveMailet.setMailboxManager(mailboxManager);
>>>>>>>        sieveMailet.init(m);
>>>>>>>        sieveMailet.setQuiet(true);
>>>>>>> ...
>>>>>>>        if (mail.getState() != Mail.GHOST) {
>>>>>>>            sieveMailet.service(mail);
>>>>>>>        }
>>>>>>>
>>>>>>> You only need to know that *MailRepository is not for users' mail
>>>>>>> storage
>>>>>>> http://james.apache.org/server/3/feature-persistence.html
>>>>>>>
>>>>>>> Both topics (mailet usage for delivery + separate mail stores) are
>>>>>>> subject
>>>>>>> to discussion will certainly change.
>>>>>>>
>>>>>>> Tks,
>>>>>>>
>>>>>>> Eric
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 17/01/2011 11:43, math math wrote:
>>>>>>>
>>>>>>>  Hello everybody,
>>>>>>>
>>>>>>>  I am developping a web mail project using james 3M2. I'm trying to
>>>>>>>> store
>>>>>>>> mails in a "james3" way with an external application using MySql DB.
>>>>>>>> I've
>>>>>>>> tried to store mails using mysq database repositories for a few days
>>>>>>>> now
>>>>>>>> but
>>>>>>>> i didn't succeed to do so... I 've traced the store method of
>>>>>>>> JDBCMailRepository class and also the ToRepository one. But still
>>>>>>>> don't
>>>>>>>> know
>>>>>>>> how James 3 is storing mails in the DB.
>>>>>>>>
>>>>>>>> I would be very glad if someone could help me in this task.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Mat
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>  ---------------------------------------------------------------------
>>>>>>>>
>>>>>>>>  To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>  ---------------------------------------------------------------------
>>>>>>>
>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>
>>>>>
>>>>>
>>>>>  ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
>
>

Reply via email to