Skip to content

Commit

Permalink
add RI unit test showing that multiple schemas can be validated
Browse files Browse the repository at this point in the history
git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2454 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
Victor Yarmolovich committed Apr 17, 2009
1 parent ede4d41 commit d6dd2ef
Show file tree
Hide file tree
Showing 10 changed files with 138 additions and 51 deletions.
13 changes: 10 additions & 3 deletions impl/src/main/java/org/jboss/webbeans/xml/ParseXmlHelper.java
Expand Up @@ -123,9 +123,16 @@ public static void checkRootAttributes(Element root, Map<String, Set<String>> pa
{
urn = attrVal;
URL namespaceFile = environment.loadFileByUrn(urn, XmlConstants.NAMESPACE_FILE_NAME);
if (namespaceFile == null)
throw new DefinitionException("Could not find '" + XmlConstants.NAMESPACE_FILE_NAME + "' file according to specified URN '" + urn + "'");
packagesSet.addAll(parseNamespaceFile(namespaceFile));

if (namespaceFile != null)
{
packagesSet.addAll(parseNamespaceFile(namespaceFile));
}
else
{
String packageName = urn.replaceFirst(XmlConstants.URN_PREFIX, "");
packagesSet.add(packageName);
}
}
if (attribute.getName().equalsIgnoreCase(XmlConstants.SCHEMA_LOCATION) && attrVal.startsWith(XmlConstants.HTTP_PREFIX) && urn.trim().length() > 0)
{
Expand Down
@@ -1,18 +1,13 @@
package org.jboss.webbeans.test.unit.xml.parser;

import java.lang.annotation.Annotation;
import java.net.URL;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.inject.manager.Bean;

import org.jboss.testharness.impl.packaging.Artifact;
import org.jboss.testharness.impl.packaging.Classes;
import org.jboss.testharness.impl.packaging.Resource;
import org.jboss.testharness.impl.packaging.Resources;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.ejb.EjbDescriptorCache;
import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.introspector.AnnotatedItem;
Expand All @@ -21,7 +16,6 @@
import org.jboss.webbeans.test.unit.xml.beans.Order;
import org.jboss.webbeans.xml.XmlEnvironment;
import org.jboss.webbeans.xml.XmlParser;
import org.testng.annotations.Test;

@Artifact
@Resources({
Expand Down Expand Up @@ -53,50 +47,21 @@ public void testParse()
assert parserEnv.getClasses().size() == 1;
}

@Test
// @Test
public void testDd()
{
XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("user-defined-beans.xml"), new EjbDescriptorCache());
XmlParser parser = new XmlParser(parserEnv);

Set<Bean<Order>> beansSet1 = parserEnv.getManager().resolveByType(Order.class);
List<Class<? extends Annotation>> dTypes1 = parserEnv.getManager().getEnabledDeploymentTypes();

parser.parse();

ManagerImpl manager = parserEnv.getManager();

Set<Bean<Order>> beansSet = manager.resolveByType(Order.class);
List<Class<? extends Annotation>> dTypes = manager.getEnabledDeploymentTypes();
for(Bean<Order> bean : beansSet)
{
Class<? extends Annotation> deploymentType = bean.getDeploymentType();
System.out.println("after parsing: " + deploymentType);
}
// ManagerImpl manager = parserEnv.getManager();
//
// Set<Bean<Order>> beansSet = manager.resolveByType(Order.class);
// List<Class<? extends Annotation>> dTypes = manager.getEnabledDeploymentTypes();
// for(Bean<Order> bean : beansSet)
// {
// Class<? extends Annotation> deploymentType = bean.getDeploymentType();
// System.out.println("after parsing: " + deploymentType);
// }
}
}

/*
<Beans xmlns="urn:java:ee" xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.beans"
xmlns:test="urn:java:org.jboss.webbeans.test.unit.xml.parser"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:java:ee http://java.sun.com/jee/ee/schema-1.0.xsd
urn:java:com.mydomain.myapp http://mydomain.com/myapp/schema-1.2.xsd">
<Deploy>
<Standard />
<Production />
<test:AnotherDeploymentType />
</Deploy>
<myapp:Order>
<ConversationScoped />
<myapp:PaymentProcessor>
<myapp:Asynchronous />
</myapp:PaymentProcessor>
<myapp:User />
</myapp:Order>
<myapp:Login>
<ConversationScoped />
<BindingType />
</myapp:Login>
</Beans>
*/
}
@@ -0,0 +1,44 @@
package org.jboss.webbeans.test.unit.xml.parser.schema;

import javax.inject.DefinitionException;

import org.jboss.testharness.impl.packaging.Artifact;
import org.jboss.testharness.impl.packaging.Classes;
import org.jboss.testharness.impl.packaging.Resource;
import org.jboss.testharness.impl.packaging.Resources;
import org.jboss.webbeans.ejb.EjbDescriptorCache;
import org.jboss.webbeans.mock.MockXmlEnvironment;
import org.jboss.webbeans.test.AbstractWebBeansTest;
import org.jboss.webbeans.test.unit.xml.beans.Order;
import org.jboss.webbeans.xml.XmlEnvironment;
import org.jboss.webbeans.xml.XmlParser;
import org.testng.annotations.Test;

@Artifact
@Resources({
@Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/beans.xml" ),
@Resource(source="/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml", destination="WEB-INF/classes/org/jboss/webbeans/test/unit/xml/parser/schema/not-valid-beans.xml" )
})
@Classes({Order.class})
public class SchemaValidationTest extends AbstractWebBeansTest
{
@Test
public void testTwoValidSchemas()
{
XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("beans.xml"), new EjbDescriptorCache());
XmlParser parser = new XmlParser(parserEnv);
parser.parse();

assert parserEnv.getManager().resolveByType(Order.class).size() == 1;
}

@Test(expectedExceptions = DefinitionException.class)
public void testOneSchemaNotValid()
{
XmlEnvironment parserEnv = new MockXmlEnvironment(getResources("not-valid-beans.xml"), new EjbDescriptorCache());
XmlParser parser = new XmlParser(parserEnv);
parser.parse();

assert false;
}
}
@@ -0,0 +1,20 @@
<Beans xmlns="urn:java:ee"
xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema.valid http://mydomain.com/myapp/schema-1.2.xsd">

<Deploy>
<Standard />
<Production />
<myapp:TestDeploymentType />
</Deploy>

<myapp:Order>
<Array>
<String />
</Array>
<myapp:getVal />
<myapp:val />
<Integer />
</myapp:Order>
</Beans>
@@ -0,0 +1,2 @@
org.jboss.webbeans.test.unit.xml.beans
org.jboss.webbeans.test.unit.xml.beans.annotationtype
@@ -0,0 +1,20 @@
<Beans xmlns="urn:java:ee"
xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser.schema.notvalid http://mydomain.com/myapp/schema-1.2.xsd">

<Deploy>
<Standard />
<Production />
<myapp:TestDeploymentType />
</Deploy>

<myapp:Order>
<Array>
<String />
</Array>
<myapp:getVal />
<myapp:val />
<Integer />
</myapp:Order>
</Beans>
@@ -0,0 +1,10 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:java:ee">
<xs:element name="Beanses">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any" processContents="skip" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,10 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:java:ee">
<xs:element name="Beans">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any" processContents="skip" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,10 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:java:ee">
<xs:element name="Beans">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any" processContents="skip" />
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="skip" />
</xs:complexType>
</xs:element>
</xs:schema>
Expand Up @@ -2,8 +2,7 @@
xmlns:myapp="urn:java:org.jboss.webbeans.test.unit.xml.parser"
xmlns:manager="urn:java:javax.inject.manager"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:java:ee
urn:java:org.jboss.webbeans.test.unit.xml.parser http://mydomain.com/myapp/schema-1.2.xsd">
xsi:schemaLocation="urn:java:org.jboss.webbeans.test.unit.xml.parser http://mydomain.com/myapp/schema-1.2.xsd">
<Deploy>
<Standard />
<Production />
Expand Down

0 comments on commit d6dd2ef

Please sign in to comment.