Hi there,

exactly. In fact you will prolly only need to instance the needed
MailboxManager/SubscriptionManager/Authenticator implementation you
want to use in your code or just wire these implementations via
spring. Everything else should not be needed.

Bye,
Norman


2011/1/20 Luc Saulière <luc.sauli...@gmail.com>:
> 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
>>
>>
>

---------------------------------------------------------------------
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