You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by jc...@apache.org on 2005/04/27 04:08:26 UTC
cvs commit: jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl BuilderFactoryLogic.java
jcarman 2005/04/26 19:08:26
Modified: framework/src/test/org/apache/hivemind TestBeanService.java
BeanService.xml
framework/src/test/hivemind/test/services
TestBuilderFactory.java
framework/src/java/org/apache/hivemind/service/impl
BuilderFactoryLogic.java
Added: framework/src/test/org/apache/hivemind BeanB.java BeanA.java
Log:
Bean services cannot be autowired into other services.
PR: HIVEMIND-108
Revision Changes Path
1.2 +7 -0 jakarta-hivemind/framework/src/test/org/apache/hivemind/TestBeanService.java
Index: TestBeanService.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/test/org/apache/hivemind/TestBeanService.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestBeanService.java 17 Feb 2005 19:46:44 -0000 1.1
+++ TestBeanService.java 27 Apr 2005 02:08:26 -0000 1.2
@@ -65,4 +65,11 @@
{
attempt("bean.PooledReverser");
}
+
+ public void testAutowireBeanServiceProperty() throws Exception
+ {
+ Registry reg = buildFrameworkRegistry("BeanService.xml");
+ BeanA beanA = ( BeanA )reg.getService( BeanA.class );
+ beanA.methodA();
+ }
}
\ No newline at end of file
1.2 +11 -0 jakarta-hivemind/framework/src/test/org/apache/hivemind/BeanService.xml
Index: BeanService.xml
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/test/org/apache/hivemind/BeanService.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BeanService.xml 17 Feb 2005 19:46:44 -0000 1.1
+++ BeanService.xml 27 Apr 2005 02:08:26 -0000 1.2
@@ -37,5 +37,16 @@
<service-point id="PooledReverser" interface="Reverser">
<create-instance class="Reverser" model="pooled"/>
</service-point>
+
+ <service-point id="BeanA" interface="BeanA">
+ <invoke-factory>
+ <construct class="BeanA"/>
+ </invoke-factory>
+ </service-point>
+ <service-point id="BeanB" interface="BeanB">
+ <invoke-factory>
+ <construct class="BeanB"/>
+ </invoke-factory>
+ </service-point>
</module>
\ No newline at end of file
1.1 jakarta-hivemind/framework/src/test/org/apache/hivemind/BeanB.java
Index: BeanB.java
===================================================================
// 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;
/**
* @author James Carman
* @version 1.0
*/
public class BeanB
{
public void methodB()
{
}
}
1.1 jakarta-hivemind/framework/src/test/org/apache/hivemind/BeanA.java
Index: BeanA.java
===================================================================
// 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;
/**
* @author James Carman
* @version 1.0
*/
public class BeanA
{
BeanB beanB;
public void methodA()
{
beanB.methodB();
}
public void setBeanB( BeanB beanB )
{
this.beanB = beanB;
}
}
1.26 +10 -18 jakarta-hivemind/framework/src/test/hivemind/test/services/TestBuilderFactory.java
Index: TestBuilderFactory.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/services/TestBuilderFactory.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- TestBuilderFactory.java 4 Apr 2005 15:20:38 -0000 1.25
+++ TestBuilderFactory.java 27 Apr 2005 02:08:26 -0000 1.26
@@ -24,7 +24,6 @@
import org.apache.hivemind.Messages;
import org.apache.hivemind.Registry;
import org.apache.hivemind.ServiceImplementationFactoryParameters;
-import org.apache.hivemind.impl.DefaultClassResolver;
import org.apache.hivemind.internal.Module;
import org.apache.hivemind.service.impl.BuilderClassResolverFacet;
import org.apache.hivemind.service.impl.BuilderErrorHandlerFacet;
@@ -35,10 +34,7 @@
import org.apache.hivemind.service.impl.BuilderMessagesFacet;
import org.apache.hivemind.service.impl.BuilderParameter;
import org.apache.hivemind.service.impl.BuilderServiceIdFacet;
-import org.apache.hivemind.test.AggregateArgumentsMatcher;
-import org.apache.hivemind.test.ArgumentMatcher;
import org.apache.hivemind.test.HiveMindTestCase;
-import org.apache.hivemind.test.TypeMatcher;
import org.easymock.MockControl;
/**
@@ -397,6 +393,10 @@
StringHolder h = new StringHolderImpl();
+ module.containsService( String.class );
+ mc.setReturnValue( false );
+ module.containsService( StringHolder.class );
+ mc.setReturnValue( true );
module.getService(StringHolder.class);
mc.setReturnValue(h);
@@ -443,20 +443,12 @@
module.resolveType("hivemind.test.services.ServiceAutowireTarget");
mc.setReturnValue(ServiceAutowireTarget.class);
- module.getService(StringHolder.class);
- mc.setThrowable(new ApplicationRuntimeException("Simulated failure."));
-
- module.getErrorHandler();
- mc.setReturnValue(eh);
-
- eh.error(
- log,
- "Unable to autowire property stringHolder of service foo.bar: Simulated failure.",
- null,
- new ApplicationRuntimeException(""));
- ehc.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
- { null, null, null, new TypeMatcher() }));
-
+ module.containsService( String.class );
+ mc.setReturnValue( false );
+ module.containsService( StringHolder.class );
+ mc.setReturnValue( false );
+
+
replayControls();
BuilderParameter parameter = new BuilderParameter();
1.15 +14 -11 jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderFactoryLogic.java
Index: BuilderFactoryLogic.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/service/impl/BuilderFactoryLogic.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- BuilderFactoryLogic.java 14 Mar 2005 22:28:48 -0000 1.14
+++ BuilderFactoryLogic.java 27 Apr 2005 02:08:26 -0000 1.15
@@ -392,26 +392,29 @@
// properties for which there are no service points. This is why autowiring
// can be turned off.
- if (!propertyType.isInterface())
- return;
+ //if (!propertyType.isInterface())
+ // return;
// Here's the problem with autowiring; there can be other stuff besides
// services that are writable; since lots of classes inherite from
// BaseLocatable, Location is one of those property types.
- if (propertyType.equals(Location.class))
- return;
+ //if (propertyType.equals(Location.class))
+ // return;
try
{
- Object collaboratingService = _contributingModule.getService(propertyType);
-
- PropertyUtils.write(service, propertyName, collaboratingService);
-
- if (_log.isDebugEnabled())
- _log.debug("Autowired service property " + propertyName + " to "
+ if( _contributingModule.containsService( propertyType ) )
+ {
+ Object collaboratingService = _contributingModule.getService(propertyType);
+ PropertyUtils.write(service, propertyName, collaboratingService);
+
+ if (_log.isDebugEnabled())
+ {
+ _log.debug("Autowired service property " + propertyName + " to "
+ collaboratingService);
-
+ }
+ }
}
catch (Exception ex)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org