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