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 <xhh...@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 <viol...@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

Reply via email to