You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by ah...@apache.org on 2006/07/06 15:00:38 UTC
svn commit: r419543 - in /hivemind/branches/branch-2-0-annot:
framework/src/java/org/apache/hivemind/definition/
framework/src/java/org/apache/hivemind/impl/
framework/src/test/org/apache/hivemind/impl/
xml/src/java/org/apache/hivemind/impl/ xml/src/te...
Author: ahuegen
Date: Thu Jul 6 06:00:37 2006
New Revision: 419543
URL: http://svn.apache.org/viewvc?rev=419543&view=rev
Log:
Fixed and restructured some more unit tests.
Added:
hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestInterceptors.java
hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplMessages.java
hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplStrings.properties
hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java
Modified:
hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/definition/ModuleDefinition.java
hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplMessages.java
hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties
hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureConstructor.java
hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestRegistryInfrastructureConstructor.java
hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServicePoint.java
hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java
Modified: hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/definition/ModuleDefinition.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/definition/ModuleDefinition.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/definition/ModuleDefinition.java (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/definition/ModuleDefinition.java Thu Jul 6 06:00:37 2006
@@ -7,6 +7,7 @@
import org.apache.hivemind.ClassResolver;
import org.apache.hivemind.Location;
+import org.apache.hivemind.util.Defense;
public class ModuleDefinition
{
@@ -28,12 +29,20 @@
{
}
+ /**
+ * @param id
+ * @param location
+ * @param resolver
+ * @param packageName name of the package to search for class names within. If null, it defaults to the id
+ */
public ModuleDefinition(String id, Location location, ClassResolver resolver, String packageName)
{
_id = id;
_location = location;
_classResolver = resolver;
- _packageName = packageName;
+ if (packageName != null)
+ _packageName = packageName;
+ else _packageName = id;
}
public ClassResolver getClassResolver()
@@ -66,6 +75,10 @@
this._id = moduleId;
}
+ /**
+ * Returns the name of the package to search for class names within. By default, the package
+ * name will match the module id, but this can be overridden in the module descriptor.
+ */
public String getPackageName()
{
return _packageName;
Modified: hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplMessages.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplMessages.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplMessages.java (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplMessages.java Thu Jul 6 06:00:37 2006
@@ -354,16 +354,6 @@
return _formatter.format("module", module.getModuleId());
}
- static String unableToResolveSchema(String schemaId)
- {
- return _formatter.format("unable-to-resolve-schema", schemaId);
- }
-
- static String schemaNotVisible(String schemaId, String moduleId)
- {
- return _formatter.format("schema-not-visible", schemaId, moduleId);
- }
-
static String serviceNotVisible(String serviceId, Module module)
{
return _formatter.format("service-not-visible", serviceId, convertModule(module));
Modified: hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/ImplStrings.properties Thu Jul 6 06:00:37 2006
@@ -75,8 +75,6 @@
null-module=the application
module=module {0}
-unable-to-resolve-schema=Unable to resolve reference to schema ''{0}''.
-schema-not-visible=Schema ''{0}'' is not visible to module {1}.
service-not-visible=Service point {0} is not visible to {1}.
configuration-not-visible=Configuration point {0} is not visible to {1}.
Modified: hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureConstructor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureConstructor.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureConstructor.java (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/java/org/apache/hivemind/impl/RegistryInfrastructureConstructor.java Thu Jul 6 06:00:37 2006
@@ -107,7 +107,7 @@
}
}
- public void addModule(ModuleDefinition moduleDefinition)
+ private void addModule(ModuleDefinition moduleDefinition)
{
String id = moduleDefinition.getId();
Added: hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestInterceptors.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestInterceptors.java?rev=419543&view=auto
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestInterceptors.java (added)
+++ hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestInterceptors.java Thu Jul 6 06:00:37 2006
@@ -0,0 +1,121 @@
+// Copyright 2004, 2005 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.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.Location;
+import org.apache.hivemind.internal.Module;
+import org.apache.hivemind.internal.ServiceModel;
+import org.apache.hivemind.internal.ServiceModelFactory;
+import org.apache.hivemind.test.HiveMindTestCase;
+import org.easymock.MockControl;
+
+/**
+ * Test for interceptors.
+ *
+ * @author Howard M. Lewis Ship
+ * @since 1.1
+ */
+public class TestInterceptors extends HiveMindTestCase
+{
+ public void testDefaultInterceptorOrdering()
+ {
+ Location l = newLocation();
+ Module module = newModule();
+
+ replayControls();
+
+ ServicePointImpl sp = new ServicePointImpl();
+ sp.setModule(module);
+ sp.setServiceInterfaceName("foo.bar.Baz");
+ sp.setExtensionPointId("zip.zap");
+ sp.setLocation(l);
+ final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
+ interceptor1.setFactoryServiceId("SomeFactory1");
+ sp.addInterceptorContribution(interceptor1);
+ final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
+ interceptor2.setFactoryServiceId("SomeFactory2");
+ sp.addInterceptorContribution(interceptor2);
+ sp.setExtensionPointId("ExtensionPointId");
+ final List ordered = sp.getOrderedInterceptorContributions();
+ assertNotNull(ordered);
+ assertEquals(2, ordered.size());
+ assertEquals(interceptor1, ordered.get(0));
+ assertEquals(interceptor2, ordered.get(1));
+ verifyControls();
+ }
+
+ public void testCustomInterceptorOrdering()
+ {
+ Location l = newLocation();
+ Module module = newModule();
+
+ replayControls();
+
+ ServicePointImpl sp = new ServicePointImpl();
+ sp.setModule(module);
+ sp.setServiceInterfaceName("foo.bar.Baz");
+ sp.setExtensionPointId("zip.zap");
+ sp.setLocation(l);
+ final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
+ interceptor1.setFactoryServiceId("SomeFactory1");
+ sp.addInterceptorContribution(interceptor1);
+ final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
+ interceptor2.setFactoryServiceId("SomeFactory2");
+ interceptor2.setFollowingInterceptorIds("SomeFactory1");
+ sp.addInterceptorContribution(interceptor2);
+ sp.setExtensionPointId("ExtensionPointId");
+ final List ordered = sp.getOrderedInterceptorContributions();
+ assertNotNull(ordered);
+ assertEquals(2, ordered.size());
+ assertEquals(interceptor2, ordered.get(0));
+ assertEquals(interceptor1, ordered.get(1));
+ verifyControls();
+ }
+
+ public void testInterceptorOrderingByName()
+ {
+ Location l = newLocation();
+ Module module = newModule();
+
+ replayControls();
+
+ ServicePointImpl sp = new ServicePointImpl();
+ sp.setModule(module);
+ sp.setServiceInterfaceName("foo.bar.Baz");
+ sp.setExtensionPointId("zip.zap");
+ sp.setLocation(l);
+ final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
+ interceptor1.setFactoryServiceId("SomeFactory1");
+ interceptor1.setName("Interceptor1");
+ sp.addInterceptorContribution(interceptor1);
+ final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
+ interceptor2.setFactoryServiceId("SomeFactory2");
+ interceptor2.setFollowingInterceptorIds("Interceptor1");
+ sp.addInterceptorContribution(interceptor2);
+ sp.setExtensionPointId("ExtensionPointId");
+ final List ordered = sp.getOrderedInterceptorContributions();
+ assertNotNull(ordered);
+ assertEquals(2, ordered.size());
+ assertEquals(interceptor2, ordered.get(0));
+ assertEquals(interceptor1, ordered.get(1));
+ verifyControls();
+ }
+}
\ No newline at end of file
Modified: hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestRegistryInfrastructureConstructor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestRegistryInfrastructureConstructor.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestRegistryInfrastructureConstructor.java (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestRegistryInfrastructureConstructor.java Thu Jul 6 06:00:37 2006
@@ -14,26 +14,16 @@
package org.apache.hivemind.impl;
-import java.util.List;
-import java.util.Locale;
+import hivemind.test.FrameworkTestCase;
-import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.hivemind.Element;
-import org.apache.hivemind.ErrorHandler;
-import org.apache.hivemind.Location;
+import org.apache.hivemind.definition.ConfigurationPointDefinition;
+import org.apache.hivemind.definition.ModuleDefinition;
+import org.apache.hivemind.definition.RegistryDefinition;
+import org.apache.hivemind.definition.ServicePointDefinition;
import org.apache.hivemind.internal.ConfigurationPoint;
import org.apache.hivemind.internal.RegistryInfrastructure;
-import org.apache.hivemind.internal.Visibility;
-import org.apache.hivemind.parse.ConfigurationPointDescriptor;
-import org.apache.hivemind.parse.ContributionDescriptor;
-import org.apache.hivemind.parse.ModuleDescriptor;
-import org.apache.hivemind.schema.impl.SchemaImpl;
-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;
+import org.apache.hivemind.internal.ServicePoint;
/**
* Tests for {@link RegistryInfrastructureConstructor}.
@@ -41,251 +31,38 @@
* @author Knut Wannheden
* @since 1.1
*/
-public class TestRegistryInfrastructureConstructor extends HiveMindTestCase
+public class TestRegistryInfrastructureConstructor extends FrameworkTestCase
{
public void testFound()
{
- SchemaImpl schema = new SchemaImpl("module");
- schema.setId("Baz");
-
DefaultErrorHandler errorHandler = new DefaultErrorHandler();
- ModuleDescriptor fooBar = new ModuleDescriptor(null, errorHandler);
- fooBar.setModuleId("foo.bar");
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ ModuleDefinition fooBar = createModuleDefinition("foo.bar");
- fooBar.addSchema(schema);
+ ServicePointDefinition spd = createServicePointDefinition("sp1", Runnable.class);
- ModuleDescriptor zipZoop = new ModuleDescriptor(null, errorHandler);
- zipZoop.setModuleId("zip.zoop");
+ fooBar.addServicePoint(spd);
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
- cpd.setId("Zap");
- cpd.setContributionsSchemaId("foo.bar.Baz");
+ ModuleDefinition zipZoop = createModuleDefinition("zip.zoop");
+ ConfigurationPointDefinition cpd = createConfigurationPointDefinition("cp1");
+
zipZoop.addConfigurationPoint(cpd);
+
+ definition.addModule(fooBar);
+ definition.addModule(zipZoop);
RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(errorHandler,
- LogFactory.getLog(TestRegistryInfrastructureConstructor.class), null);
-
- ric.addModuleDescriptor(fooBar);
- ric.addModuleDescriptor(zipZoop);
-
- RegistryInfrastructure registry = ric.constructRegistryInfrastructure(Locale.getDefault());
-
- ConfigurationPoint point = registry.getConfigurationPoint("zip.zoop.Zap", null);
- assertEquals(schema, point.getContributionsSchema());
- }
-
- public void testNotVisible()
- {
- MockControl ehControl = newControl(ErrorHandler.class);
- ErrorHandler eh = (ErrorHandler) ehControl.getMock();
-
- Log log = LogFactory.getLog(TestRegistryInfrastructureConstructor.class);
-
- SchemaImpl schema = new SchemaImpl("module");
- schema.setId("Baz");
- schema.setVisibility(Visibility.PRIVATE);
-
- Location l = newLocation();
-
- eh.error(log, ImplMessages.schemaNotVisible("foo.bar.Baz", "zip.zoop"), l, null);
-
- replayControls();
-
- ModuleDescriptor fooBar = new ModuleDescriptor(null, eh);
- fooBar.setModuleId("foo.bar");
-
- fooBar.addSchema(schema);
-
- ModuleDescriptor zipZoop = new ModuleDescriptor(null, eh);
- zipZoop.setModuleId("zip.zoop");
-
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
- cpd.setId("Zap");
- cpd.setContributionsSchemaId("foo.bar.Baz");
- cpd.setLocation(l);
-
- zipZoop.addConfigurationPoint(cpd);
-
- RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(eh, log, null);
-
- ric.addModuleDescriptor(fooBar);
- ric.addModuleDescriptor(zipZoop);
-
- ric.constructRegistryInfrastructure(Locale.getDefault());
-
- verifyControls();
- }
-
- public void testNotFound()
- {
- MockControl ehControl = newControl(ErrorHandler.class);
- ErrorHandler eh = (ErrorHandler) ehControl.getMock();
-
- Log log = LogFactory.getLog(TestRegistryInfrastructureConstructor.class);
-
- Location l = newLocation();
-
- eh.error(log, ImplMessages.unableToResolveSchema("foo.bar.Baz"), l, null);
-
- replayControls();
-
- ModuleDescriptor zipZoop = new ModuleDescriptor(null, eh);
- zipZoop.setModuleId("zip.zoop");
-
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
- cpd.setId("Zap");
- cpd.setContributionsSchemaId("foo.bar.Baz");
- cpd.setLocation(l);
-
- zipZoop.addConfigurationPoint(cpd);
-
- RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(eh, log, null);
-
- ric.addModuleDescriptor(zipZoop);
-
- ric.constructRegistryInfrastructure(Locale.getDefault());
-
- verifyControls();
- }
-
- private Element newElement(String name)
- {
- ElementImpl e = new ElementImpl();
-
- e.setElementName(name);
-
- return e;
- }
-
- public void testConditionalExpressionTrue()
- {
- MockControl ehControl = newControl(ErrorHandler.class);
- ErrorHandler eh = (ErrorHandler) ehControl.getMock();
-
- Log log = LogFactory.getLog(TestRegistryInfrastructureConstructor.class);
-
- replayControls();
-
- ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), eh);
- md.setModuleId("zip.zoop");
-
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
-
- cpd.setId("Fred");
-
- md.addConfigurationPoint(cpd);
-
- ContributionDescriptor cd = new ContributionDescriptor();
- cd.setConfigurationId("Fred");
- cd.setConditionalExpression("class " + Location.class.getName());
-
- cd.addElement(newElement("foo"));
-
- md.addContribution(cd);
-
- RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(eh, log, null);
-
- ric.addModuleDescriptor(md);
-
- RegistryInfrastructure ri = ric.constructRegistryInfrastructure(Locale.getDefault());
-
- List l = ri.getConfiguration("zip.zoop.Fred", null);
-
- Element e = (Element) l.get(0);
-
- assertEquals("foo", e.getElementName());
-
- verifyControls();
- }
-
- public void testConditionalExpressionFalse()
- {
- MockControl ehControl = newControl(ErrorHandler.class);
- ErrorHandler eh = (ErrorHandler) ehControl.getMock();
-
- Log log = LogFactory.getLog(TestRegistryInfrastructureConstructor.class);
-
- replayControls();
-
- ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), eh);
- md.setModuleId("zip.zoop");
-
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
-
- cpd.setId("Fred");
-
- md.addConfigurationPoint(cpd);
-
- ContributionDescriptor cd = new ContributionDescriptor();
- cd.setConfigurationId("Fred");
- cd.setConditionalExpression("class foo.bar.Baz");
-
- cd.addElement(newElement("bar"));
-
- md.addContribution(cd);
-
- RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(eh, log, null);
-
- ric.addModuleDescriptor(md);
-
- RegistryInfrastructure ri = ric.constructRegistryInfrastructure(Locale.getDefault());
-
- List l = ri.getConfiguration("zip.zoop.Fred", null);
-
- assertTrue(l.isEmpty());
-
- verifyControls();
- }
-
- public void testConditionalExpressionError()
- {
- MockControl ehControl = newControl(ErrorHandler.class);
- ErrorHandler eh = (ErrorHandler) ehControl.getMock();
-
- Log log = LogFactory.getLog(TestRegistryInfrastructureConstructor.class);
-
- Location location = newLocation();
-
- eh.error(
- log,
- "Unexpected token <AND> in expression 'and class foo'.",
- location,
- new RuntimeException());
- ehControl.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
- { null, null, null, new TypeMatcher() }));
-
- replayControls();
-
- ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), eh);
- md.setModuleId("zip.zoop");
-
- ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
-
- cpd.setId("Fred");
-
- md.addConfigurationPoint(cpd);
-
- ContributionDescriptor cd = new ContributionDescriptor();
- cd.setConfigurationId("Fred");
- cd.setConditionalExpression("and class foo");
- cd.setLocation(location);
-
- cd.addElement(newElement("bar"));
-
- md.addContribution(cd);
-
- RegistryInfrastructureConstructor ric = new RegistryInfrastructureConstructor(eh, log, null);
-
- ric.addModuleDescriptor(md);
-
- RegistryInfrastructure ri = ric.constructRegistryInfrastructure(Locale.getDefault());
+ LogFactory.getLog(TestXmlModuleDescriptorProcessor.class), null);
- List l = ri.getConfiguration("zip.zoop.Fred", null);
+ RegistryInfrastructure registryInfrastructure = ric.constructRegistryInfrastructure(definition);
- assertTrue(l.isEmpty());
+ ServicePoint sp = registryInfrastructure.getServicePoint("foo.bar.sp1", null);
+ assertNotNull(sp);
- verifyControls();
+ ConfigurationPoint cp = registryInfrastructure.getConfigurationPoint("zip.zoop.cp1", null);
+ assertNotNull(cp);
}
}
Modified: hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServicePoint.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServicePoint.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServicePoint.java (original)
+++ hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServicePoint.java Thu Jul 6 06:00:37 2006
@@ -75,90 +75,6 @@
verifyControls();
}
- public void testDefaultInterceptorOrdering()
- {
- Location l = newLocation();
- Module module = newModule();
-
- replayControls();
-
- ServicePointImpl sp = new ServicePointImpl();
- sp.setModule(module);
- sp.setServiceInterfaceName("foo.bar.Baz");
- sp.setExtensionPointId("zip.zap");
- sp.setLocation(l);
- final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
- interceptor1.setFactoryServiceId("SomeFactory1");
- sp.addInterceptorContribution(interceptor1);
- final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
- interceptor2.setFactoryServiceId("SomeFactory2");
- sp.addInterceptorContribution(interceptor2);
- sp.setExtensionPointId("ExtensionPointId");
- final List ordered = sp.getOrderedInterceptorContributions();
- assertNotNull(ordered);
- assertEquals(2, ordered.size());
- assertEquals(interceptor1, ordered.get(0));
- assertEquals(interceptor2, ordered.get(1));
- verifyControls();
- }
-
- public void testCustomInterceptorOrdering()
- {
- Location l = newLocation();
- Module module = newModule();
-
- replayControls();
-
- ServicePointImpl sp = new ServicePointImpl();
- sp.setModule(module);
- sp.setServiceInterfaceName("foo.bar.Baz");
- sp.setExtensionPointId("zip.zap");
- sp.setLocation(l);
- final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
- interceptor1.setFactoryServiceId("SomeFactory1");
- sp.addInterceptorContribution(interceptor1);
- final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
- interceptor2.setFactoryServiceId("SomeFactory2");
- interceptor2.setFollowingInterceptorIds("SomeFactory1");
- sp.addInterceptorContribution(interceptor2);
- sp.setExtensionPointId("ExtensionPointId");
- final List ordered = sp.getOrderedInterceptorContributions();
- assertNotNull(ordered);
- assertEquals(2, ordered.size());
- assertEquals(interceptor2, ordered.get(0));
- assertEquals(interceptor1, ordered.get(1));
- verifyControls();
- }
-
- public void testInterceptorOrderingByName()
- {
- Location l = newLocation();
- Module module = newModule();
-
- replayControls();
-
- ServicePointImpl sp = new ServicePointImpl();
- sp.setModule(module);
- sp.setServiceInterfaceName("foo.bar.Baz");
- sp.setExtensionPointId("zip.zap");
- sp.setLocation(l);
- final ServiceInterceptorContributionImpl interceptor1 = new ServiceInterceptorContributionImpl();
- interceptor1.setFactoryServiceId("SomeFactory1");
- interceptor1.setName("Interceptor1");
- sp.addInterceptorContribution(interceptor1);
- final ServiceInterceptorContributionImpl interceptor2 = new ServiceInterceptorContributionImpl();
- interceptor2.setFactoryServiceId("SomeFactory2");
- interceptor2.setFollowingInterceptorIds("Interceptor1");
- sp.addInterceptorContribution(interceptor2);
- sp.setExtensionPointId("ExtensionPointId");
- final List ordered = sp.getOrderedInterceptorContributions();
- assertNotNull(ordered);
- assertEquals(2, ordered.size());
- assertEquals(interceptor2, ordered.get(0));
- assertEquals(interceptor1, ordered.get(1));
- verifyControls();
- }
-
public void testResultNotAssignableToServiceInterface()
{
Location l = newLocation();
Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplMessages.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplMessages.java?rev=419543&view=auto
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplMessages.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplMessages.java Thu Jul 6 06:00:37 2006
@@ -0,0 +1,39 @@
+// Copyright 2004, 2005 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.impl;
+
+
+/**
+ * Used to format messages used in errors and log output for classes within the impl package.
+ *
+ * @author Howard Lewis Ship
+ */
+class XmlImplMessages
+{
+ private static final MessageFormatter _formatter = new MessageFormatter(ImplMessages.class,
+ "XmlImplStrings");
+
+
+ static String unableToResolveSchema(String schemaId)
+ {
+ return _formatter.format("unable-to-resolve-schema", schemaId);
+ }
+
+ static String schemaNotVisible(String schemaId, String moduleId)
+ {
+ return _formatter.format("schema-not-visible", schemaId, moduleId);
+ }
+
+}
\ No newline at end of file
Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplStrings.properties
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplStrings.properties?rev=419543&view=auto
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplStrings.properties (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlImplStrings.properties Thu Jul 6 06:00:37 2006
@@ -0,0 +1,16 @@
+# Copyright 2004, 2005 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.
+
+unable-to-resolve-schema=Unable to resolve reference to schema ''{0}''.
+schema-not-visible=Schema ''{0}'' is not visible to module {1}.
Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java?rev=419543&r1=419542&r2=419543&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlModuleDescriptorProcessor.java Thu Jul 6 06:00:37 2006
@@ -8,7 +8,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.hivemind.ApplicationRuntimeException;
import org.apache.hivemind.ErrorHandler;
import org.apache.hivemind.Location;
import org.apache.hivemind.conditional.EvaluationContextImpl;
@@ -343,8 +342,7 @@
Schema schema = findSchema(sourceModule, cpd.getContributionsSchemaId(), cpd.getLocation());
if (schema == null) {
- // TODO annotations: Exceptionhandling, errorHandler benutzen
- throw new ApplicationRuntimeException("Schema could not be resolved");
+ // Error-Handling has been done in findSchema already
} else {
xmlNature.setSchema(schema);
XmlConfigurationConstructor constructor = (XmlConfigurationConstructor) point.getConstructor();
@@ -373,8 +371,7 @@
// Store the schema in the nature
Schema schema = findSchema(sourceModule, spd.getParametersSchemaId(), spd.getLocation());
if (schema == null) {
- // TODO annotations: Exceptionhandling, errorHandler benutzen
- throw new ApplicationRuntimeException("Schema could not be resolved");
+ // Error-Handling has been done in findSchema already
} else {
xmlNature.setParametersSchema(schema);
xmlNature.setParametersCount(spd.getParametersCount());
@@ -395,25 +392,24 @@
}
/**
- * Schemas are held locally. Todo: Move to XMLRegistryNature
* @param schemaId
* @param referencingModule
- * @param reference
- * @return
+ * @param location
+ * @return
*/
- private Schema getSchema(String schemaId, String referencingModule, Location reference)
+ private Schema getSchema(String schemaId, String referencingModule, Location location)
{
Schema schema = (Schema) getXmlRegistryNature().getSchema(schemaId);
if (schema == null)
_errorHandler
- .error(_log, ImplMessages.unableToResolveSchema(schemaId), reference, null);
+ .error(_log, XmlImplMessages.unableToResolveSchema(schemaId), location, null);
else if (!schema.visibleToModule(referencingModule))
{
_errorHandler.error(
_log,
- ImplMessages.schemaNotVisible(schemaId, referencingModule),
- reference,
+ XmlImplMessages.schemaNotVisible(schemaId, referencingModule),
+ location,
null);
schema = null;
}
Added: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java?rev=419543&view=auto
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java Thu Jul 6 06:00:37 2006
@@ -0,0 +1,305 @@
+// Copyright 2004, 2005 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.impl;
+
+import hivemind.test.FrameworkTestCase;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hivemind.Element;
+import org.apache.hivemind.ErrorHandler;
+import org.apache.hivemind.Location;
+import org.apache.hivemind.definition.ConfigurationPointDefinition;
+import org.apache.hivemind.definition.RegistryDefinition;
+import org.apache.hivemind.impl.natures.XmlConfigurationPointNature;
+import org.apache.hivemind.internal.Visibility;
+import org.apache.hivemind.parse.ConfigurationPointDescriptor;
+import org.apache.hivemind.parse.ContributionDescriptor;
+import org.apache.hivemind.parse.ModuleDescriptor;
+import org.apache.hivemind.schema.impl.SchemaImpl;
+import org.apache.hivemind.test.AggregateArgumentsMatcher;
+import org.apache.hivemind.test.ArgumentMatcher;
+import org.apache.hivemind.test.TypeMatcher;
+import org.easymock.MockControl;
+
+/**
+ * Tests for {@link XmlModuleDescriptorProcessor}.
+ *
+ * @author Knut Wannheden
+ * @since 1.1
+ */
+public class TestXmlModuleDescriptorProcessor extends FrameworkTestCase
+{
+ /**
+ * Tests if a schema referenced by id from a configuration point is resolved correctly, if it is
+ * defined in another module.
+ */
+ public void testSchemaResolving()
+ {
+ SchemaImpl schema = new SchemaImpl("module");
+ schema.setId("Baz");
+
+ DefaultErrorHandler errorHandler = new DefaultErrorHandler();
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ ModuleDescriptor fooBar = new ModuleDescriptor(null, errorHandler);
+ fooBar.setModuleId("foo.bar");
+
+ fooBar.addSchema(schema);
+
+ ModuleDescriptor zipZoop = new ModuleDescriptor(null, errorHandler);
+ zipZoop.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+ cpd.setId("Zap");
+ cpd.setContributionsSchemaId("foo.bar.Baz");
+
+ zipZoop.addConfigurationPoint(cpd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
+ errorHandler);
+ processor.processModuleDescriptor(fooBar);
+ processor.processModuleDescriptor(zipZoop);
+ processor.resolveSchemas();
+
+ ConfigurationPointDefinition point = definition.getConfigurationPoint("zip.zoop.Zap");
+ XmlConfigurationPointNature xmlNature = (XmlConfigurationPointNature) point
+ .getNature(XmlConfigurationPointNature.class);
+ assertNotNull(xmlNature);
+ assertEquals(schema, xmlNature.getSchema());
+ }
+
+ /**
+ * Tests if a schema referenced by id from a configuration point is not visible, if it is
+ * defined as private in another module.
+ */
+ public void testSchemaNotVisible()
+ {
+ MockControl ehControl = newControl(ErrorHandler.class);
+ ErrorHandler errorHandler = (ErrorHandler) ehControl.getMock();
+
+ Log log = LogFactory.getLog(XmlModuleDescriptorProcessor.class);
+
+ SchemaImpl schema = new SchemaImpl("foo.bar");
+ schema.setId("Baz");
+ schema.setVisibility(Visibility.PRIVATE);
+
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ Location l = newLocation();
+
+ errorHandler.error(
+ log,
+ XmlImplMessages.schemaNotVisible("foo.bar.Baz", "zip.zoop"),
+ l,
+ null);
+
+ replayControls();
+
+ ModuleDescriptor fooBar = new ModuleDescriptor(null, errorHandler);
+ fooBar.setModuleId("foo.bar");
+
+ fooBar.addSchema(schema);
+
+ ModuleDescriptor zipZoop = new ModuleDescriptor(null, errorHandler);
+ zipZoop.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+ cpd.setId("Zap");
+ cpd.setContributionsSchemaId("foo.bar.Baz");
+ cpd.setLocation(l);
+
+ zipZoop.addConfigurationPoint(cpd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
+ errorHandler);
+ processor.processModuleDescriptor(fooBar);
+ processor.processModuleDescriptor(zipZoop);
+ processor.resolveSchemas();
+
+ verifyControls();
+ }
+
+ public void testSchemaNotFound()
+ {
+ ErrorHandler errorHandler = new DefaultErrorHandler();
+
+ Log log = LogFactory.getLog(XmlModuleDescriptorProcessor.class);
+
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ Location l = newLocation();
+
+ errorHandler.error(log, XmlImplMessages.unableToResolveSchema("foo.bar.Baz"), l, null);
+
+ replayControls();
+
+ ModuleDescriptor zipZoop = new ModuleDescriptor(null, errorHandler);
+ zipZoop.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+ cpd.setId("Zap");
+ cpd.setContributionsSchemaId("foo.bar.Baz");
+ cpd.setLocation(l);
+
+ zipZoop.addConfigurationPoint(cpd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
+ errorHandler);
+ processor.processModuleDescriptor(zipZoop);
+ processor.resolveSchemas();
+
+ verifyControls();
+ }
+
+ private Element newElement(String name)
+ {
+ ElementImpl e = new ElementImpl();
+
+ e.setElementName(name);
+
+ return e;
+ }
+
+ public void testContributionConditionalExpressionTrue()
+ {
+ ErrorHandler errorHandler = new DefaultErrorHandler();
+
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ replayControls();
+
+ ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), errorHandler);
+ md.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+
+ cpd.setId("Fred");
+
+ md.addConfigurationPoint(cpd);
+
+ ContributionDescriptor cd = new ContributionDescriptor();
+ cd.setConfigurationId("Fred");
+ cd.setConditionalExpression("class " + Location.class.getName());
+
+ cd.addElement(newElement("foo"));
+
+ md.addContribution(cd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
+ errorHandler);
+ processor.processModuleDescriptor(md);
+
+ definition.resolveExtensions();
+
+ ConfigurationPointDefinition configurationPoint = definition
+ .getConfigurationPoint("zip.zoop.Fred");
+
+ assertTrue(configurationPoint.getContributions().size() > 0);
+
+ verifyControls();
+ }
+
+ public void testConditionalExpressionFalse()
+ {
+ ErrorHandler errorHandler = new DefaultErrorHandler();
+
+ RegistryDefinition definition = new RegistryDefinition(errorHandler);
+
+ replayControls();
+
+ ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), errorHandler);
+ md.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+
+ cpd.setId("Fred");
+
+ md.addConfigurationPoint(cpd);
+
+ ContributionDescriptor cd = new ContributionDescriptor();
+ cd.setConfigurationId("Fred");
+ cd.setConditionalExpression("class foo.bar.Baz");
+
+ cd.addElement(newElement("foo"));
+
+ md.addContribution(cd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
+ errorHandler);
+ processor.processModuleDescriptor(md);
+
+ definition.resolveExtensions();
+
+ ConfigurationPointDefinition configurationPoint = definition
+ .getConfigurationPoint("zip.zoop.Fred");
+
+ assertTrue(configurationPoint.getContributions().isEmpty());
+
+ verifyControls();
+ }
+
+ public void testConditionalExpressionError()
+ {
+ MockControl ehControl = newControl(ErrorHandler.class);
+ ErrorHandler eh = (ErrorHandler) ehControl.getMock();
+
+ RegistryDefinition definition = new RegistryDefinition(eh);
+
+ Log log = LogFactory.getLog(XmlModuleDescriptorProcessor.class);
+
+ Location location = newLocation();
+
+ eh.error(
+ log,
+ "Unexpected token <AND> in expression 'and class foo'.",
+ location,
+ new RuntimeException());
+ ehControl.setMatcher(new AggregateArgumentsMatcher(new ArgumentMatcher[]
+ { null, null, null, new TypeMatcher() }));
+
+ replayControls();
+
+ ModuleDescriptor md = new ModuleDescriptor(getClassResolver(), eh);
+ md.setModuleId("zip.zoop");
+
+ ConfigurationPointDescriptor cpd = new ConfigurationPointDescriptor();
+
+ cpd.setId("Fred");
+
+ md.addConfigurationPoint(cpd);
+
+ ContributionDescriptor cd = new ContributionDescriptor();
+ cd.setConfigurationId("Fred");
+ cd.setConditionalExpression("and class foo");
+ cd.setLocation(location);
+
+ cd.addElement(newElement("bar"));
+
+ md.addContribution(cd);
+
+ XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition, eh);
+ processor.processModuleDescriptor(md);
+
+ definition.resolveExtensions();
+
+ ConfigurationPointDefinition configurationPoint = definition
+ .getConfigurationPoint("zip.zoop.Fred");
+
+ assertTrue(configurationPoint.getContributions().isEmpty());
+
+ verifyControls();
+ }
+}
\ No newline at end of file