/* * Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com) * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestAnnotations2ElementInfo.java 3961 2008-07-11 11:35:59Z gbevin $ */ package com.uwyn.rife.engine; import com.uwyn.rife.engine.annotations.*; import com.uwyn.rife.engine.exceptions.EngineException; import com.uwyn.rife.engine.exceptions.PropertyNameMismatchErrorException; import com.uwyn.rife.engine.testelements.annotations.*; import com.uwyn.rife.resources.ResourceFinderClasspath; import junit.framework.TestCase; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.LinkedHashMap; public class TestAnnotations2ElementInfo extends TestCase { public TestAnnotations2ElementInfo(String name) { super(name); } public void testInstantiation() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+Simple.class.getName()); assertNotNull(elementinfo_builder); } public void testPrioritizedMethod() throws Exception { Object test_object = new Object() { @SuppressWarnings("unused") public void eee() {} @SuppressWarnings("unused") public void bbb() {} @SuppressWarnings("unused") public void ddd() {} @SuppressWarnings("unused") public void ccc() {} @SuppressWarnings("unused") public void aaa() {} }; Class test_class = test_object.getClass(); Method aaa = test_class.getDeclaredMethod("aaa", new Class[] {}); Method bbb = test_class.getDeclaredMethod("bbb", new Class[] {}); Method ccc = test_class.getDeclaredMethod("ccc", new Class[] {}); Method ddd = test_class.getDeclaredMethod("ddd", new Class[] {}); Method eee = test_class.getDeclaredMethod("eee", new Class[] {}); PrioritizedMethod prior_aaa1 = new PrioritizedMethod(aaa, null); PrioritizedMethod prior_aaa2 = new PrioritizedMethod(aaa, null); PrioritizedMethod prior_aaa3 = new PrioritizedMethod(aaa, new int[] {0, 3}); PrioritizedMethod prior_bbb = new PrioritizedMethod(bbb, new int[] {0}); PrioritizedMethod prior_ccc = new PrioritizedMethod(ccc, new int[] {0, 3}); PrioritizedMethod prior_ddd = new PrioritizedMethod(ddd, new int[] {1, 4}); PrioritizedMethod prior_eee = new PrioritizedMethod(eee, new int[] {1, 4, 0}); assertTrue(prior_aaa1.equals(prior_aaa1)); assertTrue(prior_aaa1.equals(prior_aaa2)); assertFalse(prior_aaa1.equals(prior_aaa3)); assertTrue(prior_aaa2.equals(prior_aaa1)); assertTrue(prior_aaa2.equals(prior_aaa2)); assertFalse(prior_aaa2.equals(prior_aaa3)); assertFalse(prior_aaa3.equals(prior_aaa1)); assertFalse(prior_aaa3.equals(prior_aaa2)); assertTrue(prior_aaa3.equals(prior_aaa3)); assertTrue(prior_aaa1.compareTo(prior_aaa1) == 0); assertTrue(prior_aaa1.compareTo(prior_aaa2) == 0); assertTrue(prior_aaa1.compareTo(prior_aaa3) < 0); assertTrue(prior_aaa1.compareTo(prior_bbb) < 0); assertTrue(prior_aaa1.compareTo(prior_ccc) < 0); assertTrue(prior_aaa1.compareTo(prior_ddd) < 0); assertTrue(prior_aaa1.compareTo(prior_eee) < 0); assertTrue(prior_aaa2.compareTo(prior_aaa1) == 0); assertTrue(prior_aaa2.compareTo(prior_aaa2) == 0); assertTrue(prior_aaa2.compareTo(prior_aaa3) < 0); assertTrue(prior_aaa2.compareTo(prior_bbb) < 0); assertTrue(prior_aaa2.compareTo(prior_ccc) < 0); assertTrue(prior_aaa2.compareTo(prior_ddd) < 0); assertTrue(prior_aaa2.compareTo(prior_eee) < 0); assertTrue(prior_aaa3.compareTo(prior_aaa1) > 0); assertTrue(prior_aaa3.compareTo(prior_aaa2) > 0); assertTrue(prior_aaa3.compareTo(prior_aaa3) == 0); assertTrue(prior_aaa3.compareTo(prior_bbb) > 0); assertTrue(prior_aaa3.compareTo(prior_ccc) < 0); assertTrue(prior_aaa3.compareTo(prior_ddd) < 0); assertTrue(prior_aaa3.compareTo(prior_eee) < 0); assertTrue(prior_bbb.compareTo(prior_aaa1) > 0); assertTrue(prior_bbb.compareTo(prior_aaa2) > 0); assertTrue(prior_bbb.compareTo(prior_aaa3) < 0); assertTrue(prior_bbb.compareTo(prior_bbb) == 0); assertTrue(prior_bbb.compareTo(prior_ccc) < 0); assertTrue(prior_bbb.compareTo(prior_ddd) < 0); assertTrue(prior_bbb.compareTo(prior_eee) < 0); assertTrue(prior_ccc.compareTo(prior_aaa1) > 0); assertTrue(prior_ccc.compareTo(prior_aaa2) > 0); assertTrue(prior_ccc.compareTo(prior_aaa3) > 0); assertTrue(prior_ccc.compareTo(prior_bbb) > 0); assertTrue(prior_ccc.compareTo(prior_ccc) == 0); assertTrue(prior_ccc.compareTo(prior_ddd) < 0); assertTrue(prior_ccc.compareTo(prior_eee) < 0); assertTrue(prior_ddd.compareTo(prior_aaa1) > 0); assertTrue(prior_ddd.compareTo(prior_aaa2) > 0); assertTrue(prior_ddd.compareTo(prior_aaa3) > 0); assertTrue(prior_ddd.compareTo(prior_bbb) > 0); assertTrue(prior_ddd.compareTo(prior_ccc) > 0); assertTrue(prior_ddd.compareTo(prior_ddd) == 0); assertTrue(prior_ddd.compareTo(prior_eee) < 0); assertTrue(prior_eee.compareTo(prior_aaa1) > 0); assertTrue(prior_eee.compareTo(prior_aaa2) > 0); assertTrue(prior_eee.compareTo(prior_aaa3) > 0); assertTrue(prior_eee.compareTo(prior_bbb) > 0); assertTrue(prior_eee.compareTo(prior_ccc) > 0); assertTrue(prior_eee.compareTo(prior_ddd) > 0); assertTrue(prior_eee.compareTo(prior_eee) == 0); } public void testParser() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+Simple.class.getName()); elementinfo_builder.process(); ElementInfo elementinfo = elementinfo_builder.createElementInfo(new LinkedHashMap<String, GlobalExit>(), new LinkedHashMap<String, GlobalVar>(), new LinkedHashMap<String, String>(), new LinkedHashMap<String, BeanDeclaration>(), new ArrayList<ErrorHandler>()); assertEquals(elementinfo.getInputNames().size(), 28); assertTrue(elementinfo.containsInput("input1")); assertTrue(elementinfo.containsInput("input2")); assertTrue(elementinfo.containsInput("input3")); assertTrue(elementinfo.containsInput("string1")); assertTrue(elementinfo.containsInput("string2")); assertTrue(elementinfo.containsInput("string3")); assertTrue(elementinfo.containsInput("enum4")); assertTrue(elementinfo.containsInput("date5")); assertTrue(elementinfo.containsInput("string6")); assertTrue(elementinfo.containsInput("string7")); assertTrue(elementinfo.containsInput("string8")); assertTrue(elementinfo.containsInput("prefix_string1")); assertTrue(elementinfo.containsInput("prefix_string2")); assertTrue(elementinfo.containsInput("prefix_string3")); assertTrue(elementinfo.containsInput("prefix_enum4")); assertTrue(elementinfo.containsInput("prefix_date5")); assertTrue(elementinfo.containsInput("prefixgroup_enum")); assertTrue(elementinfo.containsInput("prefixgroup_string")); assertTrue(elementinfo.containsInput("prefixgroup_int")); assertTrue(elementinfo.containsInput("prefixgroup_longObject")); assertTrue(elementinfo.containsInput("prefixgroup_short")); assertTrue(elementinfo.containsInput("enum")); assertTrue(elementinfo.containsInput("string")); assertTrue(elementinfo.containsInput("int")); assertTrue(elementinfo.containsInput("longObject")); assertTrue(elementinfo.containsInput("short")); assertTrue(elementinfo.containsInput("key1")); assertTrue(elementinfo.containsInput("key2")); assertEquals(elementinfo.getOutputNames().size(), 27); assertTrue(elementinfo.containsOutput("output1")); assertTrue(elementinfo.containsOutput("output2")); assertTrue(elementinfo.containsOutput("output3")); assertTrue(elementinfo.containsOutput("output4")); assertTrue(elementinfo.containsOutput("string1")); assertTrue(elementinfo.containsOutput("string2")); assertTrue(elementinfo.containsOutput("string3")); assertTrue(elementinfo.containsOutput("enum4")); assertTrue(elementinfo.containsOutput("date5")); assertTrue(elementinfo.containsOutput("string6")); assertTrue(elementinfo.containsOutput("string7")); assertTrue(elementinfo.containsOutput("string8")); assertTrue(elementinfo.containsOutput("prefix_enum4")); assertTrue(elementinfo.containsOutput("prefix_date5")); assertTrue(elementinfo.containsOutput("prefix_string6")); assertTrue(elementinfo.containsOutput("prefix_string7")); assertTrue(elementinfo.containsOutput("prefix_string8")); assertTrue(elementinfo.containsOutput("prefixgroup_enum")); assertTrue(elementinfo.containsOutput("prefixgroup_string")); assertTrue(elementinfo.containsOutput("prefixgroup_int")); assertTrue(elementinfo.containsOutput("prefixgroup_longObject")); assertTrue(elementinfo.containsOutput("prefixgroup_short")); assertTrue(elementinfo.containsOutput("enum")); assertTrue(elementinfo.containsOutput("string")); assertTrue(elementinfo.containsOutput("int")); assertTrue(elementinfo.containsOutput("longObject")); assertTrue(elementinfo.containsOutput("short")); assertEquals(elementinfo.getIncookieNames().size(), 2); assertTrue(elementinfo.containsIncookie("incookie1")); assertTrue(elementinfo.containsIncookie("incookie2")); assertEquals(elementinfo.getOutcookieNames().size(), 4); assertTrue(elementinfo.containsOutcookie("outcookie1")); assertTrue(elementinfo.containsOutcookie("outcookie2")); assertTrue(elementinfo.containsOutcookie("outcookie3")); assertTrue(elementinfo.containsOutcookie("outcookie4")); assertEquals(elementinfo.getNamedInbeanNames().size(), 2); assertTrue(elementinfo.containsNamedInbean("inbean1")); assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getClassname(), "com.uwyn.rife.engine.testelements.exits.BeanImpl1"); assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getPrefix(), null); assertEquals(elementinfo.getNamedInbeanInfo("inbean1").getGroupName(), null); assertTrue(elementinfo.containsNamedInbean("inbean2")); assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getPrefix(), "prefixgroup_"); assertEquals(elementinfo.getNamedInbeanInfo("inbean2").getGroupName(), "somegroup"); assertEquals(elementinfo.getNamedOutbeanNames().size(), 2); assertTrue(elementinfo.containsNamedOutbean("outbean1")); assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getClassname(), "com.uwyn.rife.engine.testelements.exits.BeanImpl2"); assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getPrefix(), "prefix_"); assertEquals(elementinfo.getNamedOutbeanInfo("outbean1").getGroupName(), null); assertTrue(elementinfo.containsNamedOutbean("outbean2")); assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getClassname(), "com.uwyn.rife.engine.testelements.submission.BeanImpl"); assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getPrefix(), null); assertEquals(elementinfo.getNamedOutbeanInfo("outbean2").getGroupName(), "somegroup"); assertEquals(elementinfo.getChildTriggerNames().size(), 2); assertTrue(elementinfo.containsChildTrigger("input1")); assertTrue(elementinfo.containsChildTrigger("input2")); assertEquals(elementinfo.getExitNames().size(), 3); assertTrue(elementinfo.containsExit("exit1")); assertTrue(elementinfo.containsExit("exit2")); assertTrue(elementinfo.containsExit("exit3")); assertEquals(elementinfo.getSubmissionNames().size(), 3); assertTrue(elementinfo.containsSubmission("submission1")); assertTrue(elementinfo.containsSubmission("submission2")); assertTrue(elementinfo.containsSubmission("anotherSubmission")); assertNotNull(elementinfo.getSubmission("submission1")); assertNotNull(elementinfo.getSubmission("submission2")); assertEquals(elementinfo.getSubmission("submission1").getParameterNames().size(), 13); assertTrue(elementinfo.getSubmission("submission1").containsParameter("param1")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("param2")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("param3")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_enum")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_string")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_int")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_longObject")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_short")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_string1")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_string2")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_string3")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_enum4")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("subm_date5")); assertEquals(elementinfo.getSubmission("submission1").getParameterRegexps().size(), 2); assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramA1")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramA2")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramB1")); assertTrue(elementinfo.getSubmission("submission1").containsParameter("paramB2")); assertEquals(elementinfo.getSubmission("submission1").getFileNames().size(), 2); assertTrue(elementinfo.getSubmission("submission1").containsFile("file1")); assertTrue(elementinfo.getSubmission("submission1").containsFile("file2")); assertEquals(elementinfo.getSubmission("submission2").getParameterNames().size(), 3); assertTrue(elementinfo.getSubmission("submission2").containsParameter("param1")); assertTrue(elementinfo.getSubmission("submission2").containsParameter("param2")); assertTrue(elementinfo.getSubmission("submission2").containsParameter("param3")); assertEquals(elementinfo.getSubmission("submission2").getParameterRegexps().size(), 1); assertTrue(elementinfo.getSubmission("submission2").containsParameter("paramC1")); assertTrue(elementinfo.getSubmission("submission2").containsParameter("paramC2")); assertEquals(elementinfo.getSubmission("submission2").getFileNames().size(), 2); assertTrue(elementinfo.getSubmission("submission2").containsFile("file1")); assertTrue(elementinfo.getSubmission("submission2").containsFile("file2")); assertEquals(elementinfo.getSubmission("anotherSubmission").getParameterNames().size(), 1); assertTrue(elementinfo.getSubmission("anotherSubmission").containsParameter("param4")); assertEquals(elementinfo.getSubmission("anotherSubmission").getParameterRegexps().size(), 0); assertEquals(elementinfo.getSubmission("anotherSubmission").getFileNames().size(), 0); } public void testPropertyMismatchedIncookie() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchInCookie.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("incookie", e2.getActualPropertyName()); assertEquals("setIncookie", e2.getMethod().getName()); assertEquals(PropertyMismatchInCookie.class.getName(), e2.getImplementationName()); assertSame(InCookieProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedInBean() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchInBean.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("inBean1", e2.getActualPropertyName()); assertEquals("setInBean1", e2.getMethod().getName()); assertEquals(PropertyMismatchInBean.class.getName(), e2.getImplementationName()); assertSame(InBeanProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedInput() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchInput.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("input", e2.getActualPropertyName()); assertEquals("setInput", e2.getMethod().getName()); assertEquals(PropertyMismatchInput.class.getName(), e2.getImplementationName()); assertSame(InputProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedParam() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchParam.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("param", e2.getActualPropertyName()); assertEquals("setParam", e2.getMethod().getName()); assertEquals(PropertyMismatchParam.class.getName(), e2.getImplementationName()); assertSame(ParamProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedSubmissionBean() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchSubmissionBean.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("submissionBean", e2.getActualPropertyName()); assertEquals("setSubmissionBean", e2.getMethod().getName()); assertEquals(PropertyMismatchSubmissionBean.class.getName(), e2.getImplementationName()); assertSame(SubmissionBeanProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedFile() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchFile.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("file", e2.getActualPropertyName()); assertEquals("setFile", e2.getMethod().getName()); assertEquals(PropertyMismatchFile.class.getName(), e2.getImplementationName()); assertSame(FileProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedOutBean() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchOutBean.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("outBean1", e2.getActualPropertyName()); assertEquals("setOutBean1", e2.getMethod().getName()); assertEquals(PropertyMismatchOutBean.class.getName(), e2.getImplementationName()); assertSame(OutBeanProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedOutCookie() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchOutCookie.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("outcookie", e2.getActualPropertyName()); assertEquals("setOutCookie", e2.getMethod().getName()); assertEquals(PropertyMismatchOutCookie.class.getName(), e2.getImplementationName()); assertSame(OutCookieProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } public void testPropertyMismatchedOutput() { SiteBuilder site_builder = new SiteBuilder("test", ResourceFinderClasspath.getInstance()); ElementInfoBuilder elementinfo_builder = site_builder.enterElement(ElementInfoProcessorFactory.ANNOTATIONS_IDENTIFIER+":"+PropertyMismatchOutput.class.getName()); try { elementinfo_builder.process(); fail("Expected exception."); } catch (EngineException e1) { if (e1.getCause() instanceof PropertyNameMismatchErrorException) { PropertyNameMismatchErrorException e2 = (PropertyNameMismatchErrorException)e1.getCause(); assertEquals("output", e2.getActualPropertyName()); assertEquals("setOutput", e2.getMethod().getName()); assertEquals(PropertyMismatchOutput.class.getName(), e2.getImplementationName()); assertSame(OutputProperty.class, e2.getAnnotationType()); assertEquals("badname", e2.getExpectedPropertyName()); assertEquals("test", e2.getSiteDeclarationName()); } } } }