knut        2004/10/25 02:02:31

  Modified:    framework/src/test/hivemind/test/parse
                        TestDescriptorParser.java
               framework/src/java/org/apache/hivemind/parse
                        ParseStrings.properties ParseMessages.java
                        DescriptorParser.java
  Added:       framework/src/test/hivemind/test/parse DuplicateSchemas.xml
  Removed:     framework/src/test/hivemind/test/parse
                        DuplicateParametersSchema.xml
  Log:
  added check and handling for multiple schemas on configurations
  
  Revision  Changes    Path
  1.25      +19 -1     
jakarta-hivemind/framework/src/test/hivemind/test/parse/TestDescriptorParser.java
  
  Index: TestDescriptorParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/parse/TestDescriptorParser.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- TestDescriptorParser.java 27 Sep 2004 15:50:47 -0000      1.24
  +++ TestDescriptorParser.java 25 Oct 2004 09:02:31 -0000      1.25
  @@ -312,11 +312,29 @@
           assertEquals("myParameter", em.getElementName());
       }
   
  +    public void testDuplicateContributionsSchema() throws Exception
  +    {
  +        interceptLogging();
  +
  +        ModuleDescriptor md = parse("DuplicateSchemas.xml");
  +
  +        assertLoggedMessagePattern("Multiple contributions schemas specified 
for configuration MyConfiguration. Using locally defined schema \\(at ");
  +
  +        ConfigurationPointDescriptor cpd = (ConfigurationPointDescriptor) 
md.getConfigurationPoints().get(0);
  +        Schema nestedSchema = cpd.getContributionsSchema();
  +
  +        assertNotNull(nestedSchema);
  +
  +        ElementModel em = (ElementModel) 
nestedSchema.getElementModel().get(0);
  +
  +        assertEquals("myParameter", em.getElementName());
  +    }
  +
       public void testDuplicateParametersSchema() throws Exception
       {
           interceptLogging();
   
  -        ModuleDescriptor md = parse("DuplicateParametersSchema.xml");
  +        ModuleDescriptor md = parse("DuplicateSchemas.xml");
   
           assertLoggedMessagePattern("Multiple parameters schemas specified 
for service MyServiceFactory. Using locally defined schema \\(at ");
   
  
  
  
  1.1                  
jakarta-hivemind/framework/src/test/hivemind/test/parse/DuplicateSchemas.xml
  
  Index: DuplicateSchemas.xml
  ===================================================================
  <?xml version="1.0"?>
  <!-- 
     Copyright 2004 The Apache Software Foundation
  
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
  
         http://www.apache.org/licenses/LICENSE-2.0
  
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
  
  <module id="hivemind.test.parse" version="1.0.0">
  
        <schema id="Parameters">
                <element name="aParameter"/>
        </schema>
  
        <service-point id="MyServiceFactory"
                interface="org.apache.hivemind.ServiceImplementationFactory"
                parameters-schema-id="Parameters">
                <parameters-schema>
                        <element name="myParameter"/>
                </parameters-schema>
        </service-point>
  
        <configuration-point id="MyConfiguration"
                schema-id="Parameters">
                <schema>
                        <element name="myParameter"/>
                </schema>
        </configuration-point>
                
  </module>
  
  
  
  1.11      +1 -0      
jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/ParseStrings.properties
  
  Index: ParseStrings.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/ParseStrings.properties,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ParseStrings.properties   27 Sep 2004 15:50:47 -0000      1.10
  +++ ParseStrings.properties   25 Oct 2004 09:02:31 -0000      1.11
  @@ -16,6 +16,7 @@
   dupe-attribute-mapping=Mapping for attribute {0} conflicts with a previous 
mapping (at {1}) and has been ignored.
   extra-mappings=Mappings for unknown attribute(s) {0} (for element {1}) have 
been ignored.
   unable-to-resolve-schema=Unable to resolve reference to schema ''{0}''.
  +multiple-contributions-schemas=Multiple contributions schemas specified for 
configuration {0}. Using locally defined schema (at {1}).
   multiple-parameters-schemas=Multiple parameters schemas specified for 
service {0}. Using locally defined schema (at {1}).
   not-module=Document element should be module not {0} (at {1}).
   required-attribute=Missing required attribute ''{0}'' in element {1} (at 
{2}).
  
  
  
  1.12      +5 -0      
jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/ParseMessages.java
  
  Index: ParseMessages.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/ParseMessages.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ParseMessages.java        27 Sep 2004 14:36:35 -0000      1.11
  +++ ParseMessages.java        25 Oct 2004 09:02:31 -0000      1.12
  @@ -51,6 +51,11 @@
           return _formatter.format("unable-to-resolve-schema", schemaId);
       }
   
  +    public static String multipleContributionsSchemas(String 
configurationId, Location location)
  +    {
  +        return _formatter.format("multiple-contributions-schemas", 
configurationId, location);
  +    }
  +
       public static String multipleParametersSchemas(String serviceId, 
Location location)
       {
           return _formatter.format("multiple-parameters-schemas", serviceId, 
location);
  
  
  
  1.39      +9 -6      
jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/DescriptorParser.java
  
  Index: DescriptorParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/parse/DescriptorParser.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- DescriptorParser.java     14 Oct 2004 14:31:31 -0000      1.38
  +++ DescriptorParser.java     25 Oct 2004 09:02:31 -0000      1.39
  @@ -168,8 +168,8 @@
       /**
        * Used to resolve and link schema references during the parse.
        */
  -    private RegistryAssembly _registryAssembly;
   
  +    private RegistryAssembly _registryAssembly;
       private ClassResolver _resolver;
   
       private Perl5Compiler _compiler;
  @@ -862,9 +862,14 @@
   
           push(elementName, schema, STATE_SCHEMA);
   
  -        // TODO: Check if already has cpd / already specified schema-id
  -
  -        cpd.setContributionsSchema(schema);
  +        if (cpd.getContributionsSchema() != null)
  +        {
  +            cpd.setContributionsSchema(schema);
  +            _errorHandler.error(LOG, 
ParseMessages.multipleContributionsSchemas(cpd.getId(), schema
  +                    .getLocation()), schema.getLocation(), null);
  +        }
  +        else
  +            cpd.setContributionsSchema(schema);
   
           checkAttributes("schema{embedded}");
       }
  @@ -1016,8 +1021,6 @@
   
           if (visibility != null)
               schema.setVisibility(visibility);
  -
  -        // TODO: check for duplicate name!
   
           _registryAssembly.addSchema(qualify(id), schema);
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to