hlship      2004/06/01 07:17:31

  Modified:    library/src/descriptor/META-INF hivemodule.sdl
               library  build.xml
  Added:       library/src/java/org/apache/hivemind/lib/impl
                        SpringBeanParameter.java
                        SpringBeanFactoryHolderImpl.java
                        SpringLookupFactory.java
               library/src/java/org/apache/hivemind/lib
                        SpringBeanFactoryHolder.java
                        SpringBeanFactorySource.java
               library/src/documentation/content/xdocs/hivemind-lib
                        SpringLookupFactory.xml
  Log:
  Add simple Spring framework integration.
  
  Revision  Changes    Path
  1.1                  
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/impl/SpringBeanParameter.java
  
  Index: SpringBeanParameter.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.hivemind.lib.impl;
  
  import org.apache.hivemind.impl.BaseLocatable;
  import org.apache.hivemind.lib.SpringBeanFactorySource;
  
  /**
   * Parameter to [EMAIL PROTECTED] 
org.apache.hivemind.lib.impl.SpringLookupFactory}, 
   * containing a (required) bean name to
   * obtain, and an (optional) bean factory source.
   *
   * @author Howard Lewis Ship
   * @version $Id: SpringBeanParameter.java,v 1.1 2004/06/01 14:17:30 hlship 
Exp $
   */
  public class SpringBeanParameter extends BaseLocatable
  {
      private String _name;
      private SpringBeanFactorySource _beanFactorySource;
  
      public SpringBeanFactorySource getBeanFactorySource()
      {
          return _beanFactorySource;
      }
  
      public String getName()
      {
          return _name;
      }
  
      public void setBeanFactorySource(SpringBeanFactorySource source)
      {
          _beanFactorySource = source;
      }
  
      public void setName(String string)
      {
          _name = string;
      }
  
  }
  
  
  
  1.1                  
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/impl/SpringBeanFactoryHolderImpl.java
  
  Index: SpringBeanFactoryHolderImpl.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.hivemind.lib.impl;
  
  import org.apache.hivemind.impl.BaseLocatable;
  import org.apache.hivemind.lib.SpringBeanFactoryHolder;
  import org.springframework.beans.factory.BeanFactory;
  
  /**
   * Simple holder of a [EMAIL PROTECTED] 
org.springframework.beans.factory.BeanFactory}.
   *
   * @author Howard Lewis Ship
   * @version $Id: SpringBeanFactoryHolderImpl.java,v 1.1 2004/06/01 14:17:30 
hlship Exp $
   */
  public class SpringBeanFactoryHolderImpl extends BaseLocatable implements 
SpringBeanFactoryHolder
  {
      private BeanFactory _factory;
  
      public void setBeanFactory(BeanFactory factory)
      {
          _factory = factory;
      }
  
      public BeanFactory getBeanFactory()
      {
          return _factory;
      }
  
  }
  
  
  
  1.1                  
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/impl/SpringLookupFactory.java
  
  Index: SpringLookupFactory.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.hivemind.lib.impl;
  
  import java.util.List;
  
  import org.apache.hivemind.HiveMind;
  import org.apache.hivemind.ServiceImplementationFactory;
  import org.apache.hivemind.impl.BaseLocatable;
  import org.apache.hivemind.internal.Module;
  import org.apache.hivemind.lib.SpringBeanFactorySource;
  import org.springframework.beans.factory.BeanFactory;
  
  /**
   * Implementation of [EMAIL PROTECTED] 
org.apache.hivemind.ServiceImplementationFactory}
   * that doesn't create beans ... it looks them up inside a Spring 
   * [EMAIL PROTECTED] org.springframework.beans.factory.BeanFactory}.
   *
   * @author Howard Lewis Ship
   * @version $Id: SpringLookupFactory.java,v 1.1 2004/06/01 14:17:30 hlship 
Exp $
   */
  public class SpringLookupFactory extends BaseLocatable implements 
ServiceImplementationFactory
  {
      private String _pointId;
      private SpringBeanFactorySource _defaultBeanFactorySource;
  
      public Object createCoreServiceImplementation(
          String serviceId,
          Class serviceInterface,
          Module invokingModule,
          List parameters)
      {
          HiveMind.checkFactoryParameterCount(_pointId, parameters, 1);
  
          SpringBeanParameter p = (SpringBeanParameter) parameters.get(0);
  
          String beanName = p.getName();
          SpringBeanFactorySource s = p.getBeanFactorySource();
  
          if (s == null)
              s = _defaultBeanFactorySource;
  
          BeanFactory f = s.getBeanFactory();
  
          return f.getBean(beanName, serviceInterface);
      }
  
      public void setDefaultBeanFactorySource(SpringBeanFactorySource source)
      {
          _defaultBeanFactorySource = source;
      }
  
      public void setPointId(String string)
      {
          _pointId = string;
      }
  
  }
  
  
  
  1.1                  
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/SpringBeanFactoryHolder.java
  
  Index: SpringBeanFactoryHolder.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.hivemind.lib;
  
  import org.springframework.beans.factory.BeanFactory;
  
  /**
   * Service which simply holds a bean factory (provided externally).  This
   * is used in the case where HiveMind and Spring are initialized in
   * parallel, and then informed of each other.
   *
   * @author Howard Lewis Ship
   * @version $Id: SpringBeanFactoryHolder.java,v 1.1 2004/06/01 14:17:30 
hlship Exp $
   */
  public interface SpringBeanFactoryHolder extends SpringBeanFactorySource
  {
      public void setBeanFactory(BeanFactory factory);
  }
  
  
  
  1.1                  
jakarta-hivemind/library/src/java/org/apache/hivemind/lib/SpringBeanFactorySource.java
  
  Index: SpringBeanFactorySource.java
  ===================================================================
  //  Copyright 2004 The Apache Software Foundation
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //     http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package org.apache.hivemind.lib;
  
  import org.springframework.beans.factory.BeanFactory;
  
  /**
   * A service which can acts as a source for a 
   * [EMAIL PROTECTED] org.springframework.beans.factory.BeanFactory} (from 
which
   * the different kinds of Spring application contexts derive).
   *
   * @author Howard Lewis Ship
   * @version $Id: SpringBeanFactorySource.java,v 1.1 2004/06/01 14:17:30 
hlship Exp $
   */
  public interface SpringBeanFactorySource
  {
        public BeanFactory getBeanFactory();
  }
  
  
  
  1.5       +55 -1     
jakarta-hivemind/library/src/descriptor/META-INF/hivemodule.sdl
  
  Index: hivemodule.sdl
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/library/src/descriptor/META-INF/hivemodule.sdl,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- hivemodule.sdl    19 May 2004 15:08:47 -0000      1.4
  +++ hivemodule.sdl    1 Jun 2004 14:17:30 -0000       1.5
  @@ -114,4 +114,58 @@
                        }
                }
        }
  +     
  +     service-point (id=SpringLookupFactory 
interface=org.apache.hivemind.ServiceImplementationFactory)
  +     {
  +       description
  +       {
  +         "A service implementation factory that obtains service 
implementations from a "
  +         "Spring BeanFactory."
  +       }
  +       parameters-schema
  +       {
  +         description
  +         {
  +           "Parameters are used to specify the bean name and, optionally, a 
non-default "
  +           "BeanFactory source from which to obtain the Spring BeanFactory."
  +         }
  +         
  +         element (name=lookup-bean)
  +         {
  +           attribute (name=name required=true)
  +           {
  +             description { "The name of the Spring bean to obtain." }
  +           }
  +           
  +           attribute (name=source-service-id translator=service)
  +           {
  +             description { "An optional service implementing the 
SpringBeanFactorySource interface." }
  +           }
  +           
  +           conversion 
(class=org.apache.hivemind.lib.impl.SpringBeanParameter)
  +           {
  +             map (property=beanFactorySource attribute=source-service-id)
  +           }
  +         }
  +       }
  +       
  +       invoke-factory (service-id=hivemind.BuilderFactory)
  +       {
  +         construct (class=org.apache.hivemind.lib.impl.SpringLookupFactory 
service-id-property=pointId)
  +         {
  +           set-service (property=defaultBeanFactorySource 
service-id=DefaultSpringBeanFactoryHolder)
  +         }
  +       }
  +     }
  +     
  +     service-point (id=DefaultSpringBeanFactoryHolder 
interface=org.apache.hivemind.lib.SpringBeanFactoryHolder)
  +     {
  +       description
  +       {
  +         "Default source for Spring BeanFactories.  External code can inject 
a BeanFactory here, where it is "
  +         "available to the SpringLookupFactory service."
  +       }
  +       
  +       create-instance 
(class=org.apache.hivemind.lib.impl.SpringBeanFactoryHolderImpl)
  +     }
   }
  
  
  
  1.5       +3 -2      jakarta-hivemind/library/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-hivemind/library/build.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- build.xml 28 May 2004 16:44:39 -0000      1.4
  +++ build.xml 1 Jun 2004 14:17:30 -0000       1.5
  @@ -26,7 +26,8 @@
        <import file="${common.dir}/clover-report.xml"/>
                
        <target name="compile">
  -             <ibiblio-dependency jar="jboss-j2ee-3.2.1.jar" 
group-id="jboss"/>
  +             <ibiblio-dependency jar="geronimo-spec-ejb-1.0-M1.jar" 
group-id="geronimo-spec"/>
  +             <ibiblio-dependency jar="spring-full-1.0.1.jar" 
group-id="springframework"/>
                
                <ibiblio-dependency jar="commons-logging-1.0.3.jar" 
group-id="commons-logging" use="test"/>
                <ibiblio-dependency jar="javassist-2.6.jar" group-id="jboss" 
use="test"/>
  
  
  
  1.1                  
jakarta-hivemind/library/src/documentation/content/xdocs/hivemind-lib/SpringLookupFactory.xml
  
  Index: SpringLookupFactory.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- $Id: SpringLookupFactory.xml,v 1.1 2004/06/01 14:17:30 hlship Exp $ -->
  <!-- 
     Copyright 2004 The Apache Software Foundation
  
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
        "./dtd/document-v12.dtd" [
        <!ENTITY projectroot '../'>
        <!ENTITY % common-links SYSTEM "../links.ent">
        %common-links;
        ]>
  <document>
        <header>
                <title>hivemind.lib.SpringLookupFactory Service</title>
        </header>
        <body>
                <p>The <link 
href="&hivedoc;/service/hivemind.lib.SpringLookupFactory.html">
                        SpringLookupFactory</link> supports integration with 
the <link
                        href="site:spring">Spring</link> framework, another 
open-source
                        lightweight container. SpringLookupFactory is a service 
constructor that
                        obtains a core service implementation from a Spring 
<code>BeanFactory</code>
                        .</p>
                <p>By default, the <code>BeanFactory</code> is obtained from 
the <link
                        
href="&hivedoc;/service/hivemind.lib.DefaultSpringBeanFactoryHolder.html">
                        DefaultSpringBeanFactoryHolder</link>. Part of your 
application startup
                        code requires that you start a Spring instance and 
inform the <link
                        
href="&apiroot-lib;/SpringBeanFactoryHolder.html#setBeanFactory(org.springframework.beans.factory.BeanFactory)"
                        >DefaultSpringBeanFactoryHolder</link> about it.</p>
                <p>The SpringLookupFactory expects exactly <em>one</em> 
parameter element:</p>
                <source><![CDATA[
    lookup-bean (name=... source-service-id=...)
  ]]> </source>
                <p>The <code>name</code> attribute is the name of the bean to 
look for
                        inside the Spring BeanFactory.</p>
                <p>The optional <code>source-service-id</code> attribute allows 
an alternate
                        service to be used to obtain the BeanFactory. The 
identified service must
                        implement the <link 
href="&apiroot-lib;/SpringBeanFactorySource.html">
                        SpringBeanFactorySource</link> interface.</p>
        </body>
  </document>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to