Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java')
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConvertAnnotationTests.java106
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/ConverterAnnotationTests.java157
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/JptEclipseLinkCoreJavaResourceModelTests.java4
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/StructConverterAnnotationTests.java157
-rw-r--r--jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/resource/java/TypeConverterAnnotationTests.java209
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);
+ }
+}

Back to the top