You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Ivan <xh...@gmail.com> on 2011/03/21 09:58:11 UTC

Re: svn commit: r1083678 - in /geronimo/server/trunk/plugins/javamail: geronimo-mail/ geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/ geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/ javamail/src/main/plan/

I think that "ger" name space should not be hardcoded there. It should be
got from the value of the jndiName.

2011/3/21 <vi...@apache.org>

> Author: violalu
> Date: Mon Mar 21 05:45:34 2011
> New Revision: 1083678
>
> URL: http://svn.apache.org/viewvc?rev=1083678&view=rev
> Log:
> GERONIMO-5862 bound ger:MailSession jndi to ger namespace.
>
> Modified:
>    geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>
>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>
>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>    geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>
> Modified: geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>
> ==============================================================================
> --- geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml (original)
> +++ geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml Mon Mar 21
> 05:45:34 2011
> @@ -63,6 +63,14 @@
>             <groupId>org.apache.geronimo.specs</groupId>
>             <artifactId>geronimo-activation_1.1_spec</artifactId>
>         </dependency>
> +
> +         <dependency>
> +            <groupId>org.apache.geronimo.framework</groupId>
> +            <artifactId>geronimo-kernel</artifactId>
> +            <version>${project.version}</version>
> +            <classifier>tests</classifier>
> +            <scope>test</scope>
> +        </dependency>
>     </dependencies>
>
>  </project>
>
> Modified:
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
> (original)
> +++
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
> Mon Mar 21 05:45:34 2011
> @@ -39,6 +39,11 @@ import org.apache.geronimo.management.Ja
>  import org.apache.geronimo.naming.ResourceSource;
>  import org.slf4j.Logger;
>  import org.slf4j.LoggerFactory;
> +import org.osgi.framework.BundleContext;
> +import org.osgi.framework.Filter;
> +import org.osgi.framework.ServiceReference;
> +
> +import javax.naming.spi.ObjectFactory;
>
>
>  /**
> @@ -72,6 +77,7 @@ public class MailGBean implements GBeanL
>     private String user;
>     private Boolean debug;
>     private String jndiName;
> +    private BundleContext bundleContext;
>
>
>     /**
> @@ -101,7 +107,8 @@ public class MailGBean implements GBeanL
>                      @ParamAttribute(name="host") String host,
>                      @ParamAttribute(name="user") String user,
>                      @ParamAttribute(name="debug") Boolean debug,
> -                     @ParamAttribute(name="jndiName") String jndiName) {
> +                     @ParamAttribute(name="jndiName") String jndiName,
> +                     @ParamSpecial(type =
> SpecialAttributeType.bundleContext) BundleContext bundleContext){
>         this.objectName = objectName;
>         this.protocols = protocols;
>         setUseDefault(useDefault);
> @@ -113,6 +120,7 @@ public class MailGBean implements GBeanL
>         setUser(user);
>         setDebug(debug);
>         setJndiName(jndiName);
> +        this.bundleContext = bundleContext;
>     }
>
>     /**
> @@ -374,21 +382,15 @@ public class MailGBean implements GBeanL
>         if (jndiName != null && jndiName.length() > 0) {
>             // first get the resource incase there are exceptions
>             Object value = $getResource();
> -
> -            // get the initial context
> -            Context context = new InitialContext();
> -            Name parsedName = context.getNameParser("").parse(jndiName);
> -
> -            // create intermediate contexts
> -            for (int i = 1; i < parsedName.size(); i++) {
> -                Name contextName = parsedName.getPrefix(i);
> -                if (!bindingExists(context, contextName)) {
> -                    context.createSubcontext(contextName);
> -                }
> -            }
> -
> -            // bind
> -            context.bind(jndiName, value);
> +
> +            //Get ger service, and bind ger:MailSession to context
> +            ServiceReference[] sr =
> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
> "(osgi.jndi.url.scheme=ger)");
> +            if (sr != null){
> +             ObjectFactory objectFactory =  (ObjectFactory)
> bundleContext.getService(sr[0]);
> +             Context context =
> (Context)objectFactory.getObjectInstance(null, null, null, null);
> +             context.bind(jndiName, value);
> +            }
> +
>             log.info("JavaMail session bound to " + jndiName);
>         }
>     }
> @@ -407,10 +409,15 @@ public class MailGBean implements GBeanL
>         String jndiName = getJndiName();
>         if (jndiName != null && jndiName.length() > 0) {
>             try {
> -                Context context = new InitialContext();
> -                context.unbind(jndiName);
> +               //Get ger service, and bind ger:MailSession to context
> +                ServiceReference[] sr =
> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
> "(osgi.jndi.url.scheme=ger)");
> +                if (sr != null){
> +                 ObjectFactory objectFactory =  (ObjectFactory)
> bundleContext.getService(sr[0]);
> +                 Context context =
> (Context)objectFactory.getObjectInstance(null, null, null, null);
> +                 context.unbind(jndiName);
> +                }
>                 log.info("JavaMail session unbound from " + jndiName);
> -            } catch (NamingException e) {
> +            } catch (Exception e) {
>                 // we tried... this is a common error which occurs during
> shutdown due to ordering
>             }
>         }
> @@ -443,4 +450,12 @@ public class MailGBean implements GBeanL
>         return false;
>     }
>
> +       public void setBundleContext(BundleContext bundleContext) {
> +               this.bundleContext = bundleContext;
> +       }
> +
> +       public BundleContext getBundleContext() {
> +               return bundleContext;
> +       }
> +
>  }
>
> Modified:
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>
> ==============================================================================
> ---
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
> (original)
> +++
> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
> Mon Mar 21 05:45:34 2011
> @@ -25,6 +25,9 @@ import javax.mail.Transport;
>
>  import junit.framework.TestCase;
>
> +import org.osgi.framework.BundleContext;
> +import org.apache.geronimo.kernel.osgi.MockBundleContext;
> +
>
>  /**
>  * @version $Rev$ $Date$
> @@ -37,7 +40,8 @@ public class MailGBeanTest extends TestC
>         properties.put("mail.store.protocol", "testStore");
>         properties.put("mail.transport.protocol", "testTransport");
>
> -        MailGBean mail = new MailGBean("test:name=mail", null,
> Boolean.TRUE, properties, null, null, null, null, null, null, null);
> +        BundleContext bundleContext = new
> MockBundleContext(getClass().getClassLoader(), "", null, null);
> +        MailGBean mail = new MailGBean("test:name=mail", null,
> Boolean.TRUE, properties, null, null, null, null, null, null, null,
> bundleContext);
>         mail.doStart();
>         Object proxy = mail.$getResource();
>
> @@ -59,7 +63,8 @@ public class MailGBeanTest extends TestC
>         properties.put("mail.store.protocol", "POOKIE");
>         properties.put("mail.transport.protocol", "BEAR");
>
> -        MailGBean mail = new MailGBean("test:name=mail", null,
> Boolean.TRUE, properties, null, "test", "test", null, null, null, null);
> +        BundleContext bundleContext = new
> MockBundleContext(getClass().getClassLoader(), "", null, null);
> +        MailGBean mail = new MailGBean("test:name=mail", null,
> Boolean.TRUE, properties, null, "test", "test", null, null, null, null,
> bundleContext);
>         mail.doStart();
>         Object proxy = mail.$getResource();
>
> @@ -91,7 +96,8 @@ public class MailGBeanTest extends TestC
>         SMTPTransportGBean protocol = new
> SMTPTransportGBean("test:name=smtp", null, null, null, null, null, null,
> null, null, null, null, null, null, null, null, null, null, null, null,
> null, null, null, null, null, null, null);
>         protocol.doStart();
>
> -        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null);
> +        BundleContext bundleContext = new
> MockBundleContext(getClass().getClassLoader(), "", null, null);
> +        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null, bundleContext);
>         mail.doStart();
>         Object proxy = mail.$getResource();
>
> @@ -120,7 +126,8 @@ public class MailGBeanTest extends TestC
>         POP3StoreGBean protocol = new POP3StoreGBean("test:name=pop3",
> null, null, null, null, null, null, null, null, null, null, null, null,
> null, null);
>         protocol.doStart();
>
> -        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null);
> +        BundleContext bundleContext = new
> MockBundleContext(getClass().getClassLoader(), "", null, null);
> +        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null, bundleContext);
>         mail.doStart();
>         Object proxy = mail.$getResource();
>
> @@ -146,7 +153,8 @@ public class MailGBeanTest extends TestC
>         IMAPStoreGBean protocol = new IMAPStoreGBean("test:name=imap",
> null, null, null, null, null, null, null, null, null, null, null, null,
> null, null, null, null, null, null, null, null, null, null, null, null,
> null);
>         protocol.doStart();
>
> -        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null);
> +        BundleContext bundleContext = new
> MockBundleContext(getClass().getClassLoader(), "", null, null);
> +        MailGBean mail = new MailGBean("test:name=mail",
> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
> null, "test", "test", null, null, null, null, bundleContext);
>         mail.doStart();
>         Object proxy = mail.$getResource();
>
>
> Modified:
> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
> URL:
> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>
> ==============================================================================
> --- geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
> (original)
> +++ geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
> Mon Mar 21 05:45:34 2011
> @@ -23,7 +23,7 @@
>     <gbean name="mail/MailSession"
> class="org.apache.geronimo.resource.mail.MailGBean">
>         <attribute name="transportProtocol">smtp</attribute>
>       <!--TODO osgi:jndi -->
> -        <!--<attribute name="jndiName">ger:MailSession</attribute>-->
> +       <attribute name="jndiName">ger:MailSession</attribute>
>         <reference name="Protocols"/>
>     </gbean>
>
>
>
>


-- 
Ivan

Re: svn commit: r1083678 - in /geronimo/server/trunk/plugins/javamail: geronimo-mail/ geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/ geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/ javamail/src/main/plan/

Posted by viola lu <vi...@gmail.com>.
OK. Thanks for your suggestion. I updated code @
#1084097<http://svn.apache.org/viewvc?view=rev&rev=1084097>

On Tue, Mar 22, 2011 at 9:56 AM, Ivan <xh...@gmail.com> wrote:

> Not sure I understand your comments, ger is an existed context, what this
> GBean does is to bind the mailsession to the specified context. e.g. If
> users configured the jndiName with value jca:/a/b. With current changes, it
> might not work.
>
>
> 2011/3/22 viola lu <vi...@gmail.com>
>
>> But i think it's  unnecessary to create an extra namesapce that no other
>> components will use in geronimo. And currently all namesapces are exposed as
>> blueprint service, even i created one here, should i expose it too?
>>
>>
>> On Mon, Mar 21, 2011 at 4:58 PM, Ivan <xh...@gmail.com> wrote:
>>
>>> I think that "ger" name space should not be hardcoded there. It should be
>>> got from the value of the jndiName.
>>>
>>> 2011/3/21 <vi...@apache.org>
>>>
>>>> Author: violalu
>>>> Date: Mon Mar 21 05:45:34 2011
>>>> New Revision: 1083678
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1083678&view=rev
>>>> Log:
>>>> GERONIMO-5862 bound ger:MailSession jndi to ger namespace.
>>>>
>>>> Modified:
>>>>    geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>>>
>>>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>>>
>>>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>>>
>>>>  geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>>>
>>>> Modified: geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>>
>>>> ==============================================================================
>>>> --- geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>>> (original)
>>>> +++ geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml Mon Mar
>>>> 21 05:45:34 2011
>>>> @@ -63,6 +63,14 @@
>>>>             <groupId>org.apache.geronimo.specs</groupId>
>>>>             <artifactId>geronimo-activation_1.1_spec</artifactId>
>>>>         </dependency>
>>>> +
>>>> +         <dependency>
>>>> +            <groupId>org.apache.geronimo.framework</groupId>
>>>> +            <artifactId>geronimo-kernel</artifactId>
>>>> +            <version>${project.version}</version>
>>>> +            <classifier>tests</classifier>
>>>> +            <scope>test</scope>
>>>> +        </dependency>
>>>>     </dependencies>
>>>>
>>>>  </project>
>>>>
>>>> Modified:
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>>> (original)
>>>> +++
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>>> Mon Mar 21 05:45:34 2011
>>>> @@ -39,6 +39,11 @@ import org.apache.geronimo.management.Ja
>>>>  import org.apache.geronimo.naming.ResourceSource;
>>>>  import org.slf4j.Logger;
>>>>  import org.slf4j.LoggerFactory;
>>>> +import org.osgi.framework.BundleContext;
>>>> +import org.osgi.framework.Filter;
>>>> +import org.osgi.framework.ServiceReference;
>>>> +
>>>> +import javax.naming.spi.ObjectFactory;
>>>>
>>>>
>>>>  /**
>>>> @@ -72,6 +77,7 @@ public class MailGBean implements GBeanL
>>>>     private String user;
>>>>     private Boolean debug;
>>>>     private String jndiName;
>>>> +    private BundleContext bundleContext;
>>>>
>>>>
>>>>     /**
>>>> @@ -101,7 +107,8 @@ public class MailGBean implements GBeanL
>>>>                      @ParamAttribute(name="host") String host,
>>>>                      @ParamAttribute(name="user") String user,
>>>>                      @ParamAttribute(name="debug") Boolean debug,
>>>> -                     @ParamAttribute(name="jndiName") String jndiName)
>>>> {
>>>> +                     @ParamAttribute(name="jndiName") String jndiName,
>>>> +                     @ParamSpecial(type =
>>>> SpecialAttributeType.bundleContext) BundleContext bundleContext){
>>>>         this.objectName = objectName;
>>>>         this.protocols = protocols;
>>>>         setUseDefault(useDefault);
>>>> @@ -113,6 +120,7 @@ public class MailGBean implements GBeanL
>>>>         setUser(user);
>>>>         setDebug(debug);
>>>>         setJndiName(jndiName);
>>>> +        this.bundleContext = bundleContext;
>>>>     }
>>>>
>>>>     /**
>>>> @@ -374,21 +382,15 @@ public class MailGBean implements GBeanL
>>>>         if (jndiName != null && jndiName.length() > 0) {
>>>>             // first get the resource incase there are exceptions
>>>>             Object value = $getResource();
>>>> -
>>>> -            // get the initial context
>>>> -            Context context = new InitialContext();
>>>> -            Name parsedName =
>>>> context.getNameParser("").parse(jndiName);
>>>> -
>>>> -            // create intermediate contexts
>>>> -            for (int i = 1; i < parsedName.size(); i++) {
>>>> -                Name contextName = parsedName.getPrefix(i);
>>>> -                if (!bindingExists(context, contextName)) {
>>>> -                    context.createSubcontext(contextName);
>>>> -                }
>>>> -            }
>>>> -
>>>> -            // bind
>>>> -            context.bind(jndiName, value);
>>>> +
>>>> +            //Get ger service, and bind ger:MailSession to context
>>>> +            ServiceReference[] sr =
>>>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>>>> "(osgi.jndi.url.scheme=ger)");
>>>> +            if (sr != null){
>>>> +             ObjectFactory objectFactory =  (ObjectFactory)
>>>> bundleContext.getService(sr[0]);
>>>> +             Context context =
>>>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>>>> +             context.bind(jndiName, value);
>>>> +            }
>>>> +
>>>>             log.info("JavaMail session bound to " + jndiName);
>>>>         }
>>>>     }
>>>> @@ -407,10 +409,15 @@ public class MailGBean implements GBeanL
>>>>         String jndiName = getJndiName();
>>>>         if (jndiName != null && jndiName.length() > 0) {
>>>>             try {
>>>> -                Context context = new InitialContext();
>>>> -                context.unbind(jndiName);
>>>> +               //Get ger service, and bind ger:MailSession to context
>>>> +                ServiceReference[] sr =
>>>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>>>> "(osgi.jndi.url.scheme=ger)");
>>>> +                if (sr != null){
>>>> +                 ObjectFactory objectFactory =  (ObjectFactory)
>>>> bundleContext.getService(sr[0]);
>>>> +                 Context context =
>>>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>>>> +                 context.unbind(jndiName);
>>>> +                }
>>>>                 log.info("JavaMail session unbound from " + jndiName);
>>>> -            } catch (NamingException e) {
>>>> +            } catch (Exception e) {
>>>>                 // we tried... this is a common error which occurs
>>>> during shutdown due to ordering
>>>>             }
>>>>         }
>>>> @@ -443,4 +450,12 @@ public class MailGBean implements GBeanL
>>>>         return false;
>>>>     }
>>>>
>>>> +       public void setBundleContext(BundleContext bundleContext) {
>>>> +               this.bundleContext = bundleContext;
>>>> +       }
>>>> +
>>>> +       public BundleContext getBundleContext() {
>>>> +               return bundleContext;
>>>> +       }
>>>> +
>>>>  }
>>>>
>>>> Modified:
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>>> (original)
>>>> +++
>>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>>> Mon Mar 21 05:45:34 2011
>>>> @@ -25,6 +25,9 @@ import javax.mail.Transport;
>>>>
>>>>  import junit.framework.TestCase;
>>>>
>>>> +import org.osgi.framework.BundleContext;
>>>> +import org.apache.geronimo.kernel.osgi.MockBundleContext;
>>>> +
>>>>
>>>>  /**
>>>>  * @version $Rev$ $Date$
>>>> @@ -37,7 +40,8 @@ public class MailGBeanTest extends TestC
>>>>         properties.put("mail.store.protocol", "testStore");
>>>>         properties.put("mail.transport.protocol", "testTransport");
>>>>
>>>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>>>> Boolean.TRUE, properties, null, null, null, null, null, null, null);
>>>> +        BundleContext bundleContext = new
>>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>>>> Boolean.TRUE, properties, null, null, null, null, null, null, null,
>>>> bundleContext);
>>>>         mail.doStart();
>>>>         Object proxy = mail.$getResource();
>>>>
>>>> @@ -59,7 +63,8 @@ public class MailGBeanTest extends TestC
>>>>         properties.put("mail.store.protocol", "POOKIE");
>>>>         properties.put("mail.transport.protocol", "BEAR");
>>>>
>>>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>>>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null);
>>>> +        BundleContext bundleContext = new
>>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>>>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null,
>>>> bundleContext);
>>>>         mail.doStart();
>>>>         Object proxy = mail.$getResource();
>>>>
>>>> @@ -91,7 +96,8 @@ public class MailGBeanTest extends TestC
>>>>         SMTPTransportGBean protocol = new
>>>> SMTPTransportGBean("test:name=smtp", null, null, null, null, null, null,
>>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>>> null, null, null, null, null, null, null);
>>>>         protocol.doStart();
>>>>
>>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null);
>>>> +        BundleContext bundleContext = new
>>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null, bundleContext);
>>>>         mail.doStart();
>>>>         Object proxy = mail.$getResource();
>>>>
>>>> @@ -120,7 +126,8 @@ public class MailGBeanTest extends TestC
>>>>         POP3StoreGBean protocol = new POP3StoreGBean("test:name=pop3",
>>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>>> null, null);
>>>>         protocol.doStart();
>>>>
>>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null);
>>>> +        BundleContext bundleContext = new
>>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null, bundleContext);
>>>>         mail.doStart();
>>>>         Object proxy = mail.$getResource();
>>>>
>>>> @@ -146,7 +153,8 @@ public class MailGBeanTest extends TestC
>>>>         IMAPStoreGBean protocol = new IMAPStoreGBean("test:name=imap",
>>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>>> null);
>>>>         protocol.doStart();
>>>>
>>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null);
>>>> +        BundleContext bundleContext = new
>>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>>> null, "test", "test", null, null, null, null, bundleContext);
>>>>         mail.doStart();
>>>>         Object proxy = mail.$getResource();
>>>>
>>>>
>>>> Modified:
>>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>>
>>>> ==============================================================================
>>>> ---
>>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>>> (original)
>>>> +++
>>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml Mon
>>>> Mar 21 05:45:34 2011
>>>> @@ -23,7 +23,7 @@
>>>>     <gbean name="mail/MailSession"
>>>> class="org.apache.geronimo.resource.mail.MailGBean">
>>>>         <attribute name="transportProtocol">smtp</attribute>
>>>>       <!--TODO osgi:jndi -->
>>>> -        <!--<attribute name="jndiName">ger:MailSession</attribute>-->
>>>> +       <attribute name="jndiName">ger:MailSession</attribute>
>>>>         <reference name="Protocols"/>
>>>>     </gbean>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Ivan
>>>
>>
>>
>>
>> --
>> viola
>>
>
>
>
> --
> Ivan
>



-- 
viola

Re: svn commit: r1083678 - in /geronimo/server/trunk/plugins/javamail: geronimo-mail/ geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/ geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/ javamail/src/main/plan/

Posted by Ivan <xh...@gmail.com>.
Not sure I understand your comments, ger is an existed context, what this
GBean does is to bind the mailsession to the specified context. e.g. If
users configured the jndiName with value jca:/a/b. With current changes, it
might not work.

2011/3/22 viola lu <vi...@gmail.com>

> But i think it's  unnecessary to create an extra namesapce that no other
> components will use in geronimo. And currently all namesapces are exposed as
> blueprint service, even i created one here, should i expose it too?
>
>
> On Mon, Mar 21, 2011 at 4:58 PM, Ivan <xh...@gmail.com> wrote:
>
>> I think that "ger" name space should not be hardcoded there. It should be
>> got from the value of the jndiName.
>>
>> 2011/3/21 <vi...@apache.org>
>>
>>> Author: violalu
>>> Date: Mon Mar 21 05:45:34 2011
>>> New Revision: 1083678
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1083678&view=rev
>>> Log:
>>> GERONIMO-5862 bound ger:MailSession jndi to ger namespace.
>>>
>>> Modified:
>>>    geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>>
>>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>>
>>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>>    geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>>
>>> Modified: geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>
>>> ==============================================================================
>>> --- geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>> (original)
>>> +++ geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml Mon Mar
>>> 21 05:45:34 2011
>>> @@ -63,6 +63,14 @@
>>>             <groupId>org.apache.geronimo.specs</groupId>
>>>             <artifactId>geronimo-activation_1.1_spec</artifactId>
>>>         </dependency>
>>> +
>>> +         <dependency>
>>> +            <groupId>org.apache.geronimo.framework</groupId>
>>> +            <artifactId>geronimo-kernel</artifactId>
>>> +            <version>${project.version}</version>
>>> +            <classifier>tests</classifier>
>>> +            <scope>test</scope>
>>> +        </dependency>
>>>     </dependencies>
>>>
>>>  </project>
>>>
>>> Modified:
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>> (original)
>>> +++
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>> Mon Mar 21 05:45:34 2011
>>> @@ -39,6 +39,11 @@ import org.apache.geronimo.management.Ja
>>>  import org.apache.geronimo.naming.ResourceSource;
>>>  import org.slf4j.Logger;
>>>  import org.slf4j.LoggerFactory;
>>> +import org.osgi.framework.BundleContext;
>>> +import org.osgi.framework.Filter;
>>> +import org.osgi.framework.ServiceReference;
>>> +
>>> +import javax.naming.spi.ObjectFactory;
>>>
>>>
>>>  /**
>>> @@ -72,6 +77,7 @@ public class MailGBean implements GBeanL
>>>     private String user;
>>>     private Boolean debug;
>>>     private String jndiName;
>>> +    private BundleContext bundleContext;
>>>
>>>
>>>     /**
>>> @@ -101,7 +107,8 @@ public class MailGBean implements GBeanL
>>>                      @ParamAttribute(name="host") String host,
>>>                      @ParamAttribute(name="user") String user,
>>>                      @ParamAttribute(name="debug") Boolean debug,
>>> -                     @ParamAttribute(name="jndiName") String jndiName) {
>>> +                     @ParamAttribute(name="jndiName") String jndiName,
>>> +                     @ParamSpecial(type =
>>> SpecialAttributeType.bundleContext) BundleContext bundleContext){
>>>         this.objectName = objectName;
>>>         this.protocols = protocols;
>>>         setUseDefault(useDefault);
>>> @@ -113,6 +120,7 @@ public class MailGBean implements GBeanL
>>>         setUser(user);
>>>         setDebug(debug);
>>>         setJndiName(jndiName);
>>> +        this.bundleContext = bundleContext;
>>>     }
>>>
>>>     /**
>>> @@ -374,21 +382,15 @@ public class MailGBean implements GBeanL
>>>         if (jndiName != null && jndiName.length() > 0) {
>>>             // first get the resource incase there are exceptions
>>>             Object value = $getResource();
>>> -
>>> -            // get the initial context
>>> -            Context context = new InitialContext();
>>> -            Name parsedName = context.getNameParser("").parse(jndiName);
>>> -
>>> -            // create intermediate contexts
>>> -            for (int i = 1; i < parsedName.size(); i++) {
>>> -                Name contextName = parsedName.getPrefix(i);
>>> -                if (!bindingExists(context, contextName)) {
>>> -                    context.createSubcontext(contextName);
>>> -                }
>>> -            }
>>> -
>>> -            // bind
>>> -            context.bind(jndiName, value);
>>> +
>>> +            //Get ger service, and bind ger:MailSession to context
>>> +            ServiceReference[] sr =
>>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>>> "(osgi.jndi.url.scheme=ger)");
>>> +            if (sr != null){
>>> +             ObjectFactory objectFactory =  (ObjectFactory)
>>> bundleContext.getService(sr[0]);
>>> +             Context context =
>>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>>> +             context.bind(jndiName, value);
>>> +            }
>>> +
>>>             log.info("JavaMail session bound to " + jndiName);
>>>         }
>>>     }
>>> @@ -407,10 +409,15 @@ public class MailGBean implements GBeanL
>>>         String jndiName = getJndiName();
>>>         if (jndiName != null && jndiName.length() > 0) {
>>>             try {
>>> -                Context context = new InitialContext();
>>> -                context.unbind(jndiName);
>>> +               //Get ger service, and bind ger:MailSession to context
>>> +                ServiceReference[] sr =
>>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>>> "(osgi.jndi.url.scheme=ger)");
>>> +                if (sr != null){
>>> +                 ObjectFactory objectFactory =  (ObjectFactory)
>>> bundleContext.getService(sr[0]);
>>> +                 Context context =
>>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>>> +                 context.unbind(jndiName);
>>> +                }
>>>                 log.info("JavaMail session unbound from " + jndiName);
>>> -            } catch (NamingException e) {
>>> +            } catch (Exception e) {
>>>                 // we tried... this is a common error which occurs during
>>> shutdown due to ordering
>>>             }
>>>         }
>>> @@ -443,4 +450,12 @@ public class MailGBean implements GBeanL
>>>         return false;
>>>     }
>>>
>>> +       public void setBundleContext(BundleContext bundleContext) {
>>> +               this.bundleContext = bundleContext;
>>> +       }
>>> +
>>> +       public BundleContext getBundleContext() {
>>> +               return bundleContext;
>>> +       }
>>> +
>>>  }
>>>
>>> Modified:
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>> (original)
>>> +++
>>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>> Mon Mar 21 05:45:34 2011
>>> @@ -25,6 +25,9 @@ import javax.mail.Transport;
>>>
>>>  import junit.framework.TestCase;
>>>
>>> +import org.osgi.framework.BundleContext;
>>> +import org.apache.geronimo.kernel.osgi.MockBundleContext;
>>> +
>>>
>>>  /**
>>>  * @version $Rev$ $Date$
>>> @@ -37,7 +40,8 @@ public class MailGBeanTest extends TestC
>>>         properties.put("mail.store.protocol", "testStore");
>>>         properties.put("mail.transport.protocol", "testTransport");
>>>
>>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>>> Boolean.TRUE, properties, null, null, null, null, null, null, null);
>>> +        BundleContext bundleContext = new
>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>>> Boolean.TRUE, properties, null, null, null, null, null, null, null,
>>> bundleContext);
>>>         mail.doStart();
>>>         Object proxy = mail.$getResource();
>>>
>>> @@ -59,7 +63,8 @@ public class MailGBeanTest extends TestC
>>>         properties.put("mail.store.protocol", "POOKIE");
>>>         properties.put("mail.transport.protocol", "BEAR");
>>>
>>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null);
>>> +        BundleContext bundleContext = new
>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null,
>>> bundleContext);
>>>         mail.doStart();
>>>         Object proxy = mail.$getResource();
>>>
>>> @@ -91,7 +96,8 @@ public class MailGBeanTest extends TestC
>>>         SMTPTransportGBean protocol = new
>>> SMTPTransportGBean("test:name=smtp", null, null, null, null, null, null,
>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>> null, null, null, null, null, null, null);
>>>         protocol.doStart();
>>>
>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null);
>>> +        BundleContext bundleContext = new
>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null, bundleContext);
>>>         mail.doStart();
>>>         Object proxy = mail.$getResource();
>>>
>>> @@ -120,7 +126,8 @@ public class MailGBeanTest extends TestC
>>>         POP3StoreGBean protocol = new POP3StoreGBean("test:name=pop3",
>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>> null, null);
>>>         protocol.doStart();
>>>
>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null);
>>> +        BundleContext bundleContext = new
>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null, bundleContext);
>>>         mail.doStart();
>>>         Object proxy = mail.$getResource();
>>>
>>> @@ -146,7 +153,8 @@ public class MailGBeanTest extends TestC
>>>         IMAPStoreGBean protocol = new IMAPStoreGBean("test:name=imap",
>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>> null, null, null, null, null, null, null, null, null, null, null, null,
>>> null);
>>>         protocol.doStart();
>>>
>>> -        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null);
>>> +        BundleContext bundleContext = new
>>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>>> +        MailGBean mail = new MailGBean("test:name=mail",
>>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>>> null, "test", "test", null, null, null, null, bundleContext);
>>>         mail.doStart();
>>>         Object proxy = mail.$getResource();
>>>
>>>
>>> Modified:
>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>> URL:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>> (original)
>>> +++
>>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml Mon
>>> Mar 21 05:45:34 2011
>>> @@ -23,7 +23,7 @@
>>>     <gbean name="mail/MailSession"
>>> class="org.apache.geronimo.resource.mail.MailGBean">
>>>         <attribute name="transportProtocol">smtp</attribute>
>>>       <!--TODO osgi:jndi -->
>>> -        <!--<attribute name="jndiName">ger:MailSession</attribute>-->
>>> +       <attribute name="jndiName">ger:MailSession</attribute>
>>>         <reference name="Protocols"/>
>>>     </gbean>
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Ivan
>>
>
>
>
> --
> viola
>



-- 
Ivan

Re: svn commit: r1083678 - in /geronimo/server/trunk/plugins/javamail: geronimo-mail/ geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/ geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/ javamail/src/main/plan/

Posted by viola lu <vi...@gmail.com>.
But i think it's  unnecessary to create an extra namesapce that no other
components will use in geronimo. And currently all namesapces are exposed as
blueprint service, even i created one here, should i expose it too?

On Mon, Mar 21, 2011 at 4:58 PM, Ivan <xh...@gmail.com> wrote:

> I think that "ger" name space should not be hardcoded there. It should be
> got from the value of the jndiName.
>
> 2011/3/21 <vi...@apache.org>
>
>> Author: violalu
>> Date: Mon Mar 21 05:45:34 2011
>> New Revision: 1083678
>>
>> URL: http://svn.apache.org/viewvc?rev=1083678&view=rev
>> Log:
>> GERONIMO-5862 bound ger:MailSession jndi to ger namespace.
>>
>> Modified:
>>    geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>>
>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>>
>>  geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>>    geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>>
>> Modified: geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>> URL:
>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>
>> ==============================================================================
>> --- geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml
>> (original)
>> +++ geronimo/server/trunk/plugins/javamail/geronimo-mail/pom.xml Mon Mar
>> 21 05:45:34 2011
>> @@ -63,6 +63,14 @@
>>             <groupId>org.apache.geronimo.specs</groupId>
>>             <artifactId>geronimo-activation_1.1_spec</artifactId>
>>         </dependency>
>> +
>> +         <dependency>
>> +            <groupId>org.apache.geronimo.framework</groupId>
>> +            <artifactId>geronimo-kernel</artifactId>
>> +            <version>${project.version}</version>
>> +            <classifier>tests</classifier>
>> +            <scope>test</scope>
>> +        </dependency>
>>     </dependencies>
>>
>>  </project>
>>
>> Modified:
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>> URL:
>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>
>> ==============================================================================
>> ---
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>> (original)
>> +++
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/main/java/org/apache/geronimo/resource/mail/MailGBean.java
>> Mon Mar 21 05:45:34 2011
>> @@ -39,6 +39,11 @@ import org.apache.geronimo.management.Ja
>>  import org.apache.geronimo.naming.ResourceSource;
>>  import org.slf4j.Logger;
>>  import org.slf4j.LoggerFactory;
>> +import org.osgi.framework.BundleContext;
>> +import org.osgi.framework.Filter;
>> +import org.osgi.framework.ServiceReference;
>> +
>> +import javax.naming.spi.ObjectFactory;
>>
>>
>>  /**
>> @@ -72,6 +77,7 @@ public class MailGBean implements GBeanL
>>     private String user;
>>     private Boolean debug;
>>     private String jndiName;
>> +    private BundleContext bundleContext;
>>
>>
>>     /**
>> @@ -101,7 +107,8 @@ public class MailGBean implements GBeanL
>>                      @ParamAttribute(name="host") String host,
>>                      @ParamAttribute(name="user") String user,
>>                      @ParamAttribute(name="debug") Boolean debug,
>> -                     @ParamAttribute(name="jndiName") String jndiName) {
>> +                     @ParamAttribute(name="jndiName") String jndiName,
>> +                     @ParamSpecial(type =
>> SpecialAttributeType.bundleContext) BundleContext bundleContext){
>>         this.objectName = objectName;
>>         this.protocols = protocols;
>>         setUseDefault(useDefault);
>> @@ -113,6 +120,7 @@ public class MailGBean implements GBeanL
>>         setUser(user);
>>         setDebug(debug);
>>         setJndiName(jndiName);
>> +        this.bundleContext = bundleContext;
>>     }
>>
>>     /**
>> @@ -374,21 +382,15 @@ public class MailGBean implements GBeanL
>>         if (jndiName != null && jndiName.length() > 0) {
>>             // first get the resource incase there are exceptions
>>             Object value = $getResource();
>> -
>> -            // get the initial context
>> -            Context context = new InitialContext();
>> -            Name parsedName = context.getNameParser("").parse(jndiName);
>> -
>> -            // create intermediate contexts
>> -            for (int i = 1; i < parsedName.size(); i++) {
>> -                Name contextName = parsedName.getPrefix(i);
>> -                if (!bindingExists(context, contextName)) {
>> -                    context.createSubcontext(contextName);
>> -                }
>> -            }
>> -
>> -            // bind
>> -            context.bind(jndiName, value);
>> +
>> +            //Get ger service, and bind ger:MailSession to context
>> +            ServiceReference[] sr =
>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>> "(osgi.jndi.url.scheme=ger)");
>> +            if (sr != null){
>> +             ObjectFactory objectFactory =  (ObjectFactory)
>> bundleContext.getService(sr[0]);
>> +             Context context =
>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>> +             context.bind(jndiName, value);
>> +            }
>> +
>>             log.info("JavaMail session bound to " + jndiName);
>>         }
>>     }
>> @@ -407,10 +409,15 @@ public class MailGBean implements GBeanL
>>         String jndiName = getJndiName();
>>         if (jndiName != null && jndiName.length() > 0) {
>>             try {
>> -                Context context = new InitialContext();
>> -                context.unbind(jndiName);
>> +               //Get ger service, and bind ger:MailSession to context
>> +                ServiceReference[] sr =
>> bundleContext.getServiceReferences(ObjectFactory.class.getName(),
>> "(osgi.jndi.url.scheme=ger)");
>> +                if (sr != null){
>> +                 ObjectFactory objectFactory =  (ObjectFactory)
>> bundleContext.getService(sr[0]);
>> +                 Context context =
>> (Context)objectFactory.getObjectInstance(null, null, null, null);
>> +                 context.unbind(jndiName);
>> +                }
>>                 log.info("JavaMail session unbound from " + jndiName);
>> -            } catch (NamingException e) {
>> +            } catch (Exception e) {
>>                 // we tried... this is a common error which occurs during
>> shutdown due to ordering
>>             }
>>         }
>> @@ -443,4 +450,12 @@ public class MailGBean implements GBeanL
>>         return false;
>>     }
>>
>> +       public void setBundleContext(BundleContext bundleContext) {
>> +               this.bundleContext = bundleContext;
>> +       }
>> +
>> +       public BundleContext getBundleContext() {
>> +               return bundleContext;
>> +       }
>> +
>>  }
>>
>> Modified:
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>> URL:
>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java?rev=1083678&r1=1083677&r2=1083678&view=diff
>>
>> ==============================================================================
>> ---
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>> (original)
>> +++
>> geronimo/server/trunk/plugins/javamail/geronimo-mail/src/test/java/org/apache/geronimo/resource/mail/MailGBeanTest.java
>> Mon Mar 21 05:45:34 2011
>> @@ -25,6 +25,9 @@ import javax.mail.Transport;
>>
>>  import junit.framework.TestCase;
>>
>> +import org.osgi.framework.BundleContext;
>> +import org.apache.geronimo.kernel.osgi.MockBundleContext;
>> +
>>
>>  /**
>>  * @version $Rev$ $Date$
>> @@ -37,7 +40,8 @@ public class MailGBeanTest extends TestC
>>         properties.put("mail.store.protocol", "testStore");
>>         properties.put("mail.transport.protocol", "testTransport");
>>
>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>> Boolean.TRUE, properties, null, null, null, null, null, null, null);
>> +        BundleContext bundleContext = new
>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>> Boolean.TRUE, properties, null, null, null, null, null, null, null,
>> bundleContext);
>>         mail.doStart();
>>         Object proxy = mail.$getResource();
>>
>> @@ -59,7 +63,8 @@ public class MailGBeanTest extends TestC
>>         properties.put("mail.store.protocol", "POOKIE");
>>         properties.put("mail.transport.protocol", "BEAR");
>>
>> -        MailGBean mail = new MailGBean("test:name=mail", null,
>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null);
>> +        BundleContext bundleContext = new
>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>> +        MailGBean mail = new MailGBean("test:name=mail", null,
>> Boolean.TRUE, properties, null, "test", "test", null, null, null, null,
>> bundleContext);
>>         mail.doStart();
>>         Object proxy = mail.$getResource();
>>
>> @@ -91,7 +96,8 @@ public class MailGBeanTest extends TestC
>>         SMTPTransportGBean protocol = new
>> SMTPTransportGBean("test:name=smtp", null, null, null, null, null, null,
>> null, null, null, null, null, null, null, null, null, null, null, null,
>> null, null, null, null, null, null, null);
>>         protocol.doStart();
>>
>> -        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null);
>> +        BundleContext bundleContext = new
>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>> +        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null, bundleContext);
>>         mail.doStart();
>>         Object proxy = mail.$getResource();
>>
>> @@ -120,7 +126,8 @@ public class MailGBeanTest extends TestC
>>         POP3StoreGBean protocol = new POP3StoreGBean("test:name=pop3",
>> null, null, null, null, null, null, null, null, null, null, null, null,
>> null, null);
>>         protocol.doStart();
>>
>> -        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null);
>> +        BundleContext bundleContext = new
>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>> +        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null, bundleContext);
>>         mail.doStart();
>>         Object proxy = mail.$getResource();
>>
>> @@ -146,7 +153,8 @@ public class MailGBeanTest extends TestC
>>         IMAPStoreGBean protocol = new IMAPStoreGBean("test:name=imap",
>> null, null, null, null, null, null, null, null, null, null, null, null,
>> null, null, null, null, null, null, null, null, null, null, null, null,
>> null);
>>         protocol.doStart();
>>
>> -        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null);
>> +        BundleContext bundleContext = new
>> MockBundleContext(getClass().getClassLoader(), "", null, null);
>> +        MailGBean mail = new MailGBean("test:name=mail",
>> Collections.<ProtocolGBean>singleton(protocol), Boolean.TRUE, properties,
>> null, "test", "test", null, null, null, null, bundleContext);
>>         mail.doStart();
>>         Object proxy = mail.$getResource();
>>
>>
>> Modified:
>> geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>> URL:
>> http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml?rev=1083678&r1=1083677&r2=1083678&view=diff
>>
>> ==============================================================================
>> --- geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>> (original)
>> +++ geronimo/server/trunk/plugins/javamail/javamail/src/main/plan/plan.xml
>> Mon Mar 21 05:45:34 2011
>> @@ -23,7 +23,7 @@
>>     <gbean name="mail/MailSession"
>> class="org.apache.geronimo.resource.mail.MailGBean">
>>         <attribute name="transportProtocol">smtp</attribute>
>>       <!--TODO osgi:jndi -->
>> -        <!--<attribute name="jndiName">ger:MailSession</attribute>-->
>> +       <attribute name="jndiName">ger:MailSession</attribute>
>>         <reference name="Protocols"/>
>>     </gbean>
>>
>>
>>
>>
>
>
> --
> Ivan
>



-- 
viola