diff options
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java')
5 files changed, 633 insertions, 0 deletions
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConvertAnnotationTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConvertAnnotationTests.java new file mode 100644 index 0000000000..b8d4e80782 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConvertAnnotationTests.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.core.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; +import org.eclipse.jpt.eclipselink.core.resource.java.ConvertAnnotation; +import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + +public class ConvertAnnotationTests extends EclipseLinkJavaResourceModelTestCase { + + public ConvertAnnotationTests(String name) { + super(name); + } + + private ICompilationUnit createTestConvert() throws Exception { + this.createAnnotationAndMembers("Convert", "String value() default \"none\""); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.CONVERT); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@Convert"); + } + }); + } + + private ICompilationUnit createTestConverterWithValue() throws Exception { + this.createAnnotationAndMembers("Convert", "String value() default \"none\""); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.CONVERT); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@Convert(value=\"myConverter\")"); + } + }); + } + + public void testConvertAnnotation() throws Exception { + ICompilationUnit cu = this.createTestConvert(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERT)); + + attributeResource.removeAnnotation(EclipseLinkJPA.CONVERT); + assertNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERT)); + + attributeResource.addAnnotation(EclipseLinkJPA.CONVERT); + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERT)); + } + + public void testGetValue() throws Exception { + ICompilationUnit cu = this.createTestConverterWithValue(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConvertAnnotation convert = (ConvertAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERT); + assertEquals("myConverter", convert.getValue()); + } + + public void testSetValue() throws Exception { + ICompilationUnit cu = this.createTestConverterWithValue(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConvertAnnotation convert = (ConvertAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERT); + assertEquals("myConverter", convert.getValue()); + + convert.setValue("Bar"); + assertEquals("Bar", convert.getValue()); + + assertSourceContains("@Convert(value=\"Bar\")", cu); + } + + public void testSetValueNull() throws Exception { + ICompilationUnit cu = this.createTestConverterWithValue(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConvertAnnotation convert = (ConvertAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERT); + assertEquals("myConverter", convert.getValue()); + + convert.setValue(null); + assertNull(convert.getValue()); + + assertSourceContains("@Convert", cu); + assertSourceDoesNotContain("value", cu); + } + +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConverterAnnotationTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConverterAnnotationTests.java new file mode 100644 index 0000000000..1a5e739548 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConverterAnnotationTests.java @@ -0,0 +1,157 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.core.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; +import org.eclipse.jpt.eclipselink.core.resource.java.ConverterAnnotation; +import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + +public class ConverterAnnotationTests extends EclipseLinkJavaResourceModelTestCase { + + public ConverterAnnotationTests(String name) { + super(name); + } + + private ICompilationUnit createTestConverter() throws Exception { + this.createAnnotationAndMembers("Converter", "String name(); Class converterClass()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@Converter"); + } + }); + } + + private ICompilationUnit createTestConverterWithConverterClass() throws Exception { + this.createAnnotationAndMembers("Converter", "String name(); Class converterClass()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@Converter(converterClass=Foo.class)"); + } + }); + } + + private ICompilationUnit createTestConverterWithName() throws Exception { + this.createAnnotationAndMembers("Converter", "String name(); Class converterClass()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@Converter(name=\"bar\")"); + } + }); + } + + public void testConverterAnnotation() throws Exception { + ICompilationUnit cu = this.createTestConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER)); + + attributeResource.removeAnnotation(EclipseLinkJPA.CONVERTER); + assertNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER)); + + attributeResource.addAnnotation(EclipseLinkJPA.CONVERTER); + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER)); + } + + public void testGetConverterClass() throws Exception { + ICompilationUnit cu = this.createTestConverterWithConverterClass(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("Foo", converter.getConverterClass()); + } + + public void testSetConverterClass() throws Exception { + ICompilationUnit cu = this.createTestConverterWithConverterClass(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("Foo", converter.getConverterClass()); + + converter.setConverterClass("Bar"); + assertEquals("Bar", converter.getConverterClass()); + + assertSourceContains("@Converter(converterClass=Bar.class)", cu); + } + + public void testSetConverterClassNull() throws Exception { + ICompilationUnit cu = this.createTestConverterWithConverterClass(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("Foo", converter.getConverterClass()); + + converter.setConverterClass(null); + assertNull(converter.getConverterClass()); + + assertSourceContains("@Converter", cu); + assertSourceDoesNotContain("converterClass", cu); + } + + public void testGetName() throws Exception { + ICompilationUnit cu = this.createTestConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("bar", converter.getName()); + } + + public void testSetName() throws Exception { + ICompilationUnit cu = this.createTestConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName("foo"); + assertEquals("foo", converter.getName()); + + assertSourceContains("@Converter(name=\"foo\")", cu); + } + + public void testSetNameNull() throws Exception { + ICompilationUnit cu = this.createTestConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + ConverterAnnotation converter = (ConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName(null); + assertNull(converter.getName()); + + assertSourceContains("@Converter", cu); + assertSourceDoesNotContain("name=", cu); + } +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/JptEclipseLinkCoreJavaResourceModelTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/JptEclipseLinkCoreJavaResourceModelTests.java index eddfef97e6..dee7bf9c8b 100644 --- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/JptEclipseLinkCoreJavaResourceModelTests.java +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/JptEclipseLinkCoreJavaResourceModelTests.java @@ -22,11 +22,15 @@ public class JptEclipseLinkCoreJavaResourceModelTests { TestSuite suite = new TestSuite(JptEclipseLinkCoreJavaResourceModelTests.class.getName()); suite.addTestSuite(CacheTests.class); + suite.addTestSuite(ConvertAnnotationTests.class); + suite.addTestSuite(ConverterAnnotationTests.class); suite.addTestSuite(ExistenceCheckingTests.class); suite.addTestSuite(MutableAnnotationTests.class); suite.addTestSuite(ReadTransformerAnnotationTests.class); + suite.addTestSuite(StructConverterAnnotationTests.class); suite.addTestSuite(TimeOfDayTests.class); suite.addTestSuite(TransformationAnnotationTests.class); + suite.addTestSuite(TypeConverterAnnotationTests.class); suite.addTestSuite(WriteTransformerAnnotationTests.class); return suite; diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/StructConverterAnnotationTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/StructConverterAnnotationTests.java new file mode 100644 index 0000000000..6028ac9c26 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/StructConverterAnnotationTests.java @@ -0,0 +1,157 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.core.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; +import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.eclipselink.core.resource.java.StructConverterAnnotation; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + +public class StructConverterAnnotationTests extends EclipseLinkJavaResourceModelTestCase { + + public StructConverterAnnotationTests(String name) { + super(name); + } + + private ICompilationUnit createTestStructConverter() throws Exception { + this.createAnnotationAndMembers("StructConverter", "String name(); String converter()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.STRUCT_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@StructConverter"); + } + }); + } + + private ICompilationUnit createTestStructConverterWithConverter() throws Exception { + this.createAnnotationAndMembers("StructConverter", "String name(); String converter()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.STRUCT_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@StructConverter(converter=\"Foo\")"); + } + }); + } + + private ICompilationUnit createTestStructConverterWithName() throws Exception { + this.createAnnotationAndMembers("StructConverter", "String name(); String converter()"); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.STRUCT_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@StructConverter(name=\"bar\")"); + } + }); + } + + public void testStructConverterAnnotation() throws Exception { + ICompilationUnit cu = this.createTestStructConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER)); + + attributeResource.removeAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertNull(attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER)); + + attributeResource.addAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER)); + } + + public void testGetConverter() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("Foo", converter.getConverter()); + } + + public void testSetConverter() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("Foo", converter.getConverter()); + + converter.setConverter("Bar"); + assertEquals("Bar", converter.getConverter()); + + assertSourceContains("@StructConverter(converter=\"Bar\")", cu); + } + + public void testSetConverterNull() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("Foo", converter.getConverter()); + + converter.setConverter(null); + assertNull(converter.getConverter()); + + assertSourceContains("@StructConverter", cu); + assertSourceDoesNotContain("converter", cu); + } + + public void testGetName() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("bar", converter.getName()); + } + + public void testSetName() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName("foo"); + assertEquals("foo", converter.getName()); + + assertSourceContains("@StructConverter(name=\"foo\")", cu); + } + + public void testSetNameNull() throws Exception { + ICompilationUnit cu = this.createTestStructConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + StructConverterAnnotation converter = (StructConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.STRUCT_CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName(null); + assertNull(converter.getName()); + + assertSourceContains("@StructConverter", cu); + assertSourceDoesNotContain("name=", cu); + } +} diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/TypeConverterAnnotationTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/TypeConverterAnnotationTests.java new file mode 100644 index 0000000000..50c4ed90f2 --- /dev/null +++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/TypeConverterAnnotationTests.java @@ -0,0 +1,209 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.core.tests.internal.resource.java; + +import java.util.Iterator; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.core.resource.java.JavaResourcePersistentType; +import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA; +import org.eclipse.jpt.eclipselink.core.resource.java.TypeConverterAnnotation; +import org.eclipse.jpt.utility.internal.iterators.ArrayIterator; + +public class TypeConverterAnnotationTests extends EclipseLinkJavaResourceModelTestCase { + + public TypeConverterAnnotationTests(String name) { + super(name); + } + + private ICompilationUnit createTestTypeConverter() throws Exception { + this.createAnnotationAndMembers("TypeConverter", "String name(); Class dataType() default void.class; Class objectType() default void.class "); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.TYPE_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@TypeConverter"); + } + }); + } + + private ICompilationUnit createTestTypeConverterWithDataType() throws Exception { + this.createAnnotationAndMembers("TypeConverter", "String name(); Class dataType() default void.class; Class objectType() default void.class "); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.TYPE_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@TypeConverter(dataType=Foo.class)"); + } + }); + } + + private ICompilationUnit createTestTypeConverterWithObjectType() throws Exception { + this.createAnnotationAndMembers("TypeConverter", "String name(); Class dataType() default void.class; Class objectType() default void.class "); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.TYPE_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@TypeConverter(objectType=Foo.class)"); + } + }); + } + + private ICompilationUnit createTestTypeConverterWithName() throws Exception { + this.createAnnotationAndMembers("TypeConverter", "String name(); Class dataType() default void.class; Class objectType() default void.class "); + return this.createTestType(new DefaultAnnotationWriter() { + @Override + public Iterator<String> imports() { + return new ArrayIterator<String>(EclipseLinkJPA.TYPE_CONVERTER); + } + @Override + public void appendIdFieldAnnotationTo(StringBuilder sb) { + sb.append("@TypeConverter(name=\"bar\")"); + } + }); + } + + public void testTypeConverterAnnotation() throws Exception { + ICompilationUnit cu = this.createTestTypeConverter(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER)); + + attributeResource.removeAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertNull(attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER)); + + attributeResource.addAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertNotNull(attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER)); + } + + public void testGetTypeDataType() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithDataType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getDataType()); + } + + public void testSetDataType() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithDataType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getDataType()); + + converter.setDataType("Bar"); + assertEquals("Bar", converter.getDataType()); + + assertSourceContains("@TypeConverter(dataType=Bar.class)", cu); + } + + public void testSetDataTypeNull() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithDataType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getDataType()); + + converter.setDataType(null); + assertNull(converter.getDataType()); + + assertSourceContains("@TypeConverter", cu); + assertSourceDoesNotContain("dataType", cu); + } + + public void testGetTypeObjectType() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithObjectType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getObjectType()); + } + + public void testSetObjectType() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithObjectType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getObjectType()); + + converter.setObjectType("Bar"); + assertEquals("Bar", converter.getObjectType()); + + assertSourceContains("@TypeConverter(objectType=Bar.class)", cu); + } + + public void testSetObjectTypeNull() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithObjectType(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("Foo", converter.getObjectType()); + + converter.setObjectType(null); + assertNull(converter.getObjectType()); + + assertSourceContains("@TypeConverter", cu); + assertSourceDoesNotContain("objectType", cu); + } + + public void testGetName() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("bar", converter.getName()); + } + + public void testSetName() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName("foo"); + assertEquals("foo", converter.getName()); + + assertSourceContains("@TypeConverter(name=\"foo\")", cu); + } + + public void testSetNameNull() throws Exception { + ICompilationUnit cu = this.createTestTypeConverterWithName(); + JavaResourcePersistentType typeResource = buildJavaTypeResource(cu); + JavaResourcePersistentAttribute attributeResource = typeResource.fields().next(); + + TypeConverterAnnotation converter = (TypeConverterAnnotation) attributeResource.getAnnotation(EclipseLinkJPA.TYPE_CONVERTER); + assertEquals("bar", converter.getName()); + + converter.setName(null); + assertNull(converter.getName()); + + assertSourceContains("@TypeConverter", cu); + assertSourceDoesNotContain("name=", cu); + } +} |