I don't see the files? On Tue, Jul 12, 2011 at 11:29 AM, Saibabu Vallurupalli < [email protected]> wrote:
> Rick, > > This is where exactly the message construction is called. I modified > JPAMessage.java file and this has constructors initiating the actual message > creation. The entity attributes are filled in and this is the place where > the @Externalizer and @Factory annotations get initiated. > > I attached the Java files for your convenience. Let me know if you didn't > get them. Thank you very much. > > Thanks, > Sai > > > > On Tue, Jul 12, 2011 at 12:04 PM, Rick Curtis <[email protected]> wrote: > >> OpenJPA-2.0.1 should fully support Externalizer / Factory. What are you >> trying to do on this line JPAMailboxMembership.java:59 ? >> >> On Tue, Jul 12, 2011 at 10:54 AM, Saibabu Vallurupalli < >> [email protected]> wrote: >> >> > Hi Rick, >> > >> > Yesterday I completed the development and spent lot of time in deploying >> to >> > run the tests. I did this fix in Apache James Mailbox/JPA environment. >> > Was not able to fix the other issue with runtime, after deploying and >> > starting James server it comes up well. During runtime when I am sending >> an >> > email IMAP Server fails throwing error as below: >> > *************** >> > DEBUG 13:57:43,019 | james.imapserver | ID=171407124 Error while >> processing >> > imap request >> > java.lang.NoSuchMethodError: org.apache.james.mailbox.jpa. >> > >> > >> mail.model.openjpa.JPAMessage.<init>(Ljava/io/InputStream;JILjava/util/List;Lorg/apache/james/mailbox/store/mail/model/PropertyBuilder;)V >> > at >> > >> > >> org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMembership.<init>(JPAMailboxMembership.java:59) >> > *************** >> > >> > I am wondering if this has something to do with OpenJPA version I am >> using >> > as part of Apache James. >> > When I went and looked under James/lib folder I see "openjpa-2.0.1.jar". >> Is >> > this is correct JAR supporting the @Externalizer and @Factory >> > implementations? >> > >> > Please advise. >> > >> > Thank you, >> > Sai >> > >> > >> > >> > >> > >> > On Mon, Jul 11, 2011 at 11:41 AM, Rick Curtis <[email protected]> >> wrote: >> > >> > > Great! Let us know how it goes. >> > > >> > > On Mon, Jul 11, 2011 at 10:31 AM, Saibabu Vallurupalli < >> > > [email protected]> wrote: >> > > >> > > > Hi Rick, >> > > > After running into the issue I mentioned above. I read the >> > documentation >> > > of >> > > > using @Externalizer / @Factory annotations and tried something >> below: >> > > > >> > > > Modified >> > org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMessage.java >> > > by >> > > > adding the lines below: >> > > > ************* >> > > > /** The value for the body field. Lazy loaded */ >> > > > /** We use a max length to represent 1gb data. Thats prolly >> > overkill, >> > > > but who knows */ >> > > > @Basic(optional = false, fetch = FetchType.LAZY) >> > > > @Column(name = "MAIL_BYTES", length = 1048576000, nullable = >> false) >> > > > * @Externalizer("CustomJPAMessage.getEncryptedMessage") >> > > > @Factory("CustomJPAMessage.getDecryptedMessage")* >> > > > @Lob private byte[] body; >> > > > ************* >> > > > >> > > > Created CustomerJPAMessage java class and added the methods like >> below: >> > > > ************* >> > > > package org.apache.james.mailbox.jpa.mail.model.openjpa; >> > > > >> > > > public class CustomJPAMessage >> > > > { >> > > > >> > > > public static byte[] getEncryptedMessage(byte[] body) >> > > > { >> > > > return body; >> > > > } >> > > > >> > > > public static byte[] getDecryptedMessage(byte[] body) >> > > > { >> > > > return body; >> > > > } >> > > > } >> > > > ************* >> > > > >> > > > Everything worked great. Now, I understood how to use these >> > annotations. >> > > > >> > > > Working on using JASYPT API. >> > > > >> > > > Thank you all so much for putting me in right direction. >> > > > >> > > > Thanks, >> > > > Sai >> > > > >> > > > >> > > > On Mon, Jul 11, 2011 at 10:27 AM, Rick Curtis <[email protected]> >> > > wrote: >> > > > >> > > > > Saibabu - >> > > > > >> > > > > I'll put together a small example of how to use @Externalizer / >> > > @Factory >> > > > > with JASYPT sometime here this morning. >> > > > > >> > > > > Thanks, >> > > > > Rick >> > > > > >> > > > > On Mon, Jul 11, 2011 at 7:58 AM, Saibabu Vallurupalli < >> > > > > [email protected]> wrote: >> > > > > >> > > > > > Hi Pinaki, >> > > > > > >> > > > > > Good morning. >> > > > > > I tried the approach of using @Externalizer annotation as below >> and >> > > got >> > > > > an >> > > > > > error says @Externalizer can be only used for methods not for >> > fields. >> > > > > Then >> > > > > > I >> > > > > > have gone through the documentation and found I should be using >> > > > > > @ExternalValues and after using I started getting error as >> below: >> > > > > > >> > > > > > *********** >> > > > > > Caused by: <openjpa-2.1.0-r422266:1071316 fatal user error> >> > > > > > org.apache.openjpa.p >> > > > > > ersistence.ArgumentException: The field >> > > > > > "org.apache.james.mailbox.jpa.mail.model >> > > > > > .openjpa.JPAMessage.body" cannot use the external-values >> property. >> > > > > External >> > > > > > valu >> > > > > > es can only be declared for fields of primitives, primitive >> > wrappers, >> > > > or >> > > > > > strings >> > > > > > . >> > > > > > at >> > > > > > >> > org.apache.openjpa.meta.FieldMetaData.transform(FieldMetaData.java:15 >> > > > > > 38) >> > > > > > ********** >> > > > > > >> > > > > > Can you please advise me where I am going wrong. >> > > > > > >> > > > > > Thank you, >> > > > > > Sai >> > > > > > >> > > > > > On Fri, Jul 8, 2011 at 4:57 PM, pvalluri < >> > > > [email protected] >> > > > > > >wrote: >> > > > > > >> > > > > > > Hi Pinaki, >> > > > > > > >> > > > > > > Yes, This is really easy and cool. I am still in process of >> > setting >> > > > up >> > > > > my >> > > > > > > development environment for James to add this annotation in my >> > > class >> > > > > and >> > > > > > a >> > > > > > > question popped up in my mind. >> > > > > > > Just adding annotation will take care of both >> > > Encryption/Decryption. >> > > > I >> > > > > > > don't >> > > > > > > have to do anything else :-) >> > > > > > > Can't believe, Thanks so much for suggesting this solution. >> > > > > > > >> > > > > > > I have a class with filed declared as shown below: >> > > > > > > ********* >> > > > > > > public class JPAMessage extends AbstractJPAMessage { >> > > > > > > >> > > > > > > /** The value for the body field. Lazy loaded */ >> > > > > > > /** We use a max length to represent 1gb data. Thats prolly >> > > > > overkill, >> > > > > > > but who knows */ >> > > > > > > @Externalizer >> > > > > > > @Basic(optional = false, fetch = FetchType.LAZY) >> > > > > > > @Column(name = "MAIL_BYTES", length = 1048576000, nullable >> = >> > > > false) >> > > > > > > @Lob private byte[] body; >> > > > > > > >> > > > > > > // methods related to this class getter and creator...here... >> > > > > > > } >> > > > > > > ******** >> > > > > > > Is this the correct way of doing it. Sorry for asking the same >> > > > question >> > > > > > > again. I am very new to OpenJPA and this has become real >> critical >> > > for >> > > > > us. >> > > > > > > >> > > > > > > Thank you very much in advance. >> > > > > > > >> > > > > > > Thanks, Sai. >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > *Rick Curtis* >> > > > > >> > > > >> > > >> > > >> > > >> > > -- >> > > *Rick Curtis* >> > > >> > >> >> >> >> -- >> *Rick Curtis* >> > > -- *Rick Curtis*
