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/12/22 13:25:22 UTC

svn commit: r489635 [2/2] - in /hivemind/branches/branch-2-0-annot: framework/src/java/org/apache/hivemind/definition/ framework/src/java/org/apache/hivemind/definition/construction/ framework/src/java/org/apache/hivemind/definition/impl/ framework/src...

Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParser.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParser.java?view=auto&rev=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParser.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParser.java Fri Dec 22 04:25:20 2006
@@ -0,0 +1,70 @@
+// 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.xml.definition.impl;
+
+import java.util.List;
+
+import org.apache.hivemind.Element;
+import org.apache.hivemind.definition.ConfigurationParser;
+import org.apache.hivemind.definition.construction.ContributionContext;
+import org.apache.hivemind.impl.SchemaProcessorImpl;
+import org.apache.hivemind.internal.Module;
+import org.apache.hivemind.schema.Schema;
+import org.apache.hivemind.util.Defense;
+import org.apache.hivemind.util.InstanceCreationUtils;
+
+/**
+ * Implementation of {@link ConfigurationParser} that parses data whose format
+ * is described by a HiveMind {@link Schema} definition in a HiveMind xml module.
+ */
+public final class HiveMindSchemaParser implements ConfigurationParser
+{
+    public final static String INPUT_FORMAT_NAME = "hivemind-schema";
+    
+    private Schema _schema;
+
+    public HiveMindSchemaParser(Schema schema)
+    {
+        _schema = schema;
+    }
+
+    /**
+     * @param  a list of {@link Element}s
+     * @see org.apache.hivemind.definition.ConfigurationParser#parseContribution(org.apache.hivemind.definition.construction.ContributionContext, java.lang.Object)
+     */
+    public Object parseContribution(ContributionContext context, Object data)
+    {
+        SchemaProcessorImpl processor = new SchemaProcessorImpl(context.getConfigurationPoint()
+                .getErrorLog(), _schema);
+        Object contributionObject = constructContributionObject(_schema, context.getDefiningModule());
+        processor.process(contributionObject, (List) data, context.getDefiningModule());
+        return contributionObject;
+    }
+
+    public Object constructContributionObject(Schema contributionsSchema, Module definingModule)
+    {
+        Defense.notNull(contributionsSchema.getRootElementClassName(), "schema.rootElementClassName");
+
+        return InstanceCreationUtils.createInstance(
+                definingModule,
+                contributionsSchema.getRootElementClassName(),
+                contributionsSchema.getLocation());
+    }
+
+    public Schema getSchema()
+    {
+        return _schema;
+    }
+}
\ No newline at end of file

Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParserConstructor.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParserConstructor.java?view=auto&rev=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParserConstructor.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/HiveMindSchemaParserConstructor.java Fri Dec 22 04:25:20 2006
@@ -0,0 +1,54 @@
+package org.apache.hivemind.xml.definition.impl;
+
+import org.apache.hivemind.definition.ConfigurationParser;
+import org.apache.hivemind.definition.construction.ConfigurationParserConstructor;
+import org.apache.hivemind.definition.construction.ConstructionContext;
+import org.apache.hivemind.schema.Schema;
+import org.apache.hivemind.util.Defense;
+
+/**
+ * Constructor for {@link HiveMindSchemaParser}s.
+ */
+public class HiveMindSchemaParserConstructor implements ConfigurationParserConstructor
+{
+    private Schema _schema;
+    private String _schemaId;
+
+    public HiveMindSchemaParserConstructor(String schemaId)
+    {
+        _schemaId = schemaId;
+    }
+
+    public HiveMindSchemaParserConstructor(Schema schema)
+    {
+        _schema = schema;
+    }
+
+    public ConfigurationParser constructParser(ConstructionContext context)
+    {
+        Defense.fieldNotNull(_schema, "schema");
+        
+        return new HiveMindSchemaParser(_schema);
+    }
+
+    public Schema getSchema()
+    {
+        return _schema;
+    }
+
+    public void setSchema(Schema schema)
+    {
+        _schema = schema;
+    }
+
+    public String getSchemaId()
+    {
+        return _schemaId;
+    }
+
+    public void setSchemaId(String schemaId)
+    {
+        _schemaId = schemaId;
+    }
+
+}

Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlConfigurationPointDefinitionImpl.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlConfigurationPointDefinitionImpl.java?view=auto&rev=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlConfigurationPointDefinitionImpl.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlConfigurationPointDefinitionImpl.java Fri Dec 22 04:25:20 2006
@@ -0,0 +1,31 @@
+package org.apache.hivemind.xml.definition.impl;
+
+import org.apache.hivemind.Location;
+import org.apache.hivemind.definition.ModuleDefinition;
+import org.apache.hivemind.definition.Occurances;
+import org.apache.hivemind.definition.Visibility;
+import org.apache.hivemind.definition.impl.ConfigurationPointDefinitionImpl;
+import org.apache.hivemind.schema.Schema;
+
+/**
+ * Specialization of {@link ConfigurationPointDefinitionImpl} for configuration points defined in xml.
+ * 
+ * @author Achim Huegen
+ */
+public class XmlConfigurationPointDefinitionImpl extends ConfigurationPointDefinitionImpl
+{
+    private Schema _contributionsSchema;
+    private String _contributionsSchemaId;
+
+    public XmlConfigurationPointDefinitionImpl(ModuleDefinition module)
+    {
+        super(module);
+    }
+    
+    public XmlConfigurationPointDefinitionImpl(ModuleDefinition module, String id, Location location, Visibility visibility, String containerClassName, Occurances expectedContributions)
+    {
+        super(module, id, location, visibility, containerClassName, expectedContributions);
+    }
+    
+    
+}

Copied: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlContributionImpl.java (from r484592, hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlContributionImpl.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlContributionImpl.java?view=diff&rev=489635&p1=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlContributionImpl.java&r1=484592&p2=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlContributionImpl.java&r2=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlContributionImpl.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlContributionImpl.java Fri Dec 22 04:25:20 2006
@@ -12,24 +12,23 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.hivemind.impl;
+package org.apache.hivemind.xml.definition.impl;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.hivemind.ApplicationRuntimeException;
+import org.apache.hivemind.Element;
+import org.apache.hivemind.definition.ConfigurationParser;
+import org.apache.hivemind.definition.ConfigurationParserDefinition;
+import org.apache.hivemind.definition.ConfigurationPointDefinition;
 import org.apache.hivemind.definition.construction.Contribution;
 import org.apache.hivemind.definition.construction.ContributionContext;
-import org.apache.hivemind.impl.natures.XmlConfigurationPointNature;
-import org.apache.hivemind.internal.Module;
-import org.apache.hivemind.schema.Schema;
-import org.apache.hivemind.util.Defense;
-import org.apache.hivemind.util.InstanceCreationUtils;
 
 /**
- * Implements the {@link org.apache.hivemind.definition.construction.Contribution}
- * interface, a wrapper around objects that can provide values that plug into an extension point.
+ * Implements the {@link org.apache.hivemind.definition.construction.Contribution} interface.
+ * Contributes data that is defined as xml in a HiveMind xml module.
+ * The data is passed in as instances of {@link Element}.
  * 
  * @author Howard Lewis Ship
  */
@@ -66,52 +65,25 @@
         return _elements;
     }
 
+    /**
+     * @see org.apache.hivemind.definition.construction.Contribution#contribute(org.apache.hivemind.definition.construction.ContributionContext)
+     */
     public void contribute(ContributionContext context)
     {
-        // Retrieve xml nature
-        XmlConfigurationPointNature xmlNature = (XmlConfigurationPointNature) context
-                .getConfigurationPoint().getNature(XmlConfigurationPointNature.class);
-        if (xmlNature == null)
+        // Retrieve parser for HiveMind schema
+        ConfigurationPointDefinition cpd = context.getConfigurationPoint()
+                .getConfigurationPointDefinition();
+        ConfigurationParserDefinition parserDef = cpd.getParser(HiveMindSchemaParser.INPUT_FORMAT_NAME);
+        if (parserDef == null)
         {
-            // TODO: Enhance Exception-Handling
-            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 = context.getDefiningModule();
-
-        Schema contributionsSchema = xmlNature.getSchema();
-        if (contributionsSchema != null)
-        {
-            SchemaProcessorImpl processor = new SchemaProcessorImpl(context.getConfigurationPoint()
-                    .getErrorLog(), contributionsSchema);
-            Object contributionObject = constructContributionObject(contributionsSchema, context.getDefiningModule());
-            processor.process(contributionObject, getElements(), contributingModule);
-            context.mergeContribution(contributionObject);
-        } else {
-            // It's perfectly valid that a configuration point has no schema  
-            // In that case the unparsed elements should be returned
+            // This is a valid situation. The unparsed elements are contributed
             context.mergeContribution(getElements());
+        } else {
+            // Construct and execute the parser
+            ConfigurationParser parser = parserDef.getParserConstructor().constructParser(context);
+            Object contribution = parser.parseContribution(context, getElements());
+            context.mergeContribution(contribution);
         }
-
-        // After constructing the result, if the result
-        // will be cached, then there's no need to keep
-        // the schema and extensions (used to build the
-        // result); it can all be released to the GC.
-
-        // TODO schema can not be deleted here since there are still other contributions
-        // that need the schema
-        // configurationPoint.putMetaData("schema", null);
-
     }
 
-    public Object constructContributionObject(Schema contributionsSchema, Module definingModule)
-    {
-        Defense.notNull(contributionsSchema.getRootElementClassName(), "schema.rootElementClassName");
-
-        return InstanceCreationUtils.createInstance(
-                definingModule,
-                contributionsSchema.getRootElementClassName(),
-                contributionsSchema.getLocation());
-    }
 }

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

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

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

Added: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlModuleDefinitionImpl.java
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlModuleDefinitionImpl.java?view=auto&rev=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlModuleDefinitionImpl.java (added)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlModuleDefinitionImpl.java Fri Dec 22 04:25:20 2006
@@ -0,0 +1,56 @@
+package org.apache.hivemind.xml.definition.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hivemind.ClassResolver;
+import org.apache.hivemind.Location;
+import org.apache.hivemind.definition.impl.ModuleDefinitionImpl;
+import org.apache.hivemind.impl.SchemaAssignment;
+import org.apache.hivemind.schema.Schema;
+
+public class XmlModuleDefinitionImpl extends ModuleDefinitionImpl
+{
+    /**
+     * Map of {@link Schema} keyed on schema id.
+     */
+    private Map _schemas = new HashMap();
+    
+    /**
+     * Collection of {@link SchemaAssignment}s
+     */
+    private Collection _schemaAssignments = new ArrayList();
+
+    public XmlModuleDefinitionImpl(String id, Location location, ClassResolver resolver, String packageName)
+    {
+        super(id, location, resolver, packageName);
+    }
+
+    public void addSchema(String qualifiedSchemaId, Schema schema)
+    {
+        _schemas.put(qualifiedSchemaId, schema);
+    }
+
+    public Schema getSchema(String qualifiedSchemaId)
+    {
+        return (Schema) _schemas.get(qualifiedSchemaId);
+    }
+    
+    public Collection getSchemas()
+    {
+        return _schemas.values();
+    }
+
+    public void addSchemaAssignment(SchemaAssignment assignment)
+    {
+        _schemaAssignments.add(assignment);
+    }
+    
+    public Collection getSchemaAssignments()
+    {
+        return _schemaAssignments;
+    }
+
+}

Copied: hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlServicePointDefinitionImpl.java (from r484592, hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlServicePointDefinitionImpl.java)
URL: http://svn.apache.org/viewvc/hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlServicePointDefinitionImpl.java?view=diff&rev=489635&p1=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlServicePointDefinitionImpl.java&r1=484592&p2=hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlServicePointDefinitionImpl.java&r2=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/impl/XmlServicePointDefinitionImpl.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/java/org/apache/hivemind/xml/definition/impl/XmlServicePointDefinitionImpl.java Fri Dec 22 04:25:20 2006
@@ -1,4 +1,4 @@
-package org.apache.hivemind.impl;
+package org.apache.hivemind.xml.definition.impl;
 
 import org.apache.hivemind.Location;
 import org.apache.hivemind.definition.ModuleDefinition;
@@ -16,6 +16,7 @@
 {
     private Schema _parametersSchema;
     private Occurances _parametersCount = Occurances.REQUIRED;
+    private String _parametersSchemaId;
 
     public XmlServicePointDefinitionImpl(ModuleDefinition module)
     {
@@ -38,7 +39,7 @@
 
     public void setParametersSchema(Schema schema)
     {
-        this._parametersSchema = schema;
+        _parametersSchema = schema;
     }
 
     /**
@@ -52,7 +53,17 @@
 
     public void setParametersCount(Occurances parametersCount)
     {
-        this._parametersCount = parametersCount;
+        _parametersCount = parametersCount;
+    }
+
+    public void setParametersSchemaId(String parametersSchemaId)
+    {
+        _parametersSchemaId = parametersSchemaId;
+    }
+
+    public String getParametersSchemaId()
+    {
+        return _parametersSchemaId;
     }
     
 }

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?view=diff&rev=489635&r1=489634&r2=489635
==============================================================================
--- 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 Fri Dec 22 04:25:20 2006
@@ -32,6 +32,7 @@
 import org.apache.hivemind.internal.ServicePoint;
 import org.apache.hivemind.schema.impl.SchemaImpl;
 import org.apache.hivemind.xml.XmlTestCase;
+import org.apache.hivemind.xml.definition.impl.XmlServicePointDefinitionImpl;
 import org.easymock.MockControl;
 
 /**

Modified: 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?view=diff&rev=489635&r1=489634&r2=489635
==============================================================================
--- hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java (original)
+++ hivemind/branches/branch-2-0-annot/xml/src/test/org/apache/hivemind/impl/TestXmlModuleDescriptorProcessor.java Fri Dec 22 04:25:20 2006
@@ -21,10 +21,10 @@
 import org.apache.hivemind.Element;
 import org.apache.hivemind.ErrorHandler;
 import org.apache.hivemind.Location;
+import org.apache.hivemind.definition.ConfigurationParserDefinition;
 import org.apache.hivemind.definition.ConfigurationPointDefinition;
 import org.apache.hivemind.definition.RegistryDefinition;
 import org.apache.hivemind.definition.Visibility;
-import org.apache.hivemind.impl.natures.XmlConfigurationPointNature;
 import org.apache.hivemind.parse.ConfigurationPointDescriptor;
 import org.apache.hivemind.parse.ContributionDescriptor;
 import org.apache.hivemind.parse.ModuleDescriptor;
@@ -32,6 +32,8 @@
 import org.apache.hivemind.test.AggregateArgumentsMatcher;
 import org.apache.hivemind.test.ArgumentMatcher;
 import org.apache.hivemind.test.TypeMatcher;
+import org.apache.hivemind.xml.definition.impl.HiveMindSchemaParser;
+import org.apache.hivemind.xml.definition.impl.HiveMindSchemaParserConstructor;
 import org.easymock.MockControl;
 
 /**
@@ -72,13 +74,19 @@
                 errorHandler);
         processor.processModuleDescriptor(fooBar);
         processor.processModuleDescriptor(zipZoop);
-        processor.resolveSchemas();
+        
+        XmlExtensionResolver extensionResolver = new XmlExtensionResolver(definition, errorHandler);
+        extensionResolver.resolveSchemas();
 
         ConfigurationPointDefinition point = definition.getConfigurationPoint("zip.zoop.Zap");
-        XmlConfigurationPointNature xmlNature = (XmlConfigurationPointNature) point
-                .getNature(XmlConfigurationPointNature.class);
-        assertNotNull(xmlNature);
-        assertEquals(schema, xmlNature.getSchema());
+        
+        ConfigurationParserDefinition parserDef = point.getParser(HiveMindSchemaParser.INPUT_FORMAT_NAME);
+        assertNotNull(parserDef);
+        
+        assertEquals(parserDef.getParserConstructor().getClass(), HiveMindSchemaParserConstructor.class);
+
+        HiveMindSchemaParserConstructor constructor = (HiveMindSchemaParserConstructor) parserDef.getParserConstructor();
+        assertEquals(schema, constructor.getSchema());
     }
 
     /**
@@ -90,7 +98,7 @@
         MockControl ehControl = newControl(ErrorHandler.class);
         ErrorHandler errorHandler = (ErrorHandler) ehControl.getMock();
 
-        Log log = LogFactory.getLog(XmlModuleDescriptorProcessor.class);
+        Log log = LogFactory.getLog(XmlExtensionResolver.class);
 
         SchemaImpl schema = new SchemaImpl("foo.bar");
         schema.setId("Baz");
@@ -127,7 +135,9 @@
                 errorHandler);
         processor.processModuleDescriptor(fooBar);
         processor.processModuleDescriptor(zipZoop);
-        processor.resolveSchemas();
+        
+        XmlExtensionResolver extensionResolver = new XmlExtensionResolver(definition, errorHandler);
+        extensionResolver.resolveSchemas();
 
         verifyControls();
     }
@@ -159,7 +169,9 @@
         XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition,
                 errorHandler);
         processor.processModuleDescriptor(zipZoop);
-        processor.resolveSchemas();
+        
+        XmlExtensionResolver extensionResolver = new XmlExtensionResolver(definition, errorHandler);
+        extensionResolver.resolveSchemas();
 
         verifyControls();
     }
@@ -202,7 +214,7 @@
                 errorHandler);
         processor.processModuleDescriptor(md);
 
-        ExtensionResolver extensionResolver = new ExtensionResolver(new StrictErrorHandler(), definition);
+        ExtensionResolver extensionResolver = new ExtensionResolver(definition, new StrictErrorHandler());
         extensionResolver.resolveExtensions();
 
         ConfigurationPointDefinition configurationPoint = definition
@@ -242,7 +254,7 @@
                 errorHandler);
         processor.processModuleDescriptor(md);
 
-        ExtensionResolver extensionResolver = new ExtensionResolver(new StrictErrorHandler(), definition);
+        ExtensionResolver extensionResolver = new ExtensionResolver(definition, new StrictErrorHandler());
         extensionResolver.resolveExtensions();
 
         ConfigurationPointDefinition configurationPoint = definition
@@ -295,7 +307,7 @@
         XmlModuleDescriptorProcessor processor = new XmlModuleDescriptorProcessor(definition, eh);
         processor.processModuleDescriptor(md);
 
-        ExtensionResolver extensionResolver = new ExtensionResolver(new StrictErrorHandler(), definition);
+        ExtensionResolver extensionResolver = new ExtensionResolver(definition, new StrictErrorHandler());
         extensionResolver.resolveExtensions();
 
         ConfigurationPointDefinition configurationPoint = definition