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/08/13 00:00:22 UTC

svn commit: r431096 [2/2] - in /hivemind/branches/branch-2-0-annot: ./ examples/ framework/ framework/src/java/org/apache/hivemind/definition/ framework/src/java/org/apache/hivemind/impl/ framework/src/java/org/apache/hivemind/internal/ framework/src/j...

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ContributionImpl.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ContributionImpl.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ContributionImpl.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ContributionImpl.java Sat Aug 12 15:00:19 2006
@@ -72,7 +72,7 @@
         XmlConfigurationPointNature xmlNature = (XmlConfigurationPointNature) configurationPoint.getNature(XmlConfigurationPointNature.class);
         if (xmlNature == null) {
             // TODO:
-            throw new ApplicationRuntimeException("ConfigurationPoint has no xml nature");
+            throw new ApplicationRuntimeException("Configuration point has no associated xml schema. You can define one with a schema element that uses the configuration-id attribute");
         }
         
         Module contributingModule = configurationPoint.getModule().getModule(_contributingModuleId);

Copied: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml (from r431063, hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/ServiceModelThreading.xml)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml?p2=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml&p1=hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/ServiceModelThreading.xml&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
    (empty)

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/ServiceModelThreading.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java (from r431063, hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServiceModelThreading.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java?p2=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java&p1=hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServiceModelThreading.java&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/framework/src/test/org/apache/hivemind/impl/TestServiceModelThreading.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java Sat Aug 12 15:00:19 2006
@@ -15,15 +15,16 @@
 package org.apache.hivemind.impl;
 
 import org.apache.hivemind.Registry;
-import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests to verify that the service models work properly even under high-thread count concurrent
  * stress.
+ * TODO: move to framework module when autowiring is available there
  * 
  * @author Howard Lewis Ship
  */
-public class TestServiceModelThreading extends HiveMindTestCase
+public class TestServiceModelThreading extends XmlTestCase
 {
     public static final int THREAD_COUNT = 150;
 

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.3

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/TestServiceModelThreading.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

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=431096&r1=431095&r2=431096&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 Sat Aug 12 15:00:19 2006
@@ -8,6 +8,7 @@
 
 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;
@@ -311,7 +312,7 @@
     }
 
     /**
-     * Resolves schema references via id from contributions and services.
+     * Resolves schema references via id from configuration points and services.
      * All added module descriptors are processed.
      */
     public void resolveSchemas()
@@ -322,6 +323,7 @@
 
             resolveConfigurationPointSchemas(md);
             resolveServicePointSchemas(md);
+            resolveSubsequentSchemaAssociations(md);
         }
     }
 
@@ -346,6 +348,7 @@
                 if (schema == null) {
                     // Error-Handling has been done in findSchema already
                 } else {
+                    // TODO: check if schema has already been set (by resolveSubsequentSchemaAssociations)
                     xmlNature.setSchema(schema);
                     XmlConfigurationConstructor constructor = (XmlConfigurationConstructor) point.getConstructor();
                     // store the root-element-classname in the constructor
@@ -378,6 +381,40 @@
                     xmlNature.setParametersSchema(schema);
                     xmlNature.setParametersCount(spd.getParametersCount());
                 }
+            }
+        }
+    }
+    
+    /**
+     * Adds schemas to configuration points for schemas that were associated
+     * with the configuration point subsequently by use of the "configuration-id" attribute.
+     * This is used if the original configuration point was defined in a non-xml module.
+     */
+    private void resolveSubsequentSchemaAssociations(ModuleDescriptor md)
+    {
+        Collection schemas = md.getSchemas();
+        for (Iterator iterPoints = schemas.iterator(); iterPoints.hasNext();)
+        {
+            Schema schema = (Schema) iterPoints.next();
+
+            if (schema.getConfigurationId() != null) {
+                ConfigurationPointDefinition cpd = _registryDefinition.getConfigurationPoint(schema.getConfigurationId());
+                if (cpd == null) {
+                    // TODO annotations: Exception handling
+                    throw new ApplicationRuntimeException("Unknown configuration point");
+                }
+                
+                XmlConfigurationPointNature xmlNature = (XmlConfigurationPointNature) cpd.getNature(XmlConfigurationPointNature.class);
+                // Add the xml nature if not already there. This can happen if configuration 
+                // point wasn't defined in a xml module
+                if (xmlNature == null) {
+                    xmlNature = new XmlConfigurationPointNature();
+                    cpd.addNature(XmlConfigurationPointNature.class, xmlNature);
+                }
+
+                // TODO: check if schema has already been set
+                // TODO: more type related error handling, check root type of schema
+                xmlNature.setSchema(schema);
             }
         }
     }

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.java Sat Aug 12 15:00:19 2006
@@ -1069,6 +1069,8 @@
         if (visibility != null)
             schema.setVisibility(visibility);
         
+        schema.setConfigurationId(getAttribute("configuration-id"));
+        
         processRootElementClassName(schema);
 
         _moduleDescriptor.addSchema(schema);

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/parse/DescriptorParser.properties Sat Aug 12 15:00:19 2006
@@ -74,6 +74,7 @@
 required.schema.root-element-class=false
 required.schema{embedded}.root-element-class=false
 required.parameters-schema.root-element-class=false
+required.schema.configuration-id=false
 
 
 required.set-module.property=true

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/Schema.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/Schema.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/Schema.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/Schema.java Sat Aug 12 15:00:19 2006
@@ -66,4 +66,7 @@
     public String getDefiningModuleId();
     
     public String getRootElementClassName();
+    
+    public String getConfigurationId();
+
 }

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/impl/SchemaImpl.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/impl/SchemaImpl.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/impl/SchemaImpl.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/impl/SchemaImpl.java Sat Aug 12 15:00:19 2006
@@ -44,6 +44,16 @@
     private String _id;
     
     private String _rootElementClassName;
+    
+    /** 
+     * The id of the configuration point the schema should be associated with.
+     * Needed for subsequent schema definitions in the xml module for configuration
+     * points that are already defined in the core framework which knows nothing
+     * about xml and schemas.
+     * 
+     * @since 2.0 
+     */
+    private String _configurationId;
 
     public SchemaImpl(String moduleId)
     {
@@ -130,5 +140,15 @@
     public void setRootElementClassName(String rootElementClassName)
     {
         _rootElementClassName = rootElementClassName;
+    }
+
+    public String getConfigurationId()
+    {
+        return _configurationId;
+    }
+
+    public void setConfigurationId(String configurationId)
+    {
+        _configurationId = configurationId;
     }
 }

Modified: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/RulesMessages.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/RulesMessages.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/RulesMessages.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/RulesMessages.java Sat Aug 12 15:00:19 2006
@@ -26,12 +26,12 @@
  * 
  * @author Howard Lewis Ship
  */
-class RulesMessages
+public class RulesMessages
 {
 
     protected static MessageFormatter _formatter = new MessageFormatter(RulesMessages.class);
 
-    static String unableToSetElementProperty(String propertyName, Object target,
+    public static String unableToSetElementProperty(String propertyName, Object target,
             SchemaProcessor processor, Element element, Throwable cause)
     {
         return _formatter.format("unable-to-set-element-property", new Object[]
@@ -39,107 +39,107 @@
                 cause });
     }
 
-    static String unableToSetProperty(String propertyName, Object target, Throwable cause)
+    public static String unableToSetProperty(String propertyName, Object target, Throwable cause)
     {
         return _formatter.format("unable-to-set-property", propertyName, target, cause);
     }
 
-    static String invalidBooleanValue(String inputValue)
+    public static String invalidBooleanValue(String inputValue)
     {
         return _formatter.format("invalid-boolean-value", inputValue);
     }
 
-    static String invalidDoubleValue(String inputValue)
+    public static String invalidDoubleValue(String inputValue)
     {
         return _formatter.format("invalid-double-value", inputValue);
     }
 
-    static String minDoubleValue(String inputValue, double minValue)
+    public static String minDoubleValue(String inputValue, double minValue)
     {
         return _formatter.format("min-double-value", inputValue, new Double(minValue));
     }
 
-    static String maxDoubleValue(String inputValue, double maxValue)
+    public static String maxDoubleValue(String inputValue, double maxValue)
     {
         return _formatter.format("max-double-value", inputValue, new Double(maxValue));
     }
 
-    static String enumNotRecognized(String inputValue)
+    public static String enumNotRecognized(String inputValue)
     {
         return _formatter.format("enum-not-recognized", inputValue);
     }
 
-    static String enumError(Class enumClass, String fieldName, Throwable cause)
+    public static String enumError(Class enumClass, String fieldName, Throwable cause)
     {
         return _formatter.format("enum-error", enumClass.getName(), fieldName, cause);
     }
 
-    static String invalidIntValue(String inputValue)
+    public static String invalidIntValue(String inputValue)
     {
         return _formatter.format("invalid-int-value", inputValue);
     }
 
-    static String minIntValue(String inputValue, int minValue)
+    public static String minIntValue(String inputValue, int minValue)
     {
         return _formatter.format("min-int-value", inputValue, new Integer(minValue));
     }
 
-    static String maxIntValue(String inputValue, int maxValue)
+    public static String maxIntValue(String inputValue, int maxValue)
     {
         return _formatter.format("max-int-value", inputValue, new Integer(maxValue));
     }
 
-    static String errorInvokingMethod(String methodName, Object parent, Location location,
+    public static String errorInvokingMethod(String methodName, Object parent, Location location,
             Throwable cause)
     {
         return _formatter.format("error-invoking-method", new Object[]
         { methodName, parent, location, cause });
     }
 
-    static String invalidLongValue(String inputValue)
+    public static String invalidLongValue(String inputValue)
     {
         return _formatter.format("invalid-long-value", inputValue);
     }
 
-    static String minLongValue(String inputValue, long minValue)
+    public static String minLongValue(String inputValue, long minValue)
     {
         return _formatter.format("min-long-value", inputValue, new Long(minValue));
     }
 
-    static String maxLongValue(String inputValue, long maxValue)
+    public static String maxLongValue(String inputValue, long maxValue)
     {
         return _formatter.format("max-long-value", inputValue, new Long(maxValue));
     }
 
-    static String readAttributeFailure(String attributeName, Element element,
+    public static String readAttributeFailure(String attributeName, Element element,
             SchemaProcessor processor, Throwable cause)
     {
         return _formatter.format("read-attribute-failure", new Object[]
         { attributeName, processor.getElementPath(), cause });
     }
 
-    static String readContentFailure(SchemaProcessor processor, Element element, Throwable cause)
+    public static String readContentFailure(SchemaProcessor processor, Element element, Throwable cause)
     {
         return _formatter.format("read-content-failure", processor.getElementPath(), cause);
     }
 
-    static String resourceLocalizationError(String inputValue, Module contributingModule)
+    public static String resourceLocalizationError(String inputValue, Module contributingModule)
     {
         return _formatter.format("resource-localization-error", inputValue, contributingModule
                 .getModuleId());
     }
 
-    static String invalidInitializer(String initializer)
+    public static String invalidInitializer(String initializer)
     {
         return _formatter.format("invalid-initializer", initializer);
     }
 
-    static String noPropertyEditor(Class propertyType)
+    public static String noPropertyEditor(Class propertyType)
     {
         return _formatter.format("no-property-editor", propertyType.getName());
     }
 
-    static String smartTranslatorError(String inputValue, Class propertyType, Throwable cause)
+    public static String smartTranslatorError(String inputValue, Class propertyType, Throwable cause)
     {
         return _formatter.format(
                 "smart-translator-error",

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestConversion.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestConversion.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestConversion.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestConversion.java Sat Aug 12 15:00:19 2006
@@ -20,6 +20,7 @@
 
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.ServiceImplementationFactory;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests for the <conversion> and <map> elements
@@ -29,7 +30,7 @@
  *
  * @author Howard Lewis Ship
  */
-public class TestConversion extends FrameworkTestCase
+public class TestConversion extends XmlTestCase
 {
     public void testBasics() throws Exception
     {

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestUniqueElementAttribute.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestUniqueElementAttribute.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestUniqueElementAttribute.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/config/TestUniqueElementAttribute.java Sat Aug 12 15:00:19 2006
@@ -17,12 +17,13 @@
 import hivemind.test.FrameworkTestCase;
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.xml.XmlTestCase;
 
 import java.util.List;
 
 /** Test for checking the uniqueness of element attributes.
  */
-public class TestUniqueElementAttribute extends FrameworkTestCase
+public class TestUniqueElementAttribute extends XmlTestCase
 {
     /**
      * Test with unique="true"

Copied: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml (from r431063, hivemind/branches/branch-2-0-annot/framework/src/test/hivemind/test/services/ServiceTranslator.xml)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml?p2=hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml&p1=hivemind/branches/branch-2-0-annot/framework/src/test/hivemind/test/services/ServiceTranslator.xml&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
    (empty)

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.6

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/ServiceTranslator.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestConfigurationTranslator.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestConfigurationTranslator.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestConfigurationTranslator.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestConfigurationTranslator.java Sat Aug 12 15:00:19 2006
@@ -23,13 +23,14 @@
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.internal.Module;
 import org.apache.hivemind.schema.rules.ConfigurationTranslator;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests for {@link org.apache.hivemind.schema.rules.ConfigurationTranslator}.
  * 
  * @author Howard Lewis Ship
  */
-public class TestConfigurationTranslator extends FrameworkTestCase
+public class TestConfigurationTranslator extends XmlTestCase
 {
 
     public void testNull()

Copied: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java (from r431063, hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestCreateObjectRule.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java?p2=hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java&p1=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestCreateObjectRule.java&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestCreateObjectRule.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java Sat Aug 12 15:00:19 2006
@@ -12,12 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.hivemind.schema.rules;
+package hivemind.test.rules;
 
 import org.apache.hivemind.Element;
 import org.apache.hivemind.Location;
 import org.apache.hivemind.internal.Module;
 import org.apache.hivemind.schema.SchemaProcessor;
+import org.apache.hivemind.schema.rules.Bean;
+import org.apache.hivemind.schema.rules.CreateObjectRule;
 import org.apache.hivemind.test.AggregateArgumentsMatcher;
 import org.apache.hivemind.test.ArgumentMatcher;
 import org.apache.hivemind.test.HiveMindTestCase;

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.3

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestCreateObjectRule.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java (from r431063, hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestIdTranslators.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java?p2=hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java&p1=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestIdTranslators.java&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestIdTranslators.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java Sat Aug 12 15:00:19 2006
@@ -12,10 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.hivemind.schema.rules;
+package hivemind.test.rules;
 
 import org.apache.hivemind.internal.Module;
 import org.apache.hivemind.schema.Translator;
+import org.apache.hivemind.schema.rules.IdListTranslator;
+import org.apache.hivemind.schema.rules.QualifiedIdTranslator;
 import org.apache.hivemind.test.HiveMindTestCase;
 import org.easymock.MockControl;
 

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.4

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestIdTranslators.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInstanceTranslator.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInstanceTranslator.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInstanceTranslator.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInstanceTranslator.java Sat Aug 12 15:00:19 2006
@@ -27,6 +27,7 @@
 import org.apache.hivemind.internal.Module;
 import org.apache.hivemind.schema.rules.ClassTranslator;
 import org.apache.hivemind.schema.rules.InstanceTranslator;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Fill in some gaps in {@link org.apache.hivemind.schema.rules.InstanceTranslator} and
@@ -34,7 +35,7 @@
  * 
  * @author Howard Lewis Ship
  */
-public class TestInstanceTranslator extends FrameworkTestCase
+public class TestInstanceTranslator extends XmlTestCase
 {
 
     public void testNull()

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInvokeParentRule.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInvokeParentRule.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInvokeParentRule.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestInvokeParentRule.java Sat Aug 12 15:00:19 2006
@@ -22,9 +22,10 @@
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.schema.SchemaProcessor;
 import org.apache.hivemind.schema.rules.InvokeParentRule;
+import org.apache.hivemind.xml.XmlTestCase;
 import org.easymock.MockControl;
 
-public class TestInvokeParentRule extends FrameworkTestCase
+public class TestInvokeParentRule extends XmlTestCase
 {
 
     public void testInvokeFailure() throws Exception

Copied: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java (from r431063, hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestNumericTranslators.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java?p2=hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java&p1=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestNumericTranslators.java&r1=431063&r2=431096&rev=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/schema/rules/TestNumericTranslators.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java Sat Aug 12 15:00:19 2006
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.hivemind.schema.rules;
+package hivemind.test.rules;
 
 import hivemind.test.FrameworkTestCase;
 
@@ -20,6 +20,7 @@
 import org.apache.hivemind.schema.rules.DoubleTranslator;
 import org.apache.hivemind.schema.rules.IntTranslator;
 import org.apache.hivemind.schema.rules.LongTranslator;
+import org.apache.hivemind.schema.rules.RulesMessages;
 
 /**
  * Tests the numeric translators.

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java
------------------------------------------------------------------------------
    cvs2svn:cvs-rev = 1.2

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestNumericTranslators.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestServiceTranslator.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestServiceTranslator.java?rev=431096&view=auto
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestServiceTranslator.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestServiceTranslator.java Sat Aug 12 15:00:19 2006
@@ -0,0 +1,55 @@
+// 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 hivemind.test.rules;
+
+import hivemind.test.services.Constructed;
+import hivemind.test.services.SimpleService;
+
+import org.apache.hivemind.Registry;
+import org.apache.hivemind.service.ThreadLocalStorage;
+import org.apache.hivemind.xml.XmlTestCase;
+
+/**
+ * Tests for {@link org.apache.hivemind.schema.rules.ServiceTranslator}
+ *
+ * @author Howard Lewis Ship
+ */
+public class TestServiceTranslator extends XmlTestCase
+{
+    public void testServiceTranslator() throws Exception
+    {
+        Registry r = buildFrameworkRegistry("ServiceTranslator.xml");
+
+        SimpleService ss =
+            (SimpleService) r.getService("hivemind.test.services.Simple", SimpleService.class);
+
+        assertNotNull(ss);
+
+        ThreadLocalStorage tls =
+            (ThreadLocalStorage) r.getService(
+                "hivemind.ThreadLocalStorage",
+                ThreadLocalStorage.class);
+
+        assertNotNull(tls);
+
+        Constructed c =
+            (Constructed) r.getService("hivemind.test.services.Constructed", Constructed.class);
+
+        assertNotNull(c);
+
+        assertSame(ss, c.getSimpleService());
+        assertSame(tls, c.getThreadLocal());
+    }
+}

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestSetPropertyRule.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestSetPropertyRule.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestSetPropertyRule.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/hivemind/test/rules/TestSetPropertyRule.java Sat Aug 12 15:00:19 2006
@@ -18,13 +18,14 @@
 
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests for the {@link org.apache.hivemind.schema.rules.SetPropertyRule}.
  *
  * @author Howard Lewis Ship
  */
-public class TestSetPropertyRule extends HiveMindTestCase
+public class TestSetPropertyRule extends XmlTestCase
 {
     public void testSuccess() throws Exception
     {

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestInvokeFactoryServiceConstructor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestInvokeFactoryServiceConstructor.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestInvokeFactoryServiceConstructor.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestInvokeFactoryServiceConstructor.java Sat Aug 12 15:00:19 2006
@@ -31,6 +31,7 @@
 import org.apache.hivemind.internal.ServicePoint;
 import org.apache.hivemind.schema.impl.SchemaImpl;
 import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.xml.XmlTestCase;
 import org.easymock.MockControl;
 
 /**
@@ -38,7 +39,7 @@
  * 
  * @author Howard Lewis Ship
  */
-public class TestInvokeFactoryServiceConstructor extends HiveMindTestCase
+public class TestInvokeFactoryServiceConstructor extends XmlTestCase
 {
     public void testWrongNumberOfParameters()
     {

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactory.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactory.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactory.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactory.java Sat Aug 12 15:00:19 2006
@@ -43,6 +43,7 @@
 import org.apache.hivemind.service.impl.BuilderParameter;
 import org.apache.hivemind.service.impl.BuilderServiceIdFacet;
 import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.xml.XmlTestCase;
 import org.easymock.MockControl;
 
 /**
@@ -51,7 +52,7 @@
  * 
  * @author Howard Lewis Ship
  */
-public class TestBuilderFactory extends HiveMindTestCase
+public class TestBuilderFactory extends XmlTestCase
 {
     private Object execute(ServiceImplementationFactoryParameters fp, BuilderParameter p)
     {

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactoryServiceModel.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactoryServiceModel.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactoryServiceModel.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestBuilderFactoryServiceModel.java Sat Aug 12 15:00:19 2006
@@ -20,13 +20,14 @@
 import org.apache.hivemind.HiveMind;
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.service.impl.BuilderFactory;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests {@link org.apache.hivemind.impl.PooledServiceModel} integrated with {@link BuilderFactory}. 
  *
  * @author Howard Lewis Ship
  */
-public class TestBuilderFactoryServiceModel extends FrameworkTestCase
+public class TestBuilderFactoryServiceModel extends XmlTestCase
 {
 
     /**

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestEventLinker.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestEventLinker.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestEventLinker.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/TestEventLinker.java Sat Aug 12 15:00:19 2006
@@ -19,6 +19,7 @@
 
 import org.apache.hivemind.Registry;
 import org.apache.hivemind.test.HiveMindTestCase;
+import org.apache.hivemind.xml.XmlTestCase;
 
 /**
  * Tests for the {@link org.apache.hivemind.service.impl.EventLinkerImpl}class, used by the
@@ -26,7 +27,7 @@
  * 
  * @author Howard Lewis Ship
  */
-public class TestEventLinker extends HiveMindTestCase
+public class TestEventLinker extends XmlTestCase
 {
  
     public void testInsideBuilderFactory() throws Exception

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/impl/TestBuilderFactory.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/impl/TestBuilderFactory.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/impl/TestBuilderFactory.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/service/impl/TestBuilderFactory.java Sat Aug 12 15:00:19 2006
@@ -25,6 +25,7 @@
 import org.apache.hivemind.test.ArgumentMatcher;
 import org.apache.hivemind.test.HiveMindTestCase;
 import org.apache.hivemind.test.TypeMatcher;
+import org.apache.hivemind.xml.XmlTestCase;
 import org.easymock.MockControl;
 
 /**
@@ -33,7 +34,7 @@
  * @author Howard M. Lewis Ship
  * @since 1.1
  */
-public class TestBuilderFactory extends HiveMindTestCase
+public class TestBuilderFactory extends XmlTestCase
 {
     /**
      * Tests for errors when actually invoking the initializer method (as opposed to an error

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestContains.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestContains.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestContains.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestContains.java Sat Aug 12 15:00:19 2006
@@ -25,7 +25,7 @@
  * 
  * @author Naresh Sikha
  */
-public class TestContains extends FrameworkTestCase
+public class TestContains extends XmlTestCase
 {
     private Registry registry;
 

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestSubModule.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestSubModule.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestSubModule.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/TestSubModule.java Sat Aug 12 15:00:19 2006
@@ -24,7 +24,7 @@
  * 
  * @author Howard Lewis Ship
  */
-public class TestSubModule extends FrameworkTestCase
+public class TestSubModule extends XmlTestCase
 {
     public void testNestedSubModule() throws Exception
     {

Modified: hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/XmlTestCase.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/XmlTestCase.java?rev=431096&r1=431095&r2=431096&view=diff
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/XmlTestCase.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/xml/XmlTestCase.java Sat Aug 12 15:00:19 2006
@@ -14,13 +14,19 @@
 
 package org.apache.hivemind.xml;
 
+import java.util.Locale;
+
 import hivemind.test.FrameworkTestCase;
 
+import org.apache.hivemind.ClassResolver;
+import org.apache.hivemind.Registry;
 import org.apache.hivemind.Resource;
 import org.apache.hivemind.impl.DefaultErrorHandler;
+import org.apache.hivemind.impl.RegistryBuilder;
 import org.apache.hivemind.parse.DependencyDescriptor;
 import org.apache.hivemind.parse.ModuleDescriptor;
 import org.apache.hivemind.parse.XmlResourceProcessor;
+import org.apache.hivemind.test.HiveMindTestCase;
 
 /**
  * Base class for xml specific tests.
@@ -29,7 +35,40 @@
  */
 public abstract class XmlTestCase extends FrameworkTestCase
 {
+    /**
+     * Convienience method for invoking {@link #buildFrameworkRegistry(String[])} with only a single
+     * file.
+     */
+    protected Registry buildFrameworkRegistry(String file) throws Exception
+    {
+        return buildFrameworkRegistry(new String[]
+        { file });
+    }
+
+    /**
+     * Builds a minimal registry, containing only the specified files, plus the master module
+     * descriptor (i.e., those visible on the classpath). Files are resolved using
+     * {@link HiveMindTestCase#getResource(String)}.
+     */
+    protected Registry buildFrameworkRegistry(String[] files) throws Exception
+    {
+        ClassResolver resolver = getClassResolver();
+        
+        RegistryBuilder builder = new RegistryBuilder();
+        builder.autoDetectModules();
+
+        for (int i = 0; i < files.length; i++)
+        {
+            Resource resource = getResource(files[i]);
+
+            org.apache.hivemind.impl.XmlModuleReader reader = new org.apache.hivemind.impl.XmlModuleReader(builder.getRegistryDefinition(),
+                    resolver, builder.getErrorHandler());
+            reader.readModule(resource);
+        }
 
+        return builder.constructRegistry(Locale.getDefault());
+    }
+    
     protected ModuleDescriptor parse(String file)
         throws Exception
     {