You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by hl...@apache.org on 2004/06/01 16:17:31 UTC
cvs commit: jakarta-hivemind/library/src/documentation/content/xdocs/hivemind-lib SpringLookupFactory.xml
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 {@link 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 {@link 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 {@link org.apache.hivemind.ServiceImplementationFactory}
* that doesn't create beans ... it looks them up inside a Spring
* {@link 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
* {@link 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: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org