Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaFactory.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverride.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverrideContainer.java46
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverride.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverrideContainer.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseColumn.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseJoinColumn.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ColumnMapping.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/DiscriminatorColumn.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumn.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTable.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTableRelationshipStrategy.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/NamedColumn.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideContainer.java132
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Override_.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAssociationOverride.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseColumn.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseJoinColumn.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumn.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTableRelationshipStrategy.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyNamedColumn.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverride.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverrideRelationship.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyTable.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyUniqueConstraint.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReferenceTable.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Table.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/TypeMapping.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/UniqueConstraint.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAssociationOverride.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAttributeOverride.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseColumn.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseJoinColumn.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualColumn.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinColumn.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinTable.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualNamedColumn.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverride.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverrideRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualPrimaryKeyJoinColumn.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualReferenceTable.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualTable.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualUniqueConstraint.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverride.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverrideContainer.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverrideContainer.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseColumn.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseJoinColumn.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaColumn.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaDiscriminatorColumn.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaJoinColumn.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinColumnRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinTableRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMultiRelationshipMapping.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaNamedColumn.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverride.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideContainer.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideRelationship.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAssociationOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseColumn.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseJoinColumn.java46
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyJoinColumn.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyNamedColumn.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyOverride.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyTable.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaTable.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAssociationOverride.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualColumn.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinColumn.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinTable.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverrideRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualUniqueConstraint.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverride.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverrideContainer.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverrideContainer.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseColumn.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseJoinColumn.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmColumn.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmDiscriminatorColumn.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmJoinColumn.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmNamedColumn.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverride.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideContainer.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAssociationOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseColumn.java44
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseJoinColumn.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyJoinColumn.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyNamedColumn.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyOverride.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyTable.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmTable.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAssociationOverride.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAttributeOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualColumn.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinColumn.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinTable.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverride.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverrideRelationship.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualPrimaryKeyJoinColumn.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualSecondaryTable.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualUniqueConstraint.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmXmlContextNodeFactory.java201
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/AbstractJpaFactory.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TableTextRangeResolver.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TypeMappingTools.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseColumn.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java34
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBasicMapping.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java150
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaIdMapping.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinColumnRelationshipStrategy.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinTableRelationshipStrategy.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMappingRelationship.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumn.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumnTextRangeResolver.java34
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaOverride.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaTypeMapping.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualBaseColumn.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualNamedColumn.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualOverride.java62
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualReferenceTable.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualTable.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToManyRelationship.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToOneRelationship.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappedByRelationshipStrategy.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappingJoinColumnRelationshipStrategy.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToManyRelationship.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToOneRelationship.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOverrideJoinColumnRelationshipStrategy.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaVirtualJoinTable.java121
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBaseColumnTextRangeResolver.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaJoinColumnTextRangeResolver.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNamedColumnTextRangeResolver.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOverrideTextRangeResolver.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaPrimaryKeyJoinColumnTextRangeResolver.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTableTextRangeResolver.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseColumn.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBasicMapping.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java226
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmIdMapping.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinColumnRelationshipStrategy.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinTableRelationshipStrategy.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappingRelationship.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumn.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumnTextRangeResolver.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualBaseColumn.java34
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualNamedColumn.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualReferenceTable.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualTable.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlContextNodeFactory.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToManyRelationship.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToOneRelationship.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappedByRelationshipStrategy.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinColumnRelationshipStrategy.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinTableRelationshipStrategy.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToManyRelationship.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToOneRelationship.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOverrideJoinColumnRelationshipStrategy.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualJoinTable.java140
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.java167
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualSecondaryTable.java62
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/NullOrmJoinTableRelationshipStrategy.java16
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmBaseColumnTextRangeResolver.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmJoinColumnTextRangeResolver.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmNamedColumnTextRangeResolver.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmOverrideTextRangeResolver.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmPrimaryKeyJoinColumnTextRangeResolver.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmTableTextRangeResolver.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractJoinTableValidator.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractNamedColumnValidator.java113
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPersistentAttributeValidator.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTableValidator.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideInverseJoinColumnValidator.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinColumnValidator.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinTableValidator.java46
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideValidator.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideColumnValidator.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideValidator.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/BaseJoinColumnValidator.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/DiscriminatorColumnValidator.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/EntityPrimaryKeyJoinColumnValidator.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/InverseJoinColumnValidator.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinColumnValidator.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinTableValidator.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideColumnValidator.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyColumnValidator.java16
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/NamedColumnValidator.java15
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OneToOnePrimaryKeyJoinColumnValidator.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OverrideValidator.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PrimaryKeyJoinColumnValidator.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTableValidator.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/TableValidator.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaOverrideContainer.java46
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverride.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java62
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinColumn.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinTable.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaMappingJoinTableRelationshipStrategy.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOrderable.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOverrideRelationship.java118
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPrimaryKeyJoinColumn.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaSecondaryTable.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAssociationOverride.java43
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAttributeOverride.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualColumn.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualJoinColumn.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.java167
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideRelationship.java110
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualUniqueConstraint.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinColumnRelationshipStrategy.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinTableRelationshipStrategy.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverride.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverrideContainer.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmVirtualOverride.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinColumn.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinTable.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOrderable.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOverrideRelationship.java98
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPrimaryKeyJoinColumn.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmReferenceTable.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmSecondaryTable.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAssociationOverride.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAttributeOverride.java34
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualColumn.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualJoinColumn.java43
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualOverrideRelationship.java110
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualPrimaryKeyJoinColumn.java47
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualUniqueConstraint.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/NullOrmJoinColumnRelationshipStrategy.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaFactory2_0.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/CollectionTableValidator.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/OrderColumnValidator.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java82
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCollectionTable2_0.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaDerivedIdentity2_0.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaMapsIdDerivedIdentityStrategy2_0.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOrderColumn2_0.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOverrideJoinTableRelationshipStrategy2_0.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmCollectionTable2_0.java16
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmDerivedIdentity2_0.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmMapsIdDerivedIdentityStrategy2_0.java145
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmOverrideJoinTableRelationshipStrategy2_0.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/JpaFactory2_0.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/AssociationOverrideContainer2_0.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/DerivableIdMapping2_0.java (renamed from jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappedByRelationshipMapping2_0.java)14
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/EmbeddedIdMapping2_0.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/IdMapping2_0.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappingRelationshipStrategy2_0.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MapsIdDerivedIdentityStrategy2_0.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyAssociationOverride2_0.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyOverrideRelationship2_0.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/SingleRelationshipMapping2_0.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/VirtualOverrideRelationship2_0.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverride2_0.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverrideContainer2_0.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAttributeOverrideContainer2_0.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinColumnRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinTableRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingMappedByRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingRelationshipStrategy2_0.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaOverrideContainer2_0.java71
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaVirtualAssociationOverride2_0.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverride2_0.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverrideContainer2_0.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinColumnRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinTableRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingMappedByRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingRelationshipStrategy2_0.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOrderColumn2_0.java7
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOverrideRelationship2_0.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmVirtualAssociationOverride2_0.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java10
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_1/context/EclipseLinkPersistentAttributeValidator.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java6
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java5
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java8
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java4
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java16
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java49
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java46
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaAssociationOverride2_0Tests.java7
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0Tests.java28
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java28
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0Tests.java36
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java36
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaManyToOneMappingTests.java26
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaOneToOneMappingTests.java28
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java28
-rw-r--r--jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/Eclipselink2_0OrmManyToOneMappingTests.java28
340 files changed, 6011 insertions, 3387 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties
index 7f086f7a25..1cae819255 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/property_files/jpa_validation.properties
@@ -175,7 +175,7 @@ VIRTUAL_PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_REFERENCED_COLUMN_NAME=In implied pri
### Overrides ###
ATTRIBUTE_OVERRIDE_INVALID_TYPE=Persistent type of override attribute \"{0}\" cannot be resolved
-ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED=Attributes (or subattributes of an attribute) that are mapped by a relationship should not be overridden.
+ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED=An ID attribute derived from a relationship mapping cannot be overridden.
VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS=In implied association override \"{0}\", name must be specified when there are multiple inverse join columns
VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS=In implied association override \"{0}\", referenced column name must be specified when there are multiple inverse join columns
VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_UNRESOLVED_NAME=In implied association override \"{0}\", inverse join column \"{1}\" cannot be resolved on table \"{2}\"
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaFactory.java
index b4238bb037..47577aa1b0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaFactory.java
@@ -12,12 +12,13 @@ package org.eclipse.jpt.jpa.core;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jpt.common.core.JptResourceModel;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.JpaRootContextNode;
import org.eclipse.jpt.jpa.core.context.MappingFile;
import org.eclipse.jpt.jpa.core.context.PersistentType;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
@@ -25,7 +26,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaBasicMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaDiscriminatorColumn;
@@ -57,6 +57,8 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaQuery;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryHint;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.context.java.JavaSequenceGenerator;
import org.eclipse.jpt.jpa.core.context.java.JavaTable;
@@ -107,16 +109,20 @@ import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource;
* context model objects.
* <p>
* Assumes a base JPA project context structure
- * corresponding to the JPA spec:
- * <pre>
- * RootContext
- * |- persistence.xml
- * |- persistence unit(s)
- * |- mapping file(s) (e.g. orm.xml)
- * | |- persistent type mapping(s) (e.g. Entity)
- * | |- persistent attribute mapping(s) (e.g. Basic)
- * |- persistent type mapping(s)
- * </pre>
+ * corresponding to the JPA spec:<ul>
+ * <li>RootContext<ul>
+ * <li>persistence.xml<ul>
+ * <li>persistence unit(s)<ul>
+ * <li>mapping file(s) (e.g. <code>orm.xml</code>)<ul>
+ * <li>type mapping(s) (e.g. Entity)<ul>
+ * <li>attribute mapping(s) (e.g. Basic)
+ * </ul>
+ * </ul>
+ * <li>type mapping(s)
+ * </ul>
+ * </ul>
+ * </ul>
+ * </ul>
* ... and associated objects.
*<p>
* Provisional API: This interface is part of an interim API that is still
@@ -210,7 +216,7 @@ public interface JpaFactory
JavaJoinTable buildJavaJoinTable(JavaJoinTableRelationshipStrategy parent, Table.Owner owner);
- JavaVirtualJoinTable buildJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable);
+ JavaVirtualJoinTable buildJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, ReadOnlyTable.Owner owner, ReadOnlyJoinTable overriddenTable);
JavaColumn buildJavaColumn(JavaJpaContextNode parent, JavaColumn.Owner owner);
@@ -218,9 +224,9 @@ public interface JpaFactory
JavaDiscriminatorColumn buildJavaDiscriminatorColumn(JavaEntity parent, JavaDiscriminatorColumn.Owner owner);
- JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent, JavaJoinColumn.Owner owner, JoinColumnAnnotation joinColumnAnnotation);
+ JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, JoinColumnAnnotation joinColumnAnnotation);
- JavaVirtualJoinColumn buildJavaVirtualJoinColumn(JavaJpaContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn);
+ JavaVirtualJoinColumn buildJavaVirtualJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn);
JavaSecondaryTable buildJavaSecondaryTable(JavaEntity parent, Table.Owner owner, SecondaryTableAnnotation tableAnnotation);
@@ -230,7 +236,7 @@ public interface JpaFactory
JavaGeneratedValue buildJavaGeneratedValue(JavaIdMapping parent, GeneratedValueAnnotation generatedValueAnnotation);
- JavaPrimaryKeyJoinColumn buildJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation);
+ JavaPrimaryKeyJoinColumn buildJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaReadOnlyBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation);
JavaAttributeOverrideContainer buildJavaAttributeOverrideContainer(JavaJpaContextNode parent, JavaAttributeOverrideContainer.Owner owner);
@@ -258,7 +264,7 @@ public interface JpaFactory
JavaUniqueConstraint buildJavaUniqueConstraint(JavaJpaContextNode parent, UniqueConstraint.Owner owner, UniqueConstraintAnnotation constraintAnnotation);
- JavaVirtualUniqueConstraint buildJavaVirtualUniqueConstraint(JavaJpaContextNode parent, UniqueConstraint uniqueConstraint);
+ JavaVirtualUniqueConstraint buildJavaVirtualUniqueConstraint(JavaJpaContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint);
JavaEnumeratedConverter buildJavaEnumeratedConverter(JavaAttributeMapping parent, EnumeratedAnnotation annotation);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverride.java
index 2e34373553..b171530b47 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverride.java
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Association override
+ * <em>Specified</em> association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -24,11 +24,12 @@ package org.eclipse.jpt.jpa.core.context;
public interface AssociationOverride
extends Override_, ReadOnlyAssociationOverride
{
- VirtualAssociationOverride convertToVirtual();
-
- OverrideRelationship getRelationship();
-
void initializeFrom(ReadOnlyAssociationOverride oldOverride);
void initializeFromVirtual(ReadOnlyAssociationOverride virtualOverride);
+
+ // covariant overrides
+ VirtualAssociationOverride convertToVirtual();
+
+ OverrideRelationship getRelationship();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverrideContainer.java
index 3155aad2cc..d65ffc57bf 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AssociationOverrideContainer.java
@@ -10,9 +10,6 @@
package org.eclipse.jpt.jpa.core.context;
import java.util.ListIterator;
-import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
-import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
/**
* Association override container.
@@ -30,32 +27,28 @@ import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
public interface AssociationOverrideContainer
extends OverrideContainer
{
- ListIterator<? extends ReadOnlyAssociationOverride> overrides();
- ReadOnlyAssociationOverride getOverrideNamed(String name);
- ListIterator<? extends AssociationOverride> specifiedOverrides();
- AssociationOverride getSpecifiedOverride(int index);
- AssociationOverride getSpecifiedOverrideNamed(String name);
- ListIterator<? extends VirtualAssociationOverride> virtualOverrides();
- VirtualAssociationOverride convertOverrideToVirtual(Override_ specifiedOverride);
- AssociationOverride convertOverrideToSpecified(VirtualOverride virtualOverride);
-
/**
- * Return the relationship mapping with the given attribute name.
- * Return null if it does not exist. This relationship mapping
- * will be found in the mapped superclass, not in the owning entity
+ * Return the relationship mapping for the specified attribute.
+ * Return <code>null</code> if it does not exist. This relationship mapping
+ * will be found in the mapped superclass or embeddable type whose mapping
+ * is being overridden, not in the owning entity
*/
RelationshipMapping getRelationshipMapping(String attributeName);
/**
* Return the relationship with the specified attribute name.
*/
- Relationship resolveOverriddenRelationship(String attributeName);
-
- JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+ ReadOnlyRelationship resolveOverriddenRelationship(String attributeName);
- JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver);
+ // covariant overrides
+ ListIterator<? extends ReadOnlyAssociationOverride> overrides();
+ ReadOnlyAssociationOverride getOverrideNamed(String name);
+ ListIterator<? extends AssociationOverride> specifiedOverrides();
+ AssociationOverride getSpecifiedOverride(int index);
+ AssociationOverride getSpecifiedOverrideNamed(String name);
+ ListIterator<? extends VirtualAssociationOverride> virtualOverrides();
+ VirtualAssociationOverride convertOverrideToVirtual(Override_ specifiedOverride);
+ AssociationOverride convertOverrideToSpecified(VirtualOverride virtualOverride);
// ********** owner **********
@@ -63,12 +56,9 @@ public interface AssociationOverrideContainer
interface Owner
extends OverrideContainer.Owner
{
- Relationship resolveOverriddenRelationship(String attributeName);
-
- JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver);
+ /**
+ * @see AssociationOverrideContainer#resolveOverriddenRelationship(String)
+ */
+ ReadOnlyRelationship resolveOverriddenRelationship(String attributeName);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverride.java
index e3cf50a22c..4ec7c27029 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Attribute override.
+ * <em>Specified</em> attribute override.
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -24,11 +24,12 @@ package org.eclipse.jpt.jpa.core.context;
public interface AttributeOverride
extends Override_, ReadOnlyAttributeOverride
{
- VirtualAttributeOverride convertToVirtual();
-
- Column getColumn();
-
void initializeFrom(ReadOnlyAttributeOverride oldOverride);
void initializeFromVirtual(ReadOnlyAttributeOverride oldOverride);
+
+ // covariant overrides
+ VirtualAttributeOverride convertToVirtual();
+
+ Column getColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverrideContainer.java
index d4d1369e42..e3a51dad74 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/AttributeOverrideContainer.java
@@ -27,6 +27,15 @@ import java.util.ListIterator;
public interface AttributeOverrideContainer
extends OverrideContainer
{
+ /**
+ * Return the column of the mapping or attribute override for the specified
+ * attribute. Return <code>null</code> if it does not exist. This
+ * column mapping/attribute override will be found in the mapped superclass
+ * (or embeddable), not in the owning entity.
+ */
+ ReadOnlyColumn resolveOverriddenColumn(String attributeName);
+
+ // covariant overrides
ListIterator<? extends ReadOnlyAttributeOverride> overrides();
ReadOnlyAttributeOverride getOverrideNamed(String name);
ListIterator<? extends AttributeOverride> specifiedOverrides();
@@ -36,14 +45,6 @@ public interface AttributeOverrideContainer
VirtualAttributeOverride convertOverrideToVirtual(Override_ specifiedOverride);
AttributeOverride convertOverrideToSpecified(VirtualOverride virtualOverride);
- /**
- * Return the column of the mapping or attribute override with the specified
- * attribute name. Return <code>null</code> if it does not exist. This
- * column mapping/attribute override will be found in the mapped superclass
- * (or embeddable), not in the owning entity.
- */
- Column resolveOverriddenColumn(String attributeName);
-
// ********** owner **********
@@ -53,6 +54,6 @@ public interface AttributeOverrideContainer
/**
* @see AttributeOverrideContainer#resolveOverriddenColumn(String)
*/
- Column resolveOverriddenColumn(String attributeName);
+ ReadOnlyColumn resolveOverriddenColumn(String attributeName);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseColumn.java
index 1b63c9bd71..1b2c9c73ea 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
-import java.util.Iterator;
-
/**
* column or join column
* <p>
@@ -31,36 +29,4 @@ public interface BaseColumn
void setSpecifiedNullable(Boolean nullable);
void setSpecifiedInsertable(Boolean insertable);
void setSpecifiedUpdatable(Boolean updatable);
-
- boolean tableNameIsInvalid();
-
- //TODO This is used by ColumnComposite to get a list of possible associated tables,
- //but right now that list isn't going to update in the UI except when we repopulate
- /**
- * Return a list of table names that are valid for this column
- */
- Iterator<String> candidateTableNames();
-
-
- // ********** owner **********
-
- /**
- * Interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides).
- */
- interface Owner
- extends NamedColumn.Owner
- // ReadOnlyBaseColumn does not define an Owner
- {
- /**
- * return whether the given table cannot be explicitly specified
- * in the column's 'table' element
- */
- boolean tableNameIsInvalid(String tableName);
-
- /**
- * Return a list of table names that are valid for this column
- */
- Iterator<String> candidateTableNames();
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseJoinColumn.java
index 8cefbf942e..669769cd13 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/BaseJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
-import org.eclipse.jpt.jpa.db.Table;
-
/**
* Specified
* <ul>
@@ -30,29 +28,4 @@ public interface BaseJoinColumn
extends NamedColumn, ReadOnlyBaseJoinColumn
{
void setSpecifiedReferencedColumnName(String value);
-
- /**
- * Return the wrapper for the referenced column datasource table
- */
- Table getReferencedColumnDbTable();
-
- boolean referencedColumnIsResolved();
-
- boolean isVirtual();
-
-
- // ********** owner **********
-
- /**
- * Interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides).
- */
- interface Owner
- extends ReadOnlyBaseJoinColumn.Owner, NamedColumn.Owner
- {
- /**
- * Return the wrapper for the datasource table for the referenced column
- */
- Table getReferencedColumnDbTable();
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ColumnMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ColumnMapping.java
index 9fa16f69b1..a3d40f4940 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ColumnMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ColumnMapping.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -22,7 +22,7 @@ package org.eclipse.jpt.jpa.core.context;
* @since 2.0
*/
public interface ColumnMapping
- extends AttributeMapping, BaseColumn.Owner
+ extends AttributeMapping, ReadOnlyBaseColumn.Owner
{
Column getColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/DiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/DiscriminatorColumn.java
index 6b7d22d13f..e9d60c2029 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/DiscriminatorColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/DiscriminatorColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2005, 2011 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.
@@ -72,7 +72,7 @@ public interface DiscriminatorColumn
* (but pretty much just entities)
*/
interface Owner
- extends NamedColumn.Owner
+ extends ReadOnlyNamedColumn.Owner
{
/**
* Return the default discriminator column length
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumn.java
index 42d2edf02d..900dde8078 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -28,20 +28,9 @@ public interface JoinColumn
* Initialize the join column from the specified old join column.
*/
void initializeFrom(ReadOnlyJoinColumn oldJoinColumn);
-
+
/**
* Initialize the join column from the specified old virtual join column.
*/
void initializeFromVirtual(ReadOnlyJoinColumn virtualJoinColumn);
-
-
- /**
- * interface allowing join columns to be used in multiple places
- * (e.g. 1:1 mappings and join tables)
- */
- interface Owner
- extends ReadOnlyJoinColumn.Owner, BaseJoinColumn.Owner, BaseColumn.Owner
- {
- // combine interfaces
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTable.java
index 7a95d1b11a..1fbeba8c73 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -39,7 +39,7 @@ public interface JoinTable
* Convert the join table's default inverse join column to a specified
* inverse join column.
*/
- void convertDefaultToSpecifiedInverseJoinColumn();
+ void convertDefaultInverseJoinColumnToSpecified();
ListIterator<? extends JoinColumn> inverseJoinColumns();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTableRelationshipStrategy.java
index 74bf5f21b9..8aa2e7dc53 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinTableRelationshipStrategy.java
@@ -9,9 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
-import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
-
/**
* Join table relationship strategy.
* <p>
@@ -36,11 +33,4 @@ public interface JoinTableRelationshipStrategy
void initializeFromVirtual(ReadOnlyJoinTableRelationshipStrategy virtualStrategy);
JoinTable getJoinTable();
-
- boolean validatesAgainstDatabase();
-
- JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/NamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/NamedColumn.java
index c9374996a3..5b493c1995 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/NamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/NamedColumn.java
@@ -9,10 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
-import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
-import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.db.Table;
-
/**
* Specified
* <ul>
@@ -37,35 +33,4 @@ public interface NamedColumn
void setSpecifiedName(String name);
void setColumnDefinition(String columnDefinition);
-
-
- // ********** database stuff **********
-
- /**
- * Return the wrapper for the datasource table
- */
- Table getDbTable();
-
- /**
- * Return whether the column is found on the datasource.
- */
- boolean isResolved();
-
-
- // ********** owner **********
-
- /**
- * Interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides).
- */
- interface Owner
- extends ReadOnlyNamedColumn.Owner
- {
- /**
- * Return the database table for the specified table name.
- */
- Table resolveDbTable(String tableName);
-
- JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver);
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideContainer.java
index d01155645d..eb032de7c6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -32,79 +32,78 @@ public interface OverrideContainer
extends JpaContextNode
{
/**
- * Return the type mapping that this override is contained in
+ * Return the type mapping that contains the override container.
+ * For example:<ul>
+ * <li>for an entity, this would be the entity itself
+ * <li>for an embedded, this would be type mapping where the embedded is
+ * declared, as opposed to the type mapping the embedded references
+ * </ul>
*/
TypeMapping getTypeMapping();
/**
* Return the type mapping that contains the attributes/associations to
- * be overridden. (Though the type mapping may not <em>directly</em>
- * own them (i.e. they may be on a supertype mapping).
- * (For example: for an entity, this would be the supertype mapping of
- * that entity; for an embedded, this would be the target type mapping
- * of the embedded.)
+ * be overridden; though the type mapping may not <em>directly</em>
+ * own them (e.g. they may be owned by a supertype mapping).
+ * For example:<ul>
+ * <li>for an entity, this would be the entity's supertype mapping
+ * <li>for an embedded, this would be the embedded's target type mapping
+ * </ul>
*/
TypeMapping getOverridableTypeMapping();
/**
- * Return the names of all attributes that can be overridden
+ * Return the names of all the attributes that can be overridden
+ * (i.e. an override must have a name from this list).
+ * This is usually just all of the overridable names of the overridable
+ * type mapping.
+ * @see #getOverridableTypeMapping()
*/
Iterator<String> allOverridableNames();
/**
- * Convert the specified specified override to <em>virtual</em>.
- * Return the new override.
- */
- VirtualOverride convertOverrideToVirtual(Override_ specifiedOverride);
-
- /**
- * Convert the specified virtual override to <em>specified</em>.
- * Return the new override.
- */
- Override_ convertOverrideToSpecified(VirtualOverride virtualOverride);
-
- /**
- * return whether the given table cannot be explicitly specified
- * in the column or join column's 'table' element
+ * Return whether the specified table cannot be explicitly specified
+ * as the table for an override's column or join column.
*/
boolean tableNameIsInvalid(String tableName);
/**
- * Return the names of tables that are valid for the overrides column or join columns.
+ * Return the names of tables that are valid for an override's
+ * column or join column.
*/
Iterator<String> candidateTableNames();
/**
- * Return the database table for the specified table name
+ * Return the database table for the specified table name.
*/
Table resolveDbTable(String tableName);
/**
- * Return the name of the table which the column belongs to by default
+ * Return the name of the default table for an override's column or join column.
*/
String getDefaultTableName();
- JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver);
+ JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideTextRangeResolver textRangeResolver);
- JptValidator buildValidator(Override_ override, OverrideTextRangeResolver textRangeResolver);
+ JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver);
// ********** overrides **********
/**
- * Return the overrides, both specified and virtual.
+ * Return the overrides, both <em>specified</em> and <em>virtual</em>.
*/
- // TODO bjv change to a collection?
+ // TODO bjv change to an iterable
ListIterator<? extends ReadOnlyOverride> overrides();
/**
- * Return the number of overrides, both specified and default.
+ * Return the number of overrides, both <em>specified</em> and <em>virtual</em>.
*/
int overridesSize();
/**
* Return the override with the specified name,
- * whether specified or virtual.
+ * whether <em>specified</em> or <em>virtual</em>.
*/
// TODO look into getting rid of this;
// we should probably use #getSpecifiedOverrideNamed(String)
@@ -114,102 +113,107 @@ public interface OverrideContainer
// ********** specified overrides **********
/**
- * Return the specified overrides.
- * No add/remove for specified overrides, the
- * virtual overrides will be populated from the owner, then use
- * {@link VirtualOverride#convertToSpecified()} to add/remove the
- * override from the container.
+ * Return the <em>specified</em> overrides. The container has no API for
+ * adding or removing <em>specified</em> overrides. The container's
+ * <em>virtual</em> overrides are built according to the list of overridable
+ * attribute names returned by the container's parent. <em>Specified</em>
+ * overrides can be created via {@link VirtualOverride#convertToSpecified()}.
+ * <em>Specified</em> overrides can be remvoed via
+ * {@link Override_#convertToVirtual()}.
*/
ListIterator<? extends Override_> specifiedOverrides();
String SPECIFIED_OVERRIDES_LIST = "specifiedOverrides"; //$NON-NLS-1$
/**
- * Return the number of specified overrides.
+ * Return the number of <em>specified</em> overrides.
*/
int specifiedOverridesSize();
/**
- * Return the specified override at the specified index.
+ * Return the <em>specified</em> override at the specified index.
*/
Override_ getSpecifiedOverride(int index);
/**
- * Move the specified override from the source index to the target index.
+ * Move the <em>specified</em> override from the source index to the
+ * target index.
*/
void moveSpecifiedOverride(int targetIndex, int sourceIndex);
+ /**
+ * Return the <em>specified</em> override at the specified index.
+ */
Override_ getSpecifiedOverrideNamed(String name);
+ /**
+ * Convert the specified <em>specified</em> override to <em>virtual</em>.
+ * Return the new override.
+ */
+ VirtualOverride convertOverrideToVirtual(Override_ specifiedOverride);
+
// ********** virtual overrides **********
/**
- * Return the virtual overrides, those not specified.
+ * Return the <em>virtual</em> overrides (i.e. those not <em>specified</em>).
*/
// TODO change to a collection?
ListIterator<? extends VirtualOverride> virtualOverrides();
String VIRTUAL_OVERRIDES_LIST = "virtualOverrides"; //$NON-NLS-1$
/**
- * Return the number of virtual overrides.
+ * Return the number of <em>virtual</em> overrides.
*/
int virtualOverridesSize();
+ /**
+ * Convert the specified <em>virtual</em> override to <em>specified</em>.
+ * Return the new override.
+ */
+ Override_ convertOverrideToSpecified(VirtualOverride virtualOverride);
- // ********** owner **********
+
+ // ********** container owner **********
interface Owner
{
/**
- * Return the mapping of the persistent type where the container is defined.
- * (For example: for an entity, this would be the entity; for an embedded,
- * this would be the type mapping where the embedded is defined.)
+ * @see OverrideContainer#getTypeMapping()
*/
TypeMapping getTypeMapping();
/**
- * Return the type mapping that contains the attributes/associations to
- * be overridden. (Though the type mapping may not <em>directly</em>
- * own them (i.e. they may be on a supertype mapping).
- * (For example: for an entity, this would be the supertype mapping of
- * that entity; for an embedded, this would be the target type mapping
- * of the embedded.)
+ * @see OverrideContainer#getOverridableTypeMapping()
*/
TypeMapping getOverridableTypeMapping();
/**
- * Return all the names of the attributes/associations to be overridden.
- * This is usually just all of the overridable names of the overridable
- * type mapping.
- * @see #getOverridableTypeMapping()
+ * @see OverrideContainer#allOverridableNames()
*/
Iterator<String> allOverridableNames();
/**
- * Return the name of an override column's/join column's default table.
+ * @see OverrideContainer#getDefaultTableName()
*/
String getDefaultTableName();
/**
- * Return whether the specified table cannot be explicitly specified
- * by a column/join column.
+ * @see OverrideContainer#tableNameIsInvalid(String)
*/
boolean tableNameIsInvalid(String tableName);
/**
- * Return the database table for the specified table name.
+ * @see OverrideContainer#resolveDbTable(String)
*/
org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName);
/**
- * Return the table names that are valid for the override's column
- * or join columns
+ * @see OverrideContainer#candidateTableNames()
*/
Iterator<String> candidateTableNames();
- JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver);
+ JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver);
- JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver);
+ JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver);
}
-
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideRelationship.java
index f826819245..83d6803e66 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/OverrideRelationship.java
@@ -27,8 +27,6 @@ public interface OverrideRelationship
extends ReadOnlyOverrideRelationship,
JoinColumnRelationship
{
- AssociationOverride getAssociationOverride();
-
void initializeFromVirtual(ReadOnlyOverrideRelationship virtualRelationship);
void initializeFromVirtualJoinColumnRelationship(ReadOnlyJoinColumnRelationship virtualRelationship);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Override_.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Override_.java
index d4da2d94d6..efaeabe78d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Override_.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Override_.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * <ul>
+ * <em>Specified</em><ul>
* <li>attribute override
* <li>association override
* </ul>
@@ -25,14 +25,16 @@ package org.eclipse.jpt.jpa.core.context;
*/
// the class name "Override" is sorta taken: java.lang.Override
// maybe if it weren't in the java.lang package we would take it on, but... :)
+// very little code will directly refer to this interface, so the underscore
+// isn't *too* evil...
public interface Override_
extends ReadOnlyOverride
{
void setName(String value);
/**
- * Convert the override to a virtual override.
- * Return the new override.
+ * Convert the <em>specified</em> override to a <em>virtual</em> override.
+ * Return the new <em>virtual</em> override.
* @see #isVirtual()
*/
VirtualOverride convertToVirtual();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAssociationOverride.java
index a2956964d5..039065c53e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAssociationOverride.java
@@ -21,8 +21,12 @@ package org.eclipse.jpt.jpa.core.context;
public interface ReadOnlyAssociationOverride
extends ReadOnlyOverride
{
- AssociationOverrideContainer getContainer();
-
+ /**
+ * Return the overridden relationship mapping.
+ * Return <code>null</code> if it does not exist. This relationship mapping
+ * will be found in the mapped superclass or embeddable type, not in the
+ * owning entity
+ */
RelationshipMapping getMapping();
ReadOnlyOverrideRelationship getRelationship();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAttributeOverride.java
index c82fa690fd..f3e0078e3f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -21,7 +21,5 @@ package org.eclipse.jpt.jpa.core.context;
public interface ReadOnlyAttributeOverride
extends ReadOnlyOverride
{
- AttributeOverrideContainer getContainer();
-
ReadOnlyColumn getColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseColumn.java
index c4bf083c72..03d3c921e8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import java.util.Iterator;
+
/**
* Read-only
@@ -87,4 +89,36 @@ public interface ReadOnlyBaseColumn
boolean isDefaultUpdatable();
String DEFAULT_UPDATABLE_PROPERTY = "defaultUpdatable"; //$NON-NLS-1$
boolean DEFAULT_UPDATABLE = true;
+
+
+ // ********** misc **********
+
+ boolean tableNameIsInvalid();
+
+ /**
+ * Return a list of table names that are valid for this column
+ */
+ Iterator<String> candidateTableNames();
+
+
+ // ********** owner **********
+
+ /**
+ * Interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides).
+ */
+ interface Owner
+ extends NamedColumn.Owner
+ {
+ /**
+ * return whether the given table cannot be explicitly specified
+ * in the column's 'table' element
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * Return a list of table names that are valid for this column
+ */
+ Iterator<String> candidateTableNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseJoinColumn.java
index 41608b1a68..d880764b28 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyBaseJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import org.eclipse.jpt.jpa.db.Table;
+
/**
* Read-only
* <ul>
@@ -39,6 +41,16 @@ public interface ReadOnlyBaseJoinColumn
// ********** misc **********
+ /**
+ * Return the wrapper for the referenced column datasource table
+ */
+ Table getReferencedColumnDbTable();
+
+ boolean referencedColumnIsResolved();
+
+ // TODO bjv rename?
+ boolean isVirtual();
+
boolean isDefault();
@@ -51,6 +63,11 @@ public interface ReadOnlyBaseJoinColumn
interface Owner
extends ReadOnlyNamedColumn.Owner
{
+ /**
+ * Return the wrapper for the datasource table for the referenced column
+ */
+ Table getReferencedColumnDbTable();
+
boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn);
/**
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumn.java
index 170cffca0f..a03dbde4d5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -26,8 +26,7 @@ public interface ReadOnlyJoinColumn
* (e.g. basic mappings and attribute overrides).
*/
interface Owner
- extends ReadOnlyBaseJoinColumn.Owner
- // ReadOnlyBaseColumn does not define an Owner
+ extends ReadOnlyBaseJoinColumn.Owner, ReadOnlyBaseColumn.Owner
{
/**
* The target of the relationship will usually be the target entity.
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTableRelationshipStrategy.java
index 7727e9eab2..3a35c3addf 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTableRelationshipStrategy.java
@@ -9,6 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+
/**
* Read-only join table relationship strategy.
* <p>
@@ -40,4 +43,10 @@ public interface ReadOnlyJoinTableRelationshipStrategy
* Return the default name of the strategy's join table
*/
String getJoinTableDefaultName();
+
+ boolean validatesAgainstDatabase();
+
+ JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyNamedColumn.java
index 09afa25b07..593cfd293d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyNamedColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,6 +9,10 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Table;
+
/**
* Read-only
* <ul>
@@ -56,6 +60,19 @@ public interface ReadOnlyNamedColumn
String COLUMN_DEFINITION_PROPERTY = "columnDefinition"; //$NON-NLS-1$
+ // ********** database stuff **********
+
+ /**
+ * Return the column's datasource table.
+ */
+ Table getDbTable();
+
+ /**
+ * Return whether the column is found on the datasource.
+ */
+ boolean isResolved();
+
+
// ********** owner **********
/**
@@ -78,5 +95,12 @@ public interface ReadOnlyNamedColumn
* Return the default column name.
*/
String getDefaultColumnName();
+
+ /**
+ * Return the database table for the specified table name.
+ */
+ Table resolveDbTable(String tableName);
+
+ JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverride.java
index f1481d7ede..f49749a26e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,8 +9,13 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import java.util.Iterator;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.db.Table;
+
/**
- * Read-only<ul>
+ * Read-only (<em>specified</em> or <em>virtual</em>)<ul>
* <li>attribute override
* <li>association override
* </ul>
@@ -23,18 +28,46 @@ package org.eclipse.jpt.jpa.core.context;
public interface ReadOnlyOverride
extends JpaContextNode
{
- OverrideContainer getContainer();
-
String getName();
String NAME_PROPERTY = "name"; //$NON-NLS-1$
/**
* Return <code>true</code> if the override is not explicitly specified on
- * the owning object (i.e. it occurs by default); return <code>false</code>
- * if the override is explicitly specified on the owning object.
+ * the override's parent (i.e. it occurs by default); return <code>false</code>
+ * if the override is explicitly specified on the override's parent.
*
* @see Override_#convertToVirtual()
* @see VirtualOverride#convertToSpecified()
*/
+ // TODO bjv rename?
boolean isVirtual();
+
+ /**
+ * @see OverrideContainer#getTypeMapping()
+ */
+ TypeMapping getTypeMapping();
+
+ /**
+ * Return whether the specified table cannot be explicitly specified
+ * as the table for the override's column or join column.
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * Return the names of tables that are valid for the override's
+ * column or join column.
+ */
+ Iterator<String> candidateTableNames();
+
+ /**
+ * Return the database table for the specified table name.
+ */
+ Table resolveDbTable(String tableName);
+
+ /**
+ * Return the name of the default table for the override's column or join column.
+ */
+ String getDefaultTableName();
+
+ JptValidator buildColumnValidator(ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverrideRelationship.java
index 82d9a2e076..8ca8284888 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyOverrideRelationship.java
@@ -9,6 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import java.util.Iterator;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.db.Table;
+
/**
* Read-only association override relationship
* <p>
@@ -23,7 +28,33 @@ package org.eclipse.jpt.jpa.core.context;
public interface ReadOnlyOverrideRelationship
extends ReadOnlyJoinColumnRelationship
{
- ReadOnlyAssociationOverride getAssociationOverride();
+ String getAttributeName();
+
+ /**
+ * @see ReadOnlyOverride#getTypeMapping()
+ */
+ TypeMapping getTypeMapping();
+
+ /**
+ * Return whether the specified table cannot be explicitly specified
+ * as the table for the relationship's join column.
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * Return the names of tables that are valid for the relationship's
+ * join column.
+ */
+ Iterator<String> candidateTableNames();
+
+ /**
+ * Return the database table for the specified table name.
+ */
+ Table resolveDbTable(String tableName);
+
+ String getDefaultTableName();
+
+ JptValidator buildColumnValidator(ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver);
void initializeOnSpecified(OverrideRelationship specifiedRelationship);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyTable.java
index 82e86fc3ee..6820ddbdd0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -10,6 +10,8 @@
package org.eclipse.jpt.jpa.core.context;
import java.util.ListIterator;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.db.Catalog;
import org.eclipse.jpt.jpa.db.Schema;
import org.eclipse.jpt.jpa.db.SchemaContainer;
@@ -38,6 +40,16 @@ public interface ReadOnlyTable
String getDefaultName();
String DEFAULT_NAME_PROPERTY = "defaultName"; //$NON-NLS-1$
+ /**
+ * Return whether the table can be resolved to a table on the database.
+ */
+ boolean isResolved();
+
+ /**
+ * Return the corresponding database table.
+ */
+ org.eclipse.jpt.jpa.db.Table getDbTable();
+
// ********** schema **********
@@ -51,6 +63,17 @@ public interface ReadOnlyTable
String getDefaultSchema();
String DEFAULT_SCHEMA_PROPERTY = "defaultSchema"; //$NON-NLS-1$
+ /**
+ * Return whether the table's schema can be resolved to a schema on the
+ * database.
+ */
+ boolean schemaIsResolved();
+
+ /**
+ * Return the corresponding database schema.
+ */
+ Schema getDbSchema();
+
// ********** catalog **********
@@ -64,6 +87,17 @@ public interface ReadOnlyTable
String getDefaultCatalog();
String DEFAULT_CATALOG_PROPERTY = "defaultCatalog"; //$NON-NLS-1$
+ /**
+ * Return whether the table has a catalog and it can be resolved to a
+ * catalog on the database.
+ */
+ boolean catalogIsResolved();
+
+ /**
+ * Return the corresponding database catalog.
+ */
+ Catalog getDbCatalog();
+
// ********** unique constraints **********
@@ -73,25 +107,26 @@ public interface ReadOnlyTable
ReadOnlyUniqueConstraint getUniqueConstraint(int index);
- // ********** database **********
+ // ********** misc **********
/**
- * Return the corresponding database table.
+ * Return the corresponding database schema container (catalog or database).
*/
- org.eclipse.jpt.jpa.db.Table getDbTable();
+ SchemaContainer getDbSchemaContainer();
/**
- * Return the corresponding database schema.
+ * Return whether the table is validated against a live database connection.
*/
- Schema getDbSchema();
+ boolean validatesAgainstDatabase();
- /**
- * Return the corresponding database catalog.
- */
- Catalog getDbCatalog();
+
+ // ********** owner **********
/**
- * Return the corresponding database schema container (catalog or database).
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
*/
- SchemaContainer getDbSchemaContainer();
+ interface Owner {
+ JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyUniqueConstraint.java
index e98d8b0317..4273e163ca 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyUniqueConstraint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
+import java.util.Iterator;
+
/**
* Read-only database unique constraint
* <p>
@@ -36,4 +38,14 @@ public interface ReadOnlyUniqueConstraint
* Return the column name at the specified index.
*/
String getColumnName(int index);
+
+
+ // ********** owner **********
+
+ /**
+ * All containers must implement this interface.
+ */
+ interface Owner {
+ Iterator<String> candidateUniqueConstraintColumnNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReferenceTable.java
index 7a210e7036..fa5b2f781b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReferenceTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -34,7 +34,7 @@ public interface ReferenceTable
/**
* Convert the reference table's default join column to a specified join column.
*/
- void convertDefaultToSpecifiedJoinColumn();
+ void convertDefaultJoinColumnToSpecified();
ListIterator<? extends JoinColumn> joinColumns();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Table.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Table.java
index c475063105..4561781a39 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Table.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Table.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -10,8 +10,6 @@
package org.eclipse.jpt.jpa.core.context;
import java.util.ListIterator;
-import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
-import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
/**
* <ul>
@@ -46,43 +44,9 @@ public interface Table
void removeUniqueConstraint(UniqueConstraint uniqueConstraint);
void moveUniqueConstraint(int targetIndex, int sourceIndex);
-
- // ********** misc **********
-
/**
* Return whether the table is specified in the
* (Java or XML) resource.
*/
boolean isSpecifiedInResource();
-
- /**
- * Return whether the table can be resolved to a table on the database.
- */
- boolean isResolved();
-
- /**
- * Return whether the table's schema can be resolved to a schema on the
- * database.
- */
- boolean schemaIsResolved();
-
- /**
- * Return whether the table has a catalog and it can be resolved to a
- * catalog on the database.
- */
- boolean catalogIsResolved();
-
- /**
- * Return whether the table is validated against a live database connection.
- */
- boolean validatesAgainstDatabase();
-
- /**
- * interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides)
- */
- interface Owner
- {
- JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver);
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/TypeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/TypeMapping.java
index 7786bc9bdb..dea91b312d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/TypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/TypeMapping.java
@@ -106,13 +106,21 @@ public interface TypeMapping
Iterator<String> allAssociatedTableNames();
/**
- * Return the resolved associated db table with the specified name.
+ * Return the resolved <em>associated</em> db table with the specified name;
+ * i.e. the specified table must be among those associated with the type
+ * mapping otherwise return <code>null</code>.
+ * <p>
+ * <strong>NB:</strong> The spec does allow for columns or join columns to
+ * specify a schema and/or catalog; so the results can be unpredictable....
*/
org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName);
/**
* Return whether the specified table is invalid for any annotations
- * associated with the type mapping.
+ * associated with the type mapping. The table name is case-
+ * <em>sensitive</em> when the database connection is missing or inactive;
+ * when the database connection is active, case-sensitivity is determined
+ * by the database.
*/
boolean tableNameIsInvalid(String tableName);
@@ -148,6 +156,11 @@ public interface TypeMapping
*/
boolean attributeMappingKeyAllowed(String attributeMappingKey);
+ /**
+ * Return whether the attribute with the specified name is a derived ID.
+ */
+ boolean attributeIsDerivedId(String attributeName);
+
// ********** attribute overrides **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/UniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/UniqueConstraint.java
index 3b6fa6241b..04682f9363 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/UniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/UniqueConstraint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context;
-import java.util.Iterator;
-
/**
* database unique constraint
* <p>
@@ -62,14 +60,4 @@ public interface UniqueConstraint
* unique constraint's list of column names.
*/
void moveColumnName(int targetIndex, int sourceIndex);
-
-
- // ********** owner **********
-
- /**
- * All containers must implement this interface.
- */
- interface Owner {
- Iterator<String> candidateUniqueConstraintColumnNames();
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAssociationOverride.java
index 32aefc25da..e6de19472f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAssociationOverride.java
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual association override
+ * <em>Virtual</em> association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -21,9 +21,10 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualAssociationOverride
extends VirtualOverride, ReadOnlyAssociationOverride
{
+ ReadOnlyRelationship resolveOverriddenRelationship();
+
+ // covariant overrides
AssociationOverride convertToSpecified();
VirtualOverrideRelationship getRelationship();
-
- Relationship resolveOverriddenRelationship();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAttributeOverride.java
index ba2787c54f..1436e77340 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual attribute override
+ * <em>Virtual</em> attribute override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -21,6 +21,7 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualAttributeOverride
extends VirtualOverride, ReadOnlyAttributeOverride
{
+ // covariant overrides
AttributeOverride convertToSpecified();
VirtualColumn getColumn();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseColumn.java
index 7d956dc5fc..69408b68e6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -24,5 +24,5 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualBaseColumn
extends VirtualNamedColumn, ReadOnlyBaseColumn
{
- BaseColumn getOverriddenColumn();
+ ReadOnlyBaseColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseJoinColumn.java
index 2eabed2eb4..494dda70a1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualBaseJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -21,5 +21,5 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualBaseJoinColumn
extends VirtualNamedColumn, ReadOnlyBaseJoinColumn
{
- BaseJoinColumn getOverriddenColumn();
+ ReadOnlyBaseJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualColumn.java
index 43486daa38..29dac38adb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -21,7 +21,7 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualColumn
extends VirtualBaseColumn, ReadOnlyColumn
{
- Column getOverriddenColumn();
+ ReadOnlyColumn getOverriddenColumn();
// ********** owner **********
@@ -30,11 +30,11 @@ public interface VirtualColumn
* Interface allowing the virtual column to be get the column it overrides.
*/
interface Owner
- extends ReadOnlyColumn.Owner
+ extends ReadOnlyBaseColumn.Owner
{
/**
* Return the column overridden by the virtual column.
*/
- Column resolveOverriddenColumn();
+ ReadOnlyColumn resolveOverriddenColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinColumn.java
index a49d3ef972..73ab8e8335 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -21,5 +21,5 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualJoinColumn
extends VirtualBaseJoinColumn, VirtualBaseColumn, ReadOnlyJoinColumn
{
- JoinColumn getOverriddenColumn();
+ ReadOnlyJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinTable.java
index 16b9f1dc39..c144623532 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualJoinTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -30,5 +30,5 @@ public interface VirtualJoinTable
VirtualJoinColumn getSpecifiedInverseJoinColumn(int index);
VirtualJoinColumn getDefaultInverseJoinColumn();
- JoinTable getOverriddenTable();
+ ReadOnlyJoinTable getOverriddenTable();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualNamedColumn.java
index 175e487a12..7a7316315a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualNamedColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,8 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual
- * <ul>
+ * <em>Virtual</em><ul>
* <li>column
* <li>join column
* </ul>
@@ -27,5 +26,5 @@ public interface VirtualNamedColumn
/**
* Return the virtual column's wrapped column.
*/
- NamedColumn getOverriddenColumn();
+ ReadOnlyNamedColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverride.java
index 791c6aac1a..3aac4c73e1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual<ul>
+ * <em>Virtual</em><ul>
* <li>attribute override
* <li>association override
* </ul>
@@ -24,8 +24,8 @@ public interface VirtualOverride
extends ReadOnlyOverride
{
/**
- * Convert the virtual override to a specified override.
- * Return the new override.
+ * Convert the <em>virtual</em> override to a <em>specified</em> override.
+ * Return the new <em>specified</em> override.
* @see #isVirtual()
*/
Override_ convertToSpecified();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverrideRelationship.java
index 728eed9a15..693897dc7b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualOverrideRelationship.java
@@ -24,5 +24,5 @@ public interface VirtualOverrideRelationship
extends ReadOnlyOverrideRelationship,
VirtualJoinColumnRelationship
{
- VirtualAssociationOverride getAssociationOverride();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualPrimaryKeyJoinColumn.java
index 4a2ef7c118..92af7bf637 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualPrimaryKeyJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,7 +10,10 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual primary key join column
+ * Virtual primary key join column. There are only <em>orm.xml</em> virtual
+ * primary key join columns; used to represent the default columns taken from
+ * the Java entity. Therefore, it's arguable whether we need this interface; but
+ * it makes the inheritance hierarchies a bit more consistent....
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -21,5 +24,9 @@ package org.eclipse.jpt.jpa.core.context;
public interface VirtualPrimaryKeyJoinColumn
extends VirtualBaseJoinColumn, ReadOnlyPrimaryKeyJoinColumn
{
+ /**
+ * This is not the best method name; we are simply overloading the meaning
+ * of the inherited method.
+ */
PrimaryKeyJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualReferenceTable.java
index 1d14fdbadf..f6f7fdb925 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualReferenceTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -28,5 +28,5 @@ public interface VirtualReferenceTable
VirtualJoinColumn getSpecifiedJoinColumn(int index);
VirtualJoinColumn getDefaultJoinColumn();
- ReferenceTable getOverriddenTable();
+ ReadOnlyReferenceTable getOverriddenTable();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualRelationship.java
index bc64dc7c0e..e7bf4c856a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualRelationship.java
@@ -23,5 +23,5 @@ public interface VirtualRelationship
{
VirtualRelationshipStrategy getStrategy();
- Relationship resolveOverriddenRelationship();
+ ReadOnlyRelationship resolveOverriddenRelationship();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualTable.java
index e168fa3985..fb99190b62 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -23,8 +23,8 @@ import java.util.ListIterator;
public interface VirtualTable
extends ReadOnlyTable
{
+ ReadOnlyTable getOverriddenTable();
+
ListIterator<? extends VirtualUniqueConstraint> uniqueConstraints();
VirtualUniqueConstraint getUniqueConstraint(int index);
-
- Table getOverriddenTable();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualUniqueConstraint.java
index 32b9128a1d..1ae02a89bc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/VirtualUniqueConstraint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,7 +10,10 @@
package org.eclipse.jpt.jpa.core.context;
/**
- * Virtual database unique constraint
+ * Virtual database unique constraint. <em>Virtual</em> unique constraints
+ * are held by <em>virtual</em> join tables (which are held by <em>virtual</em>
+ * association overrides) and, in the case or <code>orm.xml</code>,
+ * <em>virtual</em> secondary tables.
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -24,5 +27,5 @@ public interface VirtualUniqueConstraint
/**
* Return the wrapped unique constraint.
*/
- UniqueConstraint getOverriddenUniqueConstraint();
+ ReadOnlyUniqueConstraint getOverriddenUniqueConstraint();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverride.java
index 1ceb4e962a..07f9c95e90 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverride.java
@@ -13,7 +13,7 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverride;
import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation;
/**
- * Java association override
+ * <em>Specified</em> Java association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverrideContainer.java
index b43e2ee1de..d963e33cd4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAssociationOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import java.util.ListIterator;
import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverrideRelationship;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
/**
@@ -29,6 +30,15 @@ import org.eclipse.jpt.jpa.core.context.VirtualOverride;
public interface JavaAssociationOverrideContainer
extends AssociationOverrideContainer, JavaOverrideContainer
{
+ /**
+ * Return the specified override's relationship.
+ * This is used by the <code>orm.xml</code> association override container
+ * when it is also using the Java container's override names.
+ * @see #getOverrideNames()
+ */
+ ReadOnlyOverrideRelationship getOverrideRelationship(String overrideName);
+
+ // covariant overrides
ListIterator<JavaReadOnlyAssociationOverride> overrides();
JavaReadOnlyAssociationOverride getOverrideNamed(String name);
ListIterator<JavaAssociationOverride> specifiedOverrides();
@@ -44,6 +54,6 @@ public interface JavaAssociationOverrideContainer
interface Owner
extends AssociationOverrideContainer.Owner, JavaOverrideContainer.Owner
{
- // combine two interfaces
+ // combine interfaces
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverride.java
index 093e0e8eca..5b992d9ed7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -13,7 +13,7 @@ import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.resource.java.AttributeOverrideAnnotation;
/**
- * Java attribute override
+ * <em>Specified</em> Java attribute override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverrideContainer.java
index 48bd48d7d5..5e8f23600e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaAttributeOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import java.util.ListIterator;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
/**
@@ -29,6 +30,15 @@ import org.eclipse.jpt.jpa.core.context.VirtualOverride;
public interface JavaAttributeOverrideContainer
extends AttributeOverrideContainer, JavaOverrideContainer
{
+ /**
+ * Return the specified override's column.
+ * This is used by the <code>orm.xml</code> attribute override container
+ * when it is also using the Java container's override names.
+ * @see #getOverrideNames()
+ */
+ ReadOnlyColumn getOverrideColumn(String overrideName);
+
+ // covariant overrides
ListIterator<JavaReadOnlyAttributeOverride> overrides();
JavaReadOnlyAttributeOverride getOverrideNamed(String name);
ListIterator<JavaAttributeOverride> specifiedOverrides();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseColumn.java
index 3e92a1890e..bca2d1b354 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.resource.java.BaseColumnAnnotation;
@@ -27,25 +25,7 @@ import org.eclipse.jpt.jpa.core.resource.java.BaseColumnAnnotation;
* @since 2.0
*/
public interface JavaBaseColumn
- extends BaseColumn, JavaNamedColumn
+ extends BaseColumn, JavaNamedColumn, JavaReadOnlyBaseColumn
{
BaseColumnAnnotation getColumnAnnotation();
-
- /**
- * Return the (best guess) text location of the column's table.
- */
- TextRange getTableTextRange(CompilationUnit astRoot);
-
-
- // ********** owner **********
-
- /**
- * interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides)
- */
- interface Owner
- extends JavaNamedColumn.Owner, BaseColumn.Owner
- {
- // combine two interfaces
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseJoinColumn.java
index 9a54c73cce..043eeae1f1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaBaseJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
/**
@@ -26,24 +24,7 @@ import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
* @since 2.3
*/
public interface JavaBaseJoinColumn
- extends BaseJoinColumn, JavaNamedColumn
+ extends BaseJoinColumn, JavaNamedColumn, JavaReadOnlyBaseJoinColumn
{
- /**
- * Return the (best guess) text location of the join column's
- * referenced column name.
- */
- TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot);
-
-
- // ********** owner **********
-
- /**
- * interface allowing join columns to be used in multiple places
- * (e.g. 1:1 mappings and join tables)
- */
- interface Owner
- extends BaseJoinColumn.Owner, JavaNamedColumn.Owner
- {
- // combine interfaces
- }
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaColumn.java
index f2117d070e..786fc76b2d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -29,10 +29,15 @@ public interface JavaColumn
{
CompleteColumnAnnotation getColumnAnnotation();
+
// ********** owner **********
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
interface Owner
- extends JavaBaseColumn.Owner
+ extends JavaReadOnlyBaseColumn.Owner
{
CompleteColumnAnnotation getColumnAnnotation();
void removeColumnAnnotation();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaDiscriminatorColumn.java
index 18ca8a5820..170f2eb345 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaDiscriminatorColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaDiscriminatorColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -36,9 +36,8 @@ public interface JavaDiscriminatorColumn
* interface allowing columns to be used in multiple places
*/
interface Owner
- extends JavaNamedColumn.Owner, DiscriminatorColumn.Owner
+ extends DiscriminatorColumn.Owner, JavaReadOnlyNamedColumn.Owner
{
- // combine two interfaces
+ // combine interfaces
}
-
-} \ No newline at end of file
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaJoinColumn.java
index b8510b1d5a..f6b7c4e69c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -25,16 +25,7 @@ import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
* @since 2.0
*/
public interface JavaJoinColumn
- extends JoinColumn, JavaBaseJoinColumn, JavaBaseColumn
+ extends JoinColumn, JavaReadOnlyJoinColumn, JavaBaseJoinColumn, JavaBaseColumn
{
JoinColumnAnnotation getColumnAnnotation();
-
-
- // ********** owner **********
-
- interface Owner
- extends JoinColumn.Owner, JavaBaseJoinColumn.Owner, JavaBaseColumn.Owner
- {
- // combine interfaces
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinColumnRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinColumnRelationship.java
index 20cd4e734d..8dfcbb3dd6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinColumnRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinColumnRelationship.java
@@ -22,5 +22,5 @@ public interface JavaMappingJoinColumnRelationship
extends JavaJoinColumnRelationship,
JavaMappingRelationship
{
- // combine various interfaces
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinTableRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinTableRelationship.java
index 027552a3c5..7ee0f2b173 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinTableRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMappingJoinTableRelationship.java
@@ -22,5 +22,5 @@ public interface JavaMappingJoinTableRelationship
extends JavaJoinTableRelationship,
JavaMappingRelationship
{
- // combine various interfaces
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMultiRelationshipMapping.java
index 595c23129a..d0ceb37255 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMultiRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaMultiRelationshipMapping.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import org.eclipse.jpt.jpa.core.context.MultiRelationshipMapping;
/**
- * Java multi-valued (1:m, m:m) relationship mapping.
+ * Java multi-valued relationship (1:m, m:m) mapping.
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaNamedColumn.java
index 7607bad56f..6fbca4a8f3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaNamedColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,8 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation;
@@ -33,29 +31,7 @@ import org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation;
* @since 2.0
*/
public interface JavaNamedColumn
- extends NamedColumn, JavaJpaContextNode
+ extends NamedColumn, JavaReadOnlyNamedColumn
{
NamedColumnAnnotation getColumnAnnotation();
-
- /**
- * Return the (best guess) text location of the column's name.
- */
- TextRange getNameTextRange(CompilationUnit astRoot);
-
-
- // ********** owner **********
-
- /**
- * interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides)
- */
- interface Owner
- extends NamedColumn.Owner
- {
- /**
- * Return the column owner's text range. This can be returned by the
- * column when its annotation is not present.
- */
- TextRange getValidationTextRange(CompilationUnit astRoot);
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverride.java
index a7d3f41694..d7ccd3b444 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,13 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.resource.java.OverrideAnnotation;
/**
- * Java override
+ * <em>Specified</em> Java override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -29,12 +27,8 @@ import org.eclipse.jpt.jpa.core.resource.java.OverrideAnnotation;
public interface JavaOverride
extends Override_, JavaReadOnlyOverride
{
- JavaVirtualOverride convertToVirtual();
-
OverrideAnnotation getOverrideAnnotation();
- /**
- * Return the (best guess) text location of the override's name.
- */
- TextRange getNameTextRange(CompilationUnit astRoot);
+ // covariant overrides
+ JavaVirtualOverride convertToVirtual();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideContainer.java
index 63c480bb7a..62933f3ea9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -32,6 +32,17 @@ import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember;
public interface JavaOverrideContainer
extends OverrideContainer, JavaJpaContextNode
{
+ /**
+ * Return the names of all the container's overrides, specified and virtual.
+ * This is used by the <code>orm.xml</code> override container so any
+ * invalid Java overrides (i.e. overrides for a non-existent or
+ * non-overridable attributes) are included among the <code>orm.xml</code>
+ * virtual overrides.
+ * @see org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmEntity.OverrideContainerOwner#getJavaOverrideNames()
+ */
+ Iterable<String> getOverrideNames();
+
+ // covariant overrides
ListIterator<? extends JavaReadOnlyOverride> overrides();
JavaReadOnlyOverride getOverrideNamed(String name);
ListIterator<? extends JavaOverride> specifiedOverrides();
@@ -41,16 +52,6 @@ public interface JavaOverrideContainer
JavaVirtualOverride convertOverrideToVirtual(Override_ specifiedOverride);
JavaOverride convertOverrideToSpecified(VirtualOverride virtualOverride);
- /**
- * JPA 2.0
- * <p>
- * Return a prefix (<em>without</em> the following <code>'.'</code>)
- * that may be prepended to the override name.
- * Return <code>null</code> if no prefix is supported.
- */
- String getPossiblePrefix();
- String getWritePrefix();
-
// ********** owner **********
@@ -60,37 +61,5 @@ public interface JavaOverrideContainer
JavaResourcePersistentMember getResourcePersistentMember();
TextRange getValidationTextRange(CompilationUnit astRoot);
-
- /**
- * JPA 2.0
- * <p>
- * Return the prefix (<em>without</em> the following <code>'.'</code>)
- * to be prepended to the override name.
- */
- String getWritePrefix();
-
- /**
- * JPA 2.0
- * <p>
- * Return a prefix (<em>without</em> the following <code>'.'</code>)
- * that may be prepended to the override name.
- * Return <code>null</code> if no prefix is supported.
- * <p>
- * JPA 2.0 supports the prefixes <code>"value"</code> and <code>"key"</code>.
- */
- String getPossiblePrefix();
-
- /**
- * JPA 2.0
- * <p>
- * This is necessary for JPA 2.0 because an override annotation for an
- * element collection can have a name with a prefix that indicates
- * whether the override applies to element collection's embedded key or
- * value. Return whether the specified override name, which may have a
- * prefix, is relevant to the override container.
- * <p>
- * JPA 2.0 supports the prefixes <code>"value"</code> and <code>"key"</code>.
- */
- boolean isRelevant(String overrideName);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideRelationship.java
index bd7bfedc49..486182aeca 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaOverrideRelationship.java
@@ -10,6 +10,7 @@
package org.eclipse.jpt.jpa.core.context.java;
import org.eclipse.jpt.jpa.core.context.OverrideRelationship;
+import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation;
/**
* Java association override relationship
@@ -27,5 +28,5 @@ public interface JavaOverrideRelationship
extends OverrideRelationship,
JavaJoinColumnRelationship
{
- JavaAssociationOverride getAssociationOverride();
+ AssociationOverrideAnnotation getOverrideAnnotation();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAssociationOverride.java
index 69afbc01ea..72aca913ba 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAssociationOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -23,5 +23,5 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
public interface JavaReadOnlyAssociationOverride
extends ReadOnlyAssociationOverride, JavaReadOnlyOverride
{
- JavaAssociationOverrideContainer getContainer();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAttributeOverride.java
index 1f552eeaee..151b828022 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -23,5 +23,5 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
public interface JavaReadOnlyAttributeOverride
extends ReadOnlyAttributeOverride, JavaReadOnlyOverride
{
- JavaAttributeOverrideContainer getContainer();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseColumn.java
new file mode 100644
index 0000000000..f2f463dc80
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseColumn.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+
+/**
+ * Java read-only column or join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaReadOnlyBaseColumn
+ extends ReadOnlyBaseColumn, JavaReadOnlyNamedColumn
+{
+ /**
+ * Return the (best guess) text location of the column's table.
+ */
+ TextRange getTableTextRange(CompilationUnit astRoot);
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
+ interface Owner
+ extends ReadOnlyBaseColumn.Owner, JavaReadOnlyNamedColumn.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseJoinColumn.java
new file mode 100644
index 0000000000..e391b7f967
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyBaseJoinColumn.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+
+/**
+ * Java read-only join column or primary key join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaReadOnlyBaseJoinColumn
+ extends ReadOnlyBaseJoinColumn, JavaReadOnlyNamedColumn
+{
+ /**
+ * Return the (best guess) text location of the join column's
+ * referenced column name.
+ */
+ TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot);
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing join columns to be used in multiple places
+ * (e.g. 1:1 mappings and join tables)
+ */
+ interface Owner
+ extends ReadOnlyBaseJoinColumn.Owner, JavaReadOnlyNamedColumn.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyJoinColumn.java
new file mode 100644
index 0000000000..8e7a5b4840
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyJoinColumn.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.java;
+
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+
+/**
+ * Java read-only join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ *
+ * @version 2.3
+ * @since 2.0
+ */
+public interface JavaReadOnlyJoinColumn
+ extends ReadOnlyJoinColumn, JavaReadOnlyBaseJoinColumn, JavaReadOnlyBaseColumn
+{
+ // ********** owner **********
+
+ interface Owner
+ extends ReadOnlyJoinColumn.Owner, JavaReadOnlyBaseJoinColumn.Owner, JavaReadOnlyBaseColumn.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyNamedColumn.java
new file mode 100644
index 0000000000..2f6b9d688c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyNamedColumn.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+
+/**
+ * Java read-only
+ * <ul>
+ * <li>column
+ * <li>join column
+ * <li>primary key join column
+ * <li>discriminator column
+ * <li>order column
+ * </ul>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaReadOnlyNamedColumn
+ extends ReadOnlyNamedColumn, JavaJpaContextNode
+{
+ /**
+ * Return the (best guess) text location of the column's name.
+ */
+ TextRange getNameTextRange(CompilationUnit astRoot);
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
+ interface Owner
+ extends NamedColumn.Owner
+ {
+ /**
+ * Return the column owner's text range. This can be returned by the
+ * column when its annotation is not present.
+ */
+ TextRange getValidationTextRange(CompilationUnit astRoot);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyOverride.java
index 530c455545..651e56ff29 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
/**
@@ -23,5 +25,8 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
public interface JavaReadOnlyOverride
extends ReadOnlyOverride, JavaJpaContextNode
{
- JavaOverrideContainer getContainer();
+ /**
+ * Return the (best guess) text location of the override's name.
+ */
+ TextRange getNameTextRange(CompilationUnit astRoot);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyTable.java
new file mode 100644
index 0000000000..b2b2d342d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaReadOnlyTable.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+
+/**
+ * Java read-only table
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaReadOnlyTable
+ extends ReadOnlyTable, JavaJpaContextNode
+{
+ TextRange getNameTextRange(CompilationUnit astRoot);
+ TextRange getSchemaTextRange(CompilationUnit astRoot);
+ TextRange getCatalogTextRange(CompilationUnit astRoot);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaTable.java
index e270eee2f1..15e8dfd953 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -10,8 +10,6 @@
package org.eclipse.jpt.jpa.core.context.java;
import java.util.ListIterator;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.resource.java.BaseTableAnnotation;
@@ -28,14 +26,10 @@ import org.eclipse.jpt.jpa.core.resource.java.BaseTableAnnotation;
* @since 2.0
*/
public interface JavaTable
- extends Table, JavaJpaContextNode
+ extends Table, JavaReadOnlyTable
{
BaseTableAnnotation getTableAnnotation();
- TextRange getNameTextRange(CompilationUnit astRoot);
- TextRange getSchemaTextRange(CompilationUnit astRoot);
- TextRange getCatalogTextRange(CompilationUnit astRoot);
-
ListIterator<JavaUniqueConstraint> uniqueConstraints();
JavaUniqueConstraint getUniqueConstraint(int index);
JavaUniqueConstraint addUniqueConstraint();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAssociationOverride.java
index 37ca150230..fd15ebd5b8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAssociationOverride.java
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import org.eclipse.jpt.jpa.core.context.VirtualAssociationOverride;
/**
- * Java virtual association override
+ * Java <em>virtual</em> association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAttributeOverride.java
index 8687426537..3791994e37 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import org.eclipse.jpt.jpa.core.context.VirtualAttributeOverride;
/**
- * Java virtual attribute override
+ * Java <em>virtual</em> attribute override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualColumn.java
index 6b5161bfa6..0841b9ccfe 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.VirtualColumn;
/**
@@ -22,25 +22,25 @@ import org.eclipse.jpt.jpa.core.context.VirtualColumn;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface JavaVirtualColumn
- extends VirtualColumn, JavaJpaContextNode
+ extends VirtualColumn, JavaReadOnlyBaseColumn
{
/**
* The overridden column can be either a Java join column or an
* <code>orm.xml</code> join column; so we don't change the return type
* here.
*/
- Column getOverriddenColumn();
+ ReadOnlyColumn getOverriddenColumn();
// ********** owner **********
interface Owner
- extends VirtualColumn.Owner
+ extends VirtualColumn.Owner, JavaReadOnlyBaseColumn.Owner
{
/**
* The overridden column can be either a Java column or an
* <code>orm.xml</code> column; so we don't change the return type here.
*/
- Column resolveOverriddenColumn();
+ ReadOnlyColumn resolveOverriddenColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinColumn.java
index f3f4a2d24d..f223e2f187 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.VirtualJoinColumn;
/**
@@ -22,12 +22,12 @@ import org.eclipse.jpt.jpa.core.context.VirtualJoinColumn;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface JavaVirtualJoinColumn
- extends VirtualJoinColumn, JavaJpaContextNode
+ extends VirtualJoinColumn, JavaReadOnlyJoinColumn
{
/**
* The overridden join column can be either a Java join column or an
* <code>orm.xml</code> join column; so we don't change the return type
* here.
*/
- JoinColumn getOverriddenColumn();
+ ReadOnlyJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinTable.java
index c6da69c644..e2da3a12db 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualJoinTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,6 +10,7 @@
package org.eclipse.jpt.jpa.core.context.java;
import java.util.ListIterator;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.VirtualJoinTable;
/**
@@ -22,7 +23,7 @@ import org.eclipse.jpt.jpa.core.context.VirtualJoinTable;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface JavaVirtualJoinTable
- extends VirtualJoinTable, JavaJpaContextNode
+ extends VirtualJoinTable, JavaReadOnlyTable
{
JavaVirtualJoinTableRelationshipStrategy getParent();
@@ -38,4 +39,11 @@ public interface JavaVirtualJoinTable
ListIterator<JavaVirtualJoinColumn> specifiedInverseJoinColumns();
JavaVirtualJoinColumn getSpecifiedInverseJoinColumn(int index);
JavaVirtualJoinColumn getDefaultInverseJoinColumn();
+
+ /**
+ * The overridden table can be either a Java table
+ * or an <code>orm.xml</code> table; so we don't change the
+ * return type here.
+ */
+ public ReadOnlyJoinTable getOverriddenTable();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverride.java
index 576234b13b..c8427e4766 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.java;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
/**
- * Java virtual<ul>
+ * Java <em>virtual</em><ul>
* <li>attribute override
* <li>association override
* </ul>
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverrideRelationship.java
index 970fb1ba45..5a63e37edc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualOverrideRelationship.java
@@ -24,5 +24,5 @@ public interface JavaVirtualOverrideRelationship
extends VirtualOverrideRelationship,
JavaVirtualJoinColumnRelationship
{
- JavaVirtualAssociationOverride getAssociationOverride();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualUniqueConstraint.java
index d2363e24e7..e3429579fb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/JavaVirtualUniqueConstraint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.java;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.VirtualUniqueConstraint;
/**
@@ -29,5 +29,5 @@ public interface JavaVirtualUniqueConstraint
* or an <code>orm.xml</code> unique constraint; so we don't change the
* return type here.
*/
- UniqueConstraint getOverriddenUniqueConstraint();
+ ReadOnlyUniqueConstraint getOverriddenUniqueConstraint();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverride.java
index 697d5f397e..f3ee4a768b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverride.java
@@ -13,7 +13,7 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverride;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
/**
- * <code>orm.xml</code> association override
+ * <em>Specified</em> <code>orm.xml</code> association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverrideContainer.java
index bf2956fa23..563e15bae3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAssociationOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -31,6 +31,7 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
public interface OrmAssociationOverrideContainer
extends AssociationOverrideContainer, OrmOverrideContainer
{
+ // covariant overrides
ListIterator<OrmReadOnlyAssociationOverride> overrides();
OrmReadOnlyAssociationOverride getOverrideNamed(String name);
ListIterator<OrmAssociationOverride> specifiedOverrides();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverride.java
index 1a3ea76ffe..b42c1826ce 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -13,7 +13,7 @@ import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeOverride;
/**
- * <code>orm.xml</code> attribute override
+ * <em>Specified</em> <code>orm.xml</code> attribute override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverrideContainer.java
index f74f7175ac..9419a6cc89 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmAttributeOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -31,6 +31,9 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeOverride;
public interface OrmAttributeOverrideContainer
extends AttributeOverrideContainer, OrmOverrideContainer
{
+ void initializeFrom(OrmAttributeOverrideContainer oldContainer);
+
+ // covariant overrides
ListIterator<OrmReadOnlyAttributeOverride> overrides();
OrmReadOnlyAttributeOverride getOverrideNamed(String name);
ListIterator<OrmAttributeOverride> specifiedOverrides();
@@ -40,8 +43,6 @@ public interface OrmAttributeOverrideContainer
OrmVirtualAttributeOverride convertOverrideToVirtual(Override_ specifiedOverride);
OrmAttributeOverride convertOverrideToSpecified(VirtualOverride virtualOverride);
- void initializeFrom(OrmAttributeOverrideContainer oldContainer);
-
// ********** owner **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseColumn.java
index a25338f4a5..f4079361d0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,7 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlColumn;
@@ -26,25 +25,7 @@ import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlColumn;
* @since 2.0
*/
public interface OrmBaseColumn
- extends BaseColumn, OrmNamedColumn
+ extends BaseColumn, OrmNamedColumn, OrmReadOnlyBaseColumn
{
AbstractXmlColumn getXmlColumn();
-
- /**
- * Return the (best guess) text location of the column's table.
- */
- TextRange getTableTextRange();
-
-
- // ********** owner **********
-
- /**
- * interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides)
- */
- interface Owner
- extends OrmNamedColumn.Owner, BaseColumn.Owner
- {
- // combine two interfaces
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseJoinColumn.java
index 32600b6ec1..aefd651dee 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmBaseJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,8 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
+import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn;
/**
* <code>orm.xml</code> join column or primary key join column
@@ -25,24 +25,8 @@ import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
* @since 2.0
*/
public interface OrmBaseJoinColumn
- extends BaseJoinColumn, OrmNamedColumn
+ extends BaseJoinColumn, OrmNamedColumn, OrmReadOnlyBaseJoinColumn
{
- /**
- * Return the (best guess) text location of the column's
- * referenced column name.
- */
- TextRange getReferencedColumnNameTextRange();
-
-
- // ********** owner **********
-
- /**
- * interface allowing join columns to be used in multiple places
- * (e.g. 1:1 mappings and join tables)
- */
- interface Owner
- extends BaseJoinColumn.Owner, OrmNamedColumn.Owner
- {
- // combine two interfaces
- }
+ // TODO we need a common interface for XML join columns and pk join columns
+ AbstractXmlNamedColumn getXmlColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmColumn.java
index 0d5cde88fa..313fac9dd4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -37,12 +37,10 @@ public interface OrmColumn
* (e.g. basic mappings and attribute overrides)
*/
interface Owner
- extends OrmBaseColumn.Owner
+ extends OrmReadOnlyBaseColumn.Owner
{
XmlColumn getXmlColumn();
-
XmlColumn buildXmlColumn();
-
void removeXmlColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmDiscriminatorColumn.java
index 246a6581db..42f97da87b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmDiscriminatorColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmDiscriminatorColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -36,12 +36,10 @@ public interface OrmDiscriminatorColumn
* interface allowing discriminator columns to be used in multiple places
*/
interface Owner
- extends OrmNamedColumn.Owner, DiscriminatorColumn.Owner
+ extends DiscriminatorColumn.Owner, OrmReadOnlyNamedColumn.Owner
{
XmlDiscriminatorColumn getXmlColumn();
-
XmlDiscriminatorColumn buildXmlColumn();
-
void removeXmlColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmJoinColumn.java
index 2699ae3a4a..b2c7f54120 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -25,17 +25,7 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinColumn;
* @since 2.0
*/
public interface OrmJoinColumn
- extends JoinColumn, OrmBaseJoinColumn, OrmBaseColumn
+ extends JoinColumn, OrmReadOnlyJoinColumn, OrmBaseJoinColumn, OrmBaseColumn
{
XmlJoinColumn getXmlColumn();
-
-
- // ********** owner **********
-
- interface Owner
- extends JoinColumn.Owner, OrmBaseJoinColumn.Owner, OrmBaseColumn.Owner
- {
- // combine interfaces
- }
-
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmNamedColumn.java
index ff7236a4bd..da6ddfe211 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmNamedColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -9,12 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.NamedColumn;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn;
-
/**
* <code>orm.xml</code>
* <ul>
@@ -34,29 +31,7 @@ import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn;
* @since 2.0
*/
public interface OrmNamedColumn
- extends NamedColumn, XmlContextNode
+ extends NamedColumn, OrmReadOnlyNamedColumn
{
AbstractXmlNamedColumn getXmlColumn();
-
- /**
- * Return the (best guess) text location of the column's name.
- */
- TextRange getNameTextRange();
-
-
- // ********** owner **********
-
- /**
- * interface allowing columns to be used in multiple places
- * (e.g. basic mappings and attribute overrides)
- */
- interface Owner
- extends NamedColumn.Owner
- {
- /**
- * Return the column owner's text range. This can be returned by the
- * column when its annotation is not present.
- */
- TextRange getValidationTextRange();
- }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverride.java
index 2bd280da20..bd14dd1ee4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,12 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.resource.orm.XmlOverride;
/**
- * <code>orm.xml</code> override
+ * <em>Specified</em> <code>orm.xml</code> override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -25,12 +24,8 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlOverride;
public interface OrmOverride
extends Override_, OrmReadOnlyOverride
{
- OrmVirtualOverride convertToVirtual();
-
XmlOverride getXmlOverride();
- /**
- * Return the (best guess) text location of the override's name.
- */
- TextRange getNameTextRange();
+ // covariant overrides
+ OrmVirtualOverride convertToVirtual();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideContainer.java
index 6070d36550..7c59e2d496 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideContainer.java
@@ -33,8 +33,12 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlOverride;
public interface OrmOverrideContainer
extends OverrideContainer, XmlContextNode
{
- // we need this covariant override because there is no override *container*
- // element in the orm.xml (there is just a list of overrides)
+ // covariant overrides
+ /**
+ * We need this covariant override because there is no override
+ * <em>container</em> element in the <code>orm.xml</code> file;
+ * there is simply a list of overrides.
+ */
XmlContextNode getParent();
ListIterator<? extends OrmReadOnlyOverride> overrides();
OrmReadOnlyOverride getOverrideNamed(String name);
@@ -50,9 +54,27 @@ public interface OrmOverrideContainer
extends OverrideContainer.Owner
{
<T extends XmlOverride> EList<T> getXmlOverrides();
-
- OrmTypeMapping getTypeMapping();
+ /**
+ * Return the names of all the corresponding Java overrides, specified and
+ * virtual. Return <code>null</code> if the Java overrides are not relevant
+ * (i.e. the parent is not an entity, the parent entity has no
+ * corresponding Java entity, or the parent entity is <em>metadata
+ * complete</em>). Return an empty list if the Java overrides are
+ * <em>possible</em> but there are simply none.
+ * <p>
+ * <strong>NB:</strong> Unlike overrides associated with attribute
+ * mappings, the overrides associated with an <code>orm.xml</code>
+ * entity are <em>additive</em> to any specified Java overrides. An
+ * <code>orm.xml</code> override only overrides the Java override with
+ * the same name. [JPA spec 10.1.3.13-14; JPA 2.0 spec 12.2.3.14-15]
+ *
+ * @see org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer#getOverrideNames()
+ */
+ Iterable<String> getJavaOverrideNames();
+
TextRange getValidationTextRange();
+
+ OrmTypeMapping getTypeMapping();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideRelationship.java
index dd2f0f4baf..8e0a60dc59 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmOverrideRelationship.java
@@ -28,7 +28,5 @@ public interface OrmOverrideRelationship
extends OverrideRelationship,
OrmJoinColumnRelationship
{
- OrmAssociationOverride getAssociationOverride();
-
XmlAssociationOverride getXmlContainer();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAssociationOverride.java
index e751769020..0d680ecc39 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAssociationOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -23,5 +23,5 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
public interface OrmReadOnlyAssociationOverride
extends ReadOnlyAssociationOverride, OrmReadOnlyOverride
{
- OrmAssociationOverrideContainer getContainer();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAttributeOverride.java
index 344971592a..2e446c2455 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -23,5 +23,5 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
public interface OrmReadOnlyAttributeOverride
extends ReadOnlyAttributeOverride, OrmReadOnlyOverride
{
- OrmAttributeOverrideContainer getContainer();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseColumn.java
new file mode 100644
index 0000000000..652ff934c9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseColumn.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.orm;
+
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+
+/**
+ * <code>orm.xml</code> read-only column or join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmReadOnlyBaseColumn
+ extends ReadOnlyBaseColumn, OrmReadOnlyNamedColumn
+{
+ /**
+ * Return the (best guess) text location of the column's table.
+ */
+ TextRange getTableTextRange();
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
+ interface Owner
+ extends ReadOnlyBaseColumn.Owner, OrmReadOnlyNamedColumn.Owner
+ {
+ // combine two interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseJoinColumn.java
new file mode 100644
index 0000000000..e31619f90c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyBaseJoinColumn.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.orm;
+
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+
+/**
+ * <code>orm.xml</code> read-only join column or primary key join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmReadOnlyBaseJoinColumn
+ extends ReadOnlyBaseJoinColumn, OrmReadOnlyNamedColumn
+{
+ /**
+ * Return the (best guess) text location of the column's
+ * referenced column name.
+ */
+ TextRange getReferencedColumnNameTextRange();
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing join columns to be used in multiple places
+ * (e.g. 1:1 mappings and join tables)
+ */
+ interface Owner
+ extends ReadOnlyBaseJoinColumn.Owner, OrmReadOnlyNamedColumn.Owner
+ {
+ // combine two interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyJoinColumn.java
new file mode 100644
index 0000000000..25ab84a48e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyJoinColumn.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+
+/**
+ * <code>orm.xml</code> read-only join column
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ *
+ * @version 2.3
+ * @since 2.0
+ */
+public interface OrmReadOnlyJoinColumn
+ extends ReadOnlyJoinColumn, OrmReadOnlyBaseJoinColumn, OrmReadOnlyBaseColumn
+{
+ // ********** owner **********
+
+ interface Owner
+ extends ReadOnlyJoinColumn.Owner, OrmReadOnlyBaseJoinColumn.Owner, OrmReadOnlyBaseColumn.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyNamedColumn.java
new file mode 100644
index 0000000000..01dc613f00
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyNamedColumn.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.orm;
+
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+
+/**
+ * <code>orm.xml</code> read-only
+ * <ul>
+ * <li>column
+ * <li>join column
+ * <li>primary key join column
+ * <li>discriminator column
+ * <li>order column
+ * </ul>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmReadOnlyNamedColumn
+ extends ReadOnlyNamedColumn, XmlContextNode
+{
+ /**
+ * Return the (best guess) text location of the column's name.
+ */
+ TextRange getNameTextRange();
+
+
+ // ********** owner **********
+
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
+ interface Owner
+ extends NamedColumn.Owner
+ {
+ /**
+ * Return the column owner's text range. This can be returned by the
+ * column when its annotation is not present.
+ */
+ TextRange getValidationTextRange();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyOverride.java
index 410c599958..e38c0ac1a3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
@@ -24,5 +25,8 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode;
public interface OrmReadOnlyOverride
extends ReadOnlyOverride, XmlContextNode
{
- OrmOverrideContainer getContainer();
+ /**
+ * Return the (best guess) text location of the override's name.
+ */
+ TextRange getNameTextRange();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyTable.java
new file mode 100644
index 0000000000..d49312a8ac
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmReadOnlyTable.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.context.orm;
+
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+
+/**
+ * <code>orm.xml</code> read-only table
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmReadOnlyTable
+ extends ReadOnlyTable, XmlContextNode
+{
+ TextRange getNameTextRange();
+ TextRange getSchemaTextRange();
+ TextRange getCatalogTextRange();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmTable.java
index 0969a76ed5..c9fe562037 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -10,9 +10,7 @@
package org.eclipse.jpt.jpa.core.context.orm;
import java.util.ListIterator;
-import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Table;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
/**
* <code>orm.xml</code> table
@@ -27,12 +25,8 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode;
* @since 2.0
*/
public interface OrmTable
- extends Table, XmlContextNode
+ extends Table, OrmReadOnlyTable
{
- TextRange getNameTextRange();
- TextRange getSchemaTextRange();
- TextRange getCatalogTextRange();
-
ListIterator<OrmUniqueConstraint> uniqueConstraints();
OrmUniqueConstraint getUniqueConstraint(int index);
OrmUniqueConstraint addUniqueConstraint();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAssociationOverride.java
index a16dbcad5e..4023c5ab17 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAssociationOverride.java
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.orm;
import org.eclipse.jpt.jpa.core.context.VirtualAssociationOverride;
/**
- * <code>orm.xml</code> virtual association override
+ * <code>orm.xml</code> <em>virtual</em> association override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAttributeOverride.java
index 6c957c2b80..407053f9cd 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.orm;
import org.eclipse.jpt.jpa.core.context.VirtualAttributeOverride;
/**
- * Java virtual attribute override
+ * Java <em>virtual</em> attribute override
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualColumn.java
index ce33b3a81d..1deafbb7a2 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,9 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.VirtualColumn;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
/**
* <code>orm.xml</code> virtual column
@@ -23,25 +22,25 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface OrmVirtualColumn
- extends VirtualColumn, XmlContextNode
+ extends VirtualColumn, OrmReadOnlyBaseColumn
{
/**
* The overridden column can be either a Java join column or an
* <code>orm.xml</code> join column; so we don't change the return type
* here.
*/
- Column getOverriddenColumn();
+ ReadOnlyColumn getOverriddenColumn();
// ********** owner **********
interface Owner
- extends VirtualColumn.Owner
+ extends VirtualColumn.Owner, OrmReadOnlyBaseColumn.Owner
{
/**
* The overridden column can be either a Java column or an
* <code>orm.xml</code> column; so we don't change the return type here.
*/
- Column resolveOverriddenColumn();
+ ReadOnlyColumn resolveOverriddenColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinColumn.java
index 9a17a4a6d7..3c6f174550 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,9 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.VirtualJoinColumn;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
/**
* <code>orm.xml</code> virtual join column
@@ -23,12 +22,12 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface OrmVirtualJoinColumn
- extends VirtualJoinColumn, XmlContextNode
+ extends VirtualJoinColumn, OrmReadOnlyJoinColumn
{
/**
* The overridden join column can be either a Java join column or an
* <code>orm.xml</code> join column; so we don't change the return type
* here.
*/
- JoinColumn getOverriddenColumn();
+ ReadOnlyJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinTable.java
index 55892a2148..fc41b30297 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualJoinTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,8 +10,8 @@
package org.eclipse.jpt.jpa.core.context.orm;
import java.util.ListIterator;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.VirtualJoinTable;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
/**
* <code>orm.xml</code> virtual join table
@@ -23,7 +23,7 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface OrmVirtualJoinTable
- extends VirtualJoinTable, XmlContextNode
+ extends VirtualJoinTable, OrmReadOnlyTable
{
OrmVirtualJoinTableRelationshipStrategy getParent();
@@ -39,4 +39,11 @@ public interface OrmVirtualJoinTable
ListIterator<OrmVirtualJoinColumn> specifiedInverseJoinColumns();
OrmVirtualJoinColumn getSpecifiedInverseJoinColumn(int index);
OrmVirtualJoinColumn getDefaultInverseJoinColumn();
+
+ /**
+ * The overridden table can be either a Java table
+ * or an <code>orm.xml</code> table; so we don't change the
+ * return type here.
+ */
+ public ReadOnlyJoinTable getOverriddenTable();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverride.java
index 031174b0c3..92abbba1d7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.context.orm;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
/**
- * <code>orm.xml</code> virtual<ul>
+ * <code>orm.xml</code> <em>virtual</em><ul>
* <li>attribute override
* <li>association override
* </ul>
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverrideRelationship.java
index 4da970ad2b..aae36353b0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualOverrideRelationship.java
@@ -24,5 +24,5 @@ public interface OrmVirtualOverrideRelationship
extends VirtualOverrideRelationship,
OrmVirtualJoinColumnRelationship
{
- OrmVirtualAssociationOverride getAssociationOverride();
+ // combine interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualPrimaryKeyJoinColumn.java
index 8823e4fc10..77388244a9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualPrimaryKeyJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -10,11 +10,11 @@
package org.eclipse.jpt.jpa.core.context.orm;
import org.eclipse.jpt.jpa.core.context.VirtualPrimaryKeyJoinColumn;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
/**
- * <code>orm.xml</code> virtual primary key join column
+ * <code>orm.xml</code> virtual primary key join column. This represents
+ * a default column taken from the Java entity.
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -23,7 +23,12 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface OrmVirtualPrimaryKeyJoinColumn
- extends VirtualPrimaryKeyJoinColumn, XmlContextNode
+ extends VirtualPrimaryKeyJoinColumn, OrmReadOnlyBaseJoinColumn
{
+ /**
+ * This is not the best method name; we are simply overloading the meaning
+ * of the inherited method. A better method name would be something like
+ * <code>getJavaColumn()</code>
+ */
JavaPrimaryKeyJoinColumn getOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualSecondaryTable.java
index 46cc96082c..5f8a9971d7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualSecondaryTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -11,7 +11,6 @@ package org.eclipse.jpt.jpa.core.context.orm;
import java.util.ListIterator;
import org.eclipse.jpt.jpa.core.context.VirtualSecondaryTable;
-import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
/**
@@ -24,7 +23,7 @@ import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
* will almost certainly be broken (repeatedly) as the API evolves.
*/
public interface OrmVirtualSecondaryTable
- extends VirtualSecondaryTable, XmlContextNode
+ extends VirtualSecondaryTable, OrmReadOnlyTable
{
ListIterator<OrmVirtualPrimaryKeyJoinColumn> primaryKeyJoinColumns();
ListIterator<OrmVirtualPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualUniqueConstraint.java
index 7e9e7a911a..2e2c1ad703 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmVirtualUniqueConstraint.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.context.orm;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.VirtualUniqueConstraint;
/**
@@ -29,5 +29,5 @@ public interface OrmVirtualUniqueConstraint
* or an <code>orm.xml</code> unique constraint; so we don't change the
* return type here.
*/
- UniqueConstraint getOverriddenUniqueConstraint();
+ ReadOnlyUniqueConstraint getOverriddenUniqueConstraint();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmXmlContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmXmlContextNodeFactory.java
index b8f98cb0c4..616c3c94a8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmXmlContextNodeFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/orm/OrmXmlContextNodeFactory.java
@@ -3,16 +3,16 @@
* 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.jpa.core.context.orm;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
@@ -32,7 +32,6 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlGeneratedValue;
import org.eclipse.jpt.jpa.core.resource.orm.XmlGeneratorContainer;
import org.eclipse.jpt.jpa.core.resource.orm.XmlId;
import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinColumn;
-import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinTable;
import org.eclipse.jpt.jpa.core.resource.orm.XmlManyToMany;
import org.eclipse.jpt.jpa.core.resource.orm.XmlManyToOne;
import org.eclipse.jpt.jpa.core.resource.orm.XmlMappedSuperclass;
@@ -60,124 +59,204 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlVersion;
* stability. It is available at this early stage to solicit feedback from
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
- *
+ *
* @version 2.3
* @since 2.3
*/
+// TODO bjv we need a factory interface for a 1.0 orm.xml in a 2.0 project...
+// since it must return slightly different objects (e.g. 2.0 attribute mappings)
+// OrmXml1_0ContextNodeFactory2_0 ?
public interface OrmXmlContextNodeFactory
{
- // ********** ORM Context Model **********
-
EntityMappings buildEntityMappings(OrmXml parent, XmlEntityMappings entityMappings);
-
+
OrmPersistenceUnitMetadata buildOrmPersistenceUnitMetadata(EntityMappings parent);
-
+
OrmPersistenceUnitDefaults buildOrmPersistenceUnitDefaults(OrmPersistenceUnitMetadata parent);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.PersistentType2_0#getDeclaringTypeName()
+ */
OrmPersistentType buildOrmPersistentType(EntityMappings parent, XmlTypeMapping resourceMapping);
-
+
OrmEntity buildOrmEntity(OrmPersistentType parent, XmlEntity resourceMapping);
-
+
OrmMappedSuperclass buildOrmMappedSuperclass(OrmPersistentType parent, XmlMappedSuperclass resourceMapping);
-
+
OrmEmbeddable buildOrmEmbeddable(OrmPersistentType parent, XmlEmbeddable resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyPersistentAttribute2_0
+ */
OrmPersistentAttribute buildOrmPersistentAttribute(OrmPersistentType parent, XmlAttributeMapping xmlMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyPersistentAttribute2_0
+ */
OrmReadOnlyPersistentAttribute buildVirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourcePersistentAttribute javaResourcePersistentAttribute);
-
+
OrmTable buildOrmTable(OrmEntity parent, Table.Owner owner);
-
+
OrmSecondaryTable buildOrmSecondaryTable(OrmEntity parent, Table.Owner owner, XmlSecondaryTable xmlSecondaryTable);
-
- OrmVirtualSecondaryTable buildOrmVirtualSecondaryTable(OrmEntity parent, JavaSecondaryTable javaSecondaryTable);
-
- OrmPrimaryKeyJoinColumn buildOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn resourcePrimaryKeyJoinColumn);
-
- OrmVirtualPrimaryKeyJoinColumn buildOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, ReadOnlyBaseJoinColumn.Owner owner, JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn);
-
+
+ OrmVirtualSecondaryTable buildOrmVirtualSecondaryTable(OrmEntity parent, ReadOnlyTable.Owner owner, JavaSecondaryTable javaSecondaryTable);
+
+ OrmPrimaryKeyJoinColumn buildOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn resourcePrimaryKeyJoinColumn);
+
+ OrmVirtualPrimaryKeyJoinColumn buildOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn);
+
OrmJoinTable buildOrmJoinTable(OrmJoinTableRelationshipStrategy parent, Table.Owner owner);
-
- OrmVirtualJoinTable buildOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable);
-
- OrmJoinColumn buildOrmJoinColumn(XmlContextNode parent, OrmJoinColumn.Owner owner, XmlJoinColumn resourceJoinColumn);
-
- OrmVirtualJoinColumn buildOrmVirtualJoinColumn(XmlContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn);
-
+
+ OrmVirtualJoinTable buildOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, ReadOnlyTable.Owner owner, ReadOnlyJoinTable overriddenTable);
+
+ OrmJoinColumn buildOrmJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, XmlJoinColumn resourceJoinColumn);
+
+ OrmVirtualJoinColumn buildOrmVirtualJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn);
+
OrmAttributeOverrideContainer buildOrmAttributeOverrideContainer(XmlContextNode parent, OrmAttributeOverrideContainer.Owner owner);
OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(XmlContextNode parent, OrmAssociationOverrideContainer.Owner owner);
OrmAttributeOverride buildOrmAttributeOverride(OrmAttributeOverrideContainer parent, XmlAttributeOverride xmlOverride);
-
+
OrmVirtualAttributeOverride buildOrmVirtualAttributeOverride(OrmAttributeOverrideContainer parent, String name);
-
+
OrmAssociationOverride buildOrmAssociationOverride(OrmAssociationOverrideContainer parent, XmlAssociationOverride xmlOverride);
-
+
OrmVirtualAssociationOverride buildOrmVirtualAssociationOverride(OrmAssociationOverrideContainer parent, String name);
-
+
OrmOverrideRelationship buildOrmOverrideRelationship(OrmAssociationOverride parent);
OrmVirtualOverrideRelationship buildOrmVirtualOverrideRelationship(OrmVirtualAssociationOverride parent);
OrmDiscriminatorColumn buildOrmDiscriminatorColumn(OrmEntity parent, OrmDiscriminatorColumn.Owner owner);
-
+
OrmColumn buildOrmColumn(XmlContextNode parent, OrmColumn.Owner owner);
-
+
OrmVirtualColumn buildOrmVirtualColumn(XmlContextNode parent, OrmVirtualColumn.Owner owner);
-
+
OrmGeneratedValue buildOrmGeneratedValue(XmlContextNode parent, XmlGeneratedValue resourceGeneratedValue);
-
+
OrmGeneratorContainer buildOrmGeneratorContainer(XmlContextNode parent, XmlGeneratorContainer resourceGeneratorContainer);
OrmSequenceGenerator buildOrmSequenceGenerator(XmlContextNode parent, XmlSequenceGenerator resourceSequenceGenerator);
-
+
OrmTableGenerator buildOrmTableGenerator(XmlContextNode parent, XmlTableGenerator resourceTableGenerator);
-
+
OrmQueryContainer buildOrmQueryContainer(XmlContextNode parent, XmlQueryContainer resourceQueryContainer);
OrmNamedNativeQuery buildOrmNamedNativeQuery(XmlContextNode parent, XmlNamedNativeQuery resourceNamedQuery);
-
+
OrmNamedQuery buildOrmNamedQuery(XmlContextNode parent, XmlNamedQuery resourceNamedQuery);
-
+
OrmQueryHint buildOrmQueryHint(OrmQuery parent, XmlQueryHint resourceQueryhint);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmBasicMapping buildOrmBasicMapping(OrmPersistentAttribute parent, XmlBasic resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmManyToManyMapping buildOrmManyToManyMapping(OrmPersistentAttribute parent, XmlManyToMany resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmOneToManyMapping buildOrmOneToManyMapping(OrmPersistentAttribute parent, XmlOneToMany resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmManyToOneMapping buildOrmManyToOneMapping(OrmPersistentAttribute parent, XmlManyToOne resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmOneToOneMapping buildOrmOneToOneMapping(OrmPersistentAttribute parent, XmlOneToOne resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmEmbeddedIdMapping buildOrmEmbeddedIdMapping(OrmPersistentAttribute parent, XmlEmbeddedId resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmEmbeddedMapping buildOrmEmbeddedMapping(OrmPersistentAttribute parent, XmlEmbedded resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmIdMapping buildOrmIdMapping(OrmPersistentAttribute parent, XmlId resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmTransientMapping buildOrmTransientMapping(OrmPersistentAttribute parent, XmlTransient resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmVersionMapping buildOrmVersionMapping(OrmPersistentAttribute parent, XmlVersion resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmAttributeMapping buildOrmNullAttributeMapping(OrmPersistentAttribute parent, XmlNullAttributeMapping resourceMapping);
-
+
+ /**
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
+ */
OrmAttributeMapping buildUnsupportedOrmAttributeMapping(OrmPersistentAttribute parent, XmlNullAttributeMapping resourceMapping);
OrmUniqueConstraint buildOrmUniqueConstraint(XmlContextNode parent, UniqueConstraint.Owner owner, XmlUniqueConstraint resourceUniqueConstraint);
-
- OrmVirtualUniqueConstraint buildOrmVirtualUniqueConstraint(XmlContextNode parent, UniqueConstraint overriddenUniqueConstraint);
-
+
+ OrmVirtualUniqueConstraint buildOrmVirtualUniqueConstraint(XmlContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint);
+
OrmConverter buildOrmEnumeratedConverter(OrmAttributeMapping parent);
-
+
OrmConverter buildOrmTemporalConverter(OrmAttributeMapping parent);
-
+
OrmConverter buildOrmLobConverter(OrmAttributeMapping parent);
/**
* JPA 1.0 only
+ * <p>
+ * NB: A factory for a version 1.0 <code>orm.xml</code> in a JPA 2.0 project
+ * must build objects that implement the appropriate behavior.
+ * @see org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0
*/
OrmOrderable buildOrmOrderable(OrmAttributeMapping parent);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/AbstractJpaFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/AbstractJpaFactory.java
index 31ea66c1c3..a94704b588 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/AbstractJpaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/AbstractJpaFactory.java
@@ -16,11 +16,12 @@ import org.eclipse.jpt.jpa.core.JpaDataSource;
import org.eclipse.jpt.jpa.core.JpaFactory;
import org.eclipse.jpt.jpa.core.JpaFile;
import org.eclipse.jpt.jpa.core.JpaProject;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.JpaRootContextNode;
import org.eclipse.jpt.jpa.core.context.PersistentType;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
@@ -28,7 +29,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaBasicMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaDiscriminatorColumn;
@@ -60,6 +60,8 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaQuery;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryHint;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.context.java.JavaSequenceGenerator;
import org.eclipse.jpt.jpa.core.context.java.JavaTable;
@@ -244,20 +246,20 @@ public abstract class AbstractJpaFactory
return new GenericJavaDiscriminatorColumn(parent, owner);
}
- public JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent, JavaJoinColumn.Owner owner, JoinColumnAnnotation joinColumnAnnotation) {
+ public JavaJoinColumn buildJavaJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, JoinColumnAnnotation joinColumnAnnotation) {
return new GenericJavaJoinColumn(parent, owner, joinColumnAnnotation);
}
- public JavaVirtualJoinColumn buildJavaVirtualJoinColumn(JavaJpaContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn) {
- return new GenericJavaVirtualJoinColumn(parent, owner, joinColumn);
+ public JavaVirtualJoinColumn buildJavaVirtualJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn) {
+ return new GenericJavaVirtualJoinColumn(parent, owner, overriddenColumn);
}
public JavaJoinTable buildJavaJoinTable(JavaJoinTableRelationshipStrategy parent, Table.Owner owner) {
return new GenericJavaJoinTable(parent, owner);
}
- public JavaVirtualJoinTable buildJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable) {
- return new GenericJavaVirtualJoinTable(parent, overriddenTable);
+ public JavaVirtualJoinTable buildJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, ReadOnlyTable.Owner owner, ReadOnlyJoinTable overriddenTable) {
+ return new GenericJavaVirtualJoinTable(parent, owner, overriddenTable);
}
public JavaSecondaryTable buildJavaSecondaryTable(JavaEntity parent, Table.Owner owner, SecondaryTableAnnotation tableAnnotation) {
@@ -324,7 +326,7 @@ public abstract class AbstractJpaFactory
return new GenericJavaGeneratedValue(parent, generatedValueAnnotation);
}
- public JavaPrimaryKeyJoinColumn buildJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation) {
+ public JavaPrimaryKeyJoinColumn buildJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaReadOnlyBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation) {
return new GenericJavaPrimaryKeyJoinColumn(parent, owner, pkJoinColumnAnnotation);
}
@@ -380,8 +382,8 @@ public abstract class AbstractJpaFactory
return new GenericJavaUniqueConstraint(parent, owner, constraintAnnotation);
}
- public JavaVirtualUniqueConstraint buildJavaVirtualUniqueConstraint(JavaJpaContextNode parent, UniqueConstraint uniqueConstraint) {
- return new GenericJavaVirtualUniqueConstraint(parent, uniqueConstraint);
+ public JavaVirtualUniqueConstraint buildJavaVirtualUniqueConstraint(JavaJpaContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint) {
+ return new GenericJavaVirtualUniqueConstraint(parent, overriddenUniqueConstraint);
}
public JavaEnumeratedConverter buildJavaEnumeratedConverter(JavaAttributeMapping parent, EnumeratedAnnotation annotation) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java
index 0bc515e2a1..9b3ecb21a5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/JptValidator.java
@@ -1,23 +1,44 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context;
import java.util.List;
+import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public interface JptValidator
{
/**
- * Return a boolean used to determine whether to continue validating
+ * Return whether the client should continue validating.
*/
boolean validate(List<IMessage> messages, IReporter reporter);
+
+
+ final class Null
+ implements JptValidator
+ {
+ private static final JptValidator INSTANCE = new Null();
+ public static JptValidator instance() {
+ return INSTANCE;
+ }
+ // ensure single instance
+ private Null() {
+ super();
+ }
+ public boolean validate(List<IMessage> messages, IReporter reporter) {
+ return true; // continue validating
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildSingletonToString(this);
+ }
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TableTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TableTextRangeResolver.java
index a66f0ede07..adb744dcfd 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TableTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TableTextRangeResolver.java
@@ -1,19 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context;
import org.eclipse.jpt.common.core.utility.TextRange;
/**
- * Interface to resolve text ranges on named columns
+ * Interface to resolve text ranges on tables.
*/
public interface TableTextRangeResolver
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TypeMappingTools.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TypeMappingTools.java
index 78deca4bf8..c558a733d8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TypeMappingTools.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/TypeMappingTools.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -10,6 +10,7 @@
package org.eclipse.jpt.jpa.core.internal.context;
import java.util.Iterator;
+import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.Transformer;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
@@ -19,33 +20,89 @@ import org.eclipse.jpt.jpa.core.MappingKeys;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.jpa2.context.DerivedIdentity2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.MapsIdDerivedIdentityStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.SingleRelationshipMapping2_0;
/**
* Gather some of the behavior common to the Java and XML models. :-(
*/
-public class TypeMappingTools
-{
+public class TypeMappingTools {
+
// ********** single relationship mappings **********
- public static Iterable<String> getMappedByRelationshipAttributeNames(TypeMapping typeMapping) {
- return new TransformationIterable<SingleRelationshipMapping2_0, String>(getMapsIdRelationshipMappings(typeMapping)) {
+ /**
+ * Return whether the specified attribute is a derived ID for the specified
+ * type mapping.
+ */
+ public static boolean attributeIsDerivedId(TypeMapping typeMapping, String attributeName) {
+ if (attributeName == null) {
+ return false;
+ }
+ // the attribute name may be qualified - we test only the first attribute name
+ int dotIndex = attributeName.indexOf('.');
+ attributeName = (dotIndex == -1) ? attributeName : attributeName.substring(0, dotIndex);
+ return CollectionTools.contains(getMapsIdDerivedIdAttributeNames(typeMapping), attributeName);
+ }
+
+ /**
+ * Return the names of all the ID attributes derived from
+ * single-relationship mappings for the specified type mapping
+ * (i.e. the names of the ID attributes that are specified by a single-
+ * relationship mapping's "maps ID" setting).
+ */
+ protected static Iterable<String> getMapsIdDerivedIdAttributeNames(TypeMapping typeMapping) {
+ return new TransformationIterable<MapsIdDerivedIdentityStrategy2_0, String>(getMapsIdDerivedIdentityStrategies(typeMapping)) {
@Override
- protected String transform(SingleRelationshipMapping2_0 attributeMapping) {
- return attributeMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue();
+ protected String transform(MapsIdDerivedIdentityStrategy2_0 strategy) {
+ return strategy.getIdAttributeName();
}
};
}
- public static Iterable<SingleRelationshipMapping2_0> getMapsIdRelationshipMappings(TypeMapping typeMapping) {
- return new FilteringIterable<SingleRelationshipMapping2_0>(getSingleRelationshipMappings(typeMapping)) {
+ /**
+ * Return all the single-relationship "maps ID" derived identity strategies
+ * for the specified type mapping.
+ */
+ protected static Iterable<MapsIdDerivedIdentityStrategy2_0> getMapsIdDerivedIdentityStrategies(TypeMapping typeMapping) {
+ return new TransformationIterable<DerivedIdentity2_0, MapsIdDerivedIdentityStrategy2_0>(getMapsIdDerivedIdentities(typeMapping)) {
+ @Override
+ protected MapsIdDerivedIdentityStrategy2_0 transform(DerivedIdentity2_0 derivedIdentity) {
+ return derivedIdentity.getMapsIdDerivedIdentityStrategy();
+ }
+ };
+ }
+
+ /**
+ * Return all the single-relationship "maps ID" derived identities for the
+ * specified type mapping.
+ */
+ protected static Iterable<DerivedIdentity2_0> getMapsIdDerivedIdentities(TypeMapping typeMapping) {
+ return new FilteringIterable<DerivedIdentity2_0>(getDerivedIdentities(typeMapping)) {
@Override
- protected boolean accept(SingleRelationshipMapping2_0 attributeMapping) {
- return attributeMapping.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy();
+ protected boolean accept(DerivedIdentity2_0 derivedIdentity) {
+ return derivedIdentity.usesMapsIdDerivedIdentityStrategy();
}
};
}
+ /**
+ * Return all the single-relationship derived identities for the specified
+ * type mapping.
+ */
+ protected static Iterable<DerivedIdentity2_0> getDerivedIdentities(TypeMapping typeMapping) {
+ return new TransformationIterable<SingleRelationshipMapping2_0, DerivedIdentity2_0>(getSingleRelationshipMappings(typeMapping)) {
+ @Override
+ protected DerivedIdentity2_0 transform(SingleRelationshipMapping2_0 mapping) {
+ return mapping.getDerivedIdentity();
+ }
+ };
+ }
+
+ /**
+ * Return all the single-relationship attribute mappings for the specified
+ * type mapping.
+ */
protected static Iterable<SingleRelationshipMapping2_0> getSingleRelationshipMappings(TypeMapping typeMapping) {
return new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>(getSingleRelationshipMappings_(typeMapping));
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseColumn.java
index 9fccee517c..9107d3e04c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseColumn.java
@@ -18,13 +18,14 @@ import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaBaseColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.resource.java.BaseColumnAnnotation;
/**
* Java column or join column
*/
-public abstract class AbstractJavaBaseColumn<A extends BaseColumnAnnotation, O extends JavaBaseColumn.Owner>
+public abstract class AbstractJavaBaseColumn<A extends BaseColumnAnnotation, O extends JavaReadOnlyBaseColumn.Owner>
extends AbstractJavaNamedColumn<A, O>
implements JavaBaseColumn
{
@@ -318,10 +319,6 @@ public abstract class AbstractJavaBaseColumn<A extends BaseColumnAnnotation, O e
// ignore other settings?
}
- public boolean tableNameIsInvalid() {
- return this.owner.tableNameIsInvalid(this.getTable());
- }
-
// ********** Java completion proposals **********
@@ -353,6 +350,13 @@ public abstract class AbstractJavaBaseColumn<A extends BaseColumnAnnotation, O e
return this.owner.candidateTableNames();
}
+
+ // ********** validation **********
+
+ public boolean tableNameIsInvalid() {
+ return this.owner.tableNameIsInvalid(this.getTable());
+ }
+
@Override
protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
return new JavaBaseColumnTextRangeResolver(this, astRoot);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java
index 6d20bd5ba3..725f71f64f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBaseEmbeddedMapping.java
@@ -21,11 +21,12 @@ import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaBaseEmbeddedMapping;
@@ -39,9 +40,10 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.AttributeOverrideColumnVal
import org.eclipse.jpt.jpa.core.internal.jpa1.context.AttributeOverrideValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EmbeddableOverrideDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmEmbeddedIdMapping;
+import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaEmbeddedIdMapping;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAttributeOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.Annotation;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember;
import org.eclipse.jpt.jpa.db.Table;
@@ -92,9 +94,7 @@ public abstract class AbstractJavaBaseEmbeddedMapping<A extends Annotation>
return this.getJpaFactory().buildJavaAttributeOverrideContainer(this, this.buildAttributeOverrideContainerOwner());
}
- protected JavaAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() {
- return new AttributeOverrideContainerOwner();
- }
+ protected abstract JavaAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner();
// ********** target embeddable **********
@@ -242,8 +242,8 @@ public abstract class AbstractJavaBaseEmbeddedMapping<A extends Annotation>
// ********** attribute override container owner *********
- protected class AttributeOverrideContainerOwner
- implements JavaAttributeOverrideContainer.Owner
+ protected abstract class AttributeOverrideContainerOwner
+ implements JavaAttributeOverrideContainer2_0.Owner
{
public JavaResourcePersistentMember getResourcePersistentMember() {
return AbstractJavaBaseEmbeddedMapping.this.getResourcePersistentAttribute();
@@ -258,17 +258,17 @@ public abstract class AbstractJavaBaseEmbeddedMapping<A extends Annotation>
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? this.allOverridableAttributeNames_(typeMapping) : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? this.allOverridableAttributeNames_(overriddenTypeMapping) : EmptyIterator.<String>instance();
}
/**
* pre-condition: type mapping is not <code>null</code>
* <p>
- * NB: Overridden in {@link GenericOrmEmbeddedIdMapping.AttributeOverrideContainerOwner}
+ * NB: Overridden in {@link GenericJavaEmbeddedIdMapping.AttributeOverrideContainerOwner}
*/
- protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) {
- return typeMapping.allOverridableAttributeNames();
+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping overriddenTypeMapping) {
+ return overriddenTypeMapping.allOverridableAttributeNames();
}
public Column resolveOverriddenColumn(String attributeName) {
@@ -308,12 +308,12 @@ public abstract class AbstractJavaBaseEmbeddedMapping<A extends Annotation>
return AbstractJavaBaseEmbeddedMapping.this.getValidationTextRange(astRoot);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
}
protected JavaPersistentAttribute getPersistentAttribute() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBasicMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBasicMapping.java
index b8444408cd..33535405d9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBasicMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaBasicMapping.java
@@ -18,10 +18,10 @@ import org.eclipse.jpt.common.utility.internal.SimpleAssociation;
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.jpa.core.JpaFactory;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Converter;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaBasicMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
@@ -347,8 +347,8 @@ public abstract class AbstractJavaBasicMapping
return this.getTypeMapping().allAssociatedTableNames();
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
index ea61083d54..7c4b6a5d9c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
-import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
@@ -28,7 +28,6 @@ import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
-import org.eclipse.jpt.common.utility.internal.iterables.SubIterableWrapper;
import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable;
import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
@@ -43,23 +42,24 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.DiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.DiscriminatorType;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.InheritanceType;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.PersistentType;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.SecondaryTable;
@@ -67,19 +67,17 @@ import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaDiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
import org.eclipse.jpt.jpa.core.context.java.JavaGeneratorContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaIdClassReference;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
-import org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.context.java.JavaTable;
-import org.eclipse.jpt.jpa.core.context.java.JavaTypeMapping;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
@@ -108,8 +106,10 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.TableValidator;
import org.eclipse.jpt.jpa.core.internal.resource.java.NullPrimaryKeyJoinColumnAnnotation;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
-import org.eclipse.jpt.jpa.core.jpa2.context.SingleRelationshipMapping2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAttributeOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaCacheableHolder2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.DiscriminatorValueAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.EntityAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.InheritanceAnnotation;
@@ -1074,7 +1074,13 @@ public abstract class AbstractJavaEntity
}
protected boolean tableNameIsValid(String tableName) {
- return this.tableIsUndefined || CollectionTools.contains(this.getAllAssociatedTableNames(), tableName);
+ return this.tableIsUndefined || this.tableNameIsValid_(tableName);
+ }
+
+ protected boolean tableNameIsValid_(String tableName) {
+ return this.connectionProfileIsActive() ?
+ (this.resolveDbTable(tableName) != null) :
+ CollectionTools.contains(this.getAllAssociatedTableNames(), tableName);
}
@@ -1367,10 +1373,8 @@ public abstract class AbstractJavaEntity
}
protected void validateDuplicateEntityNames(List<IMessage> messages, CompilationUnit astRoot) {
- HashBag<String> javaEntityNamesExclOverridden = new HashBag<String>();
- CollectionTools.addAll(javaEntityNamesExclOverridden, this.getPersistenceUnit().javaEntityNamesExclOverridden());
- HashBag<String> ormEntityNames = new HashBag<String>();
- CollectionTools.addAll(ormEntityNames, this.getPersistenceUnit().ormEntityNames());
+ HashBag<String> javaEntityNamesExclOverridden = CollectionTools.bag(this.getPersistenceUnit().javaEntityNamesExclOverridden());
+ HashSet<String> ormEntityNames = CollectionTools.set(this.getPersistenceUnit().ormEntityNames());
String javaEntityName = this.getName();
if ((javaEntityName != null)
// Check whether or not this entity name has duplicates among
@@ -1558,13 +1562,13 @@ public abstract class AbstractJavaEntity
* some common behavior
*/
protected abstract class OverrideContainerOwner
- implements JavaOverrideContainer.Owner
+ implements JavaOverrideContainer2_0.Owner
{
public JavaResourcePersistentMember getResourcePersistentMember() {
return AbstractJavaEntity.this.getResourcePersistentType();
}
- public JavaTypeMapping getTypeMapping() {
+ public AbstractJavaEntity getTypeMapping() {
return AbstractJavaEntity.this;
}
@@ -1577,14 +1581,14 @@ public abstract class AbstractJavaEntity
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? this.allOverridableNames_(typeMapping) : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? this.allOverridableNames_(overriddenTypeMapping) : EmptyIterator.<String>instance();
}
/**
* pre-condition: <code>typeMapping</code> is not <code>null</code>
*/
- protected abstract Iterator<String> allOverridableNames_(TypeMapping typeMapping);
+ protected abstract Iterator<String> allOverridableNames_(TypeMapping overriddenTypeMapping);
public String getDefaultTableName() {
return AbstractJavaEntity.this.getPrimaryTableName();
@@ -1622,62 +1626,28 @@ public abstract class AbstractJavaEntity
protected class AttributeOverrideContainerOwner
extends OverrideContainerOwner
- implements JavaAttributeOverrideContainer.Owner
+ implements JavaAttributeOverrideContainer2_0.Owner
{
@Override
- protected Iterator<String> allOverridableNames_(TypeMapping typeMapping) {
- final Collection<String> mappedByRelationshipAttributes = CollectionTools.collection(
- new TransformationIterator<SingleRelationshipMapping2_0, String>(this.getMapsIdRelationships()) {
- @Override
- protected String transform(SingleRelationshipMapping2_0 mapping) {
- return mapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue();
- }
- });
- return new FilteringIterator<String>(typeMapping.allOverridableAttributeNames()) {
+ protected Iterator<String> allOverridableNames_(TypeMapping overriddenTypeMapping) {
+ return new FilteringIterator<String>(overriddenTypeMapping.allOverridableAttributeNames()) {
@Override
- protected boolean accept(String name) {
- if (mappedByRelationshipAttributes.isEmpty()) {
- return true;
- }
- // overridable names are (usually?) qualified with a container mapping,
- // which may also be the one mapped by a relationship
- int index = name.indexOf('.');
- String qualifier = (index > 0) ? name.substring(0, index) : name;
- return ! mappedByRelationshipAttributes.contains(qualifier);
+ protected boolean accept(String attributeName) {
+ return ! AttributeOverrideContainerOwner.this.getTypeMapping().attributeIsDerivedId(attributeName);
}
};
}
- protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() {
- return new FilteringIterable<SingleRelationshipMapping2_0>(this.getSingleRelationshipMappings()) {
- @Override
- protected boolean accept(SingleRelationshipMapping2_0 mapping) {
- return mapping.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy();
- }
- };
- }
-
- protected Iterable<SingleRelationshipMapping2_0> getSingleRelationshipMappings() {
- return new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>(this.getSingleRelationshipMappings_());
- }
-
- @SuppressWarnings("unchecked")
- protected Iterable<AttributeMapping> getSingleRelationshipMappings_() {
- return new CompositeIterable<AttributeMapping>(
- this.getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY),
- this.getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)
- );
- }
public Column resolveOverriddenColumn(String attributeName) {
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator((AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator((ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator((AttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator((ReadOnlyAttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
}
}
@@ -1686,35 +1656,35 @@ public abstract class AbstractJavaEntity
protected class AssociationOverrideContainerOwner
extends OverrideContainerOwner
- implements JavaAssociationOverrideContainer.Owner
+ implements JavaAssociationOverrideContainer2_0.Owner
{
@Override
- protected Iterator<String> allOverridableNames_(TypeMapping typeMapping) {
- return typeMapping.allOverridableAssociationNames();
+ protected Iterator<String> allOverridableNames_(TypeMapping overriddenTypeMapping) {
+ return overriddenTypeMapping.allOverridableAssociationNames();
}
public Relationship resolveOverriddenRelationship(String attributeName) {
return MappingTools.resolveOverriddenRelationship(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator((AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator((ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator((AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator((ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideJoinColumnValidator(override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideInverseJoinColumnValidator(override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildTableValidator(AssociationOverride override, Table t, TableTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinTableValidator(override, (JoinTable) t, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable t, TableTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinTableValidator(override, (ReadOnlyJoinTable) t, textRangeResolver);
}
}
@@ -1725,7 +1695,7 @@ public abstract class AbstractJavaEntity
* some common behavior
*/
protected abstract class NamedColumnOwner
- implements JavaNamedColumn.Owner
+ implements JavaReadOnlyNamedColumn.Owner
{
public TypeMapping getTypeMapping() {
return AbstractJavaEntity.this;
@@ -1749,7 +1719,7 @@ public abstract class AbstractJavaEntity
protected class PrimaryKeyJoinColumnOwner
extends NamedColumnOwner
- implements JavaBaseJoinColumn.Owner
+ implements JavaReadOnlyBaseJoinColumn.Owner
{
public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
Entity parentEntity = AbstractJavaEntity.this.getParentEntity();
@@ -1772,8 +1742,8 @@ public abstract class AbstractJavaEntity
return (parentEntity == null) ? AbstractJavaEntity.this.getPrimaryKeyColumnName() : parentEntity.getPrimaryKeyColumnName();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new EntityPrimaryKeyJoinColumnValidator((BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new EntityPrimaryKeyJoinColumnValidator((ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
}
@@ -1814,7 +1784,7 @@ public abstract class AbstractJavaEntity
return AbstractJavaEntity.this.discriminatorColumnIsUndefined;
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
return new DiscriminatorColumnValidator(column, textRangeResolver);
}
}
@@ -1822,8 +1792,10 @@ public abstract class AbstractJavaEntity
// ********** table owner **********
- protected class TableOwner implements Table.Owner {
- public JptValidator buildTableValidator(Table t, TableTextRangeResolver textRangeResolver) {
+ protected class TableOwner
+ implements ReadOnlyTable.Owner
+ {
+ public JptValidator buildTableValidator(ReadOnlyTable t, TableTextRangeResolver textRangeResolver) {
return new TableValidator(t, textRangeResolver);
}
}
@@ -1831,9 +1803,11 @@ public abstract class AbstractJavaEntity
// ********** secondary table owner **********
- protected class SecondaryTableOwner implements Table.Owner {
- public JptValidator buildTableValidator(Table t, TableTextRangeResolver textRangeResolver) {
- return new SecondaryTableValidator((SecondaryTable) t, textRangeResolver);
+ protected class SecondaryTableOwner
+ implements ReadOnlyTable.Owner
+ {
+ public JptValidator buildTableValidator(ReadOnlyTable t, TableTextRangeResolver textRangeResolver) {
+ return new SecondaryTableValidator((ReadOnlySecondaryTable) t, textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaIdMapping.java
index c504200023..8b10f0d479 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaIdMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaIdMapping.java
@@ -16,14 +16,13 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.ArrayTools;
import org.eclipse.jpt.common.utility.internal.Association;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.SimpleAssociation;
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.jpa.core.JpaFactory;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Converter;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
import org.eclipse.jpt.jpa.core.context.java.JavaGeneratedValue;
@@ -34,7 +33,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaTemporalConverter;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.NamedColumnValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaConverter;
@@ -67,8 +65,8 @@ public abstract class AbstractJavaIdMapping
protected JavaConverter converter; // never null
- /* 2.0 feature - a relationship may map this id */
- protected boolean mappedByRelationship;
+ /* JPA 2.0 - the embedded id may be derived from a relationship */
+ protected boolean derived;
protected static final JavaConverter.Adapter[] CONVERTER_ADAPTER_ARRAY = new JavaConverter.Adapter[] {
@@ -106,7 +104,7 @@ public abstract class AbstractJavaIdMapping
this.generatedValue.update();
}
this.converter.update();
- this.setMappedByRelationship(this.buildMappedByRelationship());
+ this.setDerived(this.buildDerived());
}
@@ -305,28 +303,24 @@ public abstract class AbstractJavaIdMapping
}
- // ********** mapped by relationship **********
+ // ********** derived **********
- public boolean isMappedByRelationship() {
- return this.mappedByRelationship;
+ public boolean isDerived() {
+ return this.derived;
}
- protected void setMappedByRelationship(boolean mappedByRelationship) {
- boolean old = this.mappedByRelationship;
- this.mappedByRelationship = mappedByRelationship;
- this.firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, old, mappedByRelationship);
+ protected void setDerived(boolean derived) {
+ boolean old = this.derived;
+ this.derived = derived;
+ this.firePropertyChanged(DERIVED_PROPERTY, old, derived);
}
- protected boolean buildMappedByRelationship() {
- return this.isJpa2_0Compatible() && this.buildMappedByRelationship_();
+ protected boolean buildDerived() {
+ return this.isJpa2_0Compatible() && this.buildDerived_();
}
- protected boolean buildMappedByRelationship_() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.getName());
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
+ protected boolean buildDerived_() {
+ return this.getTypeMapping().attributeIsDerivedId(this.getName());
}
@@ -374,11 +368,11 @@ public abstract class AbstractJavaIdMapping
}
public String getDefaultColumnName() {
- return (this.mappedByRelationship && ! this.columnIsSpecified()) ? null : this.getName();
+ return (this.derived && ! this.columnIsSpecified()) ? null : this.getName();
}
public String getDefaultTableName() {
- return (this.mappedByRelationship && ! this.columnIsSpecified()) ? null : this.getTypeMapping().getPrimaryTableName();
+ return (this.derived && ! this.columnIsSpecified()) ? null : this.getTypeMapping().getPrimaryTableName();
}
public boolean tableNameIsInvalid(String tableName) {
@@ -389,8 +383,8 @@ public abstract class AbstractJavaIdMapping
return this.getTypeMapping().allAssociatedTableNames();
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
@@ -438,15 +432,15 @@ public abstract class AbstractJavaIdMapping
// the column is validated.
// JPA 1.0: The column is always be validated, since the ID is never mapped by a
// relationship.
- if (this.columnIsSpecified() || ! this.mappedByRelationship) {
+ if (this.columnIsSpecified() || ! this.derived) {
this.column.validate(messages, reporter, astRoot);
}
// JPA 2.0: If the column is specified and the ID is mapped by a relationship,
// we have an error.
// JPA 1.0: The ID cannot be mapped by a relationship.
- if (this.columnIsSpecified() && this.mappedByRelationship) {
- messages.add(this.buildMappedByRelationshipAndColumnSpecifiedMessage(astRoot));
+ if (this.columnIsSpecified() && this.derived) {
+ messages.add(this.buildColumnSpecifiedAndDerivedMessage(astRoot));
}
this.generatorContainer.validate(messages, reporter, astRoot);
@@ -456,7 +450,7 @@ public abstract class AbstractJavaIdMapping
this.converter.validate(messages, reporter, astRoot);
}
- protected IMessage buildMappedByRelationshipAndColumnSpecifiedMessage(CompilationUnit astRoot) {
+ protected IMessage buildColumnSpecifiedAndDerivedMessage(CompilationUnit astRoot) {
return this.buildMessage(
JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED,
EMPTY_STRING_ARRAY,
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinColumnRelationshipStrategy.java
index b133a319f7..f1bc87c247 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinColumnRelationshipStrategy.java
@@ -29,6 +29,7 @@ import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
import org.eclipse.jpt.jpa.db.Table;
@@ -41,7 +42,7 @@ public abstract class AbstractJavaJoinColumnRelationshipStrategy
{
protected final Vector<JavaJoinColumn> specifiedJoinColumns = new Vector<JavaJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter;
- protected final JavaJoinColumn.Owner joinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner;
protected JavaJoinColumn defaultJoinColumn;
@@ -192,7 +193,7 @@ public abstract class AbstractJavaJoinColumnRelationshipStrategy
}
}
- protected abstract JavaJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner();
// ********** default join column **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinTableRelationshipStrategy.java
index 6eafead62c..4d21f98269 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaJoinTableRelationshipStrategy.java
@@ -16,8 +16,8 @@ import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
@@ -29,7 +29,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public abstract class AbstractJavaJoinTableRelationshipStrategy
extends AbstractJavaJpaContextNode
- implements JavaJoinTableRelationshipStrategy, Table.Owner
+ implements JavaJoinTableRelationshipStrategy, ReadOnlyTable.Owner
{
protected JavaJoinTable joinTable;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMappingRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMappingRelationship.java
index 852474ce29..629387495a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMappingRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMappingRelationship.java
@@ -20,7 +20,7 @@ import org.eclipse.jpt.jpa.core.context.RelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingRelationshipStrategy2_0;
/**
* <strong>NB:</strong> Subclasses may want to set the {@link #strategy} at the
@@ -31,7 +31,7 @@ public abstract class AbstractJavaMappingRelationship<M extends JavaRelationship
extends AbstractJavaJpaContextNode
implements JavaMappingRelationship
{
- protected JavaRelationshipStrategy strategy;
+ protected JavaMappingRelationshipStrategy2_0 strategy;
public AbstractJavaMappingRelationship(M parent) {
@@ -50,17 +50,17 @@ public abstract class AbstractJavaMappingRelationship<M extends JavaRelationship
// ********** strategy **********
- public JavaRelationshipStrategy getStrategy() {
+ public JavaMappingRelationshipStrategy2_0 getStrategy() {
return this.strategy;
}
- protected void setStrategy(JavaRelationshipStrategy strategy) {
+ protected void setStrategy(JavaMappingRelationshipStrategy2_0 strategy) {
RelationshipStrategy old = this.strategy;
this.strategy = strategy;
this.firePropertyChanged(STRATEGY_PROPERTY, old, strategy);
}
- protected abstract JavaRelationshipStrategy buildStrategy();
+ protected abstract JavaMappingRelationshipStrategy2_0 buildStrategy();
/**
* This is called by subclasses when the various supported strategies are
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java
index d452d2e0af..65dd47a375 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaMultiRelationshipMapping.java
@@ -19,16 +19,16 @@ import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.RelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
@@ -49,6 +49,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.MapKeyColumnValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.RelationshipStrategyTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.NullJavaMapKeyColumn2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAttributeOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaCollectionMapping2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0;
import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation;
@@ -721,8 +722,8 @@ public abstract class AbstractJavaMultiRelationshipMapping<A extends Relationshi
return this.getRelationshipStrategy().tableNameIsInvalid(tableName);
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new MapKeyColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
}
}
@@ -731,7 +732,7 @@ public abstract class AbstractJavaMultiRelationshipMapping<A extends Relationshi
protected class MapKeyAttributeOverrideContainerOwner
extends AbstractOwner
- implements JavaAttributeOverrideContainer.Owner
+ implements JavaAttributeOverrideContainer2_0.Owner
{
public JavaResourcePersistentMember getResourcePersistentMember() {
return AbstractJavaMultiRelationshipMapping.this.getResourcePersistentAttribute();
@@ -750,8 +751,8 @@ public abstract class AbstractJavaMultiRelationshipMapping<A extends Relationshi
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
protected static final String POSSIBLE_PREFIX = "key"; //$NON-NLS-1$
@@ -773,12 +774,12 @@ public abstract class AbstractJavaMultiRelationshipMapping<A extends Relationshi
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumn.java
index 44615c5f91..8d91e29352 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumn.java
@@ -17,10 +17,11 @@ import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation;
@@ -40,13 +41,13 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
* <strong>NB:</strong> any subclass that directly holds its column annotation
* must:<ul>
* <li>call the "super" constructor that takes a column annotation
- * {@link #AbstractJavaNamedColumn(JavaJpaContextNode, JavaNamedColumn.Owner, NamedColumnAnnotation)}
+ * {@link #AbstractJavaNamedColumn(JavaJpaContextNode, JavaReadOnlyNamedColumn.Owner, NamedColumnAnnotation)}
* <li>override {@link #setColumnAnnotation(NamedColumnAnnotation)} to set the column annotation
* so it is in place before the column's state (e.g. {@link #specifiedName})
* is initialized
* </ul>
*/
-public abstract class AbstractJavaNamedColumn<A extends NamedColumnAnnotation, O extends JavaNamedColumn.Owner>
+public abstract class AbstractJavaNamedColumn<A extends NamedColumnAnnotation, O extends JavaReadOnlyNamedColumn.Owner>
extends AbstractJavaJpaContextNode
implements JavaNamedColumn
{
@@ -243,11 +244,11 @@ public abstract class AbstractJavaNamedColumn<A extends NamedColumnAnnotation, O
@Override
public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
super.validate(messages, reporter, astRoot);
- this.buildColumnValidator(astRoot).validate(messages, reporter);
+ this.buildValidator(astRoot).validate(messages, reporter);
}
- protected JptValidator buildColumnValidator(CompilationUnit astRoot) {
- return this.owner.buildColumnValidator(this, buildTextRangeResolver(astRoot));
+ protected JptValidator buildValidator(CompilationUnit astRoot) {
+ return this.owner.buildColumnValidator(this, this.buildTextRangeResolver(astRoot));
}
protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
@@ -267,7 +268,7 @@ public abstract class AbstractJavaNamedColumn<A extends NamedColumnAnnotation, O
// ********** misc **********
/**
- * This is used by the subclasses that implement {@link BaseJoinColumn}.
+ * This is used by the subclasses that implement {@link ReadOnlyBaseJoinColumn#isVirtual()}.
*/
public boolean isVirtual() {
return false;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumnTextRangeResolver.java
new file mode 100644
index 0000000000..a8139f49d2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaNamedColumnTextRangeResolver.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+
+public abstract class AbstractJavaNamedColumnTextRangeResolver<C extends JavaReadOnlyNamedColumn>
+ implements NamedColumnTextRangeResolver
+{
+ protected final C column;
+
+ protected final CompilationUnit astRoot;
+
+
+ protected AbstractJavaNamedColumnTextRangeResolver(C column, CompilationUnit astRoot) {
+ super();
+ this.column = column;
+ this.astRoot = astRoot;
+ }
+
+ public TextRange getNameTextRange() {
+ return this.column.getNameTextRange(this.astRoot);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaOverride.java
index cf70a08a2b..288f549190 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaOverride.java
@@ -16,13 +16,19 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
import org.eclipse.jpt.jpa.core.context.java.JavaOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualOverride;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.OverrideAnnotation;
+import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -101,7 +107,7 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
}
protected String getPossiblePrefix() {
- return this.getContainer().getPossiblePrefix();
+ return this.isJpa2_0Compatible() ? this.getContainer2_0().getPossiblePrefix() : null;
}
@@ -124,10 +130,14 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
return (C) super.getParent();
}
- public C getContainer() {
+ protected C getContainer() {
return this.getParent();
}
+ protected JavaOverrideContainer2_0 getContainer2_0() {
+ return (JavaOverrideContainer2_0) this.getContainer();
+ }
+
public A getOverrideAnnotation() {
return this.overrideAnnotation;
}
@@ -140,6 +150,22 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
this.setName(this.prefix(virtualOverride.getName()));
}
+ public TypeMapping getTypeMapping() {
+ return this.getContainer().getTypeMapping();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getContainer().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getContainer().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, column, owner, textRangeResolver);
+ }
+
protected String prefix(String oldName) {
if (oldName == null) {
return null;
@@ -149,7 +175,7 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
}
protected String getWritePrefix() {
- return this.getContainer().getWritePrefix();
+ return this.isJpa2_0Compatible() ? this.getContainer2_0().getWritePrefix() : null;
}
@Override
@@ -196,7 +222,7 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
}
protected JptValidator buildValidator(CompilationUnit astRoot) {
- return this.getContainer().buildValidator(this, buildTextRangeResolver(astRoot));
+ return this.getContainer().buildOverrideValidator(this, buildTextRangeResolver(astRoot));
}
protected OverrideTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
@@ -211,4 +237,12 @@ public abstract class AbstractJavaOverride<C extends JavaOverrideContainer, A ex
public TextRange getNameTextRange(CompilationUnit astRoot) {
return this.getValidationTextRange(this.overrideAnnotation.getNameTextRange(astRoot), astRoot);
}
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getContainer().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getContainer().candidateTableNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaTypeMapping.java
index 7aeada737c..10d2ba19a0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaTypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaTypeMapping.java
@@ -82,6 +82,10 @@ public abstract class AbstractJavaTypeMapping<A extends Annotation>
return this.mappingAnnotation;
}
+ public boolean attributeIsDerivedId(String attributeName) {
+ return TypeMappingTools.attributeIsDerivedId(this, attributeName);
+ }
+
@Override
public void toString(StringBuilder sb) {
sb.append(this.getPersistentType().getName());
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualBaseColumn.java
index a28099d901..37511ba623 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualBaseColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,14 +9,18 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import java.util.Iterator;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.VirtualBaseColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-public abstract class AbstractJavaVirtualBaseColumn<O extends ReadOnlyNamedColumn.Owner, C extends BaseColumn>
+public abstract class AbstractJavaVirtualBaseColumn<O extends JavaReadOnlyBaseColumn.Owner, C extends ReadOnlyBaseColumn>
extends AbstractJavaVirtualNamedColumn<O, C>
- implements VirtualBaseColumn
+ implements VirtualBaseColumn, JavaReadOnlyBaseColumn
{
protected String specifiedTable;
protected String defaultTable;
@@ -64,6 +68,7 @@ public abstract class AbstractJavaVirtualBaseColumn<O extends ReadOnlyNamedColum
// ********** table **********
+ @Override
public String getTable() {
return (this.specifiedTable != null) ? this.specifiedTable : this.defaultTable;
}
@@ -235,4 +240,27 @@ public abstract class AbstractJavaVirtualBaseColumn<O extends ReadOnlyNamedColum
protected boolean buildDefaultUpdatable() {
return DEFAULT_UPDATABLE;
}
+
+
+ // ********** misc **********
+
+ public boolean tableNameIsInvalid() {
+ return this.owner.tableNameIsInvalid(this.getTable());
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.owner.candidateTableNames();
+ }
+
+
+ // ********** validation **********
+
+ public TextRange getTableTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
+ @Override
+ protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
+ return new JavaBaseColumnTextRangeResolver(this, astRoot);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualNamedColumn.java
index cb72435abd..163294d6e4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualNamedColumn.java
@@ -9,12 +9,19 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
+import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.VirtualNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Column;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Java virtual<ul>
@@ -25,9 +32,9 @@ import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
* because <em>all</em> of it is derived from the context model (i.e. none of it
* is derived from the resource model).
*/
-public abstract class AbstractJavaVirtualNamedColumn<O extends ReadOnlyNamedColumn.Owner, C extends NamedColumn>
+public abstract class AbstractJavaVirtualNamedColumn<O extends ReadOnlyNamedColumn.Owner, C extends ReadOnlyNamedColumn>
extends AbstractJavaJpaContextNode
- implements VirtualNamedColumn
+ implements VirtualNamedColumn, JavaReadOnlyNamedColumn
{
protected final O owner;
@@ -116,12 +123,54 @@ public abstract class AbstractJavaVirtualNamedColumn<O extends ReadOnlyNamedColu
}
+ // ********** database stuff **********
+
+ protected Column getDbColumn() {
+ Table table = this.getDbTable();
+ return (table == null) ? null : table.getColumnForIdentifier(this.getName());
+ }
+
+ public Table getDbTable() {
+ return this.owner.resolveDbTable(this.getTable());
+ }
+
+ /**
+ * Return the name of the column's table. This is overridden
+ * in {@link AbstractJavaVirtualBaseColumn} where a table can be defined.
+ */
+ public String getTable() {
+ return this.owner.getTypeMapping().getPrimaryTableName();
+ }
+
+ public boolean isResolved() {
+ return this.getDbColumn() != null;
+ }
+
+
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.buildValidator(astRoot).validate(messages, reporter);
+ }
+
+ protected JptValidator buildValidator(CompilationUnit astRoot) {
+ return this.owner.buildColumnValidator(this, this.buildTextRangeResolver(astRoot));
+ }
+
+ protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
+ return new JavaNamedColumnTextRangeResolver(this, astRoot);
+ }
+
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return this.getParent().getValidationTextRange(astRoot);
}
+ public TextRange getNameTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
// ********** misc **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualOverride.java
index ca34875b28..b934a9d676 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualOverride.java
@@ -9,11 +9,22 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
+import java.util.Iterator;
+import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
import org.eclipse.jpt.jpa.core.context.java.JavaOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualOverride;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual Java override
@@ -48,16 +59,61 @@ public abstract class AbstractJavaVirtualOverride<C extends JavaOverrideContaine
return (C) super.getParent();
}
- public C getContainer() {
+ protected C getContainer() {
return this.getParent();
}
- public TextRange getValidationTextRange(CompilationUnit astRoot) {
- return this.getContainer().getValidationTextRange(astRoot);
+ public TypeMapping getTypeMapping() {
+ return this.getContainer().getTypeMapping();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getContainer().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getContainer().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, column, owner, textRangeResolver);
}
@Override
public void toString(StringBuilder sb) {
sb.append(this.name);
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.buildValidator(astRoot).validate(messages, reporter);
+ }
+
+ protected JptValidator buildValidator(CompilationUnit astRoot) {
+ return this.getContainer().buildOverrideValidator(this, this.buildTextRangeResolver(astRoot));
+ }
+
+ protected OverrideTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
+ return new JavaOverrideTextRangeResolver(this, astRoot);
+ }
+
+ public TextRange getValidationTextRange(CompilationUnit astRoot) {
+ return this.getContainer().getValidationTextRange(astRoot);
+ }
+
+ public TextRange getNameTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getContainer().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getContainer().candidateTableNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualReferenceTable.java
index ec4d5b507f..a5396070c7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualReferenceTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,34 +9,38 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
+import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
-import org.eclipse.jpt.jpa.core.context.ReferenceTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyReferenceTable;
import org.eclipse.jpt.jpa.core.context.VirtualReferenceTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable>
+public abstract class AbstractJavaVirtualReferenceTable<T extends ReadOnlyReferenceTable>
extends AbstractJavaVirtualTable<T>
implements VirtualReferenceTable
{
protected final Vector<JavaVirtualJoinColumn> specifiedJoinColumns = new Vector<JavaVirtualJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter();
- protected final ReadOnlyJoinColumn.Owner joinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner;
protected JavaVirtualJoinColumn defaultJoinColumn;
- protected AbstractJavaVirtualReferenceTable(JavaJpaContextNode parent) {
- super(parent);
+ protected AbstractJavaVirtualReferenceTable(JavaJpaContextNode parent, Owner owner) {
+ super(parent, owner);
this.joinColumnOwner = this.buildJoinColumnOwner();
}
@@ -92,7 +96,7 @@ public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable
ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenJoinColumns() {
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenJoinColumns() {
return CollectionTools.iterable(this.getOverriddenTable().specifiedJoinColumns());
}
@@ -100,7 +104,7 @@ public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable
this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
}
- protected JavaVirtualJoinColumn addSpecifiedJoinColumn(int index, JoinColumn joinColumn) {
+ protected JavaVirtualJoinColumn addSpecifiedJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
JavaVirtualJoinColumn virtualJoinColumn = this.buildJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -114,21 +118,21 @@ public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable
* specified join column container adapter
*/
protected class SpecifiedJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<JavaVirtualJoinColumn> getContextElements() {
return AbstractJavaVirtualReferenceTable.this.getSpecifiedJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return AbstractJavaVirtualReferenceTable.this.getOverriddenJoinColumns();
}
- public JoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, JavaVirtualJoinColumn element) {
AbstractJavaVirtualReferenceTable.this.moveSpecifiedJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn element) {
+ public void addContextElement(int index, ReadOnlyJoinColumn element) {
AbstractJavaVirtualReferenceTable.this.addSpecifiedJoinColumn(index, element);
}
public void removeContextElement(JavaVirtualJoinColumn element) {
@@ -178,15 +182,15 @@ public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable
// ********** misc **********
- protected JavaVirtualJoinColumn buildJoinColumn(JoinColumn joinColumn) {
+ protected JavaVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn joinColumn) {
return this.buildJoinColumn(this.joinColumnOwner, joinColumn);
}
- protected JavaVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn) {
- return this.getJpaFactory().buildJavaVirtualJoinColumn(this, owner, joinColumn);
+ protected JavaVirtualJoinColumn buildJoinColumn(JavaReadOnlyJoinColumn.Owner columnOwner, ReadOnlyJoinColumn joinColumn) {
+ return this.getJpaFactory().buildJavaVirtualJoinColumn(this, columnOwner, joinColumn);
}
- protected abstract ReadOnlyJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner();
@Override
protected String buildDefaultSchema() {
@@ -197,4 +201,23 @@ public abstract class AbstractJavaVirtualReferenceTable<T extends ReferenceTable
protected String buildDefaultCatalog() {
return this.getContextDefaultCatalog();
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ boolean continueValidating = this.buildTableValidator(astRoot).validate(messages, reporter);
+
+ //join column validation will handle the check for whether to validate against the database
+ //some validation messages are not database specific. If the database validation for the
+ //table fails we will stop there and not validate the join columns at all
+ if (continueValidating) {
+ this.validateJoinColumns(messages, reporter, astRoot);
+ }
+ }
+
+ protected void validateJoinColumns(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ this.validateNodes(this.getJoinColumns(), messages, reporter, astRoot);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualTable.java
index fad37786bd..ad603db012 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVirtualTable.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -17,20 +18,27 @@ import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.NameTools;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
-import org.eclipse.jpt.jpa.core.context.Table;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.VirtualTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualUniqueConstraint;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.db.Catalog;
import org.eclipse.jpt.jpa.db.Schema;
import org.eclipse.jpt.jpa.db.SchemaContainer;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-public abstract class AbstractJavaVirtualTable<T extends Table>
+public abstract class AbstractJavaVirtualTable<T extends ReadOnlyTable>
extends AbstractJavaJpaContextNode
- implements VirtualTable
+ implements VirtualTable, JavaReadOnlyTable
{
+ protected final Owner owner;
+
protected String specifiedName;
protected String defaultName;
@@ -44,8 +52,9 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter();
- protected AbstractJavaVirtualTable(JavaJpaContextNode parent) {
+ protected AbstractJavaVirtualTable(JavaJpaContextNode parent, Owner owner) {
super(parent);
+ this.owner = owner;
}
@@ -197,7 +206,7 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
ContextContainerTools.update(this.uniqueConstraintContainerAdapter);
}
- protected Iterable<UniqueConstraint> getOverriddenUniqueConstraints() {
+ protected Iterable<ReadOnlyUniqueConstraint> getOverriddenUniqueConstraints() {
return CollectionTools.iterable(this.getOverriddenTable().uniqueConstraints());
}
@@ -205,13 +214,13 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST);
}
- protected JavaVirtualUniqueConstraint addUniqueConstraint(int index, UniqueConstraint uniqueConstraint) {
+ protected JavaVirtualUniqueConstraint addUniqueConstraint(int index, ReadOnlyUniqueConstraint uniqueConstraint) {
JavaVirtualUniqueConstraint virtualConstraint = this.buildUniqueConstraint(uniqueConstraint);
this.addItemToList(index, virtualConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST);
return virtualConstraint;
}
- protected JavaVirtualUniqueConstraint buildUniqueConstraint(UniqueConstraint uniqueConstraint) {
+ protected JavaVirtualUniqueConstraint buildUniqueConstraint(ReadOnlyUniqueConstraint uniqueConstraint) {
return this.getJpaFactory().buildJavaVirtualUniqueConstraint(this, uniqueConstraint);
}
@@ -223,21 +232,21 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
* unique constraint container adapter
*/
protected class UniqueConstraintContainerAdapter
- implements ContextContainerTools.Adapter<JavaVirtualUniqueConstraint, UniqueConstraint>
+ implements ContextContainerTools.Adapter<JavaVirtualUniqueConstraint, ReadOnlyUniqueConstraint>
{
public Iterable<JavaVirtualUniqueConstraint> getContextElements() {
return AbstractJavaVirtualTable.this.getUniqueConstraints();
}
- public Iterable<UniqueConstraint> getResourceElements() {
+ public Iterable<ReadOnlyUniqueConstraint> getResourceElements() {
return AbstractJavaVirtualTable.this.getOverriddenUniqueConstraints();
}
- public UniqueConstraint getResourceElement(JavaVirtualUniqueConstraint contextElement) {
+ public ReadOnlyUniqueConstraint getResourceElement(JavaVirtualUniqueConstraint contextElement) {
return contextElement.getOverriddenUniqueConstraint();
}
public void moveContextElement(int index, JavaVirtualUniqueConstraint element) {
AbstractJavaVirtualTable.this.moveUniqueConstraint(index, element);
}
- public void addContextElement(int index, UniqueConstraint resourceElement) {
+ public void addContextElement(int index, ReadOnlyUniqueConstraint resourceElement) {
AbstractJavaVirtualTable.this.addUniqueConstraint(index, resourceElement);
}
public void removeContextElement(JavaVirtualUniqueConstraint element) {
@@ -258,6 +267,19 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema());
}
+ public boolean schemaIsResolved() {
+ return this.getDbSchema() != null;
+ }
+
+ /**
+ * If we don't have a catalog (i.e. we don't even have a <em>default</em>
+ * catalog), then the database probably does not support catalogs.
+ */
+ public boolean catalogIsResolved() {
+ String catalog = this.getCatalog();
+ return (catalog == null) || (this.resolveDbCatalog(catalog) != null);
+ }
+
/**
* If we don't have a catalog (i.e. we don't even have a <em>default</em> catalog),
* then the database probably does not support catalogs; and we need to
@@ -277,7 +299,7 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
return (catalog == null) ? null : this.resolveDbCatalog(catalog);
}
- protected boolean isResolved() {
+ public boolean isResolved() {
return this.getDbTable() != null;
}
@@ -297,10 +319,36 @@ public abstract class AbstractJavaVirtualTable<T extends Table>
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.buildTableValidator(astRoot).validate(messages, reporter);
+ }
+
+ protected JptValidator buildTableValidator(CompilationUnit astRoot) {
+ return this.owner.buildTableValidator(this, buildTextRangeResolver(astRoot));
+ }
+
+ protected TableTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
+ return new JavaTableTextRangeResolver(this, astRoot);
+ }
+
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return this.getParent().getValidationTextRange(astRoot);
}
+ public TextRange getNameTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
+ public TextRange getSchemaTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
+ public TextRange getCatalogTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
+
// ********** misc **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToManyRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToManyRelationship.java
index acbd82eeb9..0bfd8eec6e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToManyRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToManyRelationship.java
@@ -23,8 +23,10 @@ import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaManyToManyMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaManyToManyRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaMappingJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.OwnableRelationshipMappingAnnotation;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -33,9 +35,9 @@ public class GenericJavaManyToManyRelationship
extends AbstractJavaMappingRelationship<JavaManyToManyMapping>
implements JavaManyToManyRelationship
{
- protected final JavaMappedByRelationshipStrategy mappedByStrategy;
+ protected final JavaMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final JavaJoinTableRelationshipStrategy joinTableStrategy;
+ protected final JavaMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
public GenericJavaManyToManyRelationship(JavaManyToManyMapping parent) {
@@ -67,7 +69,7 @@ public class GenericJavaManyToManyRelationship
// ********** strategy **********
@Override
- protected JavaRelationshipStrategy buildStrategy() {
+ protected JavaMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -95,7 +97,7 @@ public class GenericJavaManyToManyRelationship
return mapping.getKey() == MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
}
- protected JavaMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected JavaMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericJavaMappedByRelationshipStrategy(this);
}
@@ -120,7 +122,7 @@ public class GenericJavaManyToManyRelationship
return this.getMappedByStrategy().getMappedByAttribute() == null;
}
- protected JavaJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected JavaMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return new GenericJavaMappingJoinTableRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToOneRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToOneRelationship.java
index c0ad6c945b..cbe1e39b02 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToOneRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaManyToOneRelationship.java
@@ -20,10 +20,12 @@ import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaManyToOneMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaMappingJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaManyToOneRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingRelationshipStrategy2_0;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -31,10 +33,10 @@ public class GenericJavaManyToOneRelationship
extends AbstractJavaMappingRelationship<JavaManyToOneMapping>
implements JavaManyToOneRelationship2_0
{
- protected final JavaJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final JavaMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
// JPA 2.0
- protected final JavaJoinTableRelationshipStrategy joinTableStrategy;
+ protected final JavaMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
public GenericJavaManyToOneRelationship(JavaManyToOneMapping parent) {
@@ -66,7 +68,7 @@ public class GenericJavaManyToOneRelationship
// ********** strategy **********
@Override
- protected JavaRelationshipStrategy buildStrategy() {
+ protected JavaMappingRelationshipStrategy2_0 buildStrategy() {
if (this.isJpa2_0Compatible()) {
if (this.joinTableStrategy.getJoinTable() != null) {
return this.joinTableStrategy;
@@ -96,7 +98,7 @@ public class GenericJavaManyToOneRelationship
return false;
}
- protected JavaJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected JavaMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return this.isJpa2_0Compatible() ?
new GenericJavaMappingJoinTableRelationshipStrategy(this) :
new NullJavaJoinTableRelationshipStrategy(this);
@@ -124,7 +126,7 @@ public class GenericJavaManyToOneRelationship
return this.joinTableStrategy.getJoinTable() == null;
}
- protected JavaJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected JavaMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return new GenericJavaMappingJoinColumnRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappedByRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappedByRelationshipStrategy.java
index 592466b523..498f7aaa26 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappedByRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappedByRelationshipStrategy.java
@@ -22,12 +22,14 @@ import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.MappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationship;
-import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingMappedByRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.OwnableRelationshipMappingAnnotation;
import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.osgi.util.NLS;
@@ -36,7 +38,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericJavaMappedByRelationshipStrategy
extends AbstractJavaJpaContextNode
- implements JavaMappedByRelationshipStrategy
+ implements JavaMappingMappedByRelationshipStrategy2_0
{
protected String mappedByAttribute;
@@ -149,6 +151,10 @@ public class GenericJavaMappedByRelationshipStrategy
return (entity == null) ? null : entity.getName();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null; // mapped-by strategies cannot be overridden
+ }
+
public void addStrategy() {
if (this.mappedByAttribute == null) {
this.setMappedByAttribute(""); //$NON-NLS-1$
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappingJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappingJoinColumnRelationshipStrategy.java
index 5e703d851b..4000558efe 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappingJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaMappingJoinColumnRelationshipStrategy.java
@@ -15,14 +15,15 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.iterators.SubIteratorWrapper;
import org.eclipse.jpt.common.utility.internal.iterators.SuperIteratorWrapper;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingJoinColumnRelationship;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
@@ -30,6 +31,8 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProv
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.resource.java.NullJoinColumnAnnotation;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute;
import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation;
@@ -39,6 +42,7 @@ import org.eclipse.jpt.jpa.db.Table;
public class GenericJavaMappingJoinColumnRelationshipStrategy
extends AbstractJavaJoinColumnRelationshipStrategy
+ implements JavaMappingJoinColumnRelationshipStrategy2_0
{
protected final boolean targetForeignKey;
@@ -104,7 +108,7 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy
}
@Override
- protected JavaJoinColumn.Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -135,6 +139,10 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy
return this.targetForeignKey;
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return overrideRelationship.getJoinColumnStrategy();
+ }
+
// ********** validation **********
@@ -150,7 +158,7 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy
// ********** join column owner **********
protected class JoinColumnOwner
- implements JavaJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -215,8 +223,8 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy
return GenericJavaMappingJoinColumnRelationshipStrategy.this.getValidationTextRange(astRoot);
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new JoinColumnValidator(this.getPersistentAttribute(), (JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new JoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToManyRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToManyRelationship.java
index 318babfe30..58298524af 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToManyRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToManyRelationship.java
@@ -24,9 +24,12 @@ import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaOneToManyMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaMappingJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToManyRelationship2_0;
import org.eclipse.jpt.jpa.core.resource.java.OneToManyAnnotation;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -36,13 +39,13 @@ public class GenericJavaOneToManyRelationship
extends AbstractJavaMappingRelationship<JavaOneToManyMapping>
implements JavaOneToManyRelationship2_0
{
- protected final JavaMappedByRelationshipStrategy mappedByStrategy;
+ protected final JavaMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final JavaJoinTableRelationshipStrategy joinTableStrategy;
+ protected final JavaMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
// JPA 2.0 or EclipseLink
protected final boolean supportsJoinColumnStrategy;
- protected final JavaJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final JavaMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
public GenericJavaOneToManyRelationship(JavaOneToManyMapping parent, boolean supportsJoinColumnStrategy) {
@@ -80,7 +83,7 @@ public class GenericJavaOneToManyRelationship
// ********** strategy **********
@Override
- protected JavaRelationshipStrategy buildStrategy() {
+ protected JavaMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -121,7 +124,7 @@ public class GenericJavaOneToManyRelationship
return false;
}
- protected JavaMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected JavaMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericJavaMappedByRelationshipStrategy(this);
}
@@ -148,7 +151,7 @@ public class GenericJavaOneToManyRelationship
! this.joinColumnStrategy.hasSpecifiedJoinColumns();
}
- protected JavaJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected JavaMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return new GenericJavaMappingJoinTableRelationshipStrategy(this);
}
@@ -174,7 +177,7 @@ public class GenericJavaOneToManyRelationship
return false;
}
- protected JavaJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected JavaMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return this.supportsJoinColumnStrategy ?
new GenericJavaMappingJoinColumnRelationshipStrategy(this, true) : // true = target foreign key
new NullJavaJoinColumnRelationshipStrategy(this);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToOneRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToOneRelationship.java
index 8ea6e4ef66..2d53030855 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToOneRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOneToOneRelationship.java
@@ -25,9 +25,13 @@ import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaOneToOneMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumnRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaMappingJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToOneRelationship2_0;
import org.eclipse.jpt.jpa.core.resource.java.OwnableRelationshipMappingAnnotation;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -37,14 +41,14 @@ public class GenericJavaOneToOneRelationship
extends AbstractJavaMappingRelationship<JavaOneToOneMapping>
implements JavaOneToOneRelationship2_0
{
- protected final JavaMappedByRelationshipStrategy mappedByStrategy;
+ protected final JavaMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final JavaPrimaryKeyJoinColumnRelationshipStrategy primaryKeyJoinColumnStrategy;
+ protected final JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 primaryKeyJoinColumnStrategy;
// JPA 2.0
- protected final JavaJoinTableRelationshipStrategy joinTableStrategy;
+ protected final JavaMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
- protected final JavaJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final JavaMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
public GenericJavaOneToOneRelationship(JavaOneToOneMapping parent) {
@@ -82,7 +86,7 @@ public class GenericJavaOneToOneRelationship
// ********** strategy **********
@Override
- protected JavaRelationshipStrategy buildStrategy() {
+ protected JavaMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -120,7 +124,7 @@ public class GenericJavaOneToOneRelationship
return mapping.getKey() == MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
}
- protected JavaMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected JavaMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericJavaMappedByRelationshipStrategy(this);
}
@@ -143,7 +147,7 @@ public class GenericJavaOneToOneRelationship
this.updateStrategy();
}
- protected JavaPrimaryKeyJoinColumnRelationshipStrategy buildPrimaryKeyJoinColumnStrategy() {
+ protected JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 buildPrimaryKeyJoinColumnStrategy() {
return new GenericJavaPrimaryKeyJoinColumnRelationshipStrategy(this);
}
@@ -170,7 +174,7 @@ public class GenericJavaOneToOneRelationship
return false;
}
- protected JavaJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected JavaMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return this.isJpa2_0Compatible() ?
new GenericJavaMappingJoinTableRelationshipStrategy(this) :
new NullJavaJoinTableRelationshipStrategy(this);
@@ -202,7 +206,7 @@ public class GenericJavaOneToOneRelationship
(this.joinTableStrategy.getJoinTable() == null);
}
- protected JavaJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected JavaMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return new GenericJavaMappingJoinColumnRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOverrideJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOverrideJoinColumnRelationshipStrategy.java
index 9190e16939..79543b74ed 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOverrideJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaOverrideJoinColumnRelationshipStrategy.java
@@ -13,18 +13,15 @@ import java.util.Iterator;
import java.util.ListIterator;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
-import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaOverrideRelationship;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
@@ -69,14 +66,14 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
}
protected AssociationOverrideAnnotation getOverrideAnnotation() {
- return this.getAssociationOverride().getOverrideAnnotation();
+ return this.getRelationship().getOverrideAnnotation();
}
// ********** misc **********
@Override
- protected Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -89,12 +86,12 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
public TypeMapping getRelationshipSource() {
return this.isTargetForeignKey() ?
this.getRelationshipMapping().getResolvedTargetEntity() :
- this.getAssociationOverrideContainer().getTypeMapping();
+ this.getRelationship().getTypeMapping();
}
public TypeMapping getRelationshipTarget() {
return this.isTargetForeignKey() ?
- this.getAssociationOverrideContainer().getTypeMapping() :
+ this.getRelationship().getTypeMapping() :
this.getRelationshipMappingTargetEntity();
}
@@ -110,39 +107,39 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
@Override
public RelationshipMapping getRelationshipMapping() {
- return this.getAssociationOverride().getMapping();
+ return this.getRelationship().getMapping();
}
protected String getAttributeName() {
- return this.getAssociationOverride().getName();
+ return this.getRelationship().getAttributeName();
}
@Override
public String getTableName() {
return this.isTargetForeignKey() ?
super.getTableName() :
- this.getAssociationOverrideContainer().getDefaultTableName();
+ this.getRelationship().getDefaultTableName();
}
@Override
public Table resolveDbTable(String tableName) {
return this.isTargetForeignKey() ?
super.resolveDbTable(tableName) :
- this.getAssociationOverrideContainer().resolveDbTable(tableName);
+ this.getRelationship().resolveDbTable(tableName);
}
@Override
public boolean tableNameIsInvalid(String tableName) {
return this.isTargetForeignKey() ?
super.tableNameIsInvalid(tableName) :
- this.getAssociationOverrideContainer().tableNameIsInvalid(tableName);
+ this.getRelationship().tableNameIsInvalid(tableName);
}
@Override
public Iterator<String> candidateTableNames() {
return this.isTargetForeignKey() ?
super.candidateTableNames() :
- this.getAssociationOverrideContainer().candidateTableNames();
+ this.getRelationship().candidateTableNames();
}
public String getColumnTableNotValidDescription() {
@@ -153,19 +150,14 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
return false;
}
- protected JavaAssociationOverride getAssociationOverride() {
- return this.getRelationship().getAssociationOverride();
- }
-
- protected JavaAssociationOverrideContainer getAssociationOverrideContainer() {
- return this.getAssociationOverride().getContainer();
- }
-
@Override
public JavaOverrideRelationship getRelationship() {
return (JavaOverrideRelationship) super.getRelationship();
}
+
+ // ********** validation **********
+
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return this.getRelationship().getValidationTextRange(astRoot);
}
@@ -174,7 +166,7 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
// ********** join column owner adapter **********
protected class JoinColumnOwner
- implements JavaJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -234,16 +226,8 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy
return GenericJavaOverrideJoinColumnRelationshipStrategy.this.getValidationTextRange(astRoot);
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getAssociationOverrideContainer().buildColumnValidator(this.getAssociationOverride(), (BaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
- }
-
- protected JavaAssociationOverride getAssociationOverride() {
- return GenericJavaOverrideJoinColumnRelationshipStrategy.this.getAssociationOverride();
- }
-
- protected JavaAssociationOverrideContainer getAssociationOverrideContainer() {
- return GenericJavaOverrideJoinColumnRelationshipStrategy.this.getAssociationOverrideContainer();
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericJavaOverrideJoinColumnRelationshipStrategy.this.getRelationship().buildColumnValidator((ReadOnlyBaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.java
index a55f54f9b7..cab786efa2 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.java
@@ -21,17 +21,16 @@ import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterators.SubIteratorWrapper;
import org.eclipse.jpt.common.utility.internal.iterators.SuperIteratorWrapper;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipMapping;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
@@ -39,6 +38,8 @@ import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.OneToOnePrimaryKeyJoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute;
import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.NestablePrimaryKeyJoinColumnAnnotation;
@@ -50,11 +51,11 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy
extends AbstractJavaJpaContextNode
- implements JavaPrimaryKeyJoinColumnRelationshipStrategy
+ implements JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0
{
protected final Vector<JavaPrimaryKeyJoinColumn> primaryKeyJoinColumns = new Vector<JavaPrimaryKeyJoinColumn>();
protected final PrimaryKeyJoinColumnContainerAdapter primaryKeyJoinColumnContainerAdapter;
- protected final JavaJoinColumn.Owner primaryKeyJoinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner primaryKeyJoinColumnOwner;
public GenericJavaPrimaryKeyJoinColumnRelationshipStrategy(JavaPrimaryKeyJoinColumnRelationship parent) {
@@ -187,7 +188,7 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy
}
}
- protected JavaJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
return new PrimaryKeyJoinColumnOwner();
}
@@ -266,6 +267,10 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy
return this.getRelationshipMapping().getTypeMapping();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null; // pk join column strategies cannot be overridden
+ }
+
public void addStrategy() {
if (this.primaryKeyJoinColumns.size() == 0) {
this.addPrimaryKeyJoinColumn();
@@ -315,7 +320,7 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy
// ********** join column owner **********
protected class PrimaryKeyJoinColumnOwner
- implements JavaJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected PrimaryKeyJoinColumnOwner() {
super();
@@ -380,8 +385,8 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy
return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.primaryKeyJoinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new OneToOnePrimaryKeyJoinColumnValidator(this.getPersistentAttribute(), (BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new OneToOnePrimaryKeyJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
protected JavaRelationshipMapping getRelationshipMapping() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaVirtualJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaVirtualJoinTable.java
index f27ca4df39..283cee058d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaVirtualJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaVirtualJoinTable.java
@@ -9,46 +9,58 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.java;
+import java.util.Iterator;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
+import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
+import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTable;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualRelationship;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Java virtual join table
*/
public class GenericJavaVirtualJoinTable
- extends AbstractJavaVirtualReferenceTable<JoinTable>
+ extends AbstractJavaVirtualReferenceTable<ReadOnlyJoinTable>
implements JavaVirtualJoinTable
{
- protected final JoinTable overriddenTable;
+ protected final ReadOnlyJoinTable overriddenTable;
protected final Vector<JavaVirtualJoinColumn> specifiedInverseJoinColumns = new Vector<JavaVirtualJoinColumn>();
protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter();
- protected final ReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
protected JavaVirtualJoinColumn defaultInverseJoinColumn;
- public GenericJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable) {
- super(parent);
+ public GenericJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, Owner owner, ReadOnlyJoinTable overriddenTable) {
+ super(parent, owner);
this.overriddenTable = overriddenTable;
this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner();
}
@@ -67,7 +79,7 @@ public class GenericJavaVirtualJoinTable
// ********** table **********
@Override
- public JoinTable getOverriddenTable() {
+ public ReadOnlyJoinTable getOverriddenTable() {
return this.overriddenTable;
}
@@ -113,7 +125,7 @@ public class GenericJavaVirtualJoinTable
ContextContainerTools.update(this.specifiedInverseJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenInverseJoinColumns() {
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenInverseJoinColumns() {
return CollectionTools.iterable(this.getOverriddenTable().specifiedInverseJoinColumns());
}
@@ -121,7 +133,7 @@ public class GenericJavaVirtualJoinTable
this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST);
}
- protected JavaVirtualJoinColumn addSpecifiedInverseJoinColumn(int index, JoinColumn joinColumn) {
+ protected JavaVirtualJoinColumn addSpecifiedInverseJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
JavaVirtualJoinColumn virtualJoinColumn = this.buildInverseJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -135,21 +147,21 @@ public class GenericJavaVirtualJoinTable
* specified inverse join column container adapter
*/
protected class SpecifiedInverseJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<JavaVirtualJoinColumn> getContextElements() {
return GenericJavaVirtualJoinTable.this.getSpecifiedInverseJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return GenericJavaVirtualJoinTable.this.getOverriddenInverseJoinColumns();
}
- public JoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, JavaVirtualJoinColumn element) {
GenericJavaVirtualJoinTable.this.moveSpecifiedInverseJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn element) {
+ public void addContextElement(int index, ReadOnlyJoinColumn element) {
GenericJavaVirtualJoinTable.this.addSpecifiedInverseJoinColumn(index, element);
}
public void removeContextElement(JavaVirtualJoinColumn element) {
@@ -204,30 +216,30 @@ public class GenericJavaVirtualJoinTable
return (JavaVirtualJoinTableRelationshipStrategy) super.getParent();
}
- protected JavaVirtualJoinTableRelationshipStrategy getJoinStrategy() {
+ protected JavaVirtualJoinTableRelationshipStrategy getRelationshipStrategy() {
return this.getParent();
}
@Override
- protected ReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
- protected ReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
return new InverseJoinColumnOwner();
}
- protected JavaVirtualJoinColumn buildInverseJoinColumn(JoinColumn joinColumn) {
+ protected JavaVirtualJoinColumn buildInverseJoinColumn(ReadOnlyJoinColumn joinColumn) {
return this.buildJoinColumn(this.inverseJoinColumnOwner, joinColumn);
}
@Override
protected String buildDefaultName() {
- return this.getJoinStrategy().getJoinTableDefaultName();
+ return this.getRelationshipStrategy().getJoinTableDefaultName();
}
public RelationshipMapping getRelationshipMapping() {
- return this.getJoinStrategy().getRelationship().getMapping();
+ return this.getRelationshipStrategy().getRelationship().getMapping();
}
public PersistentAttribute getPersistentAttribute() {
@@ -235,13 +247,26 @@ public class GenericJavaVirtualJoinTable
}
+ // ********** validation **********
+
+ @Override
+ protected void validateJoinColumns(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validateJoinColumns(messages, reporter, astRoot);
+ this.validateNodes(this.getInverseJoinColumns(), messages, reporter, astRoot);
+ }
+
+ public boolean validatesAgainstDatabase() {
+ return this.getRelationshipStrategy().validatesAgainstDatabase();
+ }
+
+
// ********** join column owners **********
/**
* just a little common behavior
*/
protected abstract class AbstractJoinColumnOwner
- implements ReadOnlyJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected AbstractJoinColumnOwner() {
super();
@@ -252,6 +277,34 @@ public class GenericJavaVirtualJoinTable
}
/**
+ * @see MappingTools#buildJoinColumnDefaultName(org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn, org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn.Owner)
+ */
+ public String getDefaultColumnName() {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * If there is a specified table name it needs to be the same
+ * the default table name. The table is always the join table.
+ */
+ public boolean tableNameIsInvalid(String tableName) {
+ return Tools.valuesAreDifferent(this.getDefaultTableName(), tableName);
+ }
+
+ /**
+ * the join column can only be on the join table itself
+ */
+ public Iterator<String> candidateTableNames() {
+ return EmptyIterator.instance();
+ }
+
+ public org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName) {
+ return Tools.valuesAreEqual(GenericJavaVirtualJoinTable.this.getName(), tableName) ?
+ GenericJavaVirtualJoinTable.this.getDbTable() :
+ null;
+ }
+
+ /**
* by default, the join column is, obviously, in the join table;
* not sure whether it can be anywhere else...
*/
@@ -259,15 +312,12 @@ public class GenericJavaVirtualJoinTable
return GenericJavaVirtualJoinTable.this.getName();
}
- /**
- * @see MappingTools#buildJoinColumnDefaultName(org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn, org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn.Owner)
- */
- public String getDefaultColumnName() {
- throw new UnsupportedOperationException();
+ public TextRange getValidationTextRange(CompilationUnit astRoot) {
+ return GenericJavaVirtualJoinTable.this.getValidationTextRange(astRoot);
}
protected JavaVirtualRelationship getRelationship() {
- return GenericJavaVirtualJoinTable.this.getJoinStrategy().getRelationship();
+ return GenericJavaVirtualJoinTable.this.getRelationshipStrategy().getRelationship();
}
}
@@ -291,6 +341,10 @@ public class GenericJavaVirtualJoinTable
return MappingTools.getTargetAttributeName(GenericJavaVirtualJoinTable.this.getRelationshipMapping());
}
+ public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
+ return this.getTypeMapping().getPrimaryDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return GenericJavaVirtualJoinTable.this.defaultJoinColumn == joinColumn;
}
@@ -298,6 +352,10 @@ public class GenericJavaVirtualJoinTable
public int joinColumnsSize() {
return GenericJavaVirtualJoinTable.this.joinColumnsSize();
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericJavaVirtualJoinTable.this.getRelationshipStrategy().buildJoinTableJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ }
}
@@ -322,6 +380,11 @@ public class GenericJavaVirtualJoinTable
return (relationshipMapping == null) ? null : relationshipMapping.getName();
}
+ public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
+ Entity relationshipTarget = this.getRelationshipTarget();
+ return (relationshipTarget == null) ? null : relationshipTarget.getPrimaryDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return GenericJavaVirtualJoinTable.this.defaultInverseJoinColumn == joinColumn;
}
@@ -329,5 +392,9 @@ public class GenericJavaVirtualJoinTable
public int joinColumnsSize() {
return GenericJavaVirtualJoinTable.this.inverseJoinColumnsSize();
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericJavaVirtualJoinTable.this.getRelationshipStrategy().buildJoinTableInverseJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBaseColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBaseColumnTextRangeResolver.java
index 951094aed6..d1ae9869c9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBaseColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBaseColumnTextRangeResolver.java
@@ -1,34 +1,28 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
public class JavaBaseColumnTextRangeResolver
- extends JavaNamedColumnTextRangeResolver
+ extends AbstractJavaNamedColumnTextRangeResolver<JavaReadOnlyBaseColumn>
implements BaseColumnTextRangeResolver
{
-
- public JavaBaseColumnTextRangeResolver(JavaBaseColumn column, CompilationUnit astRoot) {
+ public JavaBaseColumnTextRangeResolver(JavaReadOnlyBaseColumn column, CompilationUnit astRoot) {
super(column, astRoot);
}
- @Override
- protected JavaBaseColumn getColumn() {
- return (JavaBaseColumn) super.getColumn();
- }
public TextRange getTableTextRange() {
- return this.getColumn().getTableTextRange(this.astRoot);
+ return this.column.getTableTextRange(this.astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaJoinColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaJoinColumnTextRangeResolver.java
index e715135955..5d1f33cb37 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaJoinColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaJoinColumnTextRangeResolver.java
@@ -1,38 +1,32 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
public class JavaJoinColumnTextRangeResolver
- extends JavaNamedColumnTextRangeResolver
+ extends AbstractJavaNamedColumnTextRangeResolver<JavaReadOnlyJoinColumn>
implements JoinColumnTextRangeResolver
{
- public JavaJoinColumnTextRangeResolver(JavaJoinColumn column, CompilationUnit astRoot) {
+ public JavaJoinColumnTextRangeResolver(JavaReadOnlyJoinColumn column, CompilationUnit astRoot) {
super(column, astRoot);
}
- @Override
- protected JavaJoinColumn getColumn() {
- return (JavaJoinColumn) super.getColumn();
- }
-
public TextRange getTableTextRange() {
- return this.getColumn().getTableTextRange(this.astRoot);
+ return this.column.getTableTextRange(this.astRoot);
}
public TextRange getReferencedColumnNameTextRange() {
- return this.getColumn().getReferencedColumnNameTextRange(this.astRoot);
+ return this.column.getReferencedColumnNameTextRange(this.astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNamedColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNamedColumnTextRangeResolver.java
index cab6e08e67..6dbf8d9884 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNamedColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNamedColumnTextRangeResolver.java
@@ -1,37 +1,21 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
-import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
public class JavaNamedColumnTextRangeResolver
- implements NamedColumnTextRangeResolver
+ extends AbstractJavaNamedColumnTextRangeResolver<JavaReadOnlyNamedColumn>
{
- protected final JavaNamedColumn javaNamedColumn;
-
- protected final CompilationUnit astRoot;
-
- public JavaNamedColumnTextRangeResolver(JavaNamedColumn javaNamedColumn, CompilationUnit astRoot) {
- this.javaNamedColumn = javaNamedColumn;
- this.astRoot = astRoot;
- }
-
- protected JavaNamedColumn getColumn() {
- return this.javaNamedColumn;
- }
-
- public TextRange getNameTextRange() {
- return this.javaNamedColumn.getNameTextRange(this.astRoot);
+ public JavaNamedColumnTextRangeResolver(JavaReadOnlyNamedColumn column, CompilationUnit astRoot) {
+ super(column, astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOverrideTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOverrideTextRangeResolver.java
index 7dcd7ce470..cc39280cb8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOverrideTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOverrideTextRangeResolver.java
@@ -1,36 +1,31 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaOverride;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyOverride;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
public class JavaOverrideTextRangeResolver
implements OverrideTextRangeResolver
{
- protected final JavaOverride javaOverride;
+ protected final JavaReadOnlyOverride javaOverride;
protected final CompilationUnit astRoot;
- public JavaOverrideTextRangeResolver(JavaOverride javaOverride, CompilationUnit astRoot) {
+ public JavaOverrideTextRangeResolver(JavaReadOnlyOverride javaOverride, CompilationUnit astRoot) {
this.javaOverride = javaOverride;
this.astRoot = astRoot;
}
- protected JavaOverride getOverride() {
- return this.javaOverride;
- }
-
public TextRange getNameTextRange() {
return this.javaOverride.getNameTextRange(this.astRoot);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaPrimaryKeyJoinColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaPrimaryKeyJoinColumnTextRangeResolver.java
index 261f522f4a..5c48c75400 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaPrimaryKeyJoinColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaPrimaryKeyJoinColumnTextRangeResolver.java
@@ -1,13 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -16,7 +15,7 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
public class JavaPrimaryKeyJoinColumnTextRangeResolver
- extends JavaNamedColumnTextRangeResolver
+ extends AbstractJavaNamedColumnTextRangeResolver<JavaPrimaryKeyJoinColumn>
implements BaseJoinColumnTextRangeResolver
{
@@ -24,12 +23,7 @@ public class JavaPrimaryKeyJoinColumnTextRangeResolver
super(column, astRoot);
}
- @Override
- protected JavaPrimaryKeyJoinColumn getColumn() {
- return (JavaPrimaryKeyJoinColumn) super.getColumn();
- }
-
public TextRange getReferencedColumnNameTextRange() {
- return this.getColumn().getReferencedColumnNameTextRange(this.astRoot);
+ return this.column.getReferencedColumnNameTextRange(this.astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTableTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTableTextRangeResolver.java
index 2f431635bb..8d42bc6983 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTableTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTableTextRangeResolver.java
@@ -1,45 +1,42 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.java.JavaTable;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
public class JavaTableTextRangeResolver
implements TableTextRangeResolver
{
- protected final JavaTable javaTable;
+ protected final JavaReadOnlyTable table;
protected final CompilationUnit astRoot;
- public JavaTableTextRangeResolver(JavaTable javaTable, CompilationUnit astRoot) {
- this.javaTable = javaTable;
- this.astRoot = astRoot;
- }
- protected JavaTable getTable() {
- return this.javaTable;
+ public JavaTableTextRangeResolver(JavaReadOnlyTable table, CompilationUnit astRoot) {
+ super();
+ this.table = table;
+ this.astRoot = astRoot;
}
public TextRange getNameTextRange() {
- return this.javaTable.getNameTextRange(this.astRoot);
+ return this.table.getNameTextRange(this.astRoot);
}
public TextRange getCatalogTextRange() {
- return this.javaTable.getCatalogTextRange(this.astRoot);
+ return this.table.getCatalogTextRange(this.astRoot);
}
public TextRange getSchemaTextRange() {
- return this.javaTable.getSchemaTextRange(this.astRoot);
+ return this.table.getSchemaTextRange(this.astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseColumn.java
index f6aa8a2149..a671215769 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseColumn.java
@@ -14,13 +14,14 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmBaseColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlColumn;
/**
* <code>orm.xml</code> column or join column
*/
-public abstract class AbstractOrmBaseColumn<X extends AbstractXmlColumn, O extends OrmBaseColumn.Owner>
+public abstract class AbstractOrmBaseColumn<X extends AbstractXmlColumn, O extends OrmReadOnlyBaseColumn.Owner>
extends AbstractOrmNamedColumn<X, O>
implements OrmBaseColumn
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
index 9334507a51..3d0109dfad 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBaseEmbeddedMapping.java
@@ -20,11 +20,12 @@ import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
@@ -92,9 +93,7 @@ public abstract class AbstractOrmBaseEmbeddedMapping<X extends AbstractXmlEmbedd
return this.getContextNodeFactory().buildOrmAttributeOverrideContainer(this, this.buildAttributeOverrideContainerOwner());
}
- protected OrmAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() {
- return new AttributeOverrideContainerOwner();
- }
+ protected abstract OrmAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner();
// ********** target embeddable **********
@@ -231,7 +230,7 @@ public abstract class AbstractOrmBaseEmbeddedMapping<X extends AbstractXmlEmbedd
// ********** attribute override container owner *********
- protected class AttributeOverrideContainerOwner
+ protected abstract class AttributeOverrideContainerOwner
implements OrmAttributeOverrideContainer.Owner
{
public OrmTypeMapping getTypeMapping() {
@@ -243,8 +242,8 @@ public abstract class AbstractOrmBaseEmbeddedMapping<X extends AbstractXmlEmbedd
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? this.allOverridableAttributeNames_(typeMapping) : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? this.allOverridableAttributeNames_(overriddenTypeMapping) : EmptyIterator.<String>instance();
}
/**
@@ -252,8 +251,12 @@ public abstract class AbstractOrmBaseEmbeddedMapping<X extends AbstractXmlEmbedd
* <p>
* NB: Overridden in {@link GenericOrmEmbeddedIdMapping.AttributeOverrideContainerOwner}
*/
- protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) {
- return typeMapping.allOverridableAttributeNames();
+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping overriddenTypeMapping) {
+ return overriddenTypeMapping.allOverridableAttributeNames();
+ }
+
+ public Iterable<String> getJavaOverrideNames() {
+ return null;
}
public EList<XmlAttributeOverride> getXmlOverrides() {
@@ -280,12 +283,12 @@ public abstract class AbstractOrmBaseEmbeddedMapping<X extends AbstractXmlEmbedd
return this.getTypeMapping().getPrimaryTableName();
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
}
public TextRange getValidationTextRange() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBasicMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBasicMapping.java
index 60ab3a1f63..1ee7c0a032 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBasicMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmBasicMapping.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -17,10 +17,10 @@ import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Converter;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmBasicMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumn;
@@ -419,7 +419,7 @@ public abstract class AbstractOrmBasicMapping<X extends XmlBasic>
this.converter.validate(messages, reporter);
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
index 127d74b7d3..4831eebcd7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
@@ -9,21 +9,19 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
-import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
-
import org.eclipse.emf.common.util.EList;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IType;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.ClassName;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
-import org.eclipse.jpt.common.utility.internal.HashBag;
import org.eclipse.jpt.common.utility.internal.NotNullFilter;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.Tools;
@@ -36,7 +34,6 @@ import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneIterable;
-import org.eclipse.jpt.common.utility.internal.iterables.SubIterableWrapper;
import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable;
import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
@@ -49,24 +46,26 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.DiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.DiscriminatorType;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.InheritanceType;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.PersistentType;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.ReadOnlyPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
@@ -75,25 +74,26 @@ import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
import org.eclipse.jpt.jpa.core.context.java.JavaIdClassReference;
+import org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
+import org.eclipse.jpt.jpa.core.context.java.JavaTypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.orm.OrmBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmDiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
import org.eclipse.jpt.jpa.core.context.orm.OrmGeneratorContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmIdClassReference;
-import org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmQueryContainer;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmSecondaryTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmTable;
-import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualSecondaryTable;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
@@ -123,7 +123,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.SecondaryTableValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.TableValidator;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
-import org.eclipse.jpt.jpa.core.jpa2.context.SingleRelationshipMapping2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCacheableHolder2_0;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType;
import org.eclipse.jpt.jpa.core.resource.orm.Inheritance;
@@ -160,6 +160,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
protected boolean specifiedTableIsAllowed;
protected boolean tableIsUndefined;
+ protected final ReadOnlyTable.Owner secondaryTableOwner;
protected final Vector<OrmSecondaryTable> specifiedSecondaryTables = new Vector<OrmSecondaryTable>();
protected final SpecifiedSecondaryTableContainerAdapter specifiedSecondaryTableContainerAdapter = new SpecifiedSecondaryTableContainerAdapter();
@@ -203,6 +204,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
this.specifiedName = xmlEntity.getName();
this.idClassReference = this.buildIdClassReference();
this.table = this.buildTable();
+ this.secondaryTableOwner = this.buildSecondaryTableOwner();
this.initializeSpecifiedSecondaryTables();
this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner();
this.initializeSpecifiedPrimaryKeyJoinColumns();
@@ -493,9 +495,9 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
protected static class TableOwner
- implements Table.Owner
+ implements ReadOnlyTable.Owner
{
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
return new TableValidator(table, textRangeResolver);
}
}
@@ -593,16 +595,12 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
protected void initializeSpecifiedSecondaryTables() {
for (XmlSecondaryTable xmlTable : this.getXmlSecondaryTables()) {
- this.specifiedSecondaryTables.add(this.buildSecondaryTable(xmlTable));
+ this.specifiedSecondaryTables.add(this.buildSpecifiedSecondaryTable(xmlTable));
}
}
- protected OrmSecondaryTable buildSecondaryTable(XmlSecondaryTable xmlSecondaryTable) {
- return this.getContextNodeFactory().buildOrmSecondaryTable(this, this.buildSecondaryTableOwner(), xmlSecondaryTable);
- }
-
- protected Table.Owner buildSecondaryTableOwner() {
- return new SecondaryTableOwner();
+ protected OrmSecondaryTable buildSpecifiedSecondaryTable(XmlSecondaryTable xmlSecondaryTable) {
+ return this.getContextNodeFactory().buildOrmSecondaryTable(this, this.secondaryTableOwner, xmlSecondaryTable);
}
protected void clearSpecifiedSecondaryTables() {
@@ -624,7 +622,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
protected OrmSecondaryTable addSpecifiedSecondaryTable_(int index, XmlSecondaryTable xmlSecondaryTable) {
- OrmSecondaryTable secondaryTable = this.buildSecondaryTable(xmlSecondaryTable);
+ OrmSecondaryTable secondaryTable = this.buildSpecifiedSecondaryTable(xmlSecondaryTable);
this.addItemToList(index, secondaryTable, this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST);
return secondaryTable;
}
@@ -659,14 +657,6 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
}
- protected static class SecondaryTableOwner
- implements Table.Owner
- {
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
- return new SecondaryTableValidator((SecondaryTable) table, textRangeResolver);
- }
- }
-
// ********** virtual secondary tables **********
@@ -722,7 +712,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
protected OrmVirtualSecondaryTable buildVirtualSecondaryTable(JavaSecondaryTable javaSecondaryTable) {
- return this.getContextNodeFactory().buildOrmVirtualSecondaryTable(this, javaSecondaryTable);
+ return this.getContextNodeFactory().buildOrmVirtualSecondaryTable(this, this.secondaryTableOwner, javaSecondaryTable);
}
protected void removeVirtualSecondaryTable(OrmVirtualSecondaryTable secondaryTable) {
@@ -799,6 +789,18 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
// the virtual secondary tables will be built during the update
}
+ protected Table.Owner buildSecondaryTableOwner() {
+ return new SecondaryTableOwner();
+ }
+
+ protected static class SecondaryTableOwner
+ implements ReadOnlyTable.Owner
+ {
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return new SecondaryTableValidator((ReadOnlySecondaryTable) table, textRangeResolver);
+ }
+ }
+
// ********** primary key join columns **********
@@ -1335,6 +1337,21 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
+ // ********** override container **********
+
+ protected JavaEntity getJavaOverrideContainerEntity() {
+ if (this.isMetadataComplete()) {
+ return null;
+ }
+ JavaPersistentType javaType = this.getJavaPersistentType();
+ if (javaType == null) {
+ return null;
+ }
+ JavaTypeMapping javaTypeMapping = javaType.getMapping();
+ return (javaTypeMapping instanceof JavaEntity) ? (JavaEntity) javaTypeMapping : null;
+ }
+
+
// ********** attribute override container **********
public OrmAttributeOverrideContainer getAttributeOverrideContainer() {
@@ -1350,7 +1367,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
return (superPersistentType == null) ? null : superPersistentType.getMapping();
}
- protected Column resolveOverriddenColumnForAttributeOverride(String attributeName) {
+ protected ReadOnlyColumn resolveOverriddenColumnForAttributeOverride(String attributeName) {
if ( ! this.isMetadataComplete()) {
JavaPersistentType javaType = this.getJavaPersistentType();
if (javaType != null) {
@@ -1394,7 +1411,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
return super.resolveOverriddenRelationship(attributeName);
}
- protected Relationship resolveOverriddenRelationshipForAssociationOverride(String attributeName) {
+ protected ReadOnlyRelationship resolveOverriddenRelationshipForAssociationOverride(String attributeName) {
if ( ! this.isMetadataComplete()) {
JavaPersistentType javaType = this.getJavaPersistentType();
if (javaType != null) {
@@ -1482,7 +1499,13 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
protected boolean tableNameIsValid(String tableName) {
- return this.tableIsUndefined || CollectionTools.contains(this.getAllAssociatedTableNames(), tableName);
+ return this.tableIsUndefined || this.tableNameIsValid_(tableName);
+ }
+
+ protected boolean tableNameIsValid_(String tableName) {
+ return this.connectionProfileIsActive() ?
+ (this.resolveDbTable(tableName) != null) :
+ CollectionTools.contains(this.getAllAssociatedTableNames(), tableName);
}
@@ -1800,7 +1823,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
}
protected void validateDuplicateEntityNames(List<IMessage> messages) {
- HashBag<String> javaEntityNamesExclOverridden = CollectionTools.bag(this.getPersistenceUnit().javaEntityNamesExclOverridden());
+ HashSet<String> javaEntityNamesExclOverridden = CollectionTools.set(this.getPersistenceUnit().javaEntityNamesExclOverridden());
Map<String, Set<String>> map = this.getPersistenceUnit().mapEntityNameToClassNames();
Set<String> classNames = map.get(this.getName());
// Check whether or not this entity name has duplicates among the orm entities defined with different classes
@@ -1991,7 +2014,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
protected abstract class OverrideContainerOwner
implements OrmOverrideContainer.Owner
{
- public OrmTypeMapping getTypeMapping() {
+ public AbstractOrmEntity<?> getTypeMapping() {
return AbstractOrmEntity.this;
}
@@ -2003,15 +2026,35 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
return AbstractOrmEntity.this.getOverridableTypeMapping();
}
+ /**
+ * Use the Java overrides if appropriate, so we bring over any invalid
+ * overrides also.
+ * @see JavaOverrideContainer#getOverrideNames()
+ */
+ public Iterable<String> getJavaOverrideNames() {
+ JavaEntity javaEntity = this.getJavaOverrideContainerEntity();
+ return (javaEntity == null) ? null : this.getOverrideContainer(javaEntity).getOverrideNames();
+ }
+
+ /**
+ * Return the Java entity with the corresponding override container.
+ * Return <code>null</code> if not appropriate.
+ */
+ protected JavaEntity getJavaOverrideContainerEntity() {
+ return AbstractOrmEntity.this.getJavaOverrideContainerEntity();
+ }
+
+ protected abstract JavaOverrideContainer getOverrideContainer(JavaEntity javaEntity);
+
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? this.allOverridableNames_(typeMapping) : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? this.allOverridableNames_(overriddenTypeMapping) : EmptyIterator.<String>instance();
}
/**
* pre-condition: <code>typeMapping</code> is not <code>null</code>
*/
- protected abstract Iterator<String> allOverridableNames_(TypeMapping typeMapping);
+ protected abstract Iterator<String> allOverridableNames_(TypeMapping overriddenTypeMapping);
public String getDefaultTableName() {
return AbstractOrmEntity.this.getPrimaryTableName();
@@ -2038,64 +2081,37 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
implements OrmAttributeOverrideContainer.Owner
{
@Override
- protected Iterator<String> allOverridableNames_(TypeMapping typeMapping) {
- final Collection<String> mappedByRelationshipAttributes = CollectionTools.collection(
- new TransformationIterator<SingleRelationshipMapping2_0, String>(this.getMapsIdRelationships()) {
- @Override
- protected String transform(SingleRelationshipMapping2_0 mapping) {
- return mapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getValue();
- }
- });
- return new FilteringIterator<String>(typeMapping.allOverridableAttributeNames()) {
- @Override
- protected boolean accept(String name) {
- if (mappedByRelationshipAttributes.isEmpty()) {
- return true;
- }
- // overridable names are (usually?) qualified with a container mapping,
- // which may also be the one mapped by a relationship
- int index = name.indexOf('.');
- String qualifier = (index > 0) ? name.substring(0, index) : name;
- return ! mappedByRelationshipAttributes.contains(qualifier);
- }
- };
+ protected JavaOverrideContainer getOverrideContainer(JavaEntity javaEntity) {
+ return javaEntity.getAttributeOverrideContainer();
}
- protected Iterable<SingleRelationshipMapping2_0> getMapsIdRelationships() {
- return new FilteringIterable<SingleRelationshipMapping2_0>(this.getSingleRelationshipMappings()) {
+ @Override
+ protected Iterator<String> allOverridableNames_(TypeMapping overriddenTypeMapping) {
+ return new FilteringIterator<String>(overriddenTypeMapping.allOverridableAttributeNames()) {
@Override
- protected boolean accept(SingleRelationshipMapping2_0 mapping) {
- return mapping.getDerivedIdentity().usesMapsIdDerivedIdentityStrategy();
+ protected boolean accept(String attributeName) {
+ return ! AttributeOverrideContainerOwner.this.getTypeMapping().attributeIsDerivedId(attributeName);
}
};
}
- protected Iterable<SingleRelationshipMapping2_0> getSingleRelationshipMappings() {
- return new SubIterableWrapper<AttributeMapping, SingleRelationshipMapping2_0>(this.getSingleRelationshipMappings_());
- }
-
- @SuppressWarnings("unchecked")
- protected Iterable<AttributeMapping> getSingleRelationshipMappings_() {
- return new CompositeIterable<AttributeMapping>(
- this.getTypeMapping().getAllAttributeMappings(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY),
- this.getTypeMapping().getAllAttributeMappings(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY)
- );
- }
-
public EList<XmlAttributeOverride> getXmlOverrides() {
return AbstractOrmEntity.this.xmlTypeMapping.getAttributeOverrides();
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator((AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator((ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator((AttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator((ReadOnlyAttributeOverride) override, column, textRangeResolver, new EntityTableDescriptionProvider());
}
- public Column resolveOverriddenColumn(String attributeName) {
- return AbstractOrmEntity.this.resolveOverriddenColumnForAttributeOverride(attributeName);
+ public ReadOnlyColumn resolveOverriddenColumn(String attributeName) {
+ JavaEntity javaEntity = this.getJavaOverrideContainerEntity();
+ return (javaEntity != null) ?
+ javaEntity.getAttributeOverrideContainer().getOverrideColumn(attributeName) :
+ AbstractOrmEntity.this.resolveOverriddenColumnForAttributeOverride(attributeName);
}
}
@@ -2104,9 +2120,14 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
protected class AssociationOverrideContainerOwner
extends OverrideContainerOwner
- implements OrmAssociationOverrideContainer.Owner
+ implements OrmAssociationOverrideContainer2_0.Owner
{
@Override
+ protected JavaOverrideContainer getOverrideContainer(JavaEntity javaEntity) {
+ return javaEntity.getAssociationOverrideContainer();
+ }
+
+ @Override
protected Iterator<String> allOverridableNames_(TypeMapping typeMapping) {
return typeMapping.allOverridableAssociationNames();
}
@@ -2115,28 +2136,31 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
return AbstractOrmEntity.this.xmlTypeMapping.getAssociationOverrides();
}
- public Relationship resolveOverriddenRelationship(String attributeName) {
- return AbstractOrmEntity.this.resolveOverriddenRelationshipForAssociationOverride(attributeName);
+ public ReadOnlyRelationship resolveOverriddenRelationship(String attributeName) {
+ JavaEntity javaEntity = this.getJavaOverrideContainerEntity();
+ return (javaEntity != null) ?
+ javaEntity.getAssociationOverrideContainer().getOverrideRelationship(attributeName) :
+ AbstractOrmEntity.this.resolveOverriddenRelationshipForAssociationOverride(attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator((AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator((ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new MappedSuperclassOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator((AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator((ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideJoinColumnValidator(override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideInverseJoinColumnValidator(override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildTableValidator(AssociationOverride override, Table t, TableTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinTableValidator(override, (JoinTable) t, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable t, TableTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinTableValidator(override, (ReadOnlyJoinTable) t, textRangeResolver);
}
}
@@ -2147,7 +2171,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
* some common behavior
*/
protected abstract class NamedColumnOwner
- implements OrmNamedColumn.Owner
+ implements OrmReadOnlyNamedColumn.Owner
{
public TypeMapping getTypeMapping() {
return AbstractOrmEntity.this;
@@ -2171,7 +2195,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
protected class PrimaryKeyJoinColumnOwner
extends NamedColumnOwner
- implements OrmBaseJoinColumn.Owner
+ implements OrmReadOnlyBaseJoinColumn.Owner
{
public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
Entity parentEntity = AbstractOrmEntity.this.getParentEntity();
@@ -2194,8 +2218,8 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
return (parentEntity == null) ? AbstractOrmEntity.this.getPrimaryKeyColumnName() : parentEntity.getPrimaryKeyColumnName();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new EntityPrimaryKeyJoinColumnValidator((BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new EntityPrimaryKeyJoinColumnValidator((ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
}
@@ -2251,7 +2275,7 @@ public abstract class AbstractOrmEntity<X extends XmlEntity>
this.isTablePerClass() ? null : DiscriminatorColumn.DEFAULT_DISCRIMINATOR_TYPE;
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
return new DiscriminatorColumnValidator(column, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmIdMapping.java
index 3cf5ff56f6..d2ab3a23e4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmIdMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmIdMapping.java
@@ -15,14 +15,13 @@ import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IType;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.ArrayTools;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Converter;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumnMapping;
@@ -36,7 +35,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmXmlContextNodeFactory;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.NamedColumnValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.NullOrmConverter;
@@ -70,8 +68,8 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
protected OrmConverter converter; // never null
- /* 2.0 feature - a relationship may map this ID */
- protected boolean mappedByRelationship;
+ /* JPA 2.0 - the embedded id may be derived from a relationship */
+ protected boolean derived;
protected static final OrmConverter.Adapter[] CONVERTER_ADAPTER_ARRAY = new OrmConverter.Adapter[] {
@@ -109,7 +107,7 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
this.generatedValue.update();
}
this.converter.update();
- this.setMappedByRelationship(this.buildMappedByRelationship());
+ this.setDerived(this.buildDerived());
}
@@ -293,28 +291,24 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
}
- // ********** mapped by relationship **********
+ // ********** derived **********
- public boolean isMappedByRelationship() {
- return this.mappedByRelationship;
+ public boolean isDerived() {
+ return this.derived;
}
- protected void setMappedByRelationship(boolean value) {
- boolean old = this.mappedByRelationship;
- this.mappedByRelationship = value;
- this.firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, old, value);
+ protected void setDerived(boolean derived) {
+ boolean old = this.derived;
+ this.derived = derived;
+ this.firePropertyChanged(DERIVED_PROPERTY, old, derived);
}
- protected boolean buildMappedByRelationship() {
- return this.isJpa2_0Compatible() && this.buildMappedByRelationship_();
+ protected boolean buildDerived() {
+ return this.isJpa2_0Compatible() && this.buildDerived_();
}
- protected boolean buildMappedByRelationship_() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.getName());
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
+ protected boolean buildDerived_() {
+ return this.getTypeMapping().attributeIsDerivedId(this.name);
}
@@ -360,11 +354,11 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
// ********** OrmColumn.Owner implementation **********
public String getDefaultColumnName() {
- return (this.mappedByRelationship && ! this.isColumnSpecified()) ? null : this.name;
+ return (this.derived && ! this.isColumnSpecified()) ? null : this.name;
}
public String getDefaultTableName() {
- return (this.mappedByRelationship && ! this.isColumnSpecified()) ? null : this.getTypeMapping().getPrimaryTableName();
+ return (this.derived && ! this.isColumnSpecified()) ? null : this.getTypeMapping().getPrimaryTableName();
}
public Table resolveDbTable(String tableName) {
@@ -456,15 +450,15 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
// the column is validated.
// JPA 1.0: The column is always be validated, since the ID is never mapped by a
// relationship.
- if (this.isColumnSpecified() || ! this.mappedByRelationship) {
+ if (this.isColumnSpecified() || ! this.derived) {
this.column.validate(messages, reporter);
}
// JPA 2.0: If the column is specified and the ID is mapped by a relationship,
// we have an error.
// JPA 1.0: The ID cannot be mapped by a relationship.
- if (this.isColumnSpecified() && this.mappedByRelationship) {
- messages.add(this.buildMappedByRelationshipAndColumnSpecifiedMessage());
+ if (this.isColumnSpecified() && this.derived) {
+ messages.add(this.buildColumnSpecifiedAndDerivedMessage());
}
if (this.generatedValue != null) {
@@ -474,7 +468,7 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
this.converter.validate(messages, reporter);
}
- protected IMessage buildMappedByRelationshipAndColumnSpecifiedMessage() {
+ protected IMessage buildColumnSpecifiedAndDerivedMessage() {
return this.buildMessage(
JpaValidationMessages.ID_MAPPING_MAPPED_BY_RELATIONSHIP_AND_COLUMN_SPECIFIED,
EMPTY_STRING_ARRAY,
@@ -500,7 +494,7 @@ public abstract class AbstractOrmIdMapping<X extends XmlId>
return JpaValidationDescriptionMessages.ATTRIBUTE_DESC;
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinColumnRelationshipStrategy.java
index 80c03483f2..64532a0496 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinColumnRelationshipStrategy.java
@@ -28,6 +28,7 @@ import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory;
import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinColumn;
@@ -42,7 +43,7 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy
{
protected final Vector<OrmJoinColumn> specifiedJoinColumns = new Vector<OrmJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter;
- protected final OrmJoinColumn.Owner joinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner;
protected OrmJoinColumn defaultJoinColumn;
@@ -207,7 +208,7 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy
}
}
- protected abstract OrmJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner();
// ********** default join column **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinTableRelationshipStrategy.java
index 922e5bcd64..a84fd271ba 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmJoinTableRelationshipStrategy.java
@@ -13,8 +13,8 @@ import java.util.List;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
@@ -28,7 +28,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public abstract class AbstractOrmJoinTableRelationshipStrategy
extends AbstractOrmXmlContextNode
- implements OrmJoinTableRelationshipStrategy, Table.Owner
+ implements OrmJoinTableRelationshipStrategy, ReadOnlyTable.Owner
{
protected OrmJoinTable joinTable;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappingRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappingRelationship.java
index 0095c229ff..b0387bc002 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappingRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMappingRelationship.java
@@ -19,7 +19,7 @@ import org.eclipse.jpt.jpa.core.context.RelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappingRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlRelationshipMapping;
/**
@@ -31,7 +31,7 @@ public abstract class AbstractOrmMappingRelationship<M extends OrmRelationshipMa
extends AbstractOrmXmlContextNode
implements OrmMappingRelationship
{
- protected OrmRelationshipStrategy strategy;
+ protected OrmMappingRelationshipStrategy2_0 strategy;
protected AbstractOrmMappingRelationship(M parent) {
@@ -50,17 +50,17 @@ public abstract class AbstractOrmMappingRelationship<M extends OrmRelationshipMa
// ********** strategy **********
- public OrmRelationshipStrategy getStrategy() {
+ public OrmMappingRelationshipStrategy2_0 getStrategy() {
return this.strategy;
}
- protected void setStrategy(OrmRelationshipStrategy strategy) {
+ protected void setStrategy(OrmMappingRelationshipStrategy2_0 strategy) {
RelationshipStrategy old = this.strategy;
this.strategy = strategy;
this.firePropertyChanged(STRATEGY_PROPERTY, old, strategy);
}
- protected abstract OrmRelationshipStrategy buildStrategy();
+ protected abstract OrmMappingRelationshipStrategy2_0 buildStrategy();
/**
* This is called by subclasses when the various supported strategies are
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java
index d16d0c7f01..1f2dbc3b9b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmMultiRelationshipMapping.java
@@ -22,17 +22,17 @@ import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementIterable;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.context.PersistentType;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
@@ -747,8 +747,8 @@ public abstract class AbstractOrmMultiRelationshipMapping<X extends AbstractXmlM
AbstractOrmMultiRelationshipMapping.this.removeXmlMapKeyColumn();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new MapKeyColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
}
}
@@ -764,14 +764,18 @@ public abstract class AbstractOrmMultiRelationshipMapping<X extends AbstractXmlM
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
protected JavaAttributeOverride getSpecifiedJavaAttributeOverrideNamed(String attributeName) {
return AbstractOrmMultiRelationshipMapping.this.getSpecifiedJavaMapKeyAttributeOverrideNamed(attributeName);
}
+ public Iterable<String> getJavaOverrideNames() {
+ return null;
+ }
+
public EList<XmlAttributeOverride> getXmlOverrides() {
return AbstractOrmMultiRelationshipMapping.this.xmlAttributeMapping.getMapKeyAttributeOverrides();
}
@@ -788,12 +792,12 @@ public abstract class AbstractOrmMultiRelationshipMapping<X extends AbstractXmlM
return Tools.valuesAreDifferent(this.getDefaultTableName(), tableName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new RelationshipStrategyTableDescriptionProvider(this.getRelationshipStrategy()));
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumn.java
index c400e098f3..303ed9a645 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2011s Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -11,10 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.context.orm;
import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn;
@@ -33,7 +34,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
* </ul>
* <strong>NB:</strong> any subclass that directly holds its XML column must:<ul>
* <li>call the "super" constructor that takes an XML column
- * {@link #AbstractOrmNamedColumn(XmlContextNode, OrmNamedColumn.Owner, AbstractXmlNamedColumn)}
+ * {@link #AbstractOrmNamedColumn(XmlContextNode, OrmReadOnlyNamedColumn.Owner, AbstractXmlNamedColumn)}
* <li>override {@link #setXmlColumn(AbstractXmlNamedColumn)} to set the XML column
* so it is in place before the column's state (e.g. {@link #specifiedName})
* is initialized
@@ -41,7 +42,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
* Typically, a column belonging to a list of columns will directly hold its XML
* column; since the context column only exists if the XML column exists.
*/
-public abstract class AbstractOrmNamedColumn<X extends AbstractXmlNamedColumn, O extends OrmNamedColumn.Owner>
+public abstract class AbstractOrmNamedColumn<X extends AbstractXmlNamedColumn, O extends OrmReadOnlyNamedColumn.Owner>
extends AbstractOrmXmlContextNode
implements OrmNamedColumn
{
@@ -260,7 +261,7 @@ public abstract class AbstractOrmNamedColumn<X extends AbstractXmlNamedColumn, O
}
/**
- * This is used by the subclasses that implement {@link BaseJoinColumn}.
+ * This is used by the subclasses that implement {@link ReadOnlyBaseJoinColumn#isVirtual()}.
*/
public boolean isVirtual() {
return false;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumnTextRangeResolver.java
new file mode 100644
index 0000000000..73f81db31f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmNamedColumnTextRangeResolver.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
+
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+
+public abstract class AbstractOrmNamedColumnTextRangeResolver<C extends OrmReadOnlyNamedColumn>
+ implements NamedColumnTextRangeResolver
+{
+ protected final C column;
+
+
+ protected AbstractOrmNamedColumnTextRangeResolver(C column) {
+ super();
+ this.column = column;
+ }
+
+ public TextRange getNameTextRange() {
+ return this.column.getNameTextRange();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java
index 124df96c1c..31778e7022 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmTypeMapping.java
@@ -206,6 +206,19 @@ public abstract class AbstractOrmTypeMapping<X extends XmlTypeMapping>
this.setOverrideMetadataComplete(oldMapping.isOverrideMetadataComplete());
}
+ public X getXmlTypeMapping() {
+ return this.xmlTypeMapping;
+ }
+
+ public boolean attributeIsDerivedId(String attributeName) {
+ return TypeMappingTools.attributeIsDerivedId(this, attributeName);
+ }
+
+ @Override
+ public void toString(StringBuilder sb) {
+ sb.append(this.getPersistentType().getName());
+ }
+
// ********** tables **********
@@ -371,18 +384,6 @@ public abstract class AbstractOrmTypeMapping<X extends XmlTypeMapping>
}
- // ********** misc **********
-
- public X getXmlTypeMapping() {
- return this.xmlTypeMapping;
- }
-
- @Override
- public void toString(StringBuilder sb) {
- sb.append(this.getPersistentType().getName());
- }
-
-
// ********** text ranges **********
public JpaStructureNode getStructureNode(int offset) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java
index 3ec67591c0..7b49b8fb6f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVersionMapping.java
@@ -18,9 +18,9 @@ import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Converter;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumnMapping;
@@ -324,7 +324,7 @@ public abstract class AbstractOrmVersionMapping<X extends XmlVersion>
}
protected void validateAttributeType(List<IMessage> messages) {
- if (!ArrayTools.contains(VERSION_MAPPING_SUPPORTED_TYPES, this.getPersistentAttribute().getTypeName())) {
+ if (!ArrayTools.contains(SUPPORTED_TYPE_NAMES, this.getPersistentAttribute().getTypeName())) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.NORMAL_SEVERITY,
@@ -337,7 +337,7 @@ public abstract class AbstractOrmVersionMapping<X extends XmlVersion>
}
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) col, (BaseColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualBaseColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualBaseColumn.java
index 96cd8a6fe7..513e186bbd 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualBaseColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualBaseColumn.java
@@ -9,14 +9,17 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import java.util.Iterator;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.VirtualBaseColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-public abstract class AbstractOrmVirtualBaseColumn<O extends ReadOnlyNamedColumn.Owner, C extends BaseColumn>
+public abstract class AbstractOrmVirtualBaseColumn<O extends OrmReadOnlyBaseColumn.Owner, C extends ReadOnlyBaseColumn>
extends AbstractOrmVirtualNamedColumn<O, C>
- implements VirtualBaseColumn
+ implements VirtualBaseColumn, OrmReadOnlyBaseColumn
{
protected String specifiedTable;
protected String defaultTable;
@@ -235,4 +238,27 @@ public abstract class AbstractOrmVirtualBaseColumn<O extends ReadOnlyNamedColumn
protected boolean buildDefaultUpdatable() {
return DEFAULT_UPDATABLE;
}
+
+
+ // ********** misc **********
+
+ public boolean tableNameIsInvalid() {
+ return this.owner.tableNameIsInvalid(this.getTable());
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.owner.candidateTableNames();
+ }
+
+
+ // ********** validation **********
+
+ public TextRange getTableTextRange() {
+ return this.getValidationTextRange();
+ }
+
+ @Override
+ protected NamedColumnTextRangeResolver buildTextRangeResolver() {
+ return new OrmBaseColumnTextRangeResolver(this);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualNamedColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualNamedColumn.java
index a13e9d8835..bd15434ed1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualNamedColumn.java
@@ -9,24 +9,33 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.VirtualNamedColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Column;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* <code>orm.xml</code> virtual<ul>
* <li>column
* <li>join column
+ * <li>primary key join column
* </ul>
* <strong>NB:</strong> all state is sync'ed/updated in {@link #update()}
* because <em>all</em> of its derived from the context model (i.e. none of it
* is derived from the resource model).
*/
-public abstract class AbstractOrmVirtualNamedColumn<O extends ReadOnlyNamedColumn.Owner, C extends NamedColumn>
+public abstract class AbstractOrmVirtualNamedColumn<O extends ReadOnlyNamedColumn.Owner, C extends ReadOnlyNamedColumn>
extends AbstractOrmXmlContextNode
- implements VirtualNamedColumn
+ implements VirtualNamedColumn, OrmReadOnlyNamedColumn
{
protected final O owner;
@@ -115,12 +124,46 @@ public abstract class AbstractOrmVirtualNamedColumn<O extends ReadOnlyNamedColum
}
+ // ********** database stuff **********
+
+ protected Column getDbColumn() {
+ Table table = this.getDbTable();
+ return (table == null) ? null : table.getColumnForIdentifier(this.getName());
+ }
+
+ public Table getDbTable() {
+ return this.owner.resolveDbTable(this.getTable());
+ }
+
+ public boolean isResolved() {
+ return this.getDbColumn() != null;
+ }
+
+
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.buildColumnValidator().validate(messages, reporter);
+ }
+
+ protected JptValidator buildColumnValidator() {
+ return this.owner.buildColumnValidator(this, this.buildTextRangeResolver());
+ }
+
+ protected NamedColumnTextRangeResolver buildTextRangeResolver() {
+ return new OrmNamedColumnTextRangeResolver(this);
+ }
+
public TextRange getValidationTextRange() {
return this.getParent().getValidationTextRange();
}
+ public TextRange getNameTextRange() {
+ return this.getValidationTextRange();
+ }
+
// ********** misc **********
@@ -129,6 +172,13 @@ public abstract class AbstractOrmVirtualNamedColumn<O extends ReadOnlyNamedColum
return (XmlContextNode) super.getParent();
}
+ /**
+ * This is used by the subclasses that implement {@link ReadOnlyBaseJoinColumn#isVirtual()}.
+ */
+ public boolean isVirtual() {
+ return true;
+ }
+
@Override
public void toString(StringBuilder sb) {
String table = this.getTable();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualReferenceTable.java
index 2e366584cc..52387a012a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualReferenceTable.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
@@ -16,27 +17,29 @@ import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
-import org.eclipse.jpt.jpa.core.context.ReferenceTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyReferenceTable;
import org.eclipse.jpt.jpa.core.context.VirtualReferenceTable;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
+public abstract class AbstractOrmVirtualReferenceTable<T extends ReadOnlyReferenceTable>
extends AbstractOrmVirtualTable<T>
implements VirtualReferenceTable
{
protected final Vector<OrmVirtualJoinColumn> specifiedJoinColumns = new Vector<OrmVirtualJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter();
- protected final ReadOnlyJoinColumn.Owner joinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner;
protected OrmVirtualJoinColumn defaultJoinColumn;
- protected AbstractOrmVirtualReferenceTable(XmlContextNode parent) {
- super(parent);
+ protected AbstractOrmVirtualReferenceTable(XmlContextNode parent, Owner owner) {
+ super(parent, owner);
this.joinColumnOwner = this.buildJoinColumnOwner();
}
@@ -92,7 +95,7 @@ public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenJoinColumns() {
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenJoinColumns() {
return CollectionTools.iterable(this.getOverriddenTable().specifiedJoinColumns());
}
@@ -100,7 +103,7 @@ public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
}
- protected OrmVirtualJoinColumn addSpecifiedJoinColumn(int index, JoinColumn joinColumn) {
+ protected OrmVirtualJoinColumn addSpecifiedJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
OrmVirtualJoinColumn virtualJoinColumn = this.buildJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -114,21 +117,21 @@ public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
* specified join column container adapter
*/
protected class SpecifiedJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<OrmVirtualJoinColumn> getContextElements() {
return AbstractOrmVirtualReferenceTable.this.getSpecifiedJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return AbstractOrmVirtualReferenceTable.this.getOverriddenJoinColumns();
}
- public JoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, OrmVirtualJoinColumn element) {
AbstractOrmVirtualReferenceTable.this.moveSpecifiedJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn element) {
+ public void addContextElement(int index, ReadOnlyJoinColumn element) {
AbstractOrmVirtualReferenceTable.this.addSpecifiedJoinColumn(index, element);
}
public void removeContextElement(OrmVirtualJoinColumn element) {
@@ -178,15 +181,15 @@ public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
// ********** misc **********
- protected OrmVirtualJoinColumn buildJoinColumn(JoinColumn joinColumn) {
+ protected OrmVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn joinColumn) {
return this.buildJoinColumn(this.joinColumnOwner, joinColumn);
}
- protected OrmVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn) {
- return this.getContextNodeFactory().buildOrmVirtualJoinColumn(this, owner, joinColumn);
+ protected OrmVirtualJoinColumn buildJoinColumn(OrmReadOnlyJoinColumn.Owner columnOwner, ReadOnlyJoinColumn joinColumn) {
+ return this.getContextNodeFactory().buildOrmVirtualJoinColumn(this, columnOwner, joinColumn);
}
- protected abstract ReadOnlyJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner();
@Override
protected String buildDefaultSchema() {
@@ -197,4 +200,23 @@ public abstract class AbstractOrmVirtualReferenceTable<T extends ReferenceTable>
protected String buildDefaultCatalog() {
return this.getContextDefaultCatalog();
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ boolean continueValidating = this.buildTableValidator().validate(messages, reporter);
+
+ //join column validation will handle the check for whether to validate against the database
+ //some validation messages are not database specific. If the database validation for the
+ //table fails we will stop there and not validate the join columns at all
+ if (continueValidating) {
+ this.validateJoinColumns(messages, reporter);
+ }
+ }
+
+ protected void validateJoinColumns(List<IMessage> messages, IReporter reporter) {
+ this.validateNodes(this.getJoinColumns(), messages, reporter);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualTable.java
index a2da665475..451233658e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmVirtualTable.java
@@ -9,6 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
import org.eclipse.jpt.common.core.utility.TextRange;
@@ -16,20 +17,27 @@ import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.NameTools;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
-import org.eclipse.jpt.jpa.core.context.Table;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.VirtualTable;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualUniqueConstraint;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.db.Catalog;
import org.eclipse.jpt.jpa.db.Schema;
import org.eclipse.jpt.jpa.db.SchemaContainer;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-public abstract class AbstractOrmVirtualTable<T extends Table>
+public abstract class AbstractOrmVirtualTable<T extends ReadOnlyTable>
extends AbstractOrmXmlContextNode
- implements VirtualTable
+ implements VirtualTable, OrmReadOnlyTable
{
+ protected final Owner owner;
+
protected String specifiedName;
protected String defaultName;
@@ -43,8 +51,9 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter();
- protected AbstractOrmVirtualTable(XmlContextNode parent) {
+ protected AbstractOrmVirtualTable(XmlContextNode parent, Owner owner) {
super(parent);
+ this.owner = owner;
}
@@ -196,7 +205,7 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
ContextContainerTools.update(this.uniqueConstraintContainerAdapter);
}
- protected Iterable<UniqueConstraint> getOverriddenUniqueConstraints() {
+ protected Iterable<ReadOnlyUniqueConstraint> getOverriddenUniqueConstraints() {
return CollectionTools.iterable(this.getOverriddenTable().uniqueConstraints());
}
@@ -204,13 +213,13 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST);
}
- protected OrmVirtualUniqueConstraint addUniqueConstraint(int index, UniqueConstraint uniqueConstraint) {
+ protected OrmVirtualUniqueConstraint addUniqueConstraint(int index, ReadOnlyUniqueConstraint uniqueConstraint) {
OrmVirtualUniqueConstraint virtualConstraint = this.buildUniqueConstraint(uniqueConstraint);
this.addItemToList(index, virtualConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST);
return virtualConstraint;
}
- protected OrmVirtualUniqueConstraint buildUniqueConstraint(UniqueConstraint uniqueConstraint) {
+ protected OrmVirtualUniqueConstraint buildUniqueConstraint(ReadOnlyUniqueConstraint uniqueConstraint) {
return this.getContextNodeFactory().buildOrmVirtualUniqueConstraint(this, uniqueConstraint);
}
@@ -222,21 +231,21 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
* unique constraint container adapter
*/
protected class UniqueConstraintContainerAdapter
- implements ContextContainerTools.Adapter<OrmVirtualUniqueConstraint, UniqueConstraint>
+ implements ContextContainerTools.Adapter<OrmVirtualUniqueConstraint, ReadOnlyUniqueConstraint>
{
public Iterable<OrmVirtualUniqueConstraint> getContextElements() {
return AbstractOrmVirtualTable.this.getUniqueConstraints();
}
- public Iterable<UniqueConstraint> getResourceElements() {
+ public Iterable<ReadOnlyUniqueConstraint> getResourceElements() {
return AbstractOrmVirtualTable.this.getOverriddenUniqueConstraints();
}
- public UniqueConstraint getResourceElement(OrmVirtualUniqueConstraint contextElement) {
+ public ReadOnlyUniqueConstraint getResourceElement(OrmVirtualUniqueConstraint contextElement) {
return contextElement.getOverriddenUniqueConstraint();
}
public void moveContextElement(int index, OrmVirtualUniqueConstraint element) {
AbstractOrmVirtualTable.this.moveUniqueConstraint(index, element);
}
- public void addContextElement(int index, UniqueConstraint resourceElement) {
+ public void addContextElement(int index, ReadOnlyUniqueConstraint resourceElement) {
AbstractOrmVirtualTable.this.addUniqueConstraint(index, resourceElement);
}
public void removeContextElement(OrmVirtualUniqueConstraint element) {
@@ -257,6 +266,10 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getSchema());
}
+ public boolean schemaIsResolved() {
+ return this.getDbSchema() != null;
+ }
+
/**
* If we don't have a catalog (i.e. we don't even have a <em>default</em> catalog),
* then the database probably does not support catalogs; and we need to
@@ -276,7 +289,16 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
return (catalog == null) ? null : this.resolveDbCatalog(catalog);
}
- protected boolean isResolved() {
+ /**
+ * If we don't have a catalog (i.e. we don't even have a <em>default</em>
+ * catalog), then the database probably does not support catalogs.
+ */
+ public boolean catalogIsResolved() {
+ String catalog = this.getCatalog();
+ return (catalog == null) || (this.resolveDbCatalog(catalog) != null);
+ }
+
+ public boolean isResolved() {
return this.getDbTable() != null;
}
@@ -296,10 +318,36 @@ public abstract class AbstractOrmVirtualTable<T extends Table>
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.buildTableValidator().validate(messages, reporter);
+ }
+
+ protected JptValidator buildTableValidator() {
+ return this.owner.buildTableValidator(this, this.buildTextRangeResolver());
+ }
+
+ protected TableTextRangeResolver buildTextRangeResolver() {
+ return new OrmTableTextRangeResolver(this);
+ }
+
public TextRange getValidationTextRange() {
return this.getParent().getValidationTextRange();
}
+ public TextRange getNameTextRange() {
+ return this.getValidationTextRange();
+ }
+
+ public TextRange getSchemaTextRange() {
+ return this.getValidationTextRange();
+ }
+
+ public TextRange getCatalogTextRange() {
+ return this.getValidationTextRange();
+ }
+
// ********** misc **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlContextNodeFactory.java
index fd4ac81334..6281f21c9b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlContextNodeFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlContextNodeFactory.java
@@ -9,13 +9,13 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
-import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn.Owner;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
@@ -24,7 +24,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.orm.OrmBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmBasicMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmConverter;
@@ -56,6 +55,8 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmQuery;
import org.eclipse.jpt.jpa.core.context.orm.OrmQueryContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmQueryHint;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.orm.OrmSecondaryTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmSequenceGenerator;
@@ -208,15 +209,15 @@ public abstract class AbstractOrmXmlContextNodeFactory
return new GenericOrmSecondaryTable(parent, owner, xmlSecondaryTable);
}
- public OrmVirtualSecondaryTable buildOrmVirtualSecondaryTable(OrmEntity parent, JavaSecondaryTable javaSecondaryTable) {
- return new GenericOrmVirtualSecondaryTable(parent, javaSecondaryTable);
+ public OrmVirtualSecondaryTable buildOrmVirtualSecondaryTable(OrmEntity parent, ReadOnlyTable.Owner owner, JavaSecondaryTable javaSecondaryTable) {
+ return new GenericOrmVirtualSecondaryTable(parent, owner, javaSecondaryTable);
}
- public OrmPrimaryKeyJoinColumn buildOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn resourcePrimaryKeyJoinColumn) {
+ public OrmPrimaryKeyJoinColumn buildOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn resourcePrimaryKeyJoinColumn) {
return new GenericOrmPrimaryKeyJoinColumn(parent, owner, resourcePrimaryKeyJoinColumn);
}
- public OrmVirtualPrimaryKeyJoinColumn buildOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, Owner owner, JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn) {
+ public OrmVirtualPrimaryKeyJoinColumn buildOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn) {
return new GenericOrmVirtualPrimaryKeyJoinColumn(parent, owner, javaPrimaryKeyJoinColumn);
}
@@ -224,16 +225,16 @@ public abstract class AbstractOrmXmlContextNodeFactory
return new GenericOrmJoinTable(parent, owner);
}
- public OrmVirtualJoinTable buildOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable) {
- return new GenericOrmVirtualJoinTable(parent, overriddenTable);
+ public OrmVirtualJoinTable buildOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, ReadOnlyTable.Owner owner, ReadOnlyJoinTable overriddenTable) {
+ return new GenericOrmVirtualJoinTable(parent, owner, overriddenTable);
}
- public OrmJoinColumn buildOrmJoinColumn(XmlContextNode parent, OrmJoinColumn.Owner owner, XmlJoinColumn xmlJoinColumn) {
+ public OrmJoinColumn buildOrmJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, XmlJoinColumn xmlJoinColumn) {
return new GenericOrmJoinColumn(parent, owner, xmlJoinColumn);
}
- public OrmVirtualJoinColumn buildOrmVirtualJoinColumn(XmlContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn joinColumn) {
- return new GenericOrmVirtualJoinColumn(parent, owner, joinColumn);
+ public OrmVirtualJoinColumn buildOrmVirtualJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn) {
+ return new GenericOrmVirtualJoinColumn(parent, owner, overriddenColumn);
}
public OrmAttributeOverrideContainer buildOrmAttributeOverrideContainer(XmlContextNode parent, OrmAttributeOverrideContainer.Owner owner) {
@@ -364,7 +365,7 @@ public abstract class AbstractOrmXmlContextNodeFactory
return new GenericOrmUniqueConstraint(parent, owner, resourceUniqueConstraint);
}
- public OrmVirtualUniqueConstraint buildOrmVirtualUniqueConstraint(XmlContextNode parent, UniqueConstraint overriddenUniqueConstraint) {
+ public OrmVirtualUniqueConstraint buildOrmVirtualUniqueConstraint(XmlContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint) {
return new GenericOrmVirtualUniqueConstraint(parent, overriddenUniqueConstraint);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToManyRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToManyRelationship.java
index e4a2fc81e0..7ada92b093 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToManyRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToManyRelationship.java
@@ -20,7 +20,9 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmManyToManyMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmManyToManyRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlManyToMany;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -29,9 +31,9 @@ public class GenericOrmManyToManyRelationship
extends AbstractOrmMappingRelationship<OrmManyToManyMapping>
implements OrmManyToManyRelationship
{
- protected final OrmMappedByRelationshipStrategy mappedByStrategy;
+ protected final OrmMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final OrmJoinTableRelationshipStrategy joinTableStrategy;
+ protected final OrmMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
public GenericOrmManyToManyRelationship(OrmManyToManyMapping parent) {
@@ -63,7 +65,7 @@ public class GenericOrmManyToManyRelationship
// ********** strategy **********
@Override
- protected OrmRelationshipStrategy buildStrategy() {
+ protected OrmMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -91,7 +93,7 @@ public class GenericOrmManyToManyRelationship
return mapping.getKey() == MappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
}
- protected OrmMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected OrmMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericOrmMappedByRelationshipStrategy(this);
}
@@ -116,7 +118,7 @@ public class GenericOrmManyToManyRelationship
return this.mappedByStrategy.getMappedByAttribute() == null;
}
- protected OrmJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected OrmMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return new GenericOrmMappingJoinTableRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToOneRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToOneRelationship.java
index 39a61109b0..5379388ee0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToOneRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmManyToOneRelationship.java
@@ -17,8 +17,10 @@ import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmManyToOneMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmManyToOneRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlManyToOne;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -27,10 +29,10 @@ public class GenericOrmManyToOneRelationship
extends AbstractOrmMappingRelationship<OrmManyToOneMapping>
implements OrmManyToOneRelationship2_0
{
- protected final OrmJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final OrmMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
// JPA 2.0
- protected final OrmJoinTableRelationshipStrategy joinTableStrategy;
+ protected final OrmMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
public GenericOrmManyToOneRelationship(OrmManyToOneMapping parent) {
@@ -62,7 +64,7 @@ public class GenericOrmManyToOneRelationship
// ********** strategy **********
@Override
- protected OrmRelationshipStrategy buildStrategy() {
+ protected OrmMappingRelationshipStrategy2_0 buildStrategy() {
if (this.isJpa2_0Compatible()) {
if (this.joinTableStrategy.getJoinTable() != null){
return this.joinTableStrategy;
@@ -92,7 +94,7 @@ public class GenericOrmManyToOneRelationship
return false;
}
- protected OrmJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected OrmMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return this.isJpa2_0Compatible() ?
new GenericOrmMappingJoinTableRelationshipStrategy(this) :
new NullOrmJoinTableRelationshipStrategy(this);
@@ -121,7 +123,7 @@ public class GenericOrmManyToOneRelationship
return this.joinTableStrategy.getJoinTable() == null;
}
- protected OrmJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected OrmMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return new GenericOrmMappingJoinColumnRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappedByRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappedByRelationshipStrategy.java
index b7e8c4ba8c..9443c3f0cc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappedByRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappedByRelationshipStrategy.java
@@ -18,12 +18,14 @@ import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.MappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingMappedByRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlMappedByMapping;
import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.osgi.util.NLS;
@@ -32,7 +34,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericOrmMappedByRelationshipStrategy
extends AbstractOrmXmlContextNode
- implements OrmMappedByRelationshipStrategy
+ implements OrmMappingMappedByRelationshipStrategy2_0
{
protected String mappedByAttribute;
@@ -134,6 +136,10 @@ public class GenericOrmMappedByRelationshipStrategy
return (entity == null) ? null : entity.getName();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null; // mapped-by strategies cannot be overridden
+ }
+
public void addStrategy() {
if (this.mappedByAttribute == null) {
this.setMappedByAttribute(""); //$NON-NLS-1$
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinColumnRelationshipStrategy.java
index 242b287424..b686e08619 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinColumnRelationshipStrategy.java
@@ -12,25 +12,28 @@ package org.eclipse.jpt.jpa.core.internal.context.orm;
import java.util.Iterator;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappingJoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.db.Table;
public class GenericOrmMappingJoinColumnRelationshipStrategy
extends AbstractOrmJoinColumnRelationshipStrategy
+ implements OrmMappingJoinColumnRelationshipStrategy2_0
{
protected final boolean targetForeignKey;
@@ -49,7 +52,7 @@ public class GenericOrmMappingJoinColumnRelationshipStrategy
@Override
- protected Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -80,6 +83,10 @@ public class GenericOrmMappingJoinColumnRelationshipStrategy
return this.targetForeignKey;
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return overrideRelationship.getJoinColumnStrategy();
+ }
+
// ********** validation **********
@@ -95,7 +102,7 @@ public class GenericOrmMappingJoinColumnRelationshipStrategy
// ********** join column owner **********
protected class JoinColumnOwner
- implements OrmJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -157,8 +164,8 @@ public class GenericOrmMappingJoinColumnRelationshipStrategy
return GenericOrmMappingJoinColumnRelationshipStrategy.this.getValidationTextRange();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new JoinColumnValidator(this.getPersistentAttribute(), (JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new JoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinTableRelationshipStrategy.java
index dc2597f119..38e575d0c0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmMappingJoinTableRelationshipStrategy.java
@@ -10,10 +10,11 @@
package org.eclipse.jpt.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
-import org.eclipse.jpt.jpa.core.context.Table;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappingJoinTableRelationship;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
@@ -22,9 +23,12 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.InverseJoinColumnValidator
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableValidator;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
public class GenericOrmMappingJoinTableRelationshipStrategy
extends AbstractOrmJoinTableRelationshipStrategy
+ implements OrmMappingJoinTableRelationshipStrategy2_0
{
public GenericOrmMappingJoinTableRelationshipStrategy(OrmMappingJoinTableRelationship parent) {
super(parent);
@@ -35,6 +39,10 @@ public class GenericOrmMappingJoinTableRelationshipStrategy
return this.getJpaPlatformVariation().isJoinTableOverridable();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return overrideRelationship.getJoinTableStrategy();
+ }
+
// ********** validation **********
@@ -50,15 +58,15 @@ public class GenericOrmMappingJoinTableRelationshipStrategy
return getRelationshipMapping().getPersistentAttribute();
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new JoinColumnValidator(this.getPersistentAttribute(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new InverseJoinColumnValidator(this.getPersistentAttribute(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
- return new JoinTableValidator(this.getPersistentAttribute(), (JoinTable) table, textRangeResolver);
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return new JoinTableValidator(this.getPersistentAttribute(), (ReadOnlyJoinTable) table, textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToManyRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToManyRelationship.java
index 674c6bb988..6331704dc9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToManyRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToManyRelationship.java
@@ -21,8 +21,11 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmOneToManyMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.NullOrmJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmOneToManyRelationship2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlOneToMany;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -32,13 +35,13 @@ public class GenericOrmOneToManyRelationship
extends AbstractOrmMappingRelationship<OrmOneToManyMapping>
implements OrmOneToManyRelationship2_0
{
- protected final OrmMappedByRelationshipStrategy mappedByStrategy;
+ protected final OrmMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final OrmJoinTableRelationshipStrategy joinTableStrategy;
+ protected final OrmMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
// JPA 2.0 or EclipseLink
protected final boolean supportsJoinColumnStrategy;
- protected final OrmJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final OrmMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
public GenericOrmOneToManyRelationship(OrmOneToManyMapping parent, boolean supportsJoinColumnStrategy) {
@@ -76,7 +79,7 @@ public class GenericOrmOneToManyRelationship
// ********** strategy **********
@Override
- protected OrmRelationshipStrategy buildStrategy() {
+ protected OrmMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -117,7 +120,7 @@ public class GenericOrmOneToManyRelationship
return false;
}
- protected OrmMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected OrmMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericOrmMappedByRelationshipStrategy(this);
}
@@ -144,7 +147,7 @@ public class GenericOrmOneToManyRelationship
! this.joinColumnStrategy.hasSpecifiedJoinColumns();
}
- protected OrmJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected OrmMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return new GenericOrmMappingJoinTableRelationshipStrategy(this);
}
@@ -170,7 +173,7 @@ public class GenericOrmOneToManyRelationship
return false;
}
- protected OrmJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected OrmMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return this.supportsJoinColumnStrategy ?
new GenericOrmMappingJoinColumnRelationshipStrategy(this, true) : // true = target foreign key
new NullOrmJoinColumnRelationshipStrategy(this);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToOneRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToOneRelationship.java
index 1f7fbbd2cb..3863f7e8f3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToOneRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOneToOneRelationship.java
@@ -22,7 +22,11 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmOneToOneMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumnRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingMappedByRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmOneToOneRelationship2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlOneToOne;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -32,14 +36,14 @@ public class GenericOrmOneToOneRelationship
extends AbstractOrmMappingRelationship<OrmOneToOneMapping>
implements OrmOneToOneRelationship2_0
{
- protected final OrmMappedByRelationshipStrategy mappedByStrategy;
+ protected final OrmMappingMappedByRelationshipStrategy2_0 mappedByStrategy;
- protected final OrmPrimaryKeyJoinColumnRelationshipStrategy primaryKeyJoinColumnStrategy;
+ protected final OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 primaryKeyJoinColumnStrategy;
// JPA 2.0
- protected final OrmJoinTableRelationshipStrategy joinTableStrategy;
+ protected final OrmMappingJoinTableRelationshipStrategy2_0 joinTableStrategy;
- protected final OrmJoinColumnRelationshipStrategy joinColumnStrategy;
+ protected final OrmMappingJoinColumnRelationshipStrategy2_0 joinColumnStrategy;
public GenericOrmOneToOneRelationship(OrmOneToOneMapping parent) {
@@ -77,7 +81,7 @@ public class GenericOrmOneToOneRelationship
// ********** strategy **********
@Override
- protected OrmRelationshipStrategy buildStrategy() {
+ protected OrmMappingRelationshipStrategy2_0 buildStrategy() {
if (this.mappedByStrategy.getMappedByAttribute() != null) {
return this.mappedByStrategy;
}
@@ -115,7 +119,7 @@ public class GenericOrmOneToOneRelationship
return mapping.getKey() == MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
}
- protected OrmMappedByRelationshipStrategy buildMappedByStrategy() {
+ protected OrmMappingMappedByRelationshipStrategy2_0 buildMappedByStrategy() {
return new GenericOrmMappedByRelationshipStrategy(this);
}
@@ -138,7 +142,7 @@ public class GenericOrmOneToOneRelationship
this.updateStrategy();
}
- protected OrmPrimaryKeyJoinColumnRelationshipStrategy buildPrimaryKeyJoinColumnStrategy() {
+ protected OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 buildPrimaryKeyJoinColumnStrategy() {
return new GenericOrmPrimaryKeyJoinColumnRelationshipStrategy(this);
}
@@ -165,7 +169,7 @@ public class GenericOrmOneToOneRelationship
return false;
}
- protected OrmJoinTableRelationshipStrategy buildJoinTableStrategy() {
+ protected OrmMappingJoinTableRelationshipStrategy2_0 buildJoinTableStrategy() {
return this.isJpa2_0Compatible() ?
new GenericOrmMappingJoinTableRelationshipStrategy(this) :
new NullOrmJoinTableRelationshipStrategy(this);
@@ -197,7 +201,7 @@ public class GenericOrmOneToOneRelationship
(this.joinTableStrategy.getJoinTable() == null);
}
- protected OrmJoinColumnRelationshipStrategy buildJoinColumnStrategy() {
+ protected OrmMappingJoinColumnRelationshipStrategy2_0 buildJoinColumnStrategy() {
return new GenericOrmMappingJoinColumnRelationshipStrategy(this);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOverrideJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOverrideJoinColumnRelationshipStrategy.java
index f6f28b8520..937fbcb0b0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOverrideJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmOverrideJoinColumnRelationshipStrategy.java
@@ -11,18 +11,15 @@ package org.eclipse.jpt.jpa.core.internal.context.orm;
import java.util.Iterator;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
@@ -36,7 +33,7 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
}
@Override
- protected Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -49,12 +46,12 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
public TypeMapping getRelationshipSource() {
return this.isTargetForeignKey() ?
this.getRelationshipMapping().getResolvedTargetEntity() :
- this.getAssociationOverrideContainer().getTypeMapping();
+ this.getRelationship().getTypeMapping();
}
public TypeMapping getRelationshipTarget() {
return this.isTargetForeignKey() ?
- this.getAssociationOverrideContainer().getTypeMapping() :
+ this.getRelationship().getTypeMapping() :
this.getRelationshipMappingTargetEntity();
}
@@ -70,39 +67,39 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
@Override
public RelationshipMapping getRelationshipMapping() {
- return this.getAssociationOverride().getMapping();
+ return this.getRelationship().getMapping();
}
protected String getAttributeName() {
- return this.getAssociationOverride().getName();
+ return this.getRelationship().getAttributeName();
}
@Override
public String getTableName() {
return this.isTargetForeignKey() ?
super.getTableName() :
- this.getAssociationOverrideContainer().getDefaultTableName();
+ this.getRelationship().getDefaultTableName();
}
@Override
public Table resolveDbTable(String tableName) {
return this.isTargetForeignKey() ?
super.resolveDbTable(tableName) :
- this.getAssociationOverrideContainer().resolveDbTable(tableName);
+ this.getRelationship().resolveDbTable(tableName);
}
@Override
public boolean tableNameIsInvalid(String tableName) {
return this.isTargetForeignKey() ?
super.tableNameIsInvalid(tableName) :
- this.getAssociationOverrideContainer().tableNameIsInvalid(tableName);
+ this.getRelationship().tableNameIsInvalid(tableName);
}
@Override
public Iterator<String> candidateTableNames() {
return this.isTargetForeignKey() ?
super.candidateTableNames() :
- this.getAssociationOverrideContainer().candidateTableNames();
+ this.getRelationship().candidateTableNames();
}
public String getColumnTableNotValidDescription() {
@@ -113,14 +110,6 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
return false;
}
- protected OrmAssociationOverride getAssociationOverride() {
- return this.getRelationship().getAssociationOverride();
- }
-
- protected AssociationOverrideContainer getAssociationOverrideContainer() {
- return this.getAssociationOverride().getContainer();
- }
-
@Override
public OrmOverrideRelationship getRelationship() {
return (OrmOverrideRelationship) super.getRelationship();
@@ -134,7 +123,7 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
// ********** join column owner **********
protected class JoinColumnOwner
- implements OrmJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -194,16 +183,8 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy
return GenericOrmOverrideJoinColumnRelationshipStrategy.this.getValidationTextRange();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getAssociationOverrideContainer().buildColumnValidator(this.getAssociationOverride(), (BaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
- }
-
- protected OrmAssociationOverride getAssociationOverride() {
- return GenericOrmOverrideJoinColumnRelationshipStrategy.this.getAssociationOverride();
- }
-
- protected AssociationOverrideContainer getAssociationOverrideContainer() {
- return GenericOrmOverrideJoinColumnRelationshipStrategy.this.getAssociationOverrideContainer();
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericOrmOverrideJoinColumnRelationshipStrategy.this.getRelationship().buildColumnValidator((ReadOnlyBaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.java
index 0aed2f60db..62b5d863f7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.java
@@ -17,24 +17,25 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.OneToOnePrimaryKeyJoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationDescriptionMessages;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory;
import org.eclipse.jpt.jpa.core.resource.orm.XmlPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.resource.orm.XmlPrimaryKeyJoinColumnContainer;
@@ -44,11 +45,11 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy
extends AbstractOrmXmlContextNode
- implements OrmPrimaryKeyJoinColumnRelationshipStrategy
+ implements OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0
{
protected final Vector<OrmPrimaryKeyJoinColumn> primaryKeyJoinColumns = new Vector<OrmPrimaryKeyJoinColumn>();
protected final PrimaryKeyJoinColumnContainerAdapter primaryKeyJoinColumnContainerAdapter;
- protected final OrmJoinColumn.Owner primaryKeyJoinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner primaryKeyJoinColumnOwner;
public GenericOrmPrimaryKeyJoinColumnRelationshipStrategy(OrmPrimaryKeyJoinColumnRelationship parent) {
@@ -188,7 +189,7 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy
}
}
- protected OrmJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
return new PrimaryKeyJoinColumnOwner();
}
@@ -236,6 +237,10 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy
return this.getRelationshipMapping().getTypeMapping();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null; // pk join column strategies cannot be overridden
+ }
+
public void addStrategy() {
if (this.primaryKeyJoinColumns.size() == 0) {
this.addPrimaryKeyJoinColumn();
@@ -271,7 +276,7 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy
// ********** join column owner **********
protected class PrimaryKeyJoinColumnOwner
- implements OrmJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected PrimaryKeyJoinColumnOwner() {
super();
@@ -333,8 +338,8 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy
return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.getValidationTextRange();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new OneToOnePrimaryKeyJoinColumnValidator(this.getPersistentAttribute(), (BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new OneToOnePrimaryKeyJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
protected RelationshipMapping getRelationshipMapping() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualJoinTable.java
index c93dd749e9..d4bcbdaca6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualJoinTable.java
@@ -9,46 +9,57 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.Iterator;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
+import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
+import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualRelationship;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* <code>orm.xml</code> virtual join table
*/
public class GenericOrmVirtualJoinTable
- extends AbstractOrmVirtualReferenceTable<JoinTable>
+ extends AbstractOrmVirtualReferenceTable<ReadOnlyJoinTable>
implements OrmVirtualJoinTable
{
- protected final JoinTable overriddenTable;
+ protected final ReadOnlyJoinTable overriddenTable;
protected final Vector<OrmVirtualJoinColumn> specifiedInverseJoinColumns = new Vector<OrmVirtualJoinColumn>();
protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter();
- protected final ReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
protected OrmVirtualJoinColumn defaultInverseJoinColumn;
- public GenericOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, JoinTable overriddenTable) {
- super(parent);
+ public GenericOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, Owner owner, ReadOnlyJoinTable overriddenTable) {
+ super(parent, owner);
this.overriddenTable = overriddenTable;
this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner();
}
@@ -67,7 +78,7 @@ public class GenericOrmVirtualJoinTable
// ********** table **********
@Override
- public JoinTable getOverriddenTable() {
+ public ReadOnlyJoinTable getOverriddenTable() {
return this.overriddenTable;
}
@@ -113,7 +124,7 @@ public class GenericOrmVirtualJoinTable
ContextContainerTools.update(this.specifiedInverseJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenInverseJoinColumns() {
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenInverseJoinColumns() {
return CollectionTools.iterable(this.getOverriddenTable().specifiedInverseJoinColumns());
}
@@ -121,7 +132,7 @@ public class GenericOrmVirtualJoinTable
this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST);
}
- protected OrmVirtualJoinColumn addSpecifiedInverseJoinColumn(int index, JoinColumn joinColumn) {
+ protected OrmVirtualJoinColumn addSpecifiedInverseJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
OrmVirtualJoinColumn virtualJoinColumn = this.buildInverseJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -135,21 +146,21 @@ public class GenericOrmVirtualJoinTable
* specified inverse join column container adapter
*/
protected class SpecifiedInverseJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<OrmVirtualJoinColumn> getContextElements() {
return GenericOrmVirtualJoinTable.this.getSpecifiedInverseJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return GenericOrmVirtualJoinTable.this.getOverriddenInverseJoinColumns();
}
- public JoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, OrmVirtualJoinColumn element) {
GenericOrmVirtualJoinTable.this.moveSpecifiedInverseJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn element) {
+ public void addContextElement(int index, ReadOnlyJoinColumn element) {
GenericOrmVirtualJoinTable.this.addSpecifiedInverseJoinColumn(index, element);
}
public void removeContextElement(OrmVirtualJoinColumn element) {
@@ -204,30 +215,30 @@ public class GenericOrmVirtualJoinTable
return (OrmVirtualJoinTableRelationshipStrategy) super.getParent();
}
- protected OrmVirtualJoinTableRelationshipStrategy getJoinStrategy() {
+ protected OrmVirtualJoinTableRelationshipStrategy getRelationshipStrategy() {
return this.getParent();
}
@Override
- protected ReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
- protected ReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
return new InverseJoinColumnOwner();
}
- protected OrmVirtualJoinColumn buildInverseJoinColumn(JoinColumn joinColumn) {
+ protected OrmVirtualJoinColumn buildInverseJoinColumn(ReadOnlyJoinColumn joinColumn) {
return this.buildJoinColumn(this.inverseJoinColumnOwner, joinColumn);
}
@Override
protected String buildDefaultName() {
- return this.getJoinStrategy().getJoinTableDefaultName();
+ return this.getRelationshipStrategy().getJoinTableDefaultName();
}
public RelationshipMapping getRelationshipMapping() {
- return this.getJoinStrategy().getRelationship().getMapping();
+ return this.getRelationshipStrategy().getRelationship().getMapping();
}
public PersistentAttribute getPersistentAttribute() {
@@ -235,13 +246,26 @@ public class GenericOrmVirtualJoinTable
}
+ // ********** validation **********
+
+ @Override
+ protected void validateJoinColumns(List<IMessage> messages, IReporter reporter) {
+ super.validateJoinColumns(messages, reporter);
+ this.validateNodes(this.getInverseJoinColumns(), messages, reporter);
+ }
+
+ public boolean validatesAgainstDatabase() {
+ return this.getRelationshipStrategy().validatesAgainstDatabase();
+ }
+
+
// ********** join column owners **********
/**
* just a little common behavior
*/
protected abstract class AbstractJoinColumnOwner
- implements ReadOnlyJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected AbstractJoinColumnOwner() {
super();
@@ -252,6 +276,34 @@ public class GenericOrmVirtualJoinTable
}
/**
+ * @see MappingTools#buildJoinColumnDefaultName(org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn, org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn.Owner)
+ */
+ public String getDefaultColumnName() {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * If there is a specified table name it needs to be the same
+ * the default table name. The table is always the join table.
+ */
+ public boolean tableNameIsInvalid(String tableName) {
+ return Tools.valuesAreDifferent(this.getDefaultTableName(), tableName);
+ }
+
+ /**
+ * the join column can only be on the join table itself
+ */
+ public Iterator<String> candidateTableNames() {
+ return EmptyIterator.instance();
+ }
+
+ public org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName) {
+ return Tools.valuesAreEqual(GenericOrmVirtualJoinTable.this.getName(), tableName) ?
+ GenericOrmVirtualJoinTable.this.getDbTable() :
+ null;
+ }
+
+ /**
* by default, the join column is, obviously, in the join table;
* not sure whether it can be anywhere else...
*/
@@ -259,15 +311,16 @@ public class GenericOrmVirtualJoinTable
return GenericOrmVirtualJoinTable.this.getName();
}
- /**
- * @see MappingTools#buildJoinColumnDefaultName(org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn, org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn.Owner)
- */
- public String getDefaultColumnName() {
- throw new UnsupportedOperationException();
+ public TextRange getValidationTextRange() {
+ return GenericOrmVirtualJoinTable.this.getValidationTextRange();
}
protected OrmVirtualRelationship getRelationship() {
- return GenericOrmVirtualJoinTable.this.getJoinStrategy().getRelationship();
+ return this.getRelationshipStrategy().getRelationship();
+ }
+
+ protected OrmVirtualJoinTableRelationshipStrategy getRelationshipStrategy() {
+ return GenericOrmVirtualJoinTable.this.getRelationshipStrategy();
}
}
@@ -291,6 +344,16 @@ public class GenericOrmVirtualJoinTable
return MappingTools.getTargetAttributeName(GenericOrmVirtualJoinTable.this.getRelationshipMapping());
}
+ @Override
+ public org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName) {
+ org.eclipse.jpt.jpa.db.Table dbTable = super.resolveDbTable(tableName);
+ return (dbTable != null) ? dbTable : this.getTypeMapping().resolveDbTable(tableName);
+ }
+
+ public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
+ return this.getTypeMapping().getPrimaryDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return GenericOrmVirtualJoinTable.this.defaultJoinColumn == joinColumn;
}
@@ -298,6 +361,10 @@ public class GenericOrmVirtualJoinTable
public int joinColumnsSize() {
return GenericOrmVirtualJoinTable.this.joinColumnsSize();
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ }
}
@@ -322,6 +389,21 @@ public class GenericOrmVirtualJoinTable
return (relationshipMapping == null) ? null : relationshipMapping.getName();
}
+ @Override
+ public org.eclipse.jpt.jpa.db.Table resolveDbTable(String tableName) {
+ org.eclipse.jpt.jpa.db.Table dbTable = super.resolveDbTable(tableName);
+ if (dbTable != null) {
+ return dbTable;
+ }
+ Entity relationshipTarget = this.getRelationshipTarget();
+ return (relationshipTarget == null) ? null : relationshipTarget.resolveDbTable(tableName);
+ }
+
+ public org.eclipse.jpt.jpa.db.Table getReferencedColumnDbTable() {
+ Entity relationshipTarget = this.getRelationshipTarget();
+ return (relationshipTarget == null) ? null : relationshipTarget.getPrimaryDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return GenericOrmVirtualJoinTable.this.defaultInverseJoinColumn == joinColumn;
}
@@ -329,5 +411,9 @@ public class GenericOrmVirtualJoinTable
public int joinColumnsSize() {
return GenericOrmVirtualJoinTable.this.inverseJoinColumnsSize();
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableInverseJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.java
index b341965c0e..17cabbf8c3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.java
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.Iterator;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
import org.eclipse.jpt.common.core.utility.TextRange;
@@ -18,22 +20,28 @@ import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
+import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.JoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumn;
-import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumnRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualOverrideRelationship;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
extends AbstractOrmXmlContextNode
@@ -41,12 +49,12 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
{
protected final Vector<OrmVirtualJoinColumn> specifiedJoinColumns = new Vector<OrmVirtualJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter;
- protected final ReadOnlyJoinColumn.Owner joinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner;
protected OrmVirtualJoinColumn defaultJoinColumn;
- public GenericOrmVirtualOverrideJoinColumnRelationshipStrategy(OrmVirtualJoinColumnRelationship parent) {
+ public GenericOrmVirtualOverrideJoinColumnRelationshipStrategy(OrmVirtualOverrideRelationship parent) {
super(parent);
this.specifiedJoinColumnContainerAdapter = this.buildSpecifiedJoinColumnContainerAdapter();
this.joinColumnOwner = this.buildJoinColumnOwner();
@@ -104,10 +112,10 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenSpecifiedJoinColumns() {
- JoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenSpecifiedJoinColumns() {
+ ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ?
- EmptyIterable.<JoinColumn>instance() :
+ EmptyIterable.<ReadOnlyJoinColumn>instance() :
CollectionTools.iterable(overriddenStrategy.specifiedJoinColumns());
}
@@ -115,7 +123,7 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
}
- protected OrmVirtualJoinColumn addSpecifiedJoinColumn(int index, JoinColumn joinColumn) {
+ protected OrmVirtualJoinColumn addSpecifiedJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
OrmVirtualJoinColumn virtualJoinColumn = this.buildJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -133,21 +141,21 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
* specified join column container adapter
*/
protected class SpecifiedJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<OrmVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<OrmVirtualJoinColumn> getContextElements() {
return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getSpecifiedJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getOverriddenSpecifiedJoinColumns();
}
- public JoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, OrmVirtualJoinColumn element) {
GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.moveSpecifiedJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn resourceElement) {
+ public void addContextElement(int index, ReadOnlyJoinColumn resourceElement) {
GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.addSpecifiedJoinColumn(index, resourceElement);
}
public void removeContextElement(OrmVirtualJoinColumn element) {
@@ -155,7 +163,7 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
}
}
- protected ReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -183,7 +191,7 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
}
protected void updateDefaultJoinColumn() {
- JoinColumn overriddenDefaultJoinColumn = this.getOverriddenDefaultJoinColumn();
+ ReadOnlyJoinColumn overriddenDefaultJoinColumn = this.getOverriddenDefaultJoinColumn();
if (overriddenDefaultJoinColumn == null) {
if (this.defaultJoinColumn != null) {
this.setDefaultJoinColumn(null);
@@ -197,8 +205,8 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
}
}
- protected JoinColumn getOverriddenDefaultJoinColumn() {
- JoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected ReadOnlyJoinColumn getOverriddenDefaultJoinColumn() {
+ ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ? null : overriddenStrategy.getDefaultJoinColumn();
}
@@ -206,25 +214,25 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
// ********** misc **********
@Override
- public OrmVirtualJoinColumnRelationship getParent() {
- return (OrmVirtualJoinColumnRelationship) super.getParent();
+ public OrmVirtualOverrideRelationship getParent() {
+ return (OrmVirtualOverrideRelationship) super.getParent();
}
- public OrmVirtualJoinColumnRelationship getRelationship() {
+ public OrmVirtualOverrideRelationship getRelationship() {
return this.getParent();
}
- protected JoinColumnRelationshipStrategy getOverriddenStrategy() {
- JoinColumnRelationship relationship = this.getOverriddenJoinColumnRelationship();
+ protected ReadOnlyJoinColumnRelationshipStrategy getOverriddenStrategy() {
+ ReadOnlyJoinColumnRelationship relationship = this.getOverriddenJoinColumnRelationship();
return (relationship == null) ? null : relationship.getJoinColumnStrategy();
}
- protected JoinColumnRelationship getOverriddenJoinColumnRelationship() {
- Relationship relationship = this.resolveOverriddenRelationship();
- return (relationship instanceof JoinColumnRelationship) ? (JoinColumnRelationship) relationship : null;
+ protected ReadOnlyJoinColumnRelationship getOverriddenJoinColumnRelationship() {
+ ReadOnlyRelationship relationship = this.resolveOverriddenRelationship();
+ return (relationship instanceof ReadOnlyJoinColumnRelationship) ? (ReadOnlyJoinColumnRelationship) relationship : null;
}
- protected Relationship resolveOverriddenRelationship() {
+ protected ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getRelationship().resolveOverriddenRelationship();
}
@@ -236,13 +244,15 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
public TypeMapping getRelationshipSource() {
return this.isTargetForeignKey() ?
+ // relationship mapping is not null
this.getRelationshipMapping().getResolvedTargetEntity() :
- this.getAssociationOverrideContainer().getTypeMapping();
+ this.getRelationship().getTypeMapping();
}
public TypeMapping getRelationshipTarget() {
return this.isTargetForeignKey() ?
- this.getAssociationOverrideContainer().getTypeMapping() :
+ this.getRelationship().getTypeMapping() :
+ // relationship mapping may still be null
this.getRelationshipMappingTargetEntity();
}
@@ -257,26 +267,56 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
}
protected RelationshipMapping getRelationshipMapping() {
- return this.getAssociationOverride().getMapping();
+ return this.getRelationship().getMapping();
}
- protected OrmReadOnlyAssociationOverride getAssociationOverride() {
- return ((OrmVirtualOverrideRelationship) this.getRelationship()).getAssociationOverride();
+ public String getTableName() {
+ return this.isTargetForeignKey() ?
+ this.getTargetDefaultTableName() :
+ this.getRelationship().getDefaultTableName();
}
- protected OrmAssociationOverrideContainer getAssociationOverrideContainer() {
- return this.getAssociationOverride().getContainer();
+ protected String getTargetDefaultTableName() {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping == null) ? null : typeMapping.getPrimaryTableName();
}
- public String getTableName() {
+ protected Table resolveDbTable(String tableName) {
return this.isTargetForeignKey() ?
- this.getSourceTableName() :
- this.getAssociationOverrideContainer().getDefaultTableName();
+ this.resolveTargetDbTable(tableName) :
+ this.getRelationship().resolveDbTable(tableName);
}
- protected String getSourceTableName() {
- TypeMapping typeMapping = this.getRelationshipSource();
- return (typeMapping == null) ? null : typeMapping.getPrimaryTableName();
+ protected Table resolveTargetDbTable(String tableName) {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping == null) ? null : typeMapping.resolveDbTable(tableName);
+ }
+
+ protected boolean tableNameIsInvalid(String tableName) {
+ return this.isTargetForeignKey() ?
+ this.targetTableNameIsInvalid(tableName) :
+ this.getRelationship().tableNameIsInvalid(tableName);
+ }
+
+ protected boolean targetTableNameIsInvalid(String tableName) {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping != null) && typeMapping.tableNameIsInvalid(tableName);
+ }
+
+ protected Table getReferencedColumnDbTable() {
+ TypeMapping relationshipTarget = this.getRelationshipTarget();
+ return (relationshipTarget == null) ? null : relationshipTarget.getPrimaryDbTable();
+ }
+
+ protected Iterator<String> candidateTableNames() {
+ return this.isTargetForeignKey() ?
+ this.targetCandidateTableNames() :
+ this.getRelationship().candidateTableNames();
+ }
+
+ protected Iterator<String> targetCandidateTableNames() {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping != null) ? typeMapping.allAssociatedTableNames() : EmptyIterator.<String>instance();
}
public TextRange getValidationTextRange() {
@@ -284,18 +324,29 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
}
protected String getAttributeName() {
- return this.getAssociationOverride().getName();
+ return this.getRelationship().getAttributeName();
}
- protected OrmVirtualJoinColumn buildJoinColumn(JoinColumn overriddenJoinColumn) {
+ protected OrmVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn overriddenJoinColumn) {
return this.getContextNodeFactory().buildOrmVirtualJoinColumn(this, this.joinColumnOwner, overriddenJoinColumn);
}
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ for (OrmVirtualJoinColumn joinColumn : this.getJoinColumns()) {
+ joinColumn.validate(messages, reporter);
+ }
+ }
+
+
// ********** join column owner **********
protected class JoinColumnOwner
- implements ReadOnlyJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -322,6 +373,22 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getRelationshipTargetEntity();
}
+ public boolean tableNameIsInvalid(String tableName) {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.resolveDbTable(tableName);
+ }
+
+ public Table getReferencedColumnDbTable() {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getReferencedColumnDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return false;
}
@@ -329,5 +396,13 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy
public int joinColumnsSize() {
return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize();
}
+
+ public TextRange getValidationTextRange() {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getValidationTextRange();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getRelationship().buildColumnValidator((ReadOnlyBaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualSecondaryTable.java
index 8cb015eeb6..57b6634afd 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmVirtualSecondaryTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,8 +9,10 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context.orm;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
@@ -18,13 +20,22 @@ import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualSecondaryTable;
+import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.jpa1.context.SecondaryTablePrimaryKeyJoinColumnValidator;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* <code>orm.xml</code> virtual secondary table
@@ -37,13 +48,13 @@ public class GenericOrmVirtualSecondaryTable
protected final Vector<OrmVirtualPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns = new Vector<OrmVirtualPrimaryKeyJoinColumn>();
protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter();
- protected final ReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
+ protected final OrmReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
protected OrmVirtualPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn;
- public GenericOrmVirtualSecondaryTable(OrmEntity parent, JavaSecondaryTable overriddenTable) {
- super(parent);
+ public GenericOrmVirtualSecondaryTable(OrmEntity parent, Owner owner, JavaSecondaryTable overriddenTable) {
+ super(parent, owner);
this.overriddenTable = overriddenTable;
this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner();
}
@@ -204,7 +215,7 @@ public class GenericOrmVirtualSecondaryTable
return true;
}
- protected ReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
+ protected OrmReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
return new PrimaryKeyJoinColumnOwner();
}
@@ -213,6 +224,25 @@ public class GenericOrmVirtualSecondaryTable
}
+ // ********** validation **********
+
+ public boolean validatesAgainstDatabase() {
+ return this.connectionProfileIsActive();
+ }
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ boolean continueValidating = this.buildTableValidator().validate(messages, reporter);
+
+ //join column validation will handle the check for whether to validate against the database
+ //some validation messages are not database specific. If the database validation for the
+ //table fails we will stop there and not validate the join columns at all
+ if (continueValidating) {
+ this.validateNodes(this.getPrimaryKeyJoinColumns(), messages, reporter);
+ }
+ }
+
+
// ********** defaults **********
/**
@@ -237,7 +267,7 @@ public class GenericOrmVirtualSecondaryTable
// ********** primary key join column owner **********
protected class PrimaryKeyJoinColumnOwner
- implements ReadOnlyBaseJoinColumn.Owner
+ implements OrmReadOnlyBaseJoinColumn.Owner
{
protected OrmEntity getEntity() {
return GenericOrmVirtualSecondaryTable.this.getEntity();
@@ -261,12 +291,28 @@ public class GenericOrmVirtualSecondaryTable
this.getEntity().getPrimaryKeyColumnName();
}
- public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
- return GenericOrmVirtualSecondaryTable.this.defaultPrimaryKeyJoinColumn == joinColumn;
+ public Table resolveDbTable(String tableName) {
+ return GenericOrmVirtualSecondaryTable.this.getDbTable();
}
public int joinColumnsSize() {
return GenericOrmVirtualSecondaryTable.this.primaryKeyJoinColumnsSize();
}
+
+ public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
+ return GenericOrmVirtualSecondaryTable.this.defaultPrimaryKeyJoinColumn == joinColumn;
+ }
+
+ public Table getReferencedColumnDbTable() {
+ return this.getTypeMapping().getPrimaryDbTable();
+ }
+
+ public TextRange getValidationTextRange() {
+ return GenericOrmVirtualSecondaryTable.this.getValidationTextRange();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new SecondaryTablePrimaryKeyJoinColumnValidator(GenericOrmVirtualSecondaryTable.this, (ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/NullOrmJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/NullOrmJoinTableRelationshipStrategy.java
index 2e5b2ad2af..9902535c1d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/NullOrmJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/NullOrmJoinTableRelationshipStrategy.java
@@ -10,19 +10,21 @@
package org.eclipse.jpt.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinTableRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinTable;
import org.eclipse.jpt.jpa.db.Table;
public class NullOrmJoinTableRelationshipStrategy
extends AbstractOrmXmlContextNode
- implements OrmJoinTableRelationshipStrategy
+ implements OrmMappingJoinTableRelationshipStrategy2_0
{
public NullOrmJoinTableRelationshipStrategy(OrmJoinTableRelationship parent) {
super(parent);
@@ -57,11 +59,11 @@ public class NullOrmJoinTableRelationshipStrategy
return this.getRelationship().getValidationTextRange();
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
throw new UnsupportedOperationException();
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
throw new UnsupportedOperationException();
}
@@ -105,6 +107,10 @@ public class NullOrmJoinTableRelationshipStrategy
return null;
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null;
+ }
+
public void addStrategy() {
// NOP
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmBaseColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmBaseColumnTextRangeResolver.java
index a26ed24f13..d5f514a9a0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmBaseColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmBaseColumnTextRangeResolver.java
@@ -1,34 +1,28 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmBaseColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
public class OrmBaseColumnTextRangeResolver
- extends OrmNamedColumnTextRangeResolver
+ extends AbstractOrmNamedColumnTextRangeResolver<OrmReadOnlyBaseColumn>
implements BaseColumnTextRangeResolver
{
- public OrmBaseColumnTextRangeResolver(OrmBaseColumn column) {
+ public OrmBaseColumnTextRangeResolver(OrmReadOnlyBaseColumn column) {
super(column);
}
- @Override
- protected OrmBaseColumn getColumn() {
- return (OrmBaseColumn) super.getColumn();
- }
-
public TextRange getTableTextRange() {
- return this.getColumn().getTableTextRange();
+ return this.column.getTableTextRange();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmJoinColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmJoinColumnTextRangeResolver.java
index 94c60a0300..269baad85c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmJoinColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmJoinColumnTextRangeResolver.java
@@ -1,39 +1,32 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
-import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
public class OrmJoinColumnTextRangeResolver
- extends OrmNamedColumnTextRangeResolver
+ extends AbstractOrmNamedColumnTextRangeResolver<OrmReadOnlyJoinColumn>
implements JoinColumnTextRangeResolver
{
- public OrmJoinColumnTextRangeResolver(OrmJoinColumn column) {
+ public OrmJoinColumnTextRangeResolver(OrmReadOnlyJoinColumn column) {
super(column);
}
- @Override
- protected OrmJoinColumn getColumn() {
- return (OrmJoinColumn) super.getColumn();
- }
-
public TextRange getTableTextRange() {
- return this.getColumn().getTableTextRange();
+ return this.column.getTableTextRange();
}
public TextRange getReferencedColumnNameTextRange() {
- return this.getColumn().getReferencedColumnNameTextRange();
+ return this.column.getReferencedColumnNameTextRange();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmNamedColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmNamedColumnTextRangeResolver.java
index 37a19aec80..0b1cd614c1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmNamedColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmNamedColumnTextRangeResolver.java
@@ -1,33 +1,20 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
-import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn;
-import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
public class OrmNamedColumnTextRangeResolver
- implements NamedColumnTextRangeResolver
+ extends AbstractOrmNamedColumnTextRangeResolver<OrmReadOnlyNamedColumn>
{
- protected final OrmNamedColumn ormNamedColumn;
-
- public OrmNamedColumnTextRangeResolver(OrmNamedColumn javaNamedColumn) {
- this.ormNamedColumn = javaNamedColumn;
- }
-
- protected OrmNamedColumn getColumn() {
- return this.ormNamedColumn;
- }
-
- public TextRange getNameTextRange() {
- return this.ormNamedColumn.getNameTextRange();
+ public OrmNamedColumnTextRangeResolver(OrmReadOnlyNamedColumn column) {
+ super(column);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmOverrideTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmOverrideTextRangeResolver.java
index 0c1d8ee5b5..5f90af8a8d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmOverrideTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmOverrideTextRangeResolver.java
@@ -1,32 +1,27 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmOverride;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyOverride;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
public class OrmOverrideTextRangeResolver
implements OverrideTextRangeResolver
{
- protected final OrmOverride ormOverride;
+ protected final OrmReadOnlyOverride ormOverride;
- public OrmOverrideTextRangeResolver(OrmOverride ormOverride) {
+ public OrmOverrideTextRangeResolver(OrmReadOnlyOverride ormOverride) {
this.ormOverride = ormOverride;
}
- protected OrmOverride getOverride() {
- return this.ormOverride;
- }
-
public TextRange getNameTextRange() {
return this.ormOverride.getNameTextRange();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmPrimaryKeyJoinColumnTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmPrimaryKeyJoinColumnTextRangeResolver.java
index 6fdeb4b124..385aef2de5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmPrimaryKeyJoinColumnTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmPrimaryKeyJoinColumnTextRangeResolver.java
@@ -1,35 +1,28 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
public class OrmPrimaryKeyJoinColumnTextRangeResolver
- extends OrmNamedColumnTextRangeResolver
- implements
- BaseJoinColumnTextRangeResolver
+ extends AbstractOrmNamedColumnTextRangeResolver<OrmReadOnlyBaseJoinColumn>
+ implements BaseJoinColumnTextRangeResolver
{
- public OrmPrimaryKeyJoinColumnTextRangeResolver(OrmPrimaryKeyJoinColumn column) {
+ public OrmPrimaryKeyJoinColumnTextRangeResolver(OrmReadOnlyBaseJoinColumn column) {
super(column);
}
- @Override
- protected OrmPrimaryKeyJoinColumn getColumn() {
- return (OrmPrimaryKeyJoinColumn) super.getColumn();
- }
-
public TextRange getReferencedColumnNameTextRange() {
- return this.getColumn().getReferencedColumnNameTextRange();
+ return this.column.getReferencedColumnNameTextRange();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmTableTextRangeResolver.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmTableTextRangeResolver.java
index 3a86a729c1..62ef537690 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmTableTextRangeResolver.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/OrmTableTextRangeResolver.java
@@ -1,40 +1,38 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.orm.OrmTable;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
public class OrmTableTextRangeResolver
implements TableTextRangeResolver
{
- protected final OrmTable ormTable;
+ protected final OrmReadOnlyTable table;
- public OrmTableTextRangeResolver(OrmTable ormTable) {
- this.ormTable = ormTable;
- }
- protected OrmTable getTable() {
- return this.ormTable;
+ public OrmTableTextRangeResolver(OrmReadOnlyTable table) {
+ super();
+ this.table = table;
}
public TextRange getNameTextRange() {
- return this.ormTable.getNameTextRange();
+ return this.table.getNameTextRange();
}
public TextRange getCatalogTextRange() {
- return this.ormTable.getCatalogTextRange();
+ return this.table.getCatalogTextRange();
}
public TextRange getSchemaTextRange() {
- return this.ormTable.getSchemaTextRange();
+ return this.table.getSchemaTextRange();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractJoinTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractJoinTableValidator.java
index 58e53d7f21..56d9ae3421 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractJoinTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractJoinTableValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,18 +9,19 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
-public abstract class AbstractJoinTableValidator extends AbstractTableValidator
+public abstract class AbstractJoinTableValidator
+ extends AbstractTableValidator
{
- protected AbstractJoinTableValidator(JoinTable table, TableTextRangeResolver textRangeResolver) {
+ protected AbstractJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
super(table, textRangeResolver);
}
- protected AbstractJoinTableValidator(PersistentAttribute persistentAttribute, JoinTable table, TableTextRangeResolver textRangeResolver) {
+ protected AbstractJoinTableValidator(ReadOnlyPersistentAttribute persistentAttribute, ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
super(persistentAttribute, table, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractNamedColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractNamedColumnValidator.java
index 340f0ea854..6947bee1b6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractNamedColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractNamedColumnValidator.java
@@ -11,9 +11,9 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
@@ -23,19 +23,19 @@ import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R extends NamedColumnTextRangeResolver>
+public abstract class AbstractNamedColumnValidator<C extends ReadOnlyNamedColumn, R extends NamedColumnTextRangeResolver>
implements JptValidator
{
- // this is null for columns defined on entities and secondary tables
- protected final PersistentAttribute persistentAttribute;
+ /** this is <code>null</code> for columns defined on entities and secondary tables */
+ protected final ReadOnlyPersistentAttribute persistentAttribute;
protected final C column;
protected final R textRangeResolver;
protected final TableDescriptionProvider tableDescriptionProvider;
-
- protected final TableValidator tableValidator;
+
+ protected final JptValidator tableValidator;
protected AbstractNamedColumnValidator(
@@ -52,14 +52,14 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
}
protected AbstractNamedColumnValidator(
- PersistentAttribute persistentAttribute,
+ ReadOnlyPersistentAttribute persistentAttribute,
C column,
R textRangeResolver) {
this(persistentAttribute, column, textRangeResolver, TableDescriptionProvider.Null.instance());
}
protected AbstractNamedColumnValidator(
- PersistentAttribute persistentAttribute,
+ ReadOnlyPersistentAttribute persistentAttribute,
C column,
R textRangeResolver,
TableDescriptionProvider tableDescriptionProvider) {
@@ -70,15 +70,15 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
this.tableValidator = this.buildTableValidator();
}
- protected TableValidator buildTableValidator() {
- return TableValidator.Null.instance();
+ protected JptValidator buildTableValidator() {
+ return JptValidator.Null.instance();
}
- public boolean validate(List<IMessage> messages, IReporter reporter) {
- if (this.tableValidator.tableNameIsInvalid()) {
- return this.tableValidator.validate(messages, reporter);
+ public final boolean validate(List<IMessage> messages, IReporter reporter) {
+ if (this.tableValidator.validate(messages, reporter)) {
+ // validate the name only if the table is valid
+ this.validateName(messages);
}
- this.validateName(messages);
return true;
}
@@ -90,7 +90,7 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
}
protected IMessage buildUnresolvedNameMessage() {
- return this.columnParentIsVirtualAttribute() ?
+ return this.columnIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnresolvedNameMessage() :
this.buildUnresolvedNameMessage(this.getUnresolvedNameMessage());
}
@@ -126,42 +126,13 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
protected abstract String getVirtualAttributeUnresolvedNameMessage();
- public boolean columnParentIsVirtualAttribute() {
+ protected boolean columnIsPartOfVirtualAttribute() {
return (this.persistentAttribute != null) &&
this.persistentAttribute.isVirtual();
}
- // ********** table validator **********
-
- public interface TableValidator
- extends JptValidator
- {
- boolean tableNameIsInvalid();
-
- final class Null
- implements TableValidator
- {
- private static final TableValidator INSTANCE = new Null();
- public static TableValidator instance() {
- return INSTANCE;
- }
- // ensure single instance
- private Null() {
- super();
- }
- public boolean validate(List<IMessage> messages, IReporter reporter) {
- return true;
- }
- public boolean tableNameIsInvalid() {
- return false;
- }
- @Override
- public String toString() {
- return StringTools.buildToStringClassName(this.getClass());
- }
- }
- }
+ // ********** table description provider **********
public interface TableDescriptionProvider {
String getColumnTableDescriptionMessage();
@@ -182,39 +153,45 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
}
@Override
public String toString() {
- return StringTools.buildToStringClassName(this.getClass());
+ return StringTools.buildSingletonToString(this);
}
}
}
+
+ // ********** base column table validator **********
+
+ /**
+ * This column table validator (or its subclasses) can only be used by
+ * a validator for a <em>base</em> column, which specifies a table. This
+ * includes both normal columns and join columns.
+ */
protected class BaseColumnTableValidator
- implements TableValidator
+ implements JptValidator
{
protected BaseColumnTableValidator() {
super();
}
- protected BaseColumn getColumn() {
- return (BaseColumn) AbstractNamedColumnValidator.this.column;
+ public boolean validate(List<IMessage> messages, IReporter reporter) {
+ if (this.getColumn().tableNameIsInvalid()) {
+ messages.add(this.buildTableNotValidMessage());
+ return false;
+ }
+ return true;
}
-
- protected BaseColumnTextRangeResolver getTextRangeResolver() {
- return (BaseColumnTextRangeResolver) AbstractNamedColumnValidator.this.textRangeResolver;
+
+ protected ReadOnlyBaseColumn getColumn() {
+ return (ReadOnlyBaseColumn) AbstractNamedColumnValidator.this.column;
}
- public boolean tableNameIsInvalid() {
- return this.getColumn().tableNameIsInvalid();
- }
-
- public boolean validate(List<IMessage> messages, IReporter reporter) {
- messages.add(this.buildTableNotValidMessage());
- return false;
+ protected IMessage buildTableNotValidMessage() {
+ return AbstractNamedColumnValidator.this.columnIsPartOfVirtualAttribute() ?
+ this.buildVirtualAttributeTableNotValidMessage() :
+ this.buildTableNotValidMessage_();
}
- protected IMessage buildTableNotValidMessage() {
- if (AbstractNamedColumnValidator.this.columnParentIsVirtualAttribute()) {
- return this.buildVirtualAttributeTableNotValidMessage();
- }
+ protected IMessage buildTableNotValidMessage_() {
return DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
this.getColumnTableNotValidMessage(),
@@ -236,6 +213,10 @@ public abstract class AbstractNamedColumnValidator<C extends NamedColumn, R exte
return AbstractNamedColumnValidator.this.tableDescriptionProvider.getColumnTableDescriptionMessage();
}
+ protected BaseColumnTextRangeResolver getTextRangeResolver() {
+ return (BaseColumnTextRangeResolver) AbstractNamedColumnValidator.this.textRangeResolver;
+ }
+
protected IMessage buildVirtualAttributeTableNotValidMessage() {
return DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPersistentAttributeValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPersistentAttributeValidator.java
index 31e58001cd..b3f6f76fbb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPersistentAttributeValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPersistentAttributeValidator.java
@@ -11,7 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
import org.eclipse.jpt.jpa.core.MappingKeys;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver;
@@ -22,7 +22,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public abstract class AbstractPersistentAttributeValidator
implements JptValidator
{
- protected PersistentAttribute persistentAttribute;
+ protected ReadOnlyPersistentAttribute persistentAttribute;
protected JavaPersistentAttribute javaPersistentAttribute;
@@ -30,7 +30,7 @@ public abstract class AbstractPersistentAttributeValidator
protected AbstractPersistentAttributeValidator(
- PersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) {
+ ReadOnlyPersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) {
this.persistentAttribute = persistentAttribute;
this.javaPersistentAttribute = javaPersistentAttribute;
this.textRangeResolver = textRangeResolver;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java
index 4c3f9fd870..093825f005 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractPrimaryKeyValidator.java
@@ -1,13 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.core.internal.jpa1.context;
import java.util.Collection;
@@ -145,7 +144,7 @@ public abstract class AbstractPrimaryKeyValidator
}
AttributeMapping resolvedAttributeMapping =
- mapsIdRelationshipMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getResolvedAttributeMappingValue();
+ mapsIdRelationshipMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getDerivedIdAttributeMapping();
if (resolvedAttributeMapping != null
&& ! ClassName.areAutoboxEquivalents(
resolvedAttributeMapping.getPersistentAttribute().getTypeName(),
@@ -572,9 +571,7 @@ public abstract class AbstractPrimaryKeyValidator
if (definesComplexPrimaryKey(entity)) {
return true;
}
- else {
- simplePrimaryKeyMappingCount++;
- }
+ simplePrimaryKeyMappingCount++;
if (simplePrimaryKeyMappingCount > 1) {
return true;
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTableValidator.java
index 41230e1e76..da999a22e5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTableValidator.java
@@ -10,8 +10,8 @@
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
-import org.eclipse.jpt.jpa.core.context.Table;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
@@ -21,22 +21,22 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public abstract class AbstractTableValidator
implements JptValidator
{
- // this is null for tables defined on entities
- protected final PersistentAttribute persistentAttribute;
+ /** this is <code>null</code> for tables defined on entities */
+ protected final ReadOnlyPersistentAttribute persistentAttribute;
- protected final Table table;
+ protected final ReadOnlyTable table;
protected final TableTextRangeResolver textRangeResolver;
protected AbstractTableValidator(
- Table table,
+ ReadOnlyTable table,
TableTextRangeResolver textRangeResolver) {
this(null, table, textRangeResolver);
}
protected AbstractTableValidator(
- PersistentAttribute persistentAttribute,
- Table table,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyTable table,
TableTextRangeResolver textRangeResolver) {
super();
this.persistentAttribute = persistentAttribute;
@@ -44,10 +44,6 @@ public abstract class AbstractTableValidator
this.textRangeResolver = textRangeResolver;
}
- protected Table getTable() {
- return this.table;
- }
-
protected TableTextRangeResolver getTextRangeResolver() {
return this.textRangeResolver;
}
@@ -82,7 +78,7 @@ public abstract class AbstractTableValidator
}
protected IMessage buildUnresolvedCatalogMessage() {
- return this.tableParentIsVirtualAttribute() ?
+ return this.tableIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnresolvedCatalogMessage() :
this.buildUnresolvedCatalogMessage(this.getUnresolvedCatalogMessage());
}
@@ -119,7 +115,7 @@ public abstract class AbstractTableValidator
protected abstract String getVirtualAttributeUnresolvedCatalogMessage();
protected IMessage buildUnresolvedSchemaMessage() {
- return this.tableParentIsVirtualAttribute() ?
+ return this.tableIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnresolvedSchemaMessage() :
this.buildUnresolvedSchemaMessage(this.getUnresolvedSchemaMessage());
}
@@ -156,7 +152,7 @@ public abstract class AbstractTableValidator
protected abstract String getVirtualAttributeUnresolvedSchemaMessage();
protected IMessage buildUnresolvedNameMessage() {
- return this.tableParentIsVirtualAttribute() ?
+ return this.tableIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnresolvedNameMessage() :
this.buildUnresolvedNameMessage(this.getUnresolvedNameMessage());
}
@@ -188,7 +184,7 @@ public abstract class AbstractTableValidator
protected abstract String getVirtualAttributeUnresolvedNameMessage();
- protected boolean tableParentIsVirtualAttribute() {
+ protected boolean tableIsPartOfVirtualAttribute() {
return (this.persistentAttribute != null) &&
this.persistentAttribute.isVirtual();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideInverseJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideInverseJoinColumnValidator.java
index 87cf85b822..d7df3d59c4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideInverseJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideInverseJoinColumnValidator.java
@@ -9,10 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -20,12 +21,12 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class AssociationOverrideInverseJoinColumnValidator
extends InverseJoinColumnValidator
{
- final AssociationOverride override;
+ final ReadOnlyAssociationOverride override;
public AssociationOverrideInverseJoinColumnValidator(
- AssociationOverride override,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(column, joinColumnOwner, textRangeResolver, provider);
@@ -33,10 +34,10 @@ public class AssociationOverrideInverseJoinColumnValidator
}
public AssociationOverrideInverseJoinColumnValidator(
- PersistentAttribute persistentAttribute,
- AssociationOverride override,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, joinColumnOwner, textRangeResolver, provider);
@@ -44,7 +45,7 @@ public class AssociationOverrideInverseJoinColumnValidator
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -91,7 +92,7 @@ public class AssociationOverrideInverseJoinColumnValidator
}
@Override
- public IMessage buildUnresolvedReferencedColumnNameMessage() {
+ protected IMessage buildUnresolvedReferencedColumnNameMessage() {
return this.override.isVirtual() ?
this.buildVirtualOverrideUnresolvedReferencedColumnNameMessage() :
super.buildUnresolvedReferencedColumnNameMessage();
@@ -205,6 +206,8 @@ public class AssociationOverrideInverseJoinColumnValidator
}
+ // ********** table validator **********
+
public class TableValidator
extends InverseJoinColumnValidator.TableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinColumnValidator.java
index 445e3ff59d..a495440ed5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinColumnValidator.java
@@ -9,10 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -20,13 +21,13 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class AssociationOverrideJoinColumnValidator
extends JoinColumnValidator
{
- final AssociationOverride override;
+ final ReadOnlyAssociationOverride override;
public AssociationOverrideJoinColumnValidator(
- AssociationOverride override,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(column, joinColumnOwner, textRangeResolver, provider);
@@ -34,10 +35,10 @@ public class AssociationOverrideJoinColumnValidator
}
public AssociationOverrideJoinColumnValidator(
- PersistentAttribute persistentAttribute,
- AssociationOverride override,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, joinColumnOwner, textRangeResolver, provider);
@@ -45,7 +46,7 @@ public class AssociationOverrideJoinColumnValidator
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -92,7 +93,7 @@ public class AssociationOverrideJoinColumnValidator
}
@Override
- public IMessage buildUnresolvedReferencedColumnNameMessage() {
+ protected IMessage buildUnresolvedReferencedColumnNameMessage() {
return this.override.isVirtual() ?
this.buildVirtualOverrideUnresolvedReferencedColumnNameMessage() :
super.buildUnresolvedReferencedColumnNameMessage();
@@ -206,6 +207,8 @@ public class AssociationOverrideJoinColumnValidator
}
+ // ********** table validator **********
+
protected class TableValidator
extends JoinColumnValidator.TableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinTableValidator.java
index f9158fe374..24731b8de4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideJoinTableValidator.java
@@ -9,9 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -20,20 +20,20 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class AssociationOverrideJoinTableValidator
extends AbstractJoinTableValidator
{
- private final AssociationOverride override;
+ private final ReadOnlyAssociationOverride override;
public AssociationOverrideJoinTableValidator(
- AssociationOverride override,
- JoinTable table,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinTable table,
TableTextRangeResolver textRangeResolver) {
super(table, textRangeResolver);
this.override = override;
}
public AssociationOverrideJoinTableValidator(
- PersistentAttribute persistentAttribute,
- AssociationOverride override,
- JoinTable table,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAssociationOverride override,
+ ReadOnlyJoinTable table,
TableTextRangeResolver textRangeResolver) {
super(persistentAttribute, table, textRangeResolver);
this.override = override;
@@ -52,9 +52,9 @@ public class AssociationOverrideJoinTableValidator
JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_TABLE_UNRESOLVED_NAME,
new String[] {
this.override.getName(),
- this.getTable().getName()
+ this.table.getName()
},
- this.getTable(),
+ this.table,
this.getTextRangeResolver().getNameTextRange()
);
}
@@ -72,9 +72,9 @@ public class AssociationOverrideJoinTableValidator
JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_TABLE_UNRESOLVED_CATALOG,
new String[] {
this.override.getName(),
- this.getTable().getCatalog()
+ this.table.getCatalog()
},
- this.getTable(),
+ this.table,
this.getTextRangeResolver().getCatalogTextRange()
);
}
@@ -92,40 +92,44 @@ public class AssociationOverrideJoinTableValidator
JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_TABLE_UNRESOLVED_SCHEMA,
new String[] {
this.override.getName(),
- this.getTable().getSchema()
+ this.table.getSchema()
},
- this.getTable(),
+ this.table,
this.getTextRangeResolver().getSchemaTextRange()
);
}
@Override
protected IMessage buildVirtualAttributeUnresolvedNameMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
}
@Override
protected IMessage buildVirtualAttributeUnresolvedCatalogMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
}
@Override
protected IMessage buildVirtualAttributeUnresolvedSchemaMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
}
@Override
protected String getVirtualAttributeUnresolvedCatalogMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
}
@Override
protected String getVirtualAttributeUnresolvedSchemaMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
}
@Override
protected String getVirtualAttributeUnresolvedNameMessage() {
- throw new UnsupportedOperationException("Nested relationship mappings with JoinTable are unsupported"); //$NON-NLS-1$
+ throw this.buildNestedJoinTableNotSupportedException();
+ }
+
+ protected UnsupportedOperationException buildNestedJoinTableNotSupportedException() {
+ return new UnsupportedOperationException("A nested relationship mapping cannot specify a join table"); //$NON-NLS-1$
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideValidator.java
index d0d4e0e8ce..b8417c6248 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AssociationOverrideValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,9 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -19,7 +19,7 @@ public class AssociationOverrideValidator
extends OverrideValidator
{
public AssociationOverrideValidator(
- AssociationOverride override,
+ ReadOnlyAssociationOverride override,
AssociationOverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
@@ -27,8 +27,8 @@ public class AssociationOverrideValidator
}
public AssociationOverrideValidator(
- PersistentAttribute persistentAttribute,
- AssociationOverride override,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAssociationOverride override,
AssociationOverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideColumnValidator.java
index fefb771d30..d5102d5f40 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideColumnValidator.java
@@ -9,10 +9,11 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -20,11 +21,11 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class AttributeOverrideColumnValidator
extends NamedColumnValidator
{
- final AttributeOverride override;
+ final ReadOnlyAttributeOverride override;
public AttributeOverrideColumnValidator(
- AttributeOverride override,
- BaseColumn column,
+ ReadOnlyAttributeOverride override,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider message) {
super(column, textRangeResolver, message);
@@ -32,9 +33,9 @@ public class AttributeOverrideColumnValidator
}
public AttributeOverrideColumnValidator(
- PersistentAttribute persistentAttribute,
- AttributeOverride override,
- BaseColumn column,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAttributeOverride override,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider message) {
super(persistentAttribute, column, textRangeResolver, message);
@@ -42,7 +43,7 @@ public class AttributeOverrideColumnValidator
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -93,6 +94,8 @@ public class AttributeOverrideColumnValidator
}
+ // ********** table validator **********
+
protected class TableValidator
extends BaseColumnTableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideValidator.java
index 4cc07bea91..7f820a41c4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AttributeOverrideValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,9 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -19,7 +19,7 @@ public class AttributeOverrideValidator
extends OverrideValidator
{
public AttributeOverrideValidator(
- AttributeOverride override,
+ ReadOnlyAttributeOverride override,
AttributeOverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
@@ -27,8 +27,8 @@ public class AttributeOverrideValidator
}
public AttributeOverrideValidator(
- PersistentAttribute persistentAttribute,
- AttributeOverride override,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAttributeOverride override,
AttributeOverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/BaseJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/BaseJoinColumnValidator.java
index a4826b5fd3..67f9c1b414 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/BaseJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/BaseJoinColumnValidator.java
@@ -11,20 +11,20 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-public abstract class BaseJoinColumnValidator<C extends BaseJoinColumn, R extends BaseJoinColumnTextRangeResolver>
+public abstract class BaseJoinColumnValidator<C extends ReadOnlyBaseJoinColumn, R extends BaseJoinColumnTextRangeResolver>
extends AbstractNamedColumnValidator<C, R>
{
- private final BaseJoinColumn.Owner joinColumnOwner;
+ private final ReadOnlyBaseJoinColumn.Owner joinColumnOwner;
protected BaseJoinColumnValidator(
C column,
- BaseJoinColumn.Owner joinColumnOwner,
+ ReadOnlyBaseJoinColumn.Owner joinColumnOwner,
R textRangeResolver,
TableDescriptionProvider provider) {
super(column, textRangeResolver, provider);
@@ -32,9 +32,9 @@ public abstract class BaseJoinColumnValidator<C extends BaseJoinColumn, R extend
}
protected BaseJoinColumnValidator(
- PersistentAttribute persistentAttribute,
+ ReadOnlyPersistentAttribute persistentAttribute,
C column,
- BaseJoinColumn.Owner joinColumnOwner,
+ ReadOnlyBaseJoinColumn.Owner joinColumnOwner,
R textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, textRangeResolver, provider);
@@ -78,7 +78,7 @@ public abstract class BaseJoinColumnValidator<C extends BaseJoinColumn, R extend
}
protected IMessage buildUnresolvedReferencedColumnNameMessage() {
- return this.columnParentIsVirtualAttribute() ?
+ return this.columnIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnresolvedReferencedColumnNameMessage() :
this.buildUnresolvedReferencedColumnNameMessage(this.getUnresolvedReferencedColumnNameMessage());
}
@@ -115,7 +115,7 @@ public abstract class BaseJoinColumnValidator<C extends BaseJoinColumn, R extend
protected abstract String getVirtualAttributeUnresolvedReferencedColumnNameMessage();
protected IMessage buildUnspecifiedNameMultipleJoinColumnsMessage() {
- return this.columnParentIsVirtualAttribute() ?
+ return this.columnIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnspecifiedNameMultipleJoinColumnsMessage() :
this.buildUnspecifiedNameMultipleJoinColumnsMessage(this.getUnspecifiedNameMultipleJoinColumnsMessage());
}
@@ -145,7 +145,7 @@ public abstract class BaseJoinColumnValidator<C extends BaseJoinColumn, R extend
protected abstract String getVirtualAttributeUnspecifiedNameMultipleJoinColumnsMessage();
protected IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() {
- return this.columnParentIsVirtualAttribute() ?
+ return this.columnIsPartOfVirtualAttribute() ?
this.buildVirtualAttributeUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() :
this.buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage(this.getUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage());
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/DiscriminatorColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/DiscriminatorColumnValidator.java
index 28b4c7c6f0..c993c07889 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/DiscriminatorColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/DiscriminatorColumnValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,15 +9,15 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class DiscriminatorColumnValidator
- extends AbstractNamedColumnValidator<NamedColumn, NamedColumnTextRangeResolver>
+ extends AbstractNamedColumnValidator<ReadOnlyNamedColumn, NamedColumnTextRangeResolver>
{
public DiscriminatorColumnValidator(
- NamedColumn namedColumn,
+ ReadOnlyNamedColumn namedColumn,
NamedColumnTextRangeResolver textRangeResolver) {
super(namedColumn, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/EntityPrimaryKeyJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/EntityPrimaryKeyJoinColumnValidator.java
index a0d355339e..cafc2d9552 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/EntityPrimaryKeyJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/EntityPrimaryKeyJoinColumnValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,15 +9,15 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
public class EntityPrimaryKeyJoinColumnValidator
extends PrimaryKeyJoinColumnValidator
{
public EntityPrimaryKeyJoinColumnValidator(
- BaseJoinColumn column,
- BaseJoinColumn.Owner owner,
+ ReadOnlyBaseJoinColumn column,
+ ReadOnlyBaseJoinColumn.Owner owner,
BaseJoinColumnTextRangeResolver textRangeResolver) {
super(column, owner, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java
index bb0e7941d9..1838129d29 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -20,7 +20,7 @@ public class GenericPersistentAttributeValidator
extends AbstractPersistentAttributeValidator
{
public GenericPersistentAttributeValidator(
- PersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver)
+ ReadOnlyPersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver)
{
super(persistentAttribute, javaPersistentAttribute, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/InverseJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/InverseJoinColumnValidator.java
index f74bc5e6cf..a495cc48ed 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/InverseJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/InverseJoinColumnValidator.java
@@ -9,33 +9,34 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class InverseJoinColumnValidator
- extends BaseJoinColumnValidator<JoinColumn, JoinColumnTextRangeResolver>
+ extends BaseJoinColumnValidator<ReadOnlyJoinColumn, JoinColumnTextRangeResolver>
{
protected InverseJoinColumnValidator(
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(column, joinColumnOwner, textRangeResolver, provider);
}
public InverseJoinColumnValidator(
- PersistentAttribute persistentAttribute,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, joinColumnOwner, textRangeResolver, provider);
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -79,6 +80,9 @@ public class InverseJoinColumnValidator
return JpaValidationMessages.VIRTUAL_ATTRIBUTE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS;
}
+
+ // ********** table validator **********
+
protected class TableValidator
extends BaseColumnTableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinColumnValidator.java
index 0742cae182..87ddf14046 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinColumnValidator.java
@@ -9,33 +9,34 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class JoinColumnValidator
- extends BaseJoinColumnValidator<JoinColumn, JoinColumnTextRangeResolver>
+ extends BaseJoinColumnValidator<ReadOnlyJoinColumn, JoinColumnTextRangeResolver>
{
protected JoinColumnValidator(
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(column, joinColumnOwner, textRangeResolver, provider);
}
public JoinColumnValidator(
- PersistentAttribute persistentAttribute,
- JoinColumn column,
- JoinColumn.Owner joinColumnOwner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyJoinColumn column,
+ ReadOnlyJoinColumn.Owner joinColumnOwner,
JoinColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, joinColumnOwner, textRangeResolver, provider);
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -79,6 +80,9 @@ public class JoinColumnValidator
return JpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS;
}
+
+ // ********** table validator **********
+
protected class TableValidator
extends BaseColumnTableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinTableValidator.java
index ff93b88aa0..982d7c16c4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/JoinTableValidator.java
@@ -9,15 +9,15 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class JoinTableValidator
extends AbstractJoinTableValidator
{
- public JoinTableValidator(PersistentAttribute persistentAttribute, JoinTable table, TableTextRangeResolver textRangeResolver) {
+ public JoinTableValidator(ReadOnlyPersistentAttribute persistentAttribute, ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
super(persistentAttribute, table, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideColumnValidator.java
index f58077403a..d8679afc5e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideColumnValidator.java
@@ -9,26 +9,27 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class MapKeyAttributeOverrideColumnValidator
extends AttributeOverrideColumnValidator
{
public MapKeyAttributeOverrideColumnValidator(
- PersistentAttribute persistentAttribute,
- AttributeOverride override,
- BaseColumn column,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAttributeOverride override,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, override, column, textRangeResolver, provider);
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -43,6 +44,8 @@ public class MapKeyAttributeOverrideColumnValidator
}
+ // ********** table validator **********
+
protected class TableValidator
extends AttributeOverrideColumnValidator.TableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java
index 437ccfae03..951bd5634b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyAttributeOverrideValidator.java
@@ -9,9 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -19,8 +19,8 @@ public class MapKeyAttributeOverrideValidator
extends AttributeOverrideValidator
{
public MapKeyAttributeOverrideValidator(
- PersistentAttribute persistentAttribute,
- AttributeOverride override,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyAttributeOverride override,
AttributeOverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyColumnValidator.java
index 6a7808e2ba..6ac74e6ae5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/MapKeyColumnValidator.java
@@ -9,24 +9,25 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class MapKeyColumnValidator
- extends AbstractNamedColumnValidator<BaseColumn, BaseColumnTextRangeResolver>
+ extends AbstractNamedColumnValidator<ReadOnlyBaseColumn, BaseColumnTextRangeResolver>
{
public MapKeyColumnValidator(
- PersistentAttribute persistentAttribute,
- BaseColumn column,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, textRangeResolver, provider);
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new TableValidator();
}
@@ -40,6 +41,9 @@ public class MapKeyColumnValidator
return JpaValidationMessages.VIRTUAL_ATTRIBUTE_MAP_KEY_COLUMN_UNRESOLVED_NAME;
}
+
+ // ********** table validator **********
+
protected class TableValidator
extends BaseColumnTableValidator
{
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/NamedColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/NamedColumnValidator.java
index b98ed9597e..d75649c0a6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/NamedColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/NamedColumnValidator.java
@@ -9,32 +9,33 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
public class NamedColumnValidator
- extends AbstractNamedColumnValidator<BaseColumn, BaseColumnTextRangeResolver>
+ extends AbstractNamedColumnValidator<ReadOnlyBaseColumn, BaseColumnTextRangeResolver>
{
protected NamedColumnValidator(
- BaseColumn column,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(column, textRangeResolver, provider);
}
public NamedColumnValidator(
- PersistentAttribute persistentAttribute,
- BaseColumn column,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyBaseColumn column,
BaseColumnTextRangeResolver textRangeResolver,
TableDescriptionProvider provider) {
super(persistentAttribute, column, textRangeResolver, provider);
}
@Override
- protected TableValidator buildTableValidator() {
+ protected JptValidator buildTableValidator() {
return new BaseColumnTableValidator();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OneToOnePrimaryKeyJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OneToOnePrimaryKeyJoinColumnValidator.java
index 1ac30fab13..5f29dd78dc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OneToOnePrimaryKeyJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OneToOnePrimaryKeyJoinColumnValidator.java
@@ -9,8 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -18,9 +18,9 @@ public class OneToOnePrimaryKeyJoinColumnValidator
extends PrimaryKeyJoinColumnValidator
{
public OneToOnePrimaryKeyJoinColumnValidator(
- PersistentAttribute persistentAttribute,
- BaseJoinColumn column,
- BaseJoinColumn.Owner owner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyBaseJoinColumn column,
+ ReadOnlyBaseJoinColumn.Owner owner,
BaseJoinColumnTextRangeResolver textRangeResolver) {
super(persistentAttribute, column, owner, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OverrideValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OverrideValidator.java
index 164ac53d97..b247a5d664 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OverrideValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/OverrideValidator.java
@@ -12,8 +12,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context;
import java.util.List;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
@@ -24,10 +24,10 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public abstract class OverrideValidator
implements JptValidator
{
- // this is null for overrides defined on entities
- protected final PersistentAttribute persistentAttribute;
+ /** this is <code>null</code> for overrides defined on entities */
+ protected final ReadOnlyPersistentAttribute persistentAttribute;
- protected final Override_ override;
+ protected final ReadOnlyOverride override;
protected final OverrideContainer container;
@@ -36,7 +36,7 @@ public abstract class OverrideValidator
protected final OverrideDescriptionProvider overrideDescriptionProvider;
protected OverrideValidator(
- Override_ override,
+ ReadOnlyOverride override,
OverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
@@ -45,8 +45,8 @@ public abstract class OverrideValidator
protected OverrideValidator(
- PersistentAttribute persistentAttribute,
- Override_ override,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyOverride override,
OverrideContainer container,
OverrideTextRangeResolver textRangeResolver,
OverrideDescriptionProvider overrideDescriptionProvider) {
@@ -62,38 +62,35 @@ public abstract class OverrideValidator
}
public boolean validate(List<IMessage> messages, IReporter reporter) {
- if (!this.validateType(messages)) {
+ if (this.validateType(messages)) {
+ // validate the name only if the type is valid
return this.validateName(messages);
}
- return true;
+ return false;
}
protected boolean validateType(List<IMessage> messages) {
if (this.container.getOverridableTypeMapping() == null) {
messages.add(this.buildUnresolvedOverrideTypeMessage());
- return true;
+ return false;
}
- return false;
+ return true;
}
protected IMessage buildUnresolvedOverrideTypeMessage() {
- if (this.override.isVirtual()) {
- return DefaultJpaValidationMessages.buildMessage(
- IMessage.HIGH_SEVERITY,
- JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE,
- new String[] {this.override.getName()},
- this.override,
- this.textRangeResolver.getNameTextRange()
- );
- }
-
return DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
- JpaValidationMessages.ATTRIBUTE_OVERRIDE_INVALID_TYPE,
+ this.getUnresolvedOverrideTypeMessage(),
new String[] {this.override.getName()},
this.override,
this.textRangeResolver.getNameTextRange()
- );
+ );
+ }
+
+ protected String getUnresolvedOverrideTypeMessage() {
+ return this.override.isVirtual() ?
+ JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE :
+ JpaValidationMessages.ATTRIBUTE_OVERRIDE_INVALID_TYPE;
}
protected boolean validateName(List<IMessage> messages) {
@@ -106,9 +103,11 @@ public abstract class OverrideValidator
protected IMessage buildUnresolvedNameMessage() {
if (this.override.isVirtual()) {
+ // this can happen when an erroneous Java override triggers a
+ // corresponding orm.xml virtual override
return this.buildVirtualUnresolvedNameMessage();
}
- if (this.overrideParentIsVirtualAttribute()) {
+ if (this.overrideIsPartOfVirtualAttribute()) {
return this.buildVirtualAttributeUnresolvedNameMessage();
}
return this.buildUnresolvedNameMessage(this.getUnresolvedNameMessage());
@@ -163,7 +162,7 @@ public abstract class OverrideValidator
protected abstract String getVirtualAttributeUnresolvedNameMessage();
- protected boolean overrideParentIsVirtualAttribute() {
+ protected boolean overrideIsPartOfVirtualAttribute() {
return (this.persistentAttribute != null) &&
this.persistentAttribute.isVirtual();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PrimaryKeyJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PrimaryKeyJoinColumnValidator.java
index 9784fc0182..c531b28f01 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PrimaryKeyJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PrimaryKeyJoinColumnValidator.java
@@ -9,32 +9,32 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public abstract class PrimaryKeyJoinColumnValidator
- extends BaseJoinColumnValidator<BaseJoinColumn, BaseJoinColumnTextRangeResolver>
+ extends BaseJoinColumnValidator<ReadOnlyBaseJoinColumn, BaseJoinColumnTextRangeResolver>
{
protected PrimaryKeyJoinColumnValidator(
- BaseJoinColumn column,
- BaseJoinColumn.Owner owner,
+ ReadOnlyBaseJoinColumn column,
+ ReadOnlyBaseJoinColumn.Owner owner,
BaseJoinColumnTextRangeResolver textRangeResolver) {
super(column, owner, textRangeResolver, TableDescriptionProvider.Null.instance());
}
protected PrimaryKeyJoinColumnValidator(
- PersistentAttribute persistentAttribute,
- BaseJoinColumn column,
- BaseJoinColumn.Owner owner,
+ ReadOnlyPersistentAttribute persistentAttribute,
+ ReadOnlyBaseJoinColumn column,
+ ReadOnlyBaseJoinColumn.Owner owner,
BaseJoinColumnTextRangeResolver textRangeResolver) {
super(persistentAttribute, column, owner, textRangeResolver, TableDescriptionProvider.Null.instance());
}
@Override
- public IMessage buildUnresolvedNameMessage() {
+ protected IMessage buildUnresolvedNameMessage() {
return this.column.isVirtual() ?
this.buildUnresolvedNameMessage(this.getVirtualPKJoinColumnUnresolvedNameMessage()) :
super.buildUnresolvedNameMessage();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java
index 5d23f9305b..7ecf62d72b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTablePrimaryKeyJoinColumnValidator.java
@@ -9,8 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
-import org.eclipse.jpt.jpa.core.context.SecondaryTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -19,12 +19,12 @@ import org.eclipse.wst.validation.internal.provisional.core.IMessage;
public class SecondaryTablePrimaryKeyJoinColumnValidator
extends PrimaryKeyJoinColumnValidator
{
- private final SecondaryTable secondaryTable;
+ private final ReadOnlySecondaryTable secondaryTable;
public SecondaryTablePrimaryKeyJoinColumnValidator(
- SecondaryTable secondaryTable,
- BaseJoinColumn column,
- BaseJoinColumn.Owner owner,
+ ReadOnlySecondaryTable secondaryTable,
+ ReadOnlyBaseJoinColumn column,
+ ReadOnlyBaseJoinColumn.Owner owner,
BaseJoinColumnTextRangeResolver textRangeResolver) {
super(column, owner, textRangeResolver);
this.secondaryTable = secondaryTable;
@@ -39,7 +39,7 @@ public class SecondaryTablePrimaryKeyJoinColumnValidator
}
@Override
- public IMessage buildUnresolvedNameMessage() {
+ protected IMessage buildUnresolvedNameMessage() {
return this.secondaryTableIsVirtual() ?
this.buildVirtualSecondaryTableUnresolvedNameMessage() :
super.buildUnresolvedNameMessage();
@@ -65,7 +65,7 @@ public class SecondaryTablePrimaryKeyJoinColumnValidator
}
@Override
- public IMessage buildUnresolvedReferencedColumnNameMessage() {
+ protected IMessage buildUnresolvedReferencedColumnNameMessage() {
return this.secondaryTableIsVirtual() ?
this.buildVirtualSecondaryTableUnresolvedReferencedColumnNameMessage() :
super.buildUnresolvedReferencedColumnNameMessage();
@@ -91,7 +91,7 @@ public class SecondaryTablePrimaryKeyJoinColumnValidator
}
@Override
- public IMessage buildUnspecifiedNameMultipleJoinColumnsMessage() {
+ protected IMessage buildUnspecifiedNameMultipleJoinColumnsMessage() {
return this.secondaryTableIsVirtual() ?
this.buildVirtualSecondaryTableUnspecifiedNameMultipleJoinColumnsMessage() :
super.buildUnspecifiedNameMultipleJoinColumnsMessage();
@@ -113,7 +113,7 @@ public class SecondaryTablePrimaryKeyJoinColumnValidator
}
@Override
- public IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() {
+ protected IMessage buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() {
return this.secondaryTableIsVirtual() ?
this.buildVirtualSecondaryTableUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage() :
super.buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTableValidator.java
index 03b4df0b81..ff7cbe3139 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/SecondaryTableValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,29 +9,25 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.SecondaryTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
-public class SecondaryTableValidator extends AbstractTableValidator
+public class SecondaryTableValidator
+ extends AbstractTableValidator
{
- public SecondaryTableValidator(SecondaryTable table, TableTextRangeResolver textRangeResolver) {
+ public SecondaryTableValidator(ReadOnlySecondaryTable table, TableTextRangeResolver textRangeResolver) {
super(table, textRangeResolver);
}
@Override
- public SecondaryTable getTable() {
- return (SecondaryTable) super.getTable();
- }
-
- @Override
protected String getUnresolvedCatalogMessage() {
return JpaValidationMessages.SECONDARY_TABLE_UNRESOLVED_CATALOG;
}
@Override
protected String getVirtualAttributeUnresolvedCatalogMessage() {
- throw new UnsupportedOperationException("No SecondaryTable annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
}
@Override
@@ -41,7 +37,7 @@ public class SecondaryTableValidator extends AbstractTableValidator
@Override
protected String getVirtualAttributeUnresolvedSchemaMessage() {
- throw new UnsupportedOperationException("No SecondaryTable annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
}
@Override
@@ -51,6 +47,10 @@ public class SecondaryTableValidator extends AbstractTableValidator
@Override
protected String getVirtualAttributeUnresolvedNameMessage() {
- throw new UnsupportedOperationException("No SecondaryTable annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
+ }
+
+ protected UnsupportedOperationException buildAttributeTableNotSupportedException() {
+ return new UnsupportedOperationException("An attribute cannot specify a secondary table"); //$NON-NLS-1$
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/TableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/TableValidator.java
index a0dad72ed6..6a099e58b6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/TableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/TableValidator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,13 +9,14 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context;
-import org.eclipse.jpt.jpa.core.context.Table;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
-public class TableValidator extends AbstractTableValidator
+public class TableValidator
+ extends AbstractTableValidator
{
- public TableValidator(Table table, TableTextRangeResolver textRangeResolver) {
+ public TableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
super(table, textRangeResolver);
}
@@ -26,7 +27,7 @@ public class TableValidator extends AbstractTableValidator
@Override
protected String getVirtualAttributeUnresolvedCatalogMessage() {
- throw new UnsupportedOperationException("No Table annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
}
@Override
@@ -36,7 +37,7 @@ public class TableValidator extends AbstractTableValidator
@Override
protected String getVirtualAttributeUnresolvedSchemaMessage() {
- throw new UnsupportedOperationException("No Table annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
}
@Override
@@ -46,6 +47,10 @@ public class TableValidator extends AbstractTableValidator
@Override
protected String getVirtualAttributeUnresolvedNameMessage() {
- throw new UnsupportedOperationException("No Table annotations exist on attributes"); //$NON-NLS-1$
+ throw this.buildAttributeTableNotSupportedException();
+ }
+
+ protected UnsupportedOperationException buildAttributeTableNotSupportedException() {
+ return new UnsupportedOperationException("An attribute cannot specify a table"); //$NON-NLS-1$
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaOverrideContainer.java
index 0b04e3202c..7ed3dce4d3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaOverrideContainer.java
@@ -17,15 +17,18 @@ import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
+import org.eclipse.jpt.common.utility.internal.NotNullFilter;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SubIterableWrapper;
+import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
@@ -38,6 +41,7 @@ import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.Annotation;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember;
import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation;
@@ -70,9 +74,13 @@ public abstract class AbstractJavaOverrideContainer<
A extends OverrideAnnotation & NestableAnnotation
>
extends AbstractJavaJpaContextNode
- implements JavaOverrideContainer
+ implements JavaOverrideContainer2_0
{
- // this can be null if the container is "read-only" (i.e. a "null" container)
+ /**
+ * this can be <code>null</code> if the container is "read-only"
+ * (i.e. a <em>null</em> container)
+ * @see #getOwner2_0()
+ */
protected final O owner;
protected final Vector<S> specifiedOverrides = new Vector<S>();
@@ -124,6 +132,19 @@ public abstract class AbstractJavaOverrideContainer<
return this.selectOverrideNamed(this.getOverrides(), name);
}
+ public Iterable<String> getOverrideNames() {
+ return new FilteringIterable<String>(this.getOverrideNames_(), NotNullFilter.<String>instance());
+ }
+
+ protected Iterable<String> getOverrideNames_() {
+ return new TransformationIterable<R, String>(this.getOverrides()) {
+ @Override
+ protected String transform(R override) {
+ return override.getName();
+ }
+ };
+ }
+
// ********** override conversions **********
@@ -316,7 +337,10 @@ public abstract class AbstractJavaOverrideContainer<
@Override
protected boolean accept(A annotation) {
String overrideName = annotation.getName();
- return (overrideName != null) && AbstractJavaOverrideContainer.this.owner.isRelevant(overrideName);
+ return (overrideName != null) && this.getOwner().isRelevant(overrideName);
+ }
+ protected JavaOverrideContainer2_0.Owner getOwner() {
+ return AbstractJavaOverrideContainer.this.getOwner2_0();
}
};
}
@@ -472,6 +496,10 @@ public abstract class AbstractJavaOverrideContainer<
// ********** misc **********
+ protected JavaOverrideContainer2_0.Owner getOwner2_0() {
+ return (JavaOverrideContainer2_0.Owner) this.owner;
+ }
+
public TypeMapping getTypeMapping() {
return this.owner.getTypeMapping();
}
@@ -504,20 +532,20 @@ public abstract class AbstractJavaOverrideContainer<
return this.owner.getDefaultTableName();
}
- public JptValidator buildValidator(Override_ override, OverrideTextRangeResolver textRangeResolver) {
- return this.owner.buildValidator(override, this, textRangeResolver);
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideTextRangeResolver textRangeResolver) {
+ return this.owner.buildOverrideValidator(override, this, textRangeResolver);
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
return this.owner.buildColumnValidator(override, column, columnOwner, textRangeResolver);
}
public String getPossiblePrefix() {
- return this.owner.getPossiblePrefix();
+ return this.getOwner2_0().getPossiblePrefix();
}
public String getWritePrefix() {
- return this.owner.getWritePrefix();
+ return this.getOwner2_0().getWritePrefix();
}
protected R selectOverrideNamed(Iterable<R> overrides, String name) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverride.java
index ebcec5ef3e..947adfac86 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverride.java
@@ -14,12 +14,18 @@ import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaOverrideRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAssociationOverride;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverride2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -29,7 +35,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
*/
public class GenericJavaAssociationOverride
extends AbstractJavaOverride<JavaAssociationOverrideContainer, AssociationOverrideAnnotation>
- implements JavaAssociationOverride
+ implements JavaAssociationOverride2_0
{
protected final JavaOverrideRelationship relationship;
@@ -76,6 +82,11 @@ public class GenericJavaAssociationOverride
// ********** misc **********
+ @Override
+ protected JavaAssociationOverrideContainer2_0 getContainer2_0() {
+ return (JavaAssociationOverrideContainer2_0) super.getContainer2_0();
+ }
+
public RelationshipMapping getMapping() {
return this.getContainer().getRelationshipMapping(this.name);
}
@@ -119,4 +130,16 @@ public class GenericJavaAssociationOverride
super.validate(messages, reporter, astRoot);
this.relationship.validate(messages, reporter, astRoot);
}
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableValidator(this, table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableInverseJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java
index 05d375a330..5566657d9d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAssociationOverrideContainer.java
@@ -9,11 +9,12 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverrideRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
@@ -23,6 +24,7 @@ import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.AssociationOverridesAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.NestableAssociationOverrideAnnotation;
@@ -38,7 +40,7 @@ public class GenericJavaAssociationOverrideContainer
JavaVirtualAssociationOverride,
NestableAssociationOverrideAnnotation
>
- implements JavaAssociationOverrideContainer
+ implements JavaAssociationOverrideContainer2_0
{
public GenericJavaAssociationOverrideContainer(JavaJpaContextNode parent, JavaAssociationOverrideContainer.Owner owner) {
super(parent, owner);
@@ -49,20 +51,29 @@ public class GenericJavaAssociationOverrideContainer
return MappingTools.getRelationshipMapping(attributeName, this.owner.getOverridableTypeMapping());
}
- public Relationship resolveOverriddenRelationship(String associationOverrideName) {
+ public ReadOnlyRelationship resolveOverriddenRelationship(String associationOverrideName) {
return this.owner.resolveOverriddenRelationship(associationOverrideName);
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, org.eclipse.jpt.jpa.core.context.JoinColumn.Owner o, JoinColumnTextRangeResolver textRangeResolver) {
- return this.owner.buildJoinTableJoinColumnValidator(override, column, o, textRangeResolver);
+ public ReadOnlyOverrideRelationship getOverrideRelationship(String overrideName) {
+ return this.getOverrideNamed(overrideName).getRelationship();
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, org.eclipse.jpt.jpa.core.context.JoinColumn.Owner o, JoinColumnTextRangeResolver textRangeResolver) {
- return this.owner.buildJoinTableInverseJoinColumnValidator(override, column, o, textRangeResolver);
+ @Override
+ protected JavaAssociationOverrideContainer2_0.Owner getOwner2_0() {
+ return (JavaAssociationOverrideContainer2_0.Owner) super.getOwner2_0();
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner o, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableJoinColumnValidator(override, column, o, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner o, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableInverseJoinColumnValidator(override, column, o, textRangeResolver);
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- return this.owner.buildTableValidator(override, table, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableValidator(override, table, textRangeResolver);
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java
index dda23b1611..7147fa7423 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -13,11 +13,9 @@ import java.util.Iterator;
import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.utility.Filter;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
-import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
@@ -25,13 +23,11 @@ import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAttributeOverride;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaOverride;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.jpt.jpa.core.resource.java.AttributeOverrideAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.CompleteColumnAnnotation;
-import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -100,32 +96,12 @@ public class GenericJavaAttributeOverride
// ********** column owner implementation **********
- public TypeMapping getTypeMapping() {
- return this.getContainer().getTypeMapping();
- }
-
- public String getDefaultTableName() {
- return this.getContainer().getDefaultTableName();
- }
-
- public Table resolveDbTable(String tableName) {
- return this.getContainer().resolveDbTable(tableName);
- }
-
public String getDefaultColumnName() {
return this.name;
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getContainer().buildColumnValidator(this, (BaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
- }
-
- public boolean tableNameIsInvalid(String tableName) {
- return this.getContainer().tableNameIsInvalid(tableName);
- }
-
- public Iterator<String> candidateTableNames() {
- return this.getContainer().candidateTableNames();
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, (ReadOnlyBaseColumn) col, this, (BaseColumnTextRangeResolver) textRangeResolver);
}
public CompleteColumnAnnotation getColumnAnnotation() {
@@ -137,26 +113,10 @@ public class GenericJavaAttributeOverride
}
- // ********** mapped by relationship **********
+ // ********** derived **********
- protected boolean isMappedByRelationship() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.buildQualifier());
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
- }
-
- /**
- * overridable names are (usually?) qualified with a container mapping,
- * which may also be the one mapped by a relationship
- */
- protected String buildQualifier() {
- if (this.name == null) {
- return null;
- }
- int index = this.name.indexOf('.');
- return (index == -1) ? this.name : this.name.substring(0, index);
+ protected boolean attributeIsDerivedId() {
+ return this.getTypeMapping().attributeIsDerivedId(this.name);
}
@@ -187,28 +147,23 @@ public class GenericJavaAttributeOverride
public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
super.validate(messages, reporter, astRoot);
- // [JPA 2.0] if the column is specified, or if the override is not mapped by a relationship,
- // then the column is validated.
- // (In JPA 1.0, the column will always be validated, since the override is never mapped by a
- // relationship)
- if (this.columnAnnotationIsSpecified() || ! this.isMappedByRelationship()) {
- this.column.validate(messages, reporter, astRoot);
- }
-
- // [JPA 2.0] if the override is mapped by a relationship, then that actually is in itself
- // a validation error
- // (We prevent implied overrides that are mapped by a relationship ... hopefully)
- // (In JPA 1.0, this will never occur)
- if (this.isMappedByRelationship()) {
+ if (this.attributeIsDerivedId()) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
- JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED,
+ JpaValidationMessages.ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED,
EMPTY_STRING_ARRAY,
this,
this.getValidationTextRange(astRoot)
)
);
+
+ // validate the column if it is specified
+ if (this.columnAnnotationIsSpecified()) {
+ this.column.validate(messages, reporter, astRoot);
+ }
+ } else {
+ this.column.validate(messages, reporter, astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java
index 49ab73bac9..9d84836b8f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaAttributeOverrideContainer.java
@@ -9,12 +9,13 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAttributeOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAttributeOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.java.AttributeOverrideAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.AttributeOverridesAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.NestableAttributeOverrideAnnotation;
@@ -30,17 +31,21 @@ public class GenericJavaAttributeOverrideContainer
JavaVirtualAttributeOverride,
NestableAttributeOverrideAnnotation
>
- implements JavaAttributeOverrideContainer
+ implements JavaAttributeOverrideContainer2_0
{
public GenericJavaAttributeOverrideContainer(JavaJpaContextNode parent, JavaAttributeOverrideContainer.Owner owner) {
super(parent, owner);
}
- public Column resolveOverriddenColumn(String attributeName) {
+ public ReadOnlyColumn resolveOverriddenColumn(String attributeName) {
return (attributeName == null) ? null : this.owner.resolveOverriddenColumn(attributeName);
}
+ public ReadOnlyColumn getOverrideColumn(String overrideName) {
+ return this.getOverrideNamed(overrideName).getColumn();
+ }
+
@Override
protected String getOverrideAnnotationName() {
return AttributeOverrideAnnotation.ANNOTATION_NAME;
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java
index 2db8014c83..20a918f8b1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedIdMapping.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -11,9 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
import org.eclipse.jpt.jpa.core.MappingKeys;
@@ -21,7 +19,6 @@ import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddedIdMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaBaseEmbeddedMapping;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -37,8 +34,8 @@ public class GenericJavaEmbeddedIdMapping
extends AbstractJavaBaseEmbeddedMapping<EmbeddedIdAnnotation>
implements EmbeddedIdMapping2_0, JavaEmbeddedIdMapping
{
- /* 2.0 feature - a relationship may map this embedded id */
- protected boolean mappedByRelationship;
+ /* JPA 2.0 - the embedded id may be derived from a relationship */
+ protected boolean derived;
public GenericJavaEmbeddedIdMapping(JavaPersistentAttribute parent) {
@@ -51,32 +48,28 @@ public class GenericJavaEmbeddedIdMapping
@Override
public void update() {
super.update();
- this.setMappedByRelationship(this.buildMappedByRelationship());
+ this.setDerived(this.buildDerived());
}
- // ********** mapped by relationship **********
+ // ********** derived **********
- public boolean isMappedByRelationship() {
- return this.mappedByRelationship;
+ public boolean isDerived() {
+ return this.derived;
}
- protected void setMappedByRelationship(boolean value) {
- boolean old = this.mappedByRelationship;
- this.mappedByRelationship = value;
- this.firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, old, value);
+ protected void setDerived(boolean derived) {
+ boolean old = this.derived;
+ this.derived = derived;
+ this.firePropertyChanged(DERIVED_PROPERTY, old, derived);
}
- protected boolean buildMappedByRelationship() {
- return this.isJpa2_0Compatible() && this.buildMappedByRelationship_();
+ protected boolean buildDerived() {
+ return this.isJpa2_0Compatible() && this.buildDerived_();
}
- protected boolean buildMappedByRelationship_() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.getName());
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
+ protected boolean buildDerived_() {
+ return this.getTypeMapping().attributeIsDerivedId(this.getName());
}
@@ -93,7 +86,7 @@ public class GenericJavaEmbeddedIdMapping
@Override
protected Iterator<String> embeddableOverridableAttributeMappingNames() {
- return (this.mappedByRelationship) ?
+ return (this.derived) ?
EmptyIterator.<String>instance() :
super.embeddableOverridableAttributeMappingNames();
}
@@ -113,7 +106,7 @@ public class GenericJavaEmbeddedIdMapping
// [JPA 2.0] if the embedded id is mapped by a relationship, then any specified
// attribute overrides are in error
// (in JPA 1.0, this will obviously never be reached)
- if (this.mappedByRelationship
+ if (this.derived
&& (this.attributeOverrideContainer.specifiedOverridesSize() > 0)) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
@@ -127,6 +120,7 @@ public class GenericJavaEmbeddedIdMapping
}
}
+
// ********** attribute override container owner *********
protected class AttributeOverrideContainerOwner
@@ -134,31 +128,19 @@ public class GenericJavaEmbeddedIdMapping
{
@Override
public Iterator<String> allOverridableNames() {
- return GenericJavaEmbeddedIdMapping.this.isMappedByRelationship() ?
+ return GenericJavaEmbeddedIdMapping.this.isDerived() ?
EmptyIterator.<String>instance() :
super.allOverridableNames();
}
@Override
- protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) {
- final Set<String> mappedByRelationshipAttributeNames = this.buildMappedByRelationshipAttributeNames();
- if (mappedByRelationshipAttributeNames.isEmpty()) {
- return super.allOverridableAttributeNames_(typeMapping);
- }
- return new FilteringIterator<String>(super.allOverridableAttributeNames_(typeMapping)) {
+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping overriddenTypeMapping) {
+ return new FilteringIterator<String>(super.allOverridableAttributeNames_(overriddenTypeMapping)) {
@Override
protected boolean accept(String attributeName) {
- // overridable names are (usually?) qualified with a container mapping,
- // which may also be the one mapped by a relationship
- int dotIndex = attributeName.indexOf('.');
- String qualifier = (dotIndex > 0) ? attributeName.substring(0, dotIndex) : attributeName;
- return ! mappedByRelationshipAttributeNames.contains(qualifier);
+ return ! AttributeOverrideContainerOwner.this.getTypeMapping().attributeIsDerivedId(attributeName);
}
};
}
-
- protected Set<String> buildMappedByRelationshipAttributeNames() {
- return CollectionTools.set(GenericJavaEmbeddedIdMapping.this.getMappedByRelationshipAttributeNames());
- }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java
index 995cac9963..5cb380e156 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaEmbeddedMapping.java
@@ -21,15 +21,17 @@ import org.eclipse.jpt.jpa.core.MappingKeys;
import org.eclipse.jpt.jpa.core.context.AssociationOverride;
import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.AttributeMappingTools;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
@@ -46,6 +48,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.AssociationOverrideValidat
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EmbeddableOverrideDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionProvider;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaEmbeddedMapping2_0;
import org.eclipse.jpt.jpa.core.resource.java.EmbeddedAnnotation;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember;
@@ -174,6 +177,11 @@ public class GenericJavaEmbeddedMapping
return (this.targetEmbeddable == null) ? null : this.targetEmbeddable.resolveOverriddenRelationship(attributeName);
}
+ @Override
+ protected JavaAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() {
+ return new AttributeOverrideContainerOwner();
+ }
+
// ********** Java completion proposals **********
@@ -202,10 +210,19 @@ public class GenericJavaEmbeddedMapping
}
+ // ********** attribute override container owner *********
+
+ protected class AttributeOverrideContainerOwner
+ extends AbstractJavaBaseEmbeddedMapping<EmbeddedAnnotation>.AttributeOverrideContainerOwner
+ {
+ // nothing yet
+ }
+
+
// ********** association override container owner **********
protected class AssociationOverrideContainerOwner
- implements JavaAssociationOverrideContainer.Owner
+ implements JavaAssociationOverrideContainer2_0.Owner
{
public JavaResourcePersistentMember getResourcePersistentMember() {
return GenericJavaEmbeddedMapping.this.getResourcePersistentAttribute();
@@ -261,24 +278,24 @@ public class GenericJavaEmbeddedMapping
return GenericJavaEmbeddedMapping.this.getValidationTextRange(astRoot);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideInverseJoinColumnValidator(this.getPersistentAttribute(), override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinTableValidator(this.getPersistentAttribute(), override, (JoinTable) table, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinTableValidator(this.getPersistentAttribute(), override, (ReadOnlyJoinTable) table, textRangeResolver);
}
protected JavaPersistentAttribute getPersistentAttribute() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinColumn.java
index 9052579cbe..d945316c69 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinColumn.java
@@ -19,6 +19,7 @@ import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaBaseColumn;
@@ -32,21 +33,21 @@ import org.eclipse.jpt.jpa.db.Table;
* Java join column
*/
public class GenericJavaJoinColumn
- extends AbstractJavaBaseColumn<JoinColumnAnnotation, JavaJoinColumn.Owner>
+ extends AbstractJavaBaseColumn<JoinColumnAnnotation, JavaReadOnlyJoinColumn.Owner>
implements JavaJoinColumn
{
- /** @see AbstractJavaNamedColumn#AbstractJavaNamedColumn(JavaJpaContextNode, org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation) */
+ /** @see AbstractJavaNamedColumn#AbstractJavaNamedColumn(JavaJpaContextNode, org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation) */
protected /* final */ JoinColumnAnnotation columnAnnotation; // never null
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericJavaJoinColumn(JavaJpaContextNode parent, JavaJoinColumn.Owner owner) {
+ public GenericJavaJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner) {
this(parent, owner, null);
}
- public GenericJavaJoinColumn(JavaJpaContextNode parent, JavaJoinColumn.Owner owner, JoinColumnAnnotation columnAnnotation) {
+ public GenericJavaJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, JoinColumnAnnotation columnAnnotation) {
super(parent, owner, columnAnnotation);
this.specifiedReferencedColumnName = this.buildSpecifiedReferencedColumnName();
}
@@ -126,10 +127,6 @@ public class GenericJavaJoinColumn
protected String buildDefaultReferencedColumnName() {
return MappingTools.buildJoinColumnDefaultReferencedColumnName(this.owner);
}
-
- public TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot) {
- return this.getValidationTextRange(this.getColumnAnnotation().getReferencedColumnNameTextRange(astRoot), astRoot);
- }
// ********** database stuff **********
@@ -208,4 +205,8 @@ public class GenericJavaJoinColumn
protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
return new JavaJoinColumnTextRangeResolver(this, astRoot);
}
+
+ public TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(this.getColumnAnnotation().getReferencedColumnNameTextRange(astRoot), astRoot);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinTable.java
index cc6254661b..fa515cb0dd 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaJoinTable.java
@@ -25,16 +25,18 @@ import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterab
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaRelationship;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
@@ -59,7 +61,7 @@ public class GenericJavaJoinTable
{
protected final Vector<JavaJoinColumn> specifiedInverseJoinColumns = new Vector<JavaJoinColumn>();
protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter();
- protected final JavaJoinColumn.Owner inverseJoinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
protected JavaJoinColumn defaultInverseJoinColumn;
@@ -71,7 +73,7 @@ public class GenericJavaJoinTable
}
@Override
- protected JavaJoinColumn.Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -122,7 +124,7 @@ public class GenericJavaJoinTable
return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.defaultInverseJoinColumnsSize();
}
- public void convertDefaultToSpecifiedInverseJoinColumn() {
+ public void convertDefaultInverseJoinColumnToSpecified() {
MappingTools.convertJoinTableDefaultToSpecifiedInverseJoinColumn(this);
}
@@ -238,7 +240,7 @@ public class GenericJavaJoinTable
}
}
- protected JavaJoinColumn.Owner buildInverseJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
return new InverseJoinColumnOwner();
}
@@ -348,7 +350,7 @@ public class GenericJavaJoinTable
@Override
protected void validateJoinColumns(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
super.validateJoinColumns(messages, reporter, astRoot);
- this.validateJoinColumns(this.inverseJoinColumns(), messages, reporter, astRoot);
+ this.validateNodes(this.getInverseJoinColumns(), messages, reporter, astRoot);
}
public boolean validatesAgainstDatabase() {
@@ -362,18 +364,14 @@ public class GenericJavaJoinTable
* just a little common behavior
*/
protected abstract class AbstractJoinColumnOwner
- implements JavaJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected AbstractJoinColumnOwner() {
super();
}
public TypeMapping getTypeMapping() {
- return GenericJavaJoinTable.this.getRelationshipStrategy().getRelationship().getTypeMapping();
- }
-
- public PersistentAttribute getPersistentAttribute() {
- return GenericJavaJoinTable.this.getPersistentAttribute();
+ return this.getRelationship().getTypeMapping();
}
/**
@@ -385,7 +383,7 @@ public class GenericJavaJoinTable
/**
* If there is a specified table name it needs to be the same
- * the default table name. the table is always the join table
+ * the default table name. The table is always the join table.
*/
public boolean tableNameIsInvalid(String tableName) {
return Tools.valuesAreDifferent(this.getDefaultTableName(), tableName);
@@ -415,6 +413,14 @@ public class GenericJavaJoinTable
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return GenericJavaJoinTable.this.getValidationTextRange(astRoot);
}
+
+ protected JavaRelationship getRelationship() {
+ return this.getRelationshipStrategy().getRelationship();
+ }
+
+ protected JavaJoinTableRelationshipStrategy getRelationshipStrategy() {
+ return GenericJavaJoinTable.this.getRelationshipStrategy();
+ }
}
@@ -430,7 +436,7 @@ public class GenericJavaJoinTable
}
public Entity getRelationshipTarget() {
- return GenericJavaJoinTable.this.getRelationshipStrategy().getRelationship().getEntity();
+ return this.getRelationship().getEntity();
}
public String getAttributeName() {
@@ -449,8 +455,8 @@ public class GenericJavaJoinTable
return GenericJavaJoinTable.this.joinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return GenericJavaJoinTable.this.getParent().buildJoinTableJoinColumnValidator((JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
}
}
@@ -489,8 +495,8 @@ public class GenericJavaJoinTable
return GenericJavaJoinTable.this.inverseJoinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return GenericJavaJoinTable.this.getParent().buildJoinTableInverseJoinColumnValidator((JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableInverseJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaMappingJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaMappingJoinTableRelationshipStrategy.java
index 8979021ad6..7664f5c9d2 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaMappingJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaMappingJoinTableRelationshipStrategy.java
@@ -11,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
-import org.eclipse.jpt.jpa.core.context.Table;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.java.JavaMappingJoinTableRelationship;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
@@ -25,11 +25,14 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.InverseJoinColumnValidator
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinColumnValidator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableValidator;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute;
import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
public class GenericJavaMappingJoinTableRelationshipStrategy
extends AbstractJavaJoinTableRelationshipStrategy
+ implements JavaMappingJoinTableRelationshipStrategy2_0
{
public GenericJavaMappingJoinTableRelationshipStrategy(JavaMappingJoinTableRelationship parent) {
super(parent);
@@ -73,6 +76,10 @@ public class GenericJavaMappingJoinTableRelationshipStrategy
return this.getJpaPlatformVariation().isJoinTableOverridable();
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return overrideRelationship.getJoinTableStrategy();
+ }
+
// ********** validation **********
@@ -88,15 +95,15 @@ public class GenericJavaMappingJoinTableRelationshipStrategy
return this.getRelationshipMapping().getPersistentAttribute();
}
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
return new JoinTableValidator(this.getPersistentAttribute(), (JoinTable) table, textRangeResolver);
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new JoinColumnValidator(this.getPersistentAttribute(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new InverseJoinColumnValidator(this.getPersistentAttribute(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOrderable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOrderable.java
index 906b7044ba..a661cf6e5d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOrderable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOrderable.java
@@ -14,11 +14,11 @@ import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.Filter;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
@@ -319,7 +319,7 @@ public class GenericJavaOrderable
}
protected JavaOrderColumn2_0 buildOrderColumn() {
- JavaNamedColumn.Owner columnOwner = new OrderColumnOwner();
+ JavaReadOnlyNamedColumn.Owner columnOwner = new OrderColumnOwner();
return this.isJpa2_0Compatible() ?
this.getJpaFactory2_0().buildJavaOrderColumn(this, columnOwner) :
new GenericJavaOrderColumn2_0(this, columnOwner);
@@ -453,7 +453,7 @@ public class GenericJavaOrderable
// ********** order column owner (JPA 2.0) **********
protected class OrderColumnOwner
- implements JavaNamedColumn.Owner
+ implements JavaReadOnlyNamedColumn.Owner
{
public String getDefaultTableName() {
return GenericJavaOrderable.this.getDefaultTableName();
@@ -475,7 +475,7 @@ public class GenericJavaOrderable
return GenericJavaOrderable.this.getValidationTextRange(astRoot);
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
return new OrderColumnValidator(this.getPersistentAttribute(), (OrderColumn2_0) column, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOverrideRelationship.java
index e6804dbb4f..f6547648bb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaOverrideRelationship.java
@@ -17,7 +17,11 @@ import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.MappedByRelationship;
import org.eclipse.jpt.jpa.core.context.OverrideRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverrideRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
@@ -28,10 +32,18 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
import org.eclipse.jpt.jpa.core.internal.context.java.GenericJavaOverrideJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaOverrideJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverride2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation;
+import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -85,13 +97,37 @@ public class GenericJavaOverrideRelationship
}
protected JavaRelationshipStrategy buildStrategy() {
- if (this.isJpa2_0Compatible()) {
- if (this.joinColumnStrategy.hasSpecifiedJoinColumns()) {
- return this.joinColumnStrategy;
- }
- return this.joinTableStrategy;
- }
- return this.joinColumnStrategy;
+ return this.isJpa2_0Compatible() ?
+ this.buildStrategy2_0() :
+ this.joinColumnStrategy;
+ }
+
+ /**
+ * The overridden mapping determines the override's strategy.
+ */
+ protected JavaRelationshipStrategy buildStrategy2_0() {
+ MappingRelationshipStrategy2_0 mappingStrategy = this.getMappingStrategy();
+ return (mappingStrategy != null) ?
+ (JavaRelationshipStrategy) mappingStrategy.selectOverrideStrategy(this) :
+ this.buildMissingMappingStrategy();
+ }
+
+ /**
+ * Get the strategy from the overridden mapping.
+ */
+ protected MappingRelationshipStrategy2_0 getMappingStrategy() {
+ RelationshipMapping mapping = this.getMapping();
+ return (mapping == null) ? null : (MappingRelationshipStrategy2_0) mapping.getRelationship().getStrategy();
+ }
+
+ /**
+ * Return the strategy to use when the override's name does not match the
+ * name of an appropriate relationship mapping.
+ */
+ protected JavaRelationshipStrategy buildMissingMappingStrategy() {
+ return this.joinColumnStrategy.hasSpecifiedJoinColumns() ?
+ this.joinColumnStrategy :
+ this.joinTableStrategy;
}
@@ -106,11 +142,11 @@ public class GenericJavaOverrideRelationship
}
public void setStrategyToJoinColumn() {
- this.joinColumnStrategy.addStrategy();
- this.joinTableStrategy.removeStrategy();
+ throw new UnsupportedOperationException();
}
public boolean mayHaveDefaultJoinColumn() {
+ // association overrides do not have defaults
return false;
}
@@ -130,12 +166,12 @@ public class GenericJavaOverrideRelationship
}
public void setStrategyToJoinTable() {
- this.joinTableStrategy.addStrategy();
- this.joinColumnStrategy.removeStrategy();
+ throw new UnsupportedOperationException();
}
public boolean mayHaveDefaultJoinTable() {
- return this.isVirtual() && this.strategyIsJoinTable();
+ // association overrides do not have defaults
+ return false;
}
protected JavaJoinTableRelationshipStrategy buildJoinTableStrategy() {
@@ -192,12 +228,44 @@ public class GenericJavaOverrideRelationship
return (JavaAssociationOverride) super.getParent();
}
- public JavaAssociationOverride getAssociationOverride() {
+ protected JavaAssociationOverride getAssociationOverride() {
return this.getParent();
}
+ protected JavaAssociationOverride2_0 getAssociationOverride2_0() {
+ return (JavaAssociationOverride2_0) this.getAssociationOverride();
+ }
+
public TypeMapping getTypeMapping() {
- return this.getAssociationOverride().getContainer().getTypeMapping();
+ return this.getAssociationOverride().getTypeMapping();
+ }
+
+ public String getAttributeName() {
+ return this.getAssociationOverride().getName();
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getAssociationOverride().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getAssociationOverride().candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getAssociationOverride().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getAssociationOverride().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride().buildColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public AssociationOverrideAnnotation getOverrideAnnotation() {
+ return this.getAssociationOverride().getOverrideAnnotation();
}
public Entity getEntity() {
@@ -223,12 +291,7 @@ public class GenericJavaOverrideRelationship
return result;
}
- result = this.joinColumnStrategy.javaCompletionProposals(pos, filter, astRoot);
- if (result != null) {
- return result;
- }
-
- return this.joinTableStrategy.javaCompletionProposals(pos, filter, astRoot);
+ return this.strategy.javaCompletionProposals(pos, filter, astRoot);
}
@@ -241,7 +304,18 @@ public class GenericJavaOverrideRelationship
@Override
public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
super.validate(messages, reporter, astRoot);
- this.joinColumnStrategy.validate(messages, reporter, astRoot);
- this.joinTableStrategy.validate(messages, reporter, astRoot);
+ this.strategy.validate(messages, reporter, astRoot);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableValidator(table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPrimaryKeyJoinColumn.java
index a692c30c1d..faee3b1904 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPrimaryKeyJoinColumn.java
@@ -16,9 +16,9 @@ import org.eclipse.jpt.common.utility.Filter;
import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.java.JavaPrimaryKeyJoinColumnTextRangeResolver;
@@ -30,17 +30,17 @@ import org.eclipse.jpt.jpa.db.Table;
* Java primary key join column
*/
public class GenericJavaPrimaryKeyJoinColumn
- extends AbstractJavaNamedColumn<PrimaryKeyJoinColumnAnnotation, JavaBaseJoinColumn.Owner>
+ extends AbstractJavaNamedColumn<PrimaryKeyJoinColumnAnnotation, JavaReadOnlyBaseJoinColumn.Owner>
implements JavaPrimaryKeyJoinColumn
{
- /** @see AbstractJavaNamedColumn#AbstractJavaNamedColumn(org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode, org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation) */
+ /** @see AbstractJavaNamedColumn#AbstractJavaNamedColumn(org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode, org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.java.NamedColumnAnnotation) */
protected /* final */ PrimaryKeyJoinColumnAnnotation columnAnnotation; // never null
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation columnAnnotation) {
+ public GenericJavaPrimaryKeyJoinColumn(JavaJpaContextNode parent, JavaReadOnlyBaseJoinColumn.Owner owner, PrimaryKeyJoinColumnAnnotation columnAnnotation) {
super(parent, owner, columnAnnotation);
this.specifiedReferencedColumnName = this.buildSpecifiedReferencedColumnName();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java
index 5f8c567183..5c71d1f567 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaReferenceTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -25,6 +25,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyReferenceTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaReferenceTable;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
@@ -44,7 +45,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
{
protected final Vector<JavaJoinColumn> specifiedJoinColumns = new Vector<JavaJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter();
- protected final JavaJoinColumn.Owner joinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner;
protected JavaJoinColumn defaultJoinColumn;
@@ -86,7 +87,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize();
}
- public void convertDefaultToSpecifiedJoinColumn() {
+ public void convertDefaultJoinColumnToSpecified() {
MappingTools.convertReferenceTableDefaultToSpecifiedJoinColumn(this);
}
@@ -195,7 +196,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
}
}
- protected abstract JavaJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner();
// ********** default join column **********
@@ -257,7 +258,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
return this.buildJoinColumn(this.joinColumnOwner, joinColumnAnnotation);
}
- protected JavaJoinColumn buildJoinColumn(JavaJoinColumn.Owner jcOwner, JoinColumnAnnotation joinColumnAnnotation) {
+ protected JavaJoinColumn buildJoinColumn(JavaReadOnlyJoinColumn.Owner jcOwner, JoinColumnAnnotation joinColumnAnnotation) {
return this.getJpaFactory().buildJavaJoinColumn(this, jcOwner, joinColumnAnnotation);
}
@@ -280,7 +281,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
if (result != null) {
return result;
}
- for (JavaJoinColumn column : CollectionTools.iterable(this.joinColumns())) {
+ for (JavaJoinColumn column : this.getJoinColumns()) {
result = column.javaCompletionProposals(pos, filter, astRoot);
if (result != null) {
return result;
@@ -305,13 +306,7 @@ public abstract class GenericJavaReferenceTable<A extends ReferenceTableAnnotati
}
protected void validateJoinColumns(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
- this.validateJoinColumns(this.joinColumns(), messages, reporter, astRoot);
- }
-
- protected void validateJoinColumns(Iterator<JavaJoinColumn> joinColumns, List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
- while (joinColumns.hasNext()) {
- joinColumns.next().validate(messages, reporter, astRoot);
- }
+ this.validateNodes(this.getJoinColumns(), messages, reporter, astRoot);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaSecondaryTable.java
index d65b862cc4..169e87ecf3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaSecondaryTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -21,14 +21,13 @@ import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSecondaryTable;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
@@ -55,7 +54,7 @@ public class GenericJavaSecondaryTable
protected final Vector<JavaPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns = new Vector<JavaPrimaryKeyJoinColumn>();
protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter();
- protected final JavaBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
+ protected final JavaReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
protected JavaPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn;
@@ -225,7 +224,7 @@ public class GenericJavaSecondaryTable
}
}
- protected JavaBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
+ protected JavaReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
return new PrimaryKeyJoinColumnOwner();
}
@@ -352,7 +351,7 @@ public class GenericJavaSecondaryTable
// ********** primary key join column owner adapter **********
protected class PrimaryKeyJoinColumnOwner
- implements JavaBaseJoinColumn.Owner
+ implements JavaReadOnlyBaseJoinColumn.Owner
{
protected JavaEntity getEntity() {
return GenericJavaSecondaryTable.this.getEntity();
@@ -393,8 +392,8 @@ public class GenericJavaSecondaryTable
return GenericJavaSecondaryTable.this.getValidationTextRange(astRoot);
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new SecondaryTablePrimaryKeyJoinColumnValidator(GenericJavaSecondaryTable.this, (BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new SecondaryTablePrimaryKeyJoinColumnValidator(GenericJavaSecondaryTable.this, (ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAssociationOverride.java
index 2333e0c4d1..d7f6b3b98d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAssociationOverride.java
@@ -9,20 +9,30 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import java.util.List;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualOverrideRelationship;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaVirtualOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaVirtualAssociationOverride2_0;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual Java association override
*/
public class GenericJavaVirtualAssociationOverride
extends AbstractJavaVirtualOverride<JavaAssociationOverrideContainer>
- implements JavaVirtualAssociationOverride
+ implements JavaVirtualAssociationOverride2_0
{
protected final JavaVirtualOverrideRelationship relationship;
@@ -47,6 +57,10 @@ public class GenericJavaVirtualAssociationOverride
return this.getContainer().getRelationshipMapping(this.name);
}
+ protected JavaAssociationOverrideContainer2_0 getContainer2_0() {
+ return (JavaAssociationOverrideContainer2_0) this.getContainer();
+ }
+
// ********** relationship **********
@@ -62,7 +76,28 @@ public class GenericJavaVirtualAssociationOverride
return this.getJpaFactory().buildJavaVirtualOverrideRelationship(this);
}
- public Relationship resolveOverriddenRelationship() {
+ public ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getContainer().resolveOverriddenRelationship(this.name);
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.relationship.validate(messages, reporter, astRoot);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableValidator(this, table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableInverseJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAttributeOverride.java
index 9049ad974d..90e3122a24 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,14 +9,21 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.Column;
+import java.util.List;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
-import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAttributeOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualColumn;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaVirtualOverride;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual Java attribute override
@@ -62,13 +69,10 @@ public class GenericJavaVirtualAttributeOverride
// ********** column owner implementation **********
- public TypeMapping getTypeMapping() {
- return this.getContainer().getTypeMapping();
- }
-
+ @Override
public String getDefaultTableName() {
String overriddenColumnTable = this.getOverriddenColumnTable();
- return (overriddenColumnTable != null) ? overriddenColumnTable : this.getContainer().getDefaultTableName();
+ return (overriddenColumnTable != null) ? overriddenColumnTable : super.getDefaultTableName();
}
protected String getOverriddenColumnTable() {
@@ -87,7 +91,20 @@ public class GenericJavaVirtualAttributeOverride
return (overriddenColumn == null) ? null : overriddenColumn.getName();
}
- public Column resolveOverriddenColumn() {
+ public ReadOnlyColumn resolveOverriddenColumn() {
return this.getContainer().resolveOverriddenColumn(this.name);
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, (ReadOnlyBaseColumn) col, this, (BaseColumnTextRangeResolver) textRangeResolver);
+ }
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.column.validate(messages, reporter, astRoot);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualColumn.java
index 0429f71344..342eec168b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualColumn;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaVirtualBaseColumn;
@@ -18,7 +18,7 @@ import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaVirtualBaseCol
* Java virtual column
*/
public class GenericJavaVirtualColumn
- extends AbstractJavaVirtualBaseColumn<JavaVirtualColumn.Owner, Column>
+ extends AbstractJavaVirtualBaseColumn<JavaVirtualColumn.Owner, ReadOnlyColumn>
implements JavaVirtualColumn
{
protected Integer specifiedLength;
@@ -56,7 +56,7 @@ public class GenericJavaVirtualColumn
// ********** column **********
@Override
- public Column getOverriddenColumn() {
+ public ReadOnlyColumn getOverriddenColumn() {
return this.owner.resolveOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualJoinColumn.java
index 6848cb9c65..e80f704d0c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,27 +9,33 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaVirtualBaseColumn;
+import org.eclipse.jpt.jpa.core.internal.context.java.JavaJoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Column;
+import org.eclipse.jpt.jpa.db.Table;
/**
* Java virtual join column
*/
public class GenericJavaVirtualJoinColumn
- extends AbstractJavaVirtualBaseColumn<ReadOnlyJoinColumn.Owner, JoinColumn>
+ extends AbstractJavaVirtualBaseColumn<JavaReadOnlyJoinColumn.Owner, ReadOnlyJoinColumn>
implements JavaVirtualJoinColumn
{
- protected final JoinColumn overriddenColumn;
+ protected final ReadOnlyJoinColumn overriddenColumn;
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericJavaVirtualJoinColumn(JavaJpaContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn overriddenColumn) {
+ public GenericJavaVirtualJoinColumn(JavaJpaContextNode parent, JavaReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn) {
super(parent, owner);
this.overriddenColumn = overriddenColumn;
}
@@ -49,7 +55,7 @@ public class GenericJavaVirtualJoinColumn
// ********** column **********
@Override
- public JoinColumn getOverriddenColumn() {
+ public ReadOnlyJoinColumn getOverriddenColumn() {
return this.overriddenColumn;
}
@@ -93,10 +99,42 @@ public class GenericJavaVirtualJoinColumn
}
+ // ********** database stuff **********
+
+ public Table getReferencedColumnDbTable() {
+ return this.owner.getReferencedColumnDbTable();
+ }
+
+ protected Column getReferencedDbColumn() {
+ Table table = this.getReferencedColumnDbTable();
+ return (table == null) ? null : table.getColumnForIdentifier(this.getReferencedColumnName());
+ }
+
+ public boolean referencedColumnIsResolved() {
+ return this.getReferencedDbColumn() != null;
+ }
+
+
// ********** misc **********
+ public boolean isVirtual() {
+ return true;
+ }
+
@Override
protected String buildDefaultName() {
return MappingTools.buildJoinColumnDefaultName(this, this.owner);
}
+
+
+ // ********** validation **********
+
+ @Override
+ protected NamedColumnTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) {
+ return new JavaJoinColumnTextRangeResolver(this, astRoot);
+ }
+
+ public TextRange getReferencedColumnNameTextRange(CompilationUnit astRoot) {
+ return this.getValidationTextRange(astRoot);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.java
index 0ee4c21397..f4b1cd9e31 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.java
@@ -9,6 +9,8 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
+import java.util.Iterator;
+import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -19,23 +21,29 @@ import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
+import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.JoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumn;
-import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumnRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualOverrideRelationship;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
extends AbstractJavaJpaContextNode
@@ -43,12 +51,12 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
{
protected final Vector<JavaVirtualJoinColumn> specifiedJoinColumns = new Vector<JavaVirtualJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter;
- protected final ReadOnlyJoinColumn.Owner joinColumnOwner;
+ protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner;
protected JavaVirtualJoinColumn defaultJoinColumn;
- public GenericJavaVirtualOverrideJoinColumnRelationshipStrategy(JavaVirtualJoinColumnRelationship parent) {
+ public GenericJavaVirtualOverrideJoinColumnRelationshipStrategy(JavaVirtualOverrideRelationship parent) {
super(parent);
this.specifiedJoinColumnContainerAdapter = this.buildSpecifiedJoinColumnContainerAdapter();
this.joinColumnOwner = this.buildJoinColumnOwner();
@@ -106,10 +114,10 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter);
}
- protected Iterable<JoinColumn> getOverriddenSpecifiedJoinColumns() {
- JoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected Iterable<ReadOnlyJoinColumn> getOverriddenSpecifiedJoinColumns() {
+ ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ?
- EmptyIterable.<JoinColumn>instance() :
+ EmptyIterable.<ReadOnlyJoinColumn>instance() :
CollectionTools.iterable(overriddenStrategy.specifiedJoinColumns());
}
@@ -117,7 +125,7 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
}
- protected JavaVirtualJoinColumn addSpecifiedJoinColumn(int index, JoinColumn joinColumn) {
+ protected JavaVirtualJoinColumn addSpecifiedJoinColumn(int index, ReadOnlyJoinColumn joinColumn) {
JavaVirtualJoinColumn virtualJoinColumn = this.buildJoinColumn(joinColumn);
this.addItemToList(index, virtualJoinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST);
return virtualJoinColumn;
@@ -135,21 +143,21 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
* specified join column container adapter
*/
protected class SpecifiedJoinColumnContainerAdapter
- implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, JoinColumn>
+ implements ContextContainerTools.Adapter<JavaVirtualJoinColumn, ReadOnlyJoinColumn>
{
public Iterable<JavaVirtualJoinColumn> getContextElements() {
return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getSpecifiedJoinColumns();
}
- public Iterable<JoinColumn> getResourceElements() {
+ public Iterable<ReadOnlyJoinColumn> getResourceElements() {
return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getOverriddenSpecifiedJoinColumns();
}
- public JoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
+ public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) {
return contextElement.getOverriddenColumn();
}
public void moveContextElement(int index, JavaVirtualJoinColumn element) {
GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.moveSpecifiedJoinColumn(index, element);
}
- public void addContextElement(int index, JoinColumn resourceElement) {
+ public void addContextElement(int index, ReadOnlyJoinColumn resourceElement) {
GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.addSpecifiedJoinColumn(index, resourceElement);
}
public void removeContextElement(JavaVirtualJoinColumn element) {
@@ -157,7 +165,7 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
}
}
- protected ReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -185,7 +193,7 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
}
protected void updateDefaultJoinColumn() {
- JoinColumn overriddenDefaultJoinColumn = this.getOverriddenDefaultJoinColumn();
+ ReadOnlyJoinColumn overriddenDefaultJoinColumn = this.getOverriddenDefaultJoinColumn();
if (overriddenDefaultJoinColumn == null) {
if (this.defaultJoinColumn != null) {
this.setDefaultJoinColumn(null);
@@ -199,8 +207,8 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
}
}
- protected JoinColumn getOverriddenDefaultJoinColumn() {
- JoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected ReadOnlyJoinColumn getOverriddenDefaultJoinColumn() {
+ ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ? null : overriddenStrategy.getDefaultJoinColumn();
}
@@ -208,25 +216,25 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
// ********** misc **********
@Override
- public JavaVirtualJoinColumnRelationship getParent() {
- return (JavaVirtualJoinColumnRelationship) super.getParent();
+ public JavaVirtualOverrideRelationship getParent() {
+ return (JavaVirtualOverrideRelationship) super.getParent();
}
- public JavaVirtualJoinColumnRelationship getRelationship() {
+ public JavaVirtualOverrideRelationship getRelationship() {
return this.getParent();
}
- protected JoinColumnRelationshipStrategy getOverriddenStrategy() {
- JoinColumnRelationship relationship = this.getOverriddenJoinColumnRelationship();
+ protected ReadOnlyJoinColumnRelationshipStrategy getOverriddenStrategy() {
+ ReadOnlyJoinColumnRelationship relationship = this.getOverriddenJoinColumnRelationship();
return (relationship == null) ? null : relationship.getJoinColumnStrategy();
}
- protected JoinColumnRelationship getOverriddenJoinColumnRelationship() {
- Relationship relationship = this.resolveOverriddenRelationship();
- return (relationship instanceof JoinColumnRelationship) ? (JoinColumnRelationship) relationship : null;
+ protected ReadOnlyJoinColumnRelationship getOverriddenJoinColumnRelationship() {
+ ReadOnlyRelationship relationship = this.resolveOverriddenRelationship();
+ return (relationship instanceof ReadOnlyJoinColumnRelationship) ? (ReadOnlyJoinColumnRelationship) relationship : null;
}
- protected Relationship resolveOverriddenRelationship() {
+ protected ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getRelationship().resolveOverriddenRelationship();
}
@@ -238,13 +246,15 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
public TypeMapping getRelationshipSource() {
return this.isTargetForeignKey() ?
+ // relationship mapping is not null
this.getRelationshipMapping().getResolvedTargetEntity() :
- this.getAssociationOverrideContainer().getTypeMapping();
+ this.getRelationship().getTypeMapping();
}
public TypeMapping getRelationshipTarget() {
return this.isTargetForeignKey() ?
- this.getAssociationOverrideContainer().getTypeMapping() :
+ this.getRelationship().getTypeMapping() :
+ // relationship mapping may still be null
this.getRelationshipMappingTargetEntity();
}
@@ -259,26 +269,56 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
}
protected RelationshipMapping getRelationshipMapping() {
- return this.getAssociationOverride().getMapping();
+ return this.getRelationship().getMapping();
}
- protected JavaReadOnlyAssociationOverride getAssociationOverride() {
- return ((JavaVirtualOverrideRelationship) this.getRelationship()).getAssociationOverride();
+ public String getTableName() {
+ return this.isTargetForeignKey() ?
+ this.getTargetDefaultTableName() :
+ this.getRelationship().getDefaultTableName();
}
- protected JavaAssociationOverrideContainer getAssociationOverrideContainer() {
- return this.getAssociationOverride().getContainer();
+ protected String getTargetDefaultTableName() {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping == null) ? null : typeMapping.getPrimaryTableName();
}
- public String getTableName() {
+ protected Table resolveDbTable(String tableName) {
return this.isTargetForeignKey() ?
- this.getSourceTableName() :
- this.getAssociationOverrideContainer().getDefaultTableName();
+ this.resolveTargetDbTable(tableName) :
+ this.getRelationship().resolveDbTable(tableName);
}
- protected String getSourceTableName() {
- TypeMapping typeMapping = this.getRelationshipSource();
- return (typeMapping == null) ? null : typeMapping.getPrimaryTableName();
+ protected Table resolveTargetDbTable(String tableName) {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping == null) ? null : typeMapping.resolveDbTable(tableName);
+ }
+
+ protected boolean tableNameIsInvalid(String tableName) {
+ return this.isTargetForeignKey() ?
+ this.targetTableNameIsInvalid(tableName) :
+ this.getRelationship().tableNameIsInvalid(tableName);
+ }
+
+ protected boolean targetTableNameIsInvalid(String tableName) {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping != null) && typeMapping.tableNameIsInvalid(tableName);
+ }
+
+ protected Table getReferencedColumnDbTable() {
+ TypeMapping relationshipTarget = this.getRelationshipTarget();
+ return (relationshipTarget == null) ? null : relationshipTarget.getPrimaryDbTable();
+ }
+
+ protected Iterator<String> candidateTableNames() {
+ return this.isTargetForeignKey() ?
+ this.targetCandidateTableNames() :
+ this.getRelationship().candidateTableNames();
+ }
+
+ protected Iterator<String> targetCandidateTableNames() {
+ TypeMapping typeMapping = this.getRelationshipMapping().getResolvedTargetEntity();
+ return (typeMapping != null) ? typeMapping.allAssociatedTableNames() : EmptyIterator.<String>instance();
}
public TextRange getValidationTextRange(CompilationUnit astRoot) {
@@ -286,18 +326,29 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
}
protected String getAttributeName() {
- return this.getAssociationOverride().getName();
+ return this.getRelationship().getAttributeName();
}
- protected JavaVirtualJoinColumn buildJoinColumn(JoinColumn overriddenJoinColumn) {
+ protected JavaVirtualJoinColumn buildJoinColumn(ReadOnlyJoinColumn overriddenJoinColumn) {
return this.getJpaFactory().buildJavaVirtualJoinColumn(this, this.joinColumnOwner, overriddenJoinColumn);
}
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ for (JavaVirtualJoinColumn joinColumn : this.getJoinColumns()) {
+ joinColumn.validate(messages, reporter, astRoot);
+ }
+ }
+
+
// ********** join column owner **********
protected class JoinColumnOwner
- implements ReadOnlyJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -324,6 +375,22 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getRelationshipTargetEntity();
}
+ public boolean tableNameIsInvalid(String tableName) {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.resolveDbTable(tableName);
+ }
+
+ public Table getReferencedColumnDbTable() {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getReferencedColumnDbTable();
+ }
+
public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) {
return false;
}
@@ -331,5 +398,13 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy
public int joinColumnsSize() {
return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize();
}
+
+ public TextRange getValidationTextRange(CompilationUnit astRoot) {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getValidationTextRange(astRoot);
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getRelationship().buildColumnValidator((ReadOnlyBaseColumn) column, this, (BaseColumnTextRangeResolver) textRangeResolver);
+ }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideRelationship.java
index 9989abfa97..d7bbcb2482 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualOverrideRelationship.java
@@ -9,10 +9,17 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
+import java.util.Iterator;
+import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.OverrideRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
@@ -20,9 +27,18 @@ import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAssociationOverride;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverride2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaVirtualOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericJavaVirtualOverrideRelationship
extends AbstractJavaJpaContextNode
@@ -67,13 +83,37 @@ public class GenericJavaVirtualOverrideRelationship
}
protected JavaVirtualRelationshipStrategy buildStrategy() {
- if (this.isJpa2_0Compatible()) {
- if (this.joinColumnStrategy.hasSpecifiedJoinColumns()) {
- return this.joinColumnStrategy;
- }
- return this.joinTableStrategy;
- }
- return this.joinColumnStrategy;
+ return this.isJpa2_0Compatible() ?
+ this.buildStrategy2_0() :
+ this.joinColumnStrategy;
+ }
+
+ /**
+ * The overridden mapping determines the override's strategy.
+ */
+ protected JavaVirtualRelationshipStrategy buildStrategy2_0() {
+ MappingRelationshipStrategy2_0 mappingStrategy = this.getMappingStrategy();
+ return (mappingStrategy != null) ?
+ (JavaVirtualRelationshipStrategy) mappingStrategy.selectOverrideStrategy(this) :
+ this.buildMissingMappingStrategy();
+ }
+
+ /**
+ * Get the strategy from the overridden mapping.
+ */
+ protected MappingRelationshipStrategy2_0 getMappingStrategy() {
+ RelationshipMapping mapping = this.getMapping();
+ return (mapping == null) ? null : (MappingRelationshipStrategy2_0) mapping.getRelationship().getStrategy();
+ }
+
+ /**
+ * Return the strategy to use when the override's name does not match the
+ * name of an appropriate relationship mapping.
+ */
+ protected JavaVirtualRelationshipStrategy buildMissingMappingStrategy() {
+ return this.joinColumnStrategy.hasSpecifiedJoinColumns() ?
+ this.joinColumnStrategy :
+ this.joinTableStrategy;
}
@@ -88,6 +128,7 @@ public class GenericJavaVirtualOverrideRelationship
}
public boolean mayHaveDefaultJoinColumn() {
+ // association overrides do not have defaults
return false;
}
@@ -107,7 +148,8 @@ public class GenericJavaVirtualOverrideRelationship
}
public boolean mayHaveDefaultJoinTable() {
- return this.isVirtual();
+ // association overrides do not have defaults
+ return false;
}
protected JavaVirtualJoinTableRelationshipStrategy buildJoinTableStrategy() {
@@ -135,12 +177,40 @@ public class GenericJavaVirtualOverrideRelationship
return (JavaVirtualAssociationOverride) super.getParent();
}
- public JavaVirtualAssociationOverride getAssociationOverride() {
+ protected JavaVirtualAssociationOverride getAssociationOverride() {
return this.getParent();
}
+ protected JavaAssociationOverride2_0 getAssociationOverride2_0() {
+ return (JavaAssociationOverride2_0) this.getAssociationOverride();
+ }
+
public TypeMapping getTypeMapping() {
- return this.getAssociationOverride().getContainer().getTypeMapping();
+ return this.getAssociationOverride().getTypeMapping();
+ }
+
+ public String getAttributeName() {
+ return this.getAssociationOverride().getName();
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getAssociationOverride().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getAssociationOverride().candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getAssociationOverride().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getAssociationOverride().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride().buildColumnValidator(column, owner, textRangeResolver);
}
public Entity getEntity() {
@@ -156,7 +226,7 @@ public class GenericJavaVirtualOverrideRelationship
return this.getAssociationOverride().getMapping();
}
- public Relationship resolveOverriddenRelationship() {
+ public ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getAssociationOverride().resolveOverriddenRelationship();
}
@@ -166,4 +236,22 @@ public class GenericJavaVirtualOverrideRelationship
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return this.getAssociationOverride().getValidationTextRange(astRoot);
}
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ this.strategy.validate(messages, reporter, astRoot);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableValidator(table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualUniqueConstraint.java
index e0343034ad..0b5c080248 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaVirtualUniqueConstraint.java
@@ -11,7 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualUniqueConstraint;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaReadOnlyUniqueConstraint;
@@ -20,10 +20,10 @@ public class GenericJavaVirtualUniqueConstraint
extends AbstractJavaReadOnlyUniqueConstraint
implements JavaVirtualUniqueConstraint
{
- protected final UniqueConstraint overriddenUniqueConstraint;
+ protected final ReadOnlyUniqueConstraint overriddenUniqueConstraint;
- public GenericJavaVirtualUniqueConstraint(JavaJpaContextNode parent, UniqueConstraint overriddenUniqueConstraint) {
+ public GenericJavaVirtualUniqueConstraint(JavaJpaContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint) {
super(parent);
this.overriddenUniqueConstraint = overriddenUniqueConstraint;
}
@@ -47,7 +47,7 @@ public class GenericJavaVirtualUniqueConstraint
// ********** misc **********
- public UniqueConstraint getOverriddenUniqueConstraint() {
+ public ReadOnlyUniqueConstraint getOverriddenUniqueConstraint() {
return this.overriddenUniqueConstraint;
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinColumnRelationshipStrategy.java
index 9c1efb0580..9d58d77640 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinColumnRelationshipStrategy.java
@@ -15,12 +15,14 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator;
import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.db.Table;
/**
@@ -30,7 +32,7 @@ import org.eclipse.jpt.jpa.db.Table;
*/
public class NullJavaJoinColumnRelationshipStrategy
extends AbstractJavaJpaContextNode
- implements JavaJoinColumnRelationshipStrategy
+ implements JavaMappingJoinColumnRelationshipStrategy2_0
{
public NullJavaJoinColumnRelationshipStrategy(JavaJoinColumnRelationship parent) {
super(parent);
@@ -133,6 +135,10 @@ public class NullJavaJoinColumnRelationshipStrategy
// NOP
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null;
+ }
+
public void addStrategy() {
// NOP
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinTableRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinTableRelationshipStrategy.java
index d9498d50ea..547a93fa4c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinTableRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaJoinTableRelationshipStrategy.java
@@ -11,21 +11,22 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTable;
import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationship;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMappingJoinTableRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
import org.eclipse.jpt.jpa.db.Table;
public class NullJavaJoinTableRelationshipStrategy
extends AbstractJavaJpaContextNode
- implements JavaJoinTableRelationshipStrategy
+ implements JavaMappingJoinTableRelationshipStrategy2_0
{
public NullJavaJoinTableRelationshipStrategy(JavaJoinTableRelationship parent) {
super(parent);
@@ -89,6 +90,10 @@ public class NullJavaJoinTableRelationshipStrategy
return null;
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null;
+ }
+
public void addStrategy() {
// NOP
}
@@ -105,11 +110,11 @@ public class NullJavaJoinTableRelationshipStrategy
return false;
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
throw new UnsupportedOperationException();
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
throw new UnsupportedOperationException();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverride.java
index 84e467a5bc..efbae863fa 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverride.java
@@ -9,17 +9,23 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualOverride;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
import org.eclipse.jpt.jpa.core.internal.context.orm.OrmOverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.resource.orm.XmlOverride;
+import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -88,7 +94,7 @@ public abstract class AbstractOrmOverride<C extends OrmOverrideContainer, X exte
return (C) super.getParent();
}
- public C getContainer() {
+ protected C getContainer() {
return this.getParent();
}
@@ -104,6 +110,22 @@ public abstract class AbstractOrmOverride<C extends OrmOverrideContainer, X exte
this.setName(virtualOverride.getName());
}
+ public TypeMapping getTypeMapping() {
+ return this.getContainer().getTypeMapping();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getContainer().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getContainer().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, column, owner, textRangeResolver);
+ }
+
@Override
public void toString(StringBuilder sb) {
sb.append(this.name);
@@ -119,7 +141,7 @@ public abstract class AbstractOrmOverride<C extends OrmOverrideContainer, X exte
}
protected JptValidator buildValidator() {
- return this.getContainer().buildValidator(this, this.buildTextRangeResolver());
+ return this.getContainer().buildOverrideValidator(this, this.buildTextRangeResolver());
}
protected OverrideTextRangeResolver buildTextRangeResolver() {
@@ -139,4 +161,14 @@ public abstract class AbstractOrmOverride<C extends OrmOverrideContainer, X exte
public TextRange getNameTextRange() {
return this.getValidationTextRange(this.xmlOverride.getNameTextRange());
}
+
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getContainer().tableNameIsInvalid(tableName);
+ }
+
+
+ public Iterator<String> candidateTableNames() {
+ return this.getContainer().candidateTableNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverrideContainer.java
index c84801e4cb..d219d5f05a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmOverrideContainer.java
@@ -21,8 +21,9 @@ import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.VirtualOverride;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
@@ -145,7 +146,7 @@ public abstract class AbstractOrmOverrideContainer<
* remaining specified overrides.
*/
protected boolean overrideWillBeVirtual(String overrideName, S specifiedOverrideToBeRemoved) {
- return CollectionTools.contains(this.allOverridableNames(), overrideName) &&
+ return CollectionTools.contains(this.possibleVirtualOverrideNames(), overrideName) &&
(this.getSpecifiedOverrideNamed(overrideName, specifiedOverrideToBeRemoved) == null);
}
@@ -342,7 +343,7 @@ public abstract class AbstractOrmOverrideContainer<
}
protected Iterator<String> virtualOverrideNames() {
- return new FilteringIterator<String>(this.allOverridableNames()) {
+ return new FilteringIterator<String>(this.possibleVirtualOverrideNames()) {
@Override
protected boolean accept(String name) {
return AbstractOrmOverrideContainer.this.overrideIsVirtual(name);
@@ -413,6 +414,22 @@ public abstract class AbstractOrmOverrideContainer<
return this.owner.getTypeMapping();
}
+ /**
+ * Return all the possible virtual override names. If we have a
+ * corresponding Java entity, take the override names from it. This allows
+ * us to include any Java specified overrides that are invalid (and
+ * generate the appropriate error messages). If we don't have a
+ * corresponding Java entity, take the override names directly from the
+ * type.
+ */
+ protected Iterator<String> possibleVirtualOverrideNames() {
+ if (this.owner == null) {
+ return EmptyIterator.instance();
+ }
+ Iterable<String> javaNames = this.owner.getJavaOverrideNames();
+ return (javaNames != null) ? javaNames.iterator() : this.owner.allOverridableNames();
+ }
+
public Iterator<String> allOverridableNames() {
return (this.owner != null) ? this.owner.allOverridableNames() : EmptyIterator.<String>instance();
}
@@ -433,11 +450,11 @@ public abstract class AbstractOrmOverrideContainer<
return this.owner.getDefaultTableName();
}
- public JptValidator buildValidator(Override_ override, OverrideTextRangeResolver textRangeResolver) {
- return this.owner.buildValidator(override, this, textRangeResolver);
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideTextRangeResolver textRangeResolver) {
+ return this.owner.buildOverrideValidator(override, this, textRangeResolver);
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
return this.owner.buildColumnValidator(override, column, columnOwner, textRangeResolver);
}
@@ -463,7 +480,6 @@ public abstract class AbstractOrmOverrideContainer<
@Override
public void validate(List<IMessage> messages, IReporter reporter) {
super.validate(messages, reporter);
-
for (R override : this.getOverrides()) {
override.validate(messages, reporter);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmVirtualOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmVirtualOverride.java
index 8b0df34953..c8a4c77cbe 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmVirtualOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/AbstractOrmVirtualOverride.java
@@ -9,11 +9,23 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
+import java.util.Iterator;
+import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualOverride;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.OverrideTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
+import org.eclipse.jpt.jpa.core.internal.context.orm.OrmOverrideTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual <code>orm.xml</code> override
@@ -48,16 +60,61 @@ public abstract class AbstractOrmVirtualOverride<C extends OrmOverrideContainer>
return (C) super.getParent();
}
- public C getContainer() {
+ protected C getContainer() {
return this.getParent();
}
- public TextRange getValidationTextRange() {
- return this.getContainer().getValidationTextRange();
+ public TypeMapping getTypeMapping() {
+ return this.getContainer().getTypeMapping();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getContainer().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getContainer().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, column, owner, textRangeResolver);
}
@Override
public void toString(StringBuilder sb) {
sb.append(this.name);
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.buildValidator().validate(messages, reporter);
+ }
+
+ protected JptValidator buildValidator() {
+ return this.getContainer().buildOverrideValidator(this, this.buildTextRangeResolver());
+ }
+
+ protected OverrideTextRangeResolver buildTextRangeResolver() {
+ return new OrmOverrideTextRangeResolver(this);
+ }
+
+ public TextRange getValidationTextRange() {
+ return this.getContainer().getValidationTextRange();
+ }
+
+ public TextRange getNameTextRange() {
+ return this.getValidationTextRange();
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getContainer().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getContainer().candidateTableNames();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java
index 25b6eb44c7..2ff662f8ff 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverride.java
@@ -11,11 +11,17 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import java.util.List;
import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAssociationOverride;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverride2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -25,7 +31,7 @@ import org.eclipse.wst.validation.internal.provisional.core.IReporter;
*/
public class GenericOrmAssociationOverride
extends AbstractOrmOverride<OrmAssociationOverrideContainer, XmlAssociationOverride>
- implements OrmAssociationOverride
+ implements OrmAssociationOverride2_0
{
protected final OrmOverrideRelationship relationship;
@@ -72,6 +78,10 @@ public class GenericOrmAssociationOverride
// ********** misc **********
+ protected OrmAssociationOverrideContainer2_0 getContainer2_0() {
+ return (OrmAssociationOverrideContainer2_0) this.getContainer();
+ }
+
public RelationshipMapping getMapping() {
return this.getContainer().getRelationshipMapping(this.name);
}
@@ -94,4 +104,16 @@ public class GenericOrmAssociationOverride
super.validate(messages, reporter);
this.relationship.validate(messages, reporter);
}
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableValidator(this, table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableInverseJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java
index 6b34106360..f0d01182d3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAssociationOverrideContainer.java
@@ -10,11 +10,11 @@
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable;
-import org.eclipse.jpt.jpa.core.context.AssociationOverride;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
@@ -24,6 +24,7 @@ import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
@@ -38,7 +39,7 @@ public class GenericOrmAssociationOverrideContainer
OrmVirtualAssociationOverride,
XmlAssociationOverride
>
- implements OrmAssociationOverrideContainer
+ implements OrmAssociationOverrideContainer2_0
{
public GenericOrmAssociationOverrideContainer(XmlContextNode parent, OrmAssociationOverrideContainer.Owner owner) {
super(parent, owner);
@@ -49,20 +50,24 @@ public class GenericOrmAssociationOverrideContainer
return MappingTools.getRelationshipMapping(attributeName, this.owner.getOverridableTypeMapping());
}
- public Relationship resolveOverriddenRelationship(String associationOverrideName) {
+ public ReadOnlyRelationship resolveOverriddenRelationship(String associationOverrideName) {
return this.owner.resolveOverriddenRelationship(associationOverrideName);
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner columnOwner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.owner.buildJoinTableJoinColumnValidator(override, column, columnOwner, textRangeResolver);
+ protected OrmAssociationOverrideContainer2_0.Owner getOwner2_0() {
+ return (OrmAssociationOverrideContainer2_0.Owner) this.owner;
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner columnOwner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.owner.buildJoinTableInverseJoinColumnValidator(override, column, columnOwner, textRangeResolver);
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner columnOwner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableJoinColumnValidator(override, column, columnOwner, textRangeResolver);
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- return this.owner.buildTableValidator(override, table, textRangeResolver);
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner columnOwner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableInverseJoinColumnValidator(override, column, columnOwner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getOwner2_0().buildJoinTableValidator(override, table, textRangeResolver);
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java
index 9e6b30c0dc..d55b328692 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -9,13 +9,10 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import java.util.Iterator;
import java.util.List;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
-import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmColumn;
@@ -23,13 +20,11 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAttributeOverride;
import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeOverride;
import org.eclipse.jpt.jpa.core.resource.orm.XmlColumn;
-import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -98,32 +93,12 @@ public class GenericOrmAttributeOverride
// ********** column owner implementation **********
- public TypeMapping getTypeMapping() {
- return this.getContainer().getTypeMapping();
- }
-
- public String getDefaultTableName() {
- return this.getContainer().getDefaultTableName();
- }
-
- public Table resolveDbTable(String tableName) {
- return this.getContainer().resolveDbTable(tableName);
- }
-
public String getDefaultColumnName() {
return this.name;
}
- public JptValidator buildColumnValidator(NamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getContainer().buildColumnValidator(this, (BaseColumn) col, this, (BaseColumnTextRangeResolver) textRangeResolver);
- }
-
- public boolean tableNameIsInvalid(String tableName) {
- return this.getContainer().tableNameIsInvalid(tableName);
- }
-
- public Iterator<String> candidateTableNames() {
- return this.getContainer().candidateTableNames();
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, (ReadOnlyBaseColumn) col, this, (BaseColumnTextRangeResolver) textRangeResolver);
}
public XmlColumn getXmlColumn() {
@@ -143,24 +118,8 @@ public class GenericOrmAttributeOverride
// ********** mapped by relationship **********
- protected boolean isMappedByRelationship() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.buildQualifier());
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
- }
-
- /**
- * overridable names are (usually?) qualified with a container mapping,
- * which may also be the one mapped by a relationship
- */
- protected String buildQualifier() {
- if (this.name == null) {
- return null;
- }
- int index = this.name.indexOf('.');
- return (index == -1) ? this.name : this.name.substring(0, index);
+ protected boolean attributeIsDerivedId() {
+ return this.getTypeMapping().attributeIsDerivedId(this.name);
}
@@ -170,28 +129,23 @@ public class GenericOrmAttributeOverride
public void validate(List<IMessage> messages, IReporter reporter) {
super.validate(messages, reporter);
- // [JPA 2.0] if the column is specified, or if the override is not mapped by a relationship,
- // then the column is validated.
- // (In JPA 1.0, the column will always be validated, since the override is never mapped by a
- // relationship)
- if (this.xmlColumnIsSpecified() || ! this.isMappedByRelationship()) {
- this.column.validate(messages, reporter);
- }
-
- // [JPA 2.0] if the override is mapped by a relationship, then that actually is in itself
- // a validation error
- // (We prevent implied overrides that are mapped by a relationship ... hopefully)
- // (In JPA 1.0, this will never occur)
- if (this.isMappedByRelationship()) {
+ if (this.attributeIsDerivedId()) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
IMessage.HIGH_SEVERITY,
- JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED,
+ JpaValidationMessages.ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED,
EMPTY_STRING_ARRAY,
this,
this.getValidationTextRange()
)
);
+
+ // validate the column if it is specified
+ if (this.xmlColumnIsSpecified()) {
+ this.column.validate(messages, reporter);
+ }
+ } else {
+ this.column.validate(messages, reporter);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java
index 7501968550..df648a19aa 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmAttributeOverrideContainer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -11,7 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
@@ -38,7 +38,7 @@ public class GenericOrmAttributeOverrideContainer
}
- public Column resolveOverriddenColumn(String attributeName) {
+ public ReadOnlyColumn resolveOverriddenColumn(String attributeName) {
return (attributeName == null) ? null : this.owner.resolveOverriddenColumn(attributeName);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java
index b8fad23d1c..ae4945043e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedIdMapping.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -11,8 +11,6 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator;
import org.eclipse.jpt.jpa.core.MappingKeys;
@@ -21,7 +19,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmEmbeddedIdMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
-import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmBaseEmbeddedMapping;
import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -38,8 +35,8 @@ public class GenericOrmEmbeddedIdMapping
extends AbstractOrmBaseEmbeddedMapping<XmlEmbeddedId>
implements EmbeddedIdMapping2_0, OrmEmbeddedIdMapping
{
- /* JPA 2.0 feature - a relationship may map this embedded ID */
- protected boolean mappedByRelationship;
+ /* JPA 2.0 - the embedded id may be derived from a relationship */
+ protected boolean derived;
public GenericOrmEmbeddedIdMapping(OrmPersistentAttribute parent, XmlEmbeddedId xmlMapping) {
@@ -52,32 +49,28 @@ public class GenericOrmEmbeddedIdMapping
@Override
public void update() {
super.update();
- this.setMappedByRelationship(this.buildMappedByRelationship());
+ this.setMappedByRelationship(this.buildDerived());
}
- // ********** mapped by relationship **********
+ // ********** derived **********
- public boolean isMappedByRelationship() {
- return this.mappedByRelationship;
+ public boolean isDerived() {
+ return this.derived;
}
- protected void setMappedByRelationship(boolean value) {
- boolean old = this.mappedByRelationship;
- this.mappedByRelationship = value;
- this.firePropertyChanged(MAPPED_BY_RELATIONSHIP_PROPERTY, old, value);
+ protected void setMappedByRelationship(boolean derived) {
+ boolean old = this.derived;
+ this.derived = derived;
+ this.firePropertyChanged(DERIVED_PROPERTY, old, derived);
}
- protected boolean buildMappedByRelationship() {
- return this.isJpa2_0Compatible() && this.buildMappedByRelationship_();
+ protected boolean buildDerived() {
+ return this.isJpa2_0Compatible() && this.buildDerived_();
}
- protected boolean buildMappedByRelationship_() {
- return CollectionTools.contains(this.getMappedByRelationshipAttributeNames(), this.name);
- }
-
- protected Iterable<String> getMappedByRelationshipAttributeNames() {
- return TypeMappingTools.getMappedByRelationshipAttributeNames(this.getTypeMapping());
+ protected boolean buildDerived_() {
+ return this.getTypeMapping().attributeIsDerivedId(this.name);
}
@@ -105,7 +98,7 @@ public class GenericOrmEmbeddedIdMapping
@Override
protected Iterator<String> embeddableOverridableAttributeMappingNames() {
- return this.mappedByRelationship ?
+ return this.derived ?
EmptyIterator.<String>instance() :
super.embeddableOverridableAttributeMappingNames();
}
@@ -125,7 +118,7 @@ public class GenericOrmEmbeddedIdMapping
// [JPA 2.0] if the embedded id is mapped by a relationship, then any specified
// attribute overrides are in error
// (in JPA 1.0, this will obviously never be reached)
- if (this.mappedByRelationship
+ if (this.derived
&& (this.attributeOverrideContainer.specifiedOverridesSize() > 0)) {
messages.add(
DefaultJpaValidationMessages.buildMessage(
@@ -147,7 +140,7 @@ public class GenericOrmEmbeddedIdMapping
{
@Override
public Iterator<String> allOverridableNames() {
- return GenericOrmEmbeddedIdMapping.this.isMappedByRelationship() ?
+ return GenericOrmEmbeddedIdMapping.this.isDerived() ?
EmptyIterator.<String>instance() :
super.allOverridableNames();
}
@@ -156,25 +149,13 @@ public class GenericOrmEmbeddedIdMapping
* pre-condition: type mapping is not <code>null</code>
*/
@Override
- protected Iterator<String> allOverridableAttributeNames_(TypeMapping typeMapping) {
- final Set<String> mappedByRelationshipAttributeNames = this.buildMappedByRelationshipAttributeNames();
- if (mappedByRelationshipAttributeNames.isEmpty()) {
- return super.allOverridableAttributeNames_(typeMapping);
- }
- return new FilteringIterator<String>(super.allOverridableAttributeNames_(typeMapping)) {
+ protected Iterator<String> allOverridableAttributeNames_(TypeMapping overriddenTypeMapping) {
+ return new FilteringIterator<String>(super.allOverridableAttributeNames_(overriddenTypeMapping)) {
@Override
protected boolean accept(String attributeName) {
- // overridable names are (usually?) qualified with a container mapping,
- // which may also be the one mapped by a relationship
- int dotIndex = attributeName.indexOf('.');
- String qualifier = (dotIndex > 0) ? attributeName.substring(0, dotIndex) : attributeName;
- return ! mappedByRelationshipAttributeNames.contains(qualifier);
+ return ! AttributeOverrideContainerOwner.this.getTypeMapping().attributeIsDerivedId(attributeName);
}
};
}
-
- protected Set<String> buildMappedByRelationshipAttributeNames() {
- return CollectionTools.set(GenericOrmEmbeddedIdMapping.this.getMappedByRelationshipAttributeNames());
- }
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java
index 32ec16c4b9..80be1c096a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmEmbeddedMapping.java
@@ -22,18 +22,19 @@ import org.eclipse.jpt.jpa.core.MappingKeys;
import org.eclipse.jpt.jpa.core.context.AssociationOverride;
import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
+import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping;
import org.eclipse.jpt.jpa.core.internal.context.AttributeMappingTools;
@@ -51,6 +52,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.AssociationOverrideValidat
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EmbeddableOverrideDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.EntityTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionProvider;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmEmbeddedMapping2_0;
import org.eclipse.jpt.jpa.core.resource.orm.Attributes;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
@@ -101,7 +103,7 @@ public class GenericOrmEmbeddedMapping
new GenericOrmAssociationOverrideContainer(this, null);
}
- protected OrmAssociationOverrideContainer.Owner buildAssociationOverrideContainerOwner() {
+ protected OrmAssociationOverrideContainer2_0.Owner buildAssociationOverrideContainerOwner() {
return new AssociationOverrideContainerOwner();
}
@@ -206,6 +208,11 @@ public class GenericOrmEmbeddedMapping
return (this.targetEmbeddable == null) ? null : this.targetEmbeddable.resolveOverriddenRelationship(attributeName);
}
+ @Override
+ protected OrmAttributeOverrideContainer.Owner buildAttributeOverrideContainerOwner() {
+ return new AttributeOverrideContainerOwner();
+ }
+
// ********** validation **********
@@ -216,10 +223,19 @@ public class GenericOrmEmbeddedMapping
}
+ // ********** attribute override container owner *********
+
+ protected class AttributeOverrideContainerOwner
+ extends AbstractOrmBaseEmbeddedMapping<XmlEmbedded>.AttributeOverrideContainerOwner
+ {
+ // nothing yet
+ }
+
+
// ********** association override container owner **********
protected class AssociationOverrideContainerOwner
- implements OrmAssociationOverrideContainer.Owner
+ implements OrmAssociationOverrideContainer2_0.Owner
{
protected String getMappingName() {
return GenericOrmEmbeddedMapping.this.getName();
@@ -238,6 +254,10 @@ public class GenericOrmEmbeddedMapping
return (typeMapping != null) ? typeMapping.allOverridableAssociationNames() : EmptyIterator.<String>instance();
}
+ public Iterable<String> getJavaOverrideNames() {
+ return null;
+ }
+
public EList<XmlAssociationOverride> getXmlOverrides() {
return GenericOrmEmbeddedMapping.this.getXmlAttributeMapping().getAssociationOverrides();
}
@@ -266,24 +286,24 @@ public class GenericOrmEmbeddedMapping
return GenericOrmEmbeddedMapping.this.getValidationTextRange();
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) owner, (JoinColumnTextRangeResolver) textRangeResolver, new EntityTableDescriptionProvider());
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
return new AssociationOverrideInverseJoinColumnValidator(this.getPersistentAttribute(), override, column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinTableValidator(this.getPersistentAttribute(), override, (JoinTable) table, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinTableValidator(this.getPersistentAttribute(), override, (ReadOnlyJoinTable) table, textRangeResolver);
}
protected OrmPersistentAttribute getPersistentAttribute() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinColumn.java
index b87a6661ed..756d1cc4ce 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinColumn.java
@@ -13,6 +13,7 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmBaseColumn;
@@ -25,21 +26,21 @@ import org.eclipse.jpt.jpa.db.Table;
* <code>orm.xml</code> join column
*/
public class GenericOrmJoinColumn
- extends AbstractOrmBaseColumn<XmlJoinColumn, OrmJoinColumn.Owner>
+ extends AbstractOrmBaseColumn<XmlJoinColumn, OrmReadOnlyJoinColumn.Owner>
implements OrmJoinColumn
{
- /** @see org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmNamedColumn#AbstractOrmNamedColumn(XmlContextNode, org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn) */
+ /** @see org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmNamedColumn#AbstractOrmNamedColumn(XmlContextNode, org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn) */
protected /* final */ XmlJoinColumn xmlColumn; // null for default join columns
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericOrmJoinColumn(XmlContextNode parent, OrmJoinColumn.Owner owner) {
+ public GenericOrmJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner) {
this(parent, owner, null);
}
- public GenericOrmJoinColumn(XmlContextNode parent, OrmJoinColumn.Owner owner, XmlJoinColumn xmlColumn) {
+ public GenericOrmJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, XmlJoinColumn xmlColumn) {
super(parent, owner, xmlColumn);
this.specifiedReferencedColumnName = this.buildSpecifiedReferencedColumnName();
}
@@ -170,6 +171,9 @@ public class GenericOrmJoinColumn
return MappingTools.buildJoinColumnDefaultName(this, this.owner);
}
+
+ // ********** validation **********
+
public TextRange getReferencedColumnNameTextRange() {
return this.getValidationTextRange(this.xmlColumn.getReferencedColumnNameTextRange());
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinTable.java
index 9bd4e51936..93a466dc13 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmJoinTable.java
@@ -25,16 +25,18 @@ import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterab
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmRelationship;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
@@ -54,7 +56,7 @@ public class GenericOrmJoinTable
{
protected final Vector<OrmJoinColumn> specifiedInverseJoinColumns = new Vector<OrmJoinColumn>();
protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter();
- protected final OrmJoinColumn.Owner inverseJoinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner inverseJoinColumnOwner;
protected OrmJoinColumn defaultInverseJoinColumn;
@@ -66,7 +68,7 @@ public class GenericOrmJoinTable
}
@Override
- protected OrmJoinColumn.Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -94,17 +96,17 @@ public class GenericOrmJoinTable
@Override
protected XmlJoinTable getXmlTable() {
- return this.getJoinStrategy().getXmlJoinTable();
+ return this.getRelationshipStrategy().getXmlJoinTable();
}
@Override
protected XmlJoinTable buildXmlTable() {
- return this.getJoinStrategy().buildXmlJoinTable();
+ return this.getRelationshipStrategy().buildXmlJoinTable();
}
@Override
protected void removeXmlTable() {
- this.getJoinStrategy().removeXmlJoinTable();
+ this.getRelationshipStrategy().removeXmlJoinTable();
}
@@ -122,7 +124,7 @@ public class GenericOrmJoinTable
return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize();
}
- public void convertDefaultToSpecifiedInverseJoinColumn() {
+ public void convertDefaultInverseJoinColumnToSpecified() {
MappingTools.convertJoinTableDefaultToSpecifiedInverseJoinColumn(this);
}
@@ -243,7 +245,7 @@ public class GenericOrmJoinTable
}
}
- protected OrmJoinColumn.Owner buildInverseJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() {
return new InverseJoinColumnOwner();
}
@@ -294,13 +296,13 @@ public class GenericOrmJoinTable
return (OrmJoinTableRelationshipStrategy) super.getParent();
}
- protected OrmJoinTableRelationshipStrategy getJoinStrategy() {
+ protected OrmJoinTableRelationshipStrategy getRelationshipStrategy() {
return this.getParent();
}
@Override
protected String buildDefaultName() {
- return this.getJoinStrategy().getJoinTableDefaultName();
+ return this.getRelationshipStrategy().getJoinTableDefaultName();
}
public void initializeFrom(ReadOnlyJoinTable oldTable) {
@@ -322,7 +324,7 @@ public class GenericOrmJoinTable
}
public RelationshipMapping getRelationshipMapping() {
- return this.getJoinStrategy().getRelationship().getMapping();
+ return this.getRelationshipStrategy().getRelationship().getMapping();
}
public PersistentAttribute getPersistentAttribute() {
@@ -335,11 +337,11 @@ public class GenericOrmJoinTable
@Override
protected void validateJoinColumns(List<IMessage> messages, IReporter reporter) {
super.validateJoinColumns(messages, reporter);
- this.validateJoinColumns(this.getInverseJoinColumns(), messages, reporter);
+ this.validateNodes(this.getInverseJoinColumns(), messages, reporter);
}
public boolean validatesAgainstDatabase() {
- return this.getJoinStrategy().validatesAgainstDatabase();
+ return this.getRelationshipStrategy().validatesAgainstDatabase();
}
@@ -349,18 +351,14 @@ public class GenericOrmJoinTable
* just a little common behavior
*/
protected abstract class AbstractJoinColumnOwner
- implements OrmJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected AbstractJoinColumnOwner() {
super();
}
public TypeMapping getTypeMapping() {
- return GenericOrmJoinTable.this.getJoinStrategy().getRelationship().getTypeMapping();
- }
-
- protected PersistentAttribute getPersistentAttribute() {
- return GenericOrmJoinTable.this.getPersistentAttribute();
+ return this.getRelationship().getTypeMapping();
}
/**
@@ -372,7 +370,7 @@ public class GenericOrmJoinTable
/**
* If there is a specified table name it needs to be the same
- * the default table name. the table is always the join table
+ * the default table name. The table is always the join table.
*/
public boolean tableNameIsInvalid(String tableName) {
return Tools.valuesAreDifferent(this.getDefaultTableName(), tableName);
@@ -403,12 +401,12 @@ public class GenericOrmJoinTable
return GenericOrmJoinTable.this.getValidationTextRange();
}
- protected String getPersistentAttributeName() {
- return this.getPersistentAttribute().getName();
+ protected OrmRelationship getRelationship() {
+ return this.getRelationshipStrategy().getRelationship();
}
- protected OrmJoinTableRelationshipStrategy getJoinStrategy() {
- return GenericOrmJoinTable.this.getJoinStrategy();
+ protected OrmJoinTableRelationshipStrategy getRelationshipStrategy() {
+ return GenericOrmJoinTable.this.getRelationshipStrategy();
}
}
@@ -425,7 +423,7 @@ public class GenericOrmJoinTable
}
public Entity getRelationshipTarget() {
- return this.getJoinStrategy().getRelationship().getEntity();
+ return this.getRelationship().getEntity();
}
public String getAttributeName() {
@@ -450,8 +448,8 @@ public class GenericOrmJoinTable
return GenericOrmJoinTable.this.joinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getJoinStrategy().buildJoinTableJoinColumnValidator((JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
}
}
@@ -500,8 +498,8 @@ public class GenericOrmJoinTable
return GenericOrmJoinTable.this.inverseJoinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return this.getJoinStrategy().buildJoinTableInverseJoinColumnValidator((JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationshipStrategy().buildJoinTableInverseJoinColumnValidator((ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOrderable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOrderable.java
index 71ac3cee4e..3fb9fec821 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOrderable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOrderable.java
@@ -11,7 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
@@ -427,7 +427,7 @@ public class GenericOrmOrderable
return GenericOrmOrderable.this.getValidationTextRange();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
return new OrderColumnValidator(this.getPersistentAttribute(), (OrderColumn2_0) column, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOverrideRelationship.java
index f669f9864d..6540fea64d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmOverrideRelationship.java
@@ -9,24 +9,28 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.MappedByRelationship;
import org.eclipse.jpt.jpa.core.context.OverrideRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverrideRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
-import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
@@ -34,8 +38,11 @@ import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
import org.eclipse.jpt.jpa.core.internal.context.orm.GenericOrmOverrideJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.context.orm.NullOrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmOverrideJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverride2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmOverrideRelationship2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride;
+import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
@@ -89,13 +96,37 @@ public class GenericOrmOverrideRelationship
}
protected OrmRelationshipStrategy buildStrategy() {
- if (this.isJpa2_0Compatible()) {
- if (this.joinColumnStrategy.hasSpecifiedJoinColumns()) {
- return this.joinColumnStrategy;
- }
- return this.joinTableStrategy;
- }
- return this.joinColumnStrategy;
+ return this.isJpa2_0Compatible() ?
+ this.buildStrategy2_0() :
+ this.joinColumnStrategy;
+ }
+
+ /**
+ * The overridden mapping determines the override's strategy.
+ */
+ protected OrmRelationshipStrategy buildStrategy2_0() {
+ MappingRelationshipStrategy2_0 mappingStrategy = this.getMappingStrategy();
+ return (mappingStrategy != null) ?
+ (OrmRelationshipStrategy) mappingStrategy.selectOverrideStrategy(this) :
+ this.buildMissingMappingStrategy();
+ }
+
+ /**
+ * Get the strategy from the overridden mapping.
+ */
+ protected MappingRelationshipStrategy2_0 getMappingStrategy() {
+ RelationshipMapping mapping = this.getMapping();
+ return (mapping == null) ? null : (MappingRelationshipStrategy2_0) mapping.getRelationship().getStrategy();
+ }
+
+ /**
+ * Return the strategy to use when the override's name does not match the
+ * name of an appropriate relationship mapping.
+ */
+ protected OrmRelationshipStrategy buildMissingMappingStrategy() {
+ return this.joinColumnStrategy.hasSpecifiedJoinColumns() ?
+ this.joinColumnStrategy :
+ this.joinTableStrategy;
}
@@ -115,6 +146,7 @@ public class GenericOrmOverrideRelationship
}
public boolean mayHaveDefaultJoinColumn() {
+ // association overrides do not have defaults
return false;
}
@@ -139,6 +171,7 @@ public class GenericOrmOverrideRelationship
}
public boolean mayHaveDefaultJoinTable() {
+ // association overrides do not have defaults
return false;
}
@@ -196,16 +229,44 @@ public class GenericOrmOverrideRelationship
return (OrmAssociationOverride) super.getParent();
}
- public OrmAssociationOverride getAssociationOverride() {
+ protected OrmAssociationOverride getAssociationOverride() {
return this.getParent();
}
+ protected OrmAssociationOverride2_0 getAssociationOverride2_0() {
+ return (OrmAssociationOverride2_0) this.getAssociationOverride();
+ }
+
public XmlAssociationOverride getXmlContainer() {
return this.getAssociationOverride().getXmlOverride();
}
public TypeMapping getTypeMapping() {
- return this.getAssociationOverride().getContainer().getTypeMapping();
+ return this.getAssociationOverride().getTypeMapping();
+ }
+
+ public String getAttributeName() {
+ return this.getAssociationOverride().getName();
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getAssociationOverride().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getAssociationOverride().candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getAssociationOverride().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getAssociationOverride().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride().buildColumnValidator(column, owner, textRangeResolver);
}
public Entity getEntity() {
@@ -231,19 +292,18 @@ public class GenericOrmOverrideRelationship
@Override
public void validate(List<IMessage> messages, IReporter reporter) {
super.validate(messages, reporter);
- this.joinColumnStrategy.validate(messages, reporter);
- this.joinTableStrategy.validate(messages, reporter);
+ this.strategy.validate(messages, reporter);
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.getAssociationOverride().getContainer().buildJoinTableJoinColumnValidator(this.getAssociationOverride(), column, owner, textRangeResolver);
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableValidator(table, textRangeResolver);
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.getAssociationOverride().getContainer().buildJoinTableInverseJoinColumnValidator(this.getAssociationOverride(), column, owner, textRangeResolver);
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
}
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
- return this.getAssociationOverride().getContainer().buildTableValidator(this.getAssociationOverride(), table, textRangeResolver);
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPrimaryKeyJoinColumn.java
index 642231286e..86757a9428 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPrimaryKeyJoinColumn.java
@@ -12,8 +12,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
-import org.eclipse.jpt.jpa.core.context.orm.OrmBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.orm.OrmPrimaryKeyJoinColumnTextRangeResolver;
@@ -25,17 +25,17 @@ import org.eclipse.jpt.jpa.db.Table;
* <code>orm.xml</code> primary key join column
*/
public class GenericOrmPrimaryKeyJoinColumn
- extends AbstractOrmNamedColumn<XmlPrimaryKeyJoinColumn, OrmBaseJoinColumn.Owner>
+ extends AbstractOrmNamedColumn<XmlPrimaryKeyJoinColumn, OrmReadOnlyBaseJoinColumn.Owner>
implements OrmPrimaryKeyJoinColumn
{
- /** @see org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmNamedColumn#AbstractOrmNamedColumn(XmlContextNode, org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn) */
+ /** @see org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmNamedColumn#AbstractOrmNamedColumn(XmlContextNode, org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn.Owner, org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlNamedColumn) */
protected /* final */ XmlPrimaryKeyJoinColumn xmlColumn; // null for default pk join columns
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn xmlColumn) {
+ public GenericOrmPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, XmlPrimaryKeyJoinColumn xmlColumn) {
super(parent, owner, xmlColumn);
this.specifiedReferencedColumnName = this.buildSpecifiedReferencedColumnName();
}
@@ -162,6 +162,9 @@ public class GenericOrmPrimaryKeyJoinColumn
return this.owner.getDefaultTableName();
}
+
+ // ********** validation **********
+
@Override
protected NamedColumnTextRangeResolver buildTextRangeResolver() {
return new OrmPrimaryKeyJoinColumnTextRangeResolver(this);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmReferenceTable.java
index f6a5bc41c6..333a1a1e3c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmReferenceTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmReferenceTable.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -24,6 +24,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyReferenceTable;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmReferenceTable;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
@@ -43,7 +44,7 @@ public abstract class GenericOrmReferenceTable<X extends AbstractXmlReferenceTab
{
protected final Vector<OrmJoinColumn> specifiedJoinColumns = new Vector<OrmJoinColumn>();
protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter();
- protected final OrmJoinColumn.Owner joinColumnOwner;
+ protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner;
protected OrmJoinColumn defaultJoinColumn;
@@ -85,7 +86,7 @@ public abstract class GenericOrmReferenceTable<X extends AbstractXmlReferenceTab
return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize();
}
- public void convertDefaultToSpecifiedJoinColumn() {
+ public void convertDefaultJoinColumnToSpecified() {
MappingTools.convertReferenceTableDefaultToSpecifiedJoinColumn(this);
}
@@ -205,7 +206,7 @@ public abstract class GenericOrmReferenceTable<X extends AbstractXmlReferenceTab
}
}
- protected abstract OrmJoinColumn.Owner buildJoinColumnOwner();
+ protected abstract OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner();
// ********** default join column **********
@@ -293,12 +294,6 @@ public abstract class GenericOrmReferenceTable<X extends AbstractXmlReferenceTab
}
protected void validateJoinColumns(List<IMessage> messages, IReporter reporter) {
- this.validateJoinColumns(this.getJoinColumns(), messages, reporter);
- }
-
- protected void validateJoinColumns(Iterable<OrmJoinColumn> joinColumns, List<IMessage> messages, IReporter reporter) {
- for (OrmJoinColumn joinColumn : joinColumns) {
- joinColumn.validate(messages, reporter);
- }
+ this.validateNodes(this.getJoinColumns(), messages, reporter);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmSecondaryTable.java
index e9c73a6993..044ccfd7d9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmSecondaryTable.java
@@ -19,17 +19,16 @@ import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable;
import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementListIterable;
-import org.eclipse.jpt.jpa.core.context.BaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyPrimaryKeyJoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmSecondaryTable;
import org.eclipse.jpt.jpa.core.internal.context.BaseJoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools;
@@ -56,7 +55,7 @@ public class GenericOrmSecondaryTable
protected final Vector<OrmPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns = new Vector<OrmPrimaryKeyJoinColumn>();
protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter();
- protected final OrmBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
+ protected final OrmReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner;
protected OrmPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn;
@@ -243,7 +242,7 @@ public class GenericOrmSecondaryTable
}
}
- protected OrmBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
+ protected OrmReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() {
return new PrimaryKeyJoinColumnOwner();
}
@@ -349,9 +348,7 @@ public class GenericOrmSecondaryTable
//some validation messages are not database specific. If the database validation for the
//table fails we will stop there and not validate the join columns at all
if (continueValidating) {
- for (OrmPrimaryKeyJoinColumn pkJoinColumn : this.getPrimaryKeyJoinColumns()) {
- pkJoinColumn.validate(messages, reporter);
- }
+ this.validateNodes(this.getPrimaryKeyJoinColumns(), messages, reporter);
}
}
@@ -359,7 +356,7 @@ public class GenericOrmSecondaryTable
// ********** primary key join column owner adapter **********
protected class PrimaryKeyJoinColumnOwner
- implements OrmBaseJoinColumn.Owner
+ implements OrmReadOnlyBaseJoinColumn.Owner
{
protected OrmEntity getEntity() {
return GenericOrmSecondaryTable.this.getEntity();
@@ -403,12 +400,8 @@ public class GenericOrmSecondaryTable
return GenericOrmSecondaryTable.this.getValidationTextRange();
}
- protected String getSecondaryTableName() {
- return GenericOrmSecondaryTable.this.getName();
- }
-
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new SecondaryTablePrimaryKeyJoinColumnValidator(GenericOrmSecondaryTable.this, (BaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new SecondaryTablePrimaryKeyJoinColumnValidator(GenericOrmSecondaryTable.this, (ReadOnlyBaseJoinColumn) column, this, (BaseJoinColumnTextRangeResolver) textRangeResolver);
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAssociationOverride.java
index aee0a4591d..4618e9f0cc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAssociationOverride.java
@@ -9,19 +9,28 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import java.util.List;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualOverrideRelationship;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmVirtualAssociationOverride2_0;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual <code>orm.xml</code> association override
*/
public class GenericOrmVirtualAssociationOverride
extends AbstractOrmVirtualOverride<OrmAssociationOverrideContainer>
- implements OrmVirtualAssociationOverride
+ implements OrmVirtualAssociationOverride2_0
{
protected final OrmVirtualOverrideRelationship relationship;
@@ -46,6 +55,10 @@ public class GenericOrmVirtualAssociationOverride
return this.getContainer().getRelationshipMapping(this.name);
}
+ protected OrmAssociationOverrideContainer2_0 getContainer2_0() {
+ return (OrmAssociationOverrideContainer2_0) this.getContainer();
+ }
+
// ********** relationship **********
@@ -61,7 +74,28 @@ public class GenericOrmVirtualAssociationOverride
return this.getContextNodeFactory().buildOrmVirtualOverrideRelationship(this);
}
- public Relationship resolveOverriddenRelationship() {
+ public ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getContainer().resolveOverriddenRelationship(this.name);
}
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.relationship.validate(messages, reporter);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableValidator(this, table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer2_0().buildJoinTableInverseJoinColumnValidator(this, column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAttributeOverride.java
index d1327dba88..13db6f54de 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAttributeOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualAttributeOverride.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,13 +9,19 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import org.eclipse.jpt.jpa.core.context.Column;
+import java.util.List;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
-import org.eclipse.jpt.jpa.core.context.TypeMapping;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeOverrideContainer;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAttributeOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualColumn;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
/**
* Virtual <code>orm.xml</code> attribute override
@@ -61,13 +67,10 @@ public class GenericOrmVirtualAttributeOverride
// ********** column owner implementation **********
- public TypeMapping getTypeMapping() {
- return this.getContainer().getTypeMapping();
- }
-
+ @Override
public String getDefaultTableName() {
String overriddenColumnTable = this.getOverriddenColumnTable();
- return (overriddenColumnTable != null) ? overriddenColumnTable : this.getContainer().getDefaultTableName();
+ return (overriddenColumnTable != null) ? overriddenColumnTable : super.getDefaultTableName();
}
protected String getOverriddenColumnTable() {
@@ -86,7 +89,20 @@ public class GenericOrmVirtualAttributeOverride
return (overriddenColumn == null) ? null : overriddenColumn.getName();
}
- public Column resolveOverriddenColumn() {
+ public ReadOnlyColumn resolveOverriddenColumn() {
return this.getContainer().resolveOverriddenColumn(this.name);
}
+
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn col, NamedColumnTextRangeResolver textRangeResolver) {
+ return this.getContainer().buildColumnValidator(this, (ReadOnlyBaseColumn) col, this, (BaseColumnTextRangeResolver) textRangeResolver);
+ }
+
+
+ // ********** validation **********
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.column.validate(messages, reporter);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualColumn.java
index 6f50c93750..8797fb7aa9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualColumn.java
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import org.eclipse.jpt.jpa.core.context.Column;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualColumn;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmVirtualBaseColumn;
@@ -18,7 +18,7 @@ import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmVirtualBaseColum
* <code>orm.xml</code> virtual column
*/
public class GenericOrmVirtualColumn
- extends AbstractOrmVirtualBaseColumn<OrmVirtualColumn.Owner, Column>
+ extends AbstractOrmVirtualBaseColumn<OrmVirtualColumn.Owner, ReadOnlyColumn>
implements OrmVirtualColumn
{
protected Integer specifiedLength;
@@ -56,7 +56,7 @@ public class GenericOrmVirtualColumn
// ********** column **********
@Override
- public Column getOverriddenColumn() {
+ public ReadOnlyColumn getOverriddenColumn() {
return this.owner.resolveOverriddenColumn();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualJoinColumn.java
index dcf6cf5856..3c1d4571c3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualJoinColumn.java
@@ -9,27 +9,32 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmVirtualBaseColumn;
+import org.eclipse.jpt.jpa.core.internal.context.orm.OrmJoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Column;
+import org.eclipse.jpt.jpa.db.Table;
/**
* <code>orm.xml</code> virtual join column
*/
public class GenericOrmVirtualJoinColumn
- extends AbstractOrmVirtualBaseColumn<ReadOnlyJoinColumn.Owner, JoinColumn>
+ extends AbstractOrmVirtualBaseColumn<OrmReadOnlyJoinColumn.Owner, ReadOnlyJoinColumn>
implements OrmVirtualJoinColumn
{
- protected final JoinColumn overriddenColumn;
+ protected final ReadOnlyJoinColumn overriddenColumn;
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericOrmVirtualJoinColumn(XmlContextNode parent, ReadOnlyJoinColumn.Owner owner, JoinColumn overriddenColumn) {
+ public GenericOrmVirtualJoinColumn(XmlContextNode parent, OrmReadOnlyJoinColumn.Owner owner, ReadOnlyJoinColumn overriddenColumn) {
super(parent, owner);
this.overriddenColumn = overriddenColumn;
}
@@ -49,7 +54,7 @@ public class GenericOrmVirtualJoinColumn
// ********** column **********
@Override
- public JoinColumn getOverriddenColumn() {
+ public ReadOnlyJoinColumn getOverriddenColumn() {
return this.overriddenColumn;
}
@@ -93,10 +98,38 @@ public class GenericOrmVirtualJoinColumn
}
+ // ********** database stuff **********
+
+ public Table getReferencedColumnDbTable() {
+ return this.owner.getReferencedColumnDbTable();
+ }
+
+ protected Column getReferencedDbColumn() {
+ Table table = this.getReferencedColumnDbTable();
+ return (table == null) ? null : table.getColumnForIdentifier(this.getReferencedColumnName());
+ }
+
+ public boolean referencedColumnIsResolved() {
+ return this.getReferencedDbColumn() != null;
+ }
+
+
// ********** misc **********
@Override
protected String buildDefaultName() {
return MappingTools.buildJoinColumnDefaultName(this, this.owner);
}
+
+
+ // ********** validation **********
+
+ public TextRange getReferencedColumnNameTextRange() {
+ return this.getValidationTextRange();
+ }
+
+ @Override
+ protected NamedColumnTextRangeResolver buildTextRangeResolver() {
+ return new OrmJoinColumnTextRangeResolver(this);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualOverrideRelationship.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualOverrideRelationship.java
index b6d57f39c0..1cf15a2f43 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualOverrideRelationship.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualOverrideRelationship.java
@@ -9,9 +9,16 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
+import java.util.Iterator;
+import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.OverrideRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn.Owner;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
@@ -19,10 +26,19 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAssociationOverride;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.BaseColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
import org.eclipse.jpt.jpa.core.internal.context.orm.GenericOrmVirtualOverrideJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverride2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmVirtualOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.db.Table;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericOrmVirtualOverrideRelationship
extends AbstractOrmXmlContextNode
@@ -67,13 +83,37 @@ public class GenericOrmVirtualOverrideRelationship
}
protected OrmVirtualRelationshipStrategy buildStrategy() {
- if (this.isJpa2_0Compatible()) {
- if (this.joinColumnStrategy.hasSpecifiedJoinColumns()) {
- return this.joinColumnStrategy;
- }
- return this.joinTableStrategy;
- }
- return this.joinColumnStrategy;
+ return this.isJpa2_0Compatible() ?
+ this.buildStrategy2_0() :
+ this.joinColumnStrategy;
+ }
+
+ /**
+ * The overridden mapping determines the override's strategy.
+ */
+ protected OrmVirtualRelationshipStrategy buildStrategy2_0() {
+ MappingRelationshipStrategy2_0 mappingStrategy = this.getMappingStrategy();
+ return (mappingStrategy != null) ?
+ (OrmVirtualRelationshipStrategy) mappingStrategy.selectOverrideStrategy(this) :
+ this.buildMissingMappingStrategy();
+ }
+
+ /**
+ * Get the strategy from the overridden mapping.
+ */
+ protected MappingRelationshipStrategy2_0 getMappingStrategy() {
+ RelationshipMapping mapping = this.getMapping();
+ return (mapping == null) ? null : (MappingRelationshipStrategy2_0) mapping.getRelationship().getStrategy();
+ }
+
+ /**
+ * Return the strategy to use when the override's name does not match the
+ * name of an appropriate relationship mapping.
+ */
+ protected OrmVirtualRelationshipStrategy buildMissingMappingStrategy() {
+ return this.joinColumnStrategy.hasSpecifiedJoinColumns() ?
+ this.joinColumnStrategy :
+ this.joinTableStrategy;
}
@@ -88,6 +128,7 @@ public class GenericOrmVirtualOverrideRelationship
}
public boolean mayHaveDefaultJoinColumn() {
+ // association overrides do not have defaults
return false;
}
@@ -107,7 +148,8 @@ public class GenericOrmVirtualOverrideRelationship
}
public boolean mayHaveDefaultJoinTable() {
- return this.isVirtual();
+ // association overrides do not have defaults
+ return false;
}
protected OrmVirtualJoinTableRelationshipStrategy buildJoinTableStrategy() {
@@ -135,12 +177,40 @@ public class GenericOrmVirtualOverrideRelationship
return (OrmVirtualAssociationOverride) super.getParent();
}
- public OrmVirtualAssociationOverride getAssociationOverride() {
+ protected OrmVirtualAssociationOverride getAssociationOverride() {
return this.getParent();
}
+ protected OrmAssociationOverride2_0 getAssociationOverride2_0() {
+ return (OrmAssociationOverride2_0) this.getAssociationOverride();
+ }
+
public TypeMapping getTypeMapping() {
- return this.getAssociationOverride().getContainer().getTypeMapping();
+ return this.getAssociationOverride().getTypeMapping();
+ }
+
+ public String getAttributeName() {
+ return this.getAssociationOverride().getName();
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.getAssociationOverride().tableNameIsInvalid(tableName);
+ }
+
+ public Iterator<String> candidateTableNames() {
+ return this.getAssociationOverride().candidateTableNames();
+ }
+
+ public Table resolveDbTable(String tableName) {
+ return this.getAssociationOverride().resolveDbTable(tableName);
+ }
+
+ public String getDefaultTableName() {
+ return this.getAssociationOverride().getDefaultTableName();
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyBaseColumn column, Owner owner, BaseColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride().buildColumnValidator(column, owner, textRangeResolver);
}
public Entity getEntity() {
@@ -156,7 +226,7 @@ public class GenericOrmVirtualOverrideRelationship
return this.getAssociationOverride().getMapping();
}
- public Relationship resolveOverriddenRelationship() {
+ public ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getAssociationOverride().resolveOverriddenRelationship();
}
@@ -166,4 +236,22 @@ public class GenericOrmVirtualOverrideRelationship
public TextRange getValidationTextRange() {
return this.getAssociationOverride().getValidationTextRange();
}
+
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ this.strategy.validate(messages, reporter);
+ }
+
+ public JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableValidator(table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getAssociationOverride2_0().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualPrimaryKeyJoinColumn.java
index d85905fd19..4d7e1f9e36 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualPrimaryKeyJoinColumn.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -9,28 +9,33 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
-import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyBaseJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualPrimaryKeyJoinColumn;
+import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmVirtualNamedColumn;
+import org.eclipse.jpt.jpa.core.internal.context.orm.OrmPrimaryKeyJoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.db.Column;
+import org.eclipse.jpt.jpa.db.Table;
/**
* <code>orm.xml</code> virtual primary key join column
*/
public class GenericOrmVirtualPrimaryKeyJoinColumn
- extends AbstractOrmVirtualNamedColumn<ReadOnlyBaseJoinColumn.Owner, JavaPrimaryKeyJoinColumn>
+ extends AbstractOrmVirtualNamedColumn<OrmReadOnlyBaseJoinColumn.Owner, JavaPrimaryKeyJoinColumn>
implements OrmVirtualPrimaryKeyJoinColumn
{
- protected final JavaPrimaryKeyJoinColumn overriddenColumn;
+ protected final JavaPrimaryKeyJoinColumn javaColumn;
protected String specifiedReferencedColumnName;
protected String defaultReferencedColumnName;
- public GenericOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, ReadOnlyBaseJoinColumn.Owner owner, JavaPrimaryKeyJoinColumn overriddenColumn) {
+ public GenericOrmVirtualPrimaryKeyJoinColumn(XmlContextNode parent, OrmReadOnlyBaseJoinColumn.Owner owner, JavaPrimaryKeyJoinColumn javaColumn) {
super(parent, owner);
- this.overriddenColumn = overriddenColumn;
+ this.javaColumn = javaColumn;
}
@@ -49,7 +54,7 @@ public class GenericOrmVirtualPrimaryKeyJoinColumn
@Override
public JavaPrimaryKeyJoinColumn getOverriddenColumn() {
- return this.overriddenColumn;
+ return this.javaColumn;
}
public boolean isDefault() {
@@ -92,9 +97,37 @@ public class GenericOrmVirtualPrimaryKeyJoinColumn
}
+ // ********** database stuff **********
+
+ public Table getReferencedColumnDbTable() {
+ return this.owner.getReferencedColumnDbTable();
+ }
+
+ protected Column getReferencedDbColumn() {
+ Table table = this.getReferencedColumnDbTable();
+ return (table == null) ? null : table.getColumnForIdentifier(this.getReferencedColumnName());
+ }
+
+ public boolean referencedColumnIsResolved() {
+ return this.getReferencedDbColumn() != null;
+ }
+
+
// ********** misc **********
public String getTable() {
return this.owner.getDefaultTableName();
}
+
+
+ // ********** validation **********
+
+ @Override
+ protected NamedColumnTextRangeResolver buildTextRangeResolver() {
+ return new OrmPrimaryKeyJoinColumnTextRangeResolver(this);
+ }
+
+ public TextRange getReferencedColumnNameTextRange() {
+ return this.getValidationTextRange();
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualUniqueConstraint.java
index f7ee1413b1..3b2c7d8298 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmVirtualUniqueConstraint.java
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.UniqueConstraint;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint;
import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualUniqueConstraint;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmReadOnlyUniqueConstraint;
@@ -19,10 +19,10 @@ public class GenericOrmVirtualUniqueConstraint
extends AbstractOrmReadOnlyUniqueConstraint
implements OrmVirtualUniqueConstraint
{
- protected final UniqueConstraint overriddenUniqueConstraint;
+ protected final ReadOnlyUniqueConstraint overriddenUniqueConstraint;
- public GenericOrmVirtualUniqueConstraint(XmlContextNode parent, UniqueConstraint overriddenUniqueConstraint) {
+ public GenericOrmVirtualUniqueConstraint(XmlContextNode parent, ReadOnlyUniqueConstraint overriddenUniqueConstraint) {
super(parent);
this.overriddenUniqueConstraint = overriddenUniqueConstraint;
}
@@ -51,7 +51,7 @@ public class GenericOrmVirtualUniqueConstraint
return (XmlContextNode) super.getParent();
}
- public UniqueConstraint getOverriddenUniqueConstraint() {
+ public ReadOnlyUniqueConstraint getOverriddenUniqueConstraint() {
return this.overriddenUniqueConstraint;
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/NullOrmJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/NullOrmJoinColumnRelationshipStrategy.java
index 986418a13c..d3d37ad989 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/NullOrmJoinColumnRelationshipStrategy.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/NullOrmJoinColumnRelationshipStrategy.java
@@ -14,12 +14,14 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator;
import org.eclipse.jpt.jpa.core.context.JoinColumn;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationship;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyOverrideRelationship2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmMappingJoinColumnRelationshipStrategy2_0;
import org.eclipse.jpt.jpa.db.Table;
/**
@@ -29,7 +31,7 @@ import org.eclipse.jpt.jpa.db.Table;
*/
public class NullOrmJoinColumnRelationshipStrategy
extends AbstractOrmXmlContextNode
- implements OrmJoinColumnRelationshipStrategy
+ implements OrmMappingJoinColumnRelationshipStrategy2_0
{
public NullOrmJoinColumnRelationshipStrategy(OrmJoinColumnRelationship parent) {
super(parent);
@@ -123,6 +125,10 @@ public class NullOrmJoinColumnRelationshipStrategy
// NOP
}
+ public ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship) {
+ return null;
+ }
+
public void addStrategy() {
// NOP
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaFactory2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaFactory2_0.java
index da28b49192..1d7c2ebc35 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaFactory2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaFactory2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -19,11 +19,11 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddable;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaNamedQuery;
import org.eclipse.jpt.jpa.core.context.java.JavaOrderable;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSequenceGenerator;
import org.eclipse.jpt.jpa.core.internal.AbstractJpaFactory;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaAssociationOverrideContainer;
@@ -150,7 +150,7 @@ public class GenericJpaFactory2_0
return new GenericJavaCollectionTable2_0(parent, owner);
}
- public JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaNamedColumn.Owner owner) {
+ public JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaReadOnlyNamedColumn.Owner owner) {
return new GenericJavaOrderColumn2_0(parent, owner);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/CollectionTableValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/CollectionTableValidator.java
index ee55b444df..f3e45023da 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/CollectionTableValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/CollectionTableValidator.java
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2.context;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.AbstractTableValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -18,7 +18,7 @@ import org.eclipse.jpt.jpa.core.jpa2.context.CollectionTable2_0;
public class CollectionTableValidator
extends AbstractTableValidator
{
- public CollectionTableValidator(PersistentAttribute persistentAttribute, CollectionTable2_0 table, TableTextRangeResolver textRangeResolver) {
+ public CollectionTableValidator(ReadOnlyPersistentAttribute persistentAttribute, CollectionTable2_0 table, TableTextRangeResolver textRangeResolver) {
super(persistentAttribute, table, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/OrderColumnValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/OrderColumnValidator.java
index e911b367ee..4714555ae3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/OrderColumnValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/OrderColumnValidator.java
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2.context;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.NamedColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.AbstractNamedColumnValidator;
import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -19,7 +19,7 @@ public class OrderColumnValidator
extends AbstractNamedColumnValidator<OrderColumn2_0, NamedColumnTextRangeResolver>
{
public OrderColumnValidator(
- PersistentAttribute persistentAttribute,
+ ReadOnlyPersistentAttribute persistentAttribute,
OrderColumn2_0 column,
NamedColumnTextRangeResolver textRangeResolver) {
super(persistentAttribute, column, textRangeResolver);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java
index c22861337c..73252c2e87 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/AbstractJavaElementCollectionMapping2_0.java
@@ -34,18 +34,20 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Converter;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.context.PersistentType;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
@@ -85,6 +87,8 @@ import org.eclipse.jpt.jpa.core.jpa2.MappingKeys2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.CollectionTable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelField;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAssociationOverrideContainer2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaAttributeOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaCollectionTable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaElementCollectionMapping2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOrderable2_0;
@@ -390,9 +394,9 @@ public abstract class AbstractJavaElementCollectionMapping2_0
}
protected class CollectionTableOwner
- implements Table.Owner
+ implements ReadOnlyTable.Owner
{
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
return new CollectionTableValidator(AbstractJavaElementCollectionMapping2_0.this.getPersistentAttribute(), (CollectionTable2_0) table, textRangeResolver);
}
}
@@ -581,7 +585,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0
return this.getJpaFactory().buildJavaAssociationOverrideContainer(this, this.buildValueAssociationOverrideContainerOwner());
}
- protected JavaAssociationOverrideContainer.Owner buildValueAssociationOverrideContainerOwner() {
+ protected JavaAssociationOverrideContainer2_0.Owner buildValueAssociationOverrideContainerOwner() {
return new ValueAssociationOverrideContainerOwner();
}
@@ -1381,8 +1385,8 @@ public abstract class AbstractJavaElementCollectionMapping2_0
return this.getMappingName();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1405,8 +1409,8 @@ public abstract class AbstractJavaElementCollectionMapping2_0
return this.getMappingName() + "_KEY"; //$NON-NLS-1$
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new MapKeyColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1446,23 +1450,23 @@ public abstract class AbstractJavaElementCollectionMapping2_0
protected class ValueAttributeOverrideContainerOwner
extends ValueOverrideContainerOwner
- implements JavaAttributeOverrideContainer.Owner
+ implements JavaAttributeOverrideContainer2_0.Owner
{
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
public Column resolveOverriddenColumn(String attributeName) {
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1471,7 +1475,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0
protected class ValueAssociationOverrideContainerOwner
extends ValueOverrideContainerOwner
- implements JavaAssociationOverrideContainer.Owner
+ implements JavaAssociationOverrideContainer2_0.Owner
{
public Iterator<String> allOverridableNames() {
TypeMapping typeMapping = this.getOverridableTypeMapping();
@@ -1482,24 +1486,28 @@ public abstract class AbstractJavaElementCollectionMapping2_0
return MappingTools.resolveOverriddenRelationship(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ }
+
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) columnOwner, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) columnOwner, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$
+ protected UnsupportedOperationException buildJoinTableUnsupportedException() {
+ return new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$
}
}
@@ -1508,7 +1516,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0
protected class MapKeyAttributeOverrideContainerOwner
extends AbstractOwner
- implements JavaAttributeOverrideContainer.Owner
+ implements JavaAttributeOverrideContainer2_0.Owner
{
protected static final String POSSIBLE_PREFIX = "key"; //$NON-NLS-1$
protected static final String RELEVANT_PREFIX_ = "key."; //$NON-NLS-1$
@@ -1518,8 +1526,8 @@ public abstract class AbstractJavaElementCollectionMapping2_0
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
public String getPossiblePrefix() {
@@ -1543,12 +1551,12 @@ public abstract class AbstractJavaElementCollectionMapping2_0
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCollectionTable2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCollectionTable2_0.java
index d5957641ed..4edfdadcfb 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCollectionTable2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCollectionTable2_0.java
@@ -16,12 +16,12 @@ import org.eclipse.jpt.common.utility.internal.StringTools;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
@@ -45,7 +45,7 @@ public class GenericJavaCollectionTable2_0
}
@Override
- protected JavaJoinColumn.Owner buildJoinColumnOwner() {
+ protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -98,7 +98,7 @@ public class GenericJavaCollectionTable2_0
* these point at the source/owning entity
*/
protected class JoinColumnOwner
- implements JavaJoinColumn.Owner
+ implements JavaReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -171,8 +171,8 @@ public class GenericJavaCollectionTable2_0
return GenericJavaCollectionTable2_0.this.joinColumnsSize();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new JoinColumnValidator(this.getPersistentAttribute(), (JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new JoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaDerivedIdentity2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaDerivedIdentity2_0.java
index 769ced834a..457757fde9 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaDerivedIdentity2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaDerivedIdentity2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -14,6 +14,7 @@ import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.Filter;
+import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
import org.eclipse.jpt.jpa.core.jpa2.context.DerivedIdentityStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaDerivedIdentity2_0;
@@ -27,6 +28,7 @@ public class GenericJavaDerivedIdentity2_0
extends AbstractJavaJpaContextNode
implements JavaDerivedIdentity2_0
{
+ /** this can be <code>null</code> */
protected DerivedIdentityStrategy2_0 strategy;
protected final JavaIdDerivedIdentityStrategy2_0 idStrategy;
@@ -59,7 +61,7 @@ public class GenericJavaDerivedIdentity2_0
}
- // ********** predominant strategy **********
+ // ********** strategy **********
public DerivedIdentityStrategy2_0 getPredominantDerivedIdentityStrategy() {
return this.strategy;
@@ -161,13 +163,11 @@ public class GenericJavaDerivedIdentity2_0
if (result != null) {
return result;
}
- result = this.mapsIdStrategy.javaCompletionProposals(pos, filter, astRoot);
- if (result != null) {
- return result;
- }
- result = this.idStrategy.javaCompletionProposals(pos, filter, astRoot);
- if (result != null) {
- return result;
+ if (this.strategy != null) {
+ result = ((JavaJpaContextNode) this.strategy).javaCompletionProposals(pos, filter, astRoot);
+ if (result != null) {
+ return result;
+ }
}
return null;
}
@@ -178,8 +178,9 @@ public class GenericJavaDerivedIdentity2_0
@Override
public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
super.validate(messages, reporter, astRoot);
- this.idStrategy.validate(messages, reporter, astRoot);
- this.mapsIdStrategy.validate(messages, reporter, astRoot);
+ if (this.strategy != null) {
+ ((JavaJpaContextNode) this.strategy).validate(messages, reporter, astRoot);
+ }
}
public TextRange getValidationTextRange(CompilationUnit astRoot) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaMapsIdDerivedIdentityStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaMapsIdDerivedIdentityStrategy2_0.java
index 737a85bf0a..37822cefe2 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaMapsIdDerivedIdentityStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaMapsIdDerivedIdentityStrategy2_0.java
@@ -47,13 +47,13 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
extends AbstractJavaJpaContextNode
implements JavaMapsIdDerivedIdentityStrategy2_0
{
- protected String specifiedValue;
- protected String defaultValue;
+ protected String specifiedIdAttributeName;
+ protected String defaultIdAttributeName;
public GenericJavaMapsIdDerivedIdentityStrategy2_0(JavaDerivedIdentity2_0 parent) {
super(parent);
- this.specifiedValue = this.buildSpecifiedValue();
+ this.specifiedIdAttributeName = this.buildSpecifiedIdAttributeName();
}
@@ -62,54 +62,54 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
@Override
public void synchronizeWithResourceModel() {
super.synchronizeWithResourceModel();
- this.setSpecifiedValue_(this.buildSpecifiedValue());
+ this.setSpecifiedIdAttributeName_(this.buildSpecifiedIdAttributeName());
}
@Override
public void update() {
super.update();
- this.setDefaultValue(this.buildDefaultValue());
+ this.setDefaultIdAttributeName(this.buildDefaultIdAttributeName());
}
- // ********** value **********
+ // ********** ID attribute name **********
- public String getValue() {
- return (this.specifiedValue != null) ? this.specifiedValue : this.defaultValue;
+ public String getIdAttributeName() {
+ return (this.specifiedIdAttributeName != null) ? this.specifiedIdAttributeName : this.defaultIdAttributeName;
}
- public String getSpecifiedValue() {
- return this.specifiedValue;
+ public String getSpecifiedIdAttributeName() {
+ return this.specifiedIdAttributeName;
}
- public void setSpecifiedValue(String value) {
- if (this.valuesAreDifferent(value, this.specifiedValue)) {
- this.getAnnotation().setValue(value);
- this.setSpecifiedValue_(value);
+ public void setSpecifiedIdAttributeName(String idAttributeName) {
+ if (this.valuesAreDifferent(idAttributeName, this.specifiedIdAttributeName)) {
+ this.getAnnotation().setValue(idAttributeName);
+ this.setSpecifiedIdAttributeName_(idAttributeName);
}
}
- protected void setSpecifiedValue_(String value) {
- String old = this.specifiedValue;
- this.specifiedValue = value;
- this.firePropertyChanged(SPECIFIED_VALUE_PROPERTY, old, value);
+ protected void setSpecifiedIdAttributeName_(String idAttributeName) {
+ String old = this.specifiedIdAttributeName;
+ this.specifiedIdAttributeName = idAttributeName;
+ this.firePropertyChanged(SPECIFIED_ID_ATTRIBUTE_NAME_PROPERTY, old, idAttributeName);
}
- protected String buildSpecifiedValue() {
+ protected String buildSpecifiedIdAttributeName() {
return this.getAnnotation().getValue();
}
- public String getDefaultValue() {
- return this.defaultValue;
+ public String getDefaultIdAttributeName() {
+ return this.defaultIdAttributeName;
}
- protected void setDefaultValue(String value) {
- String old = this.defaultValue;
- this.defaultValue = value;
- this.firePropertyChanged(SPECIFIED_VALUE_PROPERTY, old, value);
+ protected void setDefaultIdAttributeName(String idAttributeName) {
+ String old = this.defaultIdAttributeName;
+ this.defaultIdAttributeName = idAttributeName;
+ this.firePropertyChanged(DEFAULT_ID_ATTRIBUTE_NAME_PROPERTY, old, idAttributeName);
}
- protected String buildDefaultValue() {
+ protected String buildDefaultIdAttributeName() {
Iterator<AttributeMapping> stream = this.getIdAttributeMappings().iterator();
if (stream.hasNext()) {
AttributeMapping mapping = stream.next();
@@ -119,7 +119,7 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
return null; // empty
}
- public boolean usesDefaultValue() {
+ public boolean defaultIdAttributeNameIsPossible() {
return true;
}
@@ -180,7 +180,7 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
return CollectionTools.collection(this.getPersistentAttribute().getOwningTypeMapping().allAttributeMappings());
}
- public Iterable<String> getSortedValueChoices() {
+ public Iterable<String> getSortedCandidateIdAttributeNames() {
return CollectionTools.sort(this.getAllAttributeMappingChoiceNames());
}
@@ -233,11 +233,11 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
);
}
- public AttributeMapping getResolvedAttributeMappingValue() {
- String value = this.getValue();
- if (value != null) {
+ public AttributeMapping getDerivedIdAttributeMapping() {
+ String idAttributeName = this.getIdAttributeName();
+ if (idAttributeName != null) {
for (AttributeMapping mapping : this.getAllAttributeMappingChoices()) {
- if (value.equals(mapping.getName())) {
+ if (idAttributeName.equals(mapping.getName())) {
return mapping;
}
}
@@ -277,7 +277,7 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
}
protected Iterator<String> sortedJavaValueChoices(Filter<String> filter) {
- return StringTools.convertToJavaStringLiterals(new FilteringIterator<String>(this.getSortedValueChoices(), filter));
+ return StringTools.convertToJavaStringLiterals(new FilteringIterator<String>(this.getSortedCandidateIdAttributeNames(), filter));
}
@@ -323,19 +323,19 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0
}
protected void validateMapsId_(List<IMessage> messages, CompilationUnit astRoot) {
- // test whether value can be resolved
- AttributeMapping attributeMapping = this.getResolvedAttributeMappingValue();
+ // test whether id attribute name can be resolved
+ AttributeMapping attributeMapping = this.getDerivedIdAttributeMapping();
if (attributeMapping == null) {
- // if value is not specified, use that message
- if (this.specifiedValue == null) {
+ // if id attribute name is not specified, use that message
+ if (this.specifiedIdAttributeName == null) {
messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_NOT_SPECIFIED, EMPTY_STRING_ARRAY, astRoot));
} else {
- messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_NOT_RESOLVED, new String[] {this.getValue()}, astRoot));
+ messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_NOT_RESOLVED, new String[] {this.getIdAttributeName()}, astRoot));
}
} else {
// test whether attribute mapping is allowable
if ( ! CollectionTools.contains(this.getValidAttributeMappingChoices(), attributeMapping)) {
- messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_INVALID, new String[] {this.getValue()}, astRoot));
+ messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_INVALID, new String[] {this.getIdAttributeName()}, astRoot));
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOrderColumn2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOrderColumn2_0.java
index 3d727384a0..b767f7f081 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOrderColumn2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOrderColumn2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -9,7 +9,7 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2.context.java;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaNamedColumn;
import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.OrderColumn2_0AnnotationDefinition;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOrderColumn2_0;
@@ -21,7 +21,7 @@ import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute;
* Java order column
*/
public class GenericJavaOrderColumn2_0
- extends AbstractJavaNamedColumn<OrderColumn2_0Annotation, JavaNamedColumn.Owner>
+ extends AbstractJavaNamedColumn<OrderColumn2_0Annotation, JavaReadOnlyNamedColumn.Owner>
implements JavaOrderColumn2_0
{
protected Boolean specifiedNullable;
@@ -37,7 +37,7 @@ public class GenericJavaOrderColumn2_0
protected OrderColumn2_0Annotation nullColumnAnnotation;
- public GenericJavaOrderColumn2_0(JavaOrderable2_0 parent, JavaNamedColumn.Owner owner) {
+ public GenericJavaOrderColumn2_0(JavaOrderable2_0 parent, JavaReadOnlyNamedColumn.Owner owner) {
super(parent, owner);
this.specifiedNullable = this.buildSpecifiedNullable();
this.specifiedInsertable = this.buildSpecifiedInsertable();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOverrideJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOverrideJoinTableRelationshipStrategy2_0.java
index 73f8a1c43a..c4a7ab7f72 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOverrideJoinTableRelationshipStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaOverrideJoinTableRelationshipStrategy2_0.java
@@ -11,18 +11,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.Table;
-import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJoinTableRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.AssociationOverrideInverseJoinColumnValidator;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.AssociationOverrideJoinColumnValidator;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.AssociationOverrideJoinTableValidator;
-import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionProvider;
import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOverrideRelationship2_0;
import org.eclipse.jpt.jpa.core.jpa2.resource.java.AssociationOverride2_0Annotation;
import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation;
@@ -53,7 +48,7 @@ public class GenericJavaOverrideJoinTableRelationshipStrategy2_0
protected AssociationOverride2_0Annotation getOverrideAnnotation() {
// only JPA 2.0 association overrides can have a join table (join strategy)
- return (AssociationOverride2_0Annotation) this.getAssociationOverride().getOverrideAnnotation();
+ return (AssociationOverride2_0Annotation) this.getRelationship().getOverrideAnnotation();
}
@@ -69,10 +64,6 @@ public class GenericJavaOverrideJoinTableRelationshipStrategy2_0
return this.getParent();
}
- protected JavaAssociationOverride getAssociationOverride() {
- return this.getRelationship().getAssociationOverride();
- }
-
public boolean isOverridable() {
return false;
}
@@ -88,15 +79,15 @@ public class GenericJavaOverrideJoinTableRelationshipStrategy2_0
return this.getRelationship().getValidationTextRange(astRoot);
}
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinTableValidator(this.getAssociationOverride(), (JoinTable) table, textRangeResolver);
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableValidator((ReadOnlyJoinTable) table, textRangeResolver);
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator(this.getAssociationOverride(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideInverseJoinColumnValidator(this.getAssociationOverride(), column, owner, textRangeResolver, new JoinTableTableDescriptionProvider());
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0.java
index 32b5cab20c..4bdd41b7a4 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0.java
@@ -9,26 +9,34 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2.context.java;
+import java.util.List;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.JoinTableRelationship;
-import org.eclipse.jpt.jpa.core.context.JoinTableRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTable;
-import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaVirtualOverrideRelationship2_0;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0
extends AbstractJavaJpaContextNode
- implements JavaVirtualJoinTableRelationshipStrategy
+ implements JavaVirtualJoinTableRelationshipStrategy, ReadOnlyTable.Owner
{
protected JavaVirtualJoinTable joinTable;
- public GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0(JavaVirtualJoinTableRelationship parent) {
+ public GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0(JavaVirtualOverrideRelationship2_0 parent) {
super(parent);
}
@@ -55,7 +63,7 @@ public class GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0
}
protected void updateJoinTable() {
- JoinTable overriddenJoinTable = this.getOverriddenJoinTable();
+ ReadOnlyJoinTable overriddenJoinTable = this.getOverriddenJoinTable();
if (overriddenJoinTable == null) {
if (this.joinTable != null) {
this.setJoinTable(null);
@@ -69,38 +77,38 @@ public class GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0
}
}
- protected JoinTable getOverriddenJoinTable() {
- JoinTableRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected ReadOnlyJoinTable getOverriddenJoinTable() {
+ ReadOnlyJoinTableRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ? null : overriddenStrategy.getJoinTable();
}
- protected JavaVirtualJoinTable buildJoinTable(JoinTable overriddenJoinTable) {
- return this.getJpaFactory().buildJavaVirtualJoinTable(this, overriddenJoinTable);
+ protected JavaVirtualJoinTable buildJoinTable(ReadOnlyJoinTable overriddenJoinTable) {
+ return this.getJpaFactory().buildJavaVirtualJoinTable(this, this, overriddenJoinTable);
}
// ********** misc **********
@Override
- public JavaVirtualJoinTableRelationship getParent() {
- return (JavaVirtualJoinTableRelationship) super.getParent();
+ public JavaVirtualOverrideRelationship2_0 getParent() {
+ return (JavaVirtualOverrideRelationship2_0) super.getParent();
}
- public JavaVirtualJoinTableRelationship getRelationship() {
+ public JavaVirtualOverrideRelationship2_0 getRelationship() {
return this.getParent();
}
- protected JoinTableRelationshipStrategy getOverriddenStrategy() {
- JoinTableRelationship relationship = this.getOverriddenJoinTableRelationship();
+ protected ReadOnlyJoinTableRelationshipStrategy getOverriddenStrategy() {
+ ReadOnlyJoinTableRelationship relationship = this.getOverriddenJoinTableRelationship();
return (relationship == null) ? null : relationship.getJoinTableStrategy();
}
- protected JoinTableRelationship getOverriddenJoinTableRelationship() {
- Relationship relationship = this.resolveOverriddenRelationship();
- return (relationship instanceof JoinTableRelationship) ? (JoinTableRelationship) relationship : null;
+ protected ReadOnlyJoinTableRelationship getOverriddenJoinTableRelationship() {
+ ReadOnlyRelationship relationship = this.resolveOverriddenRelationship();
+ return (relationship instanceof ReadOnlyJoinTableRelationship) ? (ReadOnlyJoinTableRelationship) relationship : null;
}
- protected Relationship resolveOverriddenRelationship() {
+ protected ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getRelationship().resolveOverriddenRelationship();
}
@@ -115,7 +123,31 @@ public class GenericJavaVirtualOverrideJoinTableRelationshipStrategy2_0
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) {
+ super.validate(messages, reporter, astRoot);
+ if (this.joinTable != null) {
+ this.joinTable.validate(messages, reporter, astRoot);
+ }
+ }
+
+ public boolean validatesAgainstDatabase() {
+ return this.getRelationship().getTypeMapping().validatesAgainstDatabase();
+ }
+
public TextRange getValidationTextRange(CompilationUnit astRoot) {
return this.getRelationship().getValidationTextRange(astRoot);
}
+
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableValidator((ReadOnlyJoinTable) table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java
index 35d1b72d0c..eeaa64aed1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/AbstractOrmElementCollectionMapping2_0.java
@@ -34,18 +34,20 @@ import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.AttributeMapping;
import org.eclipse.jpt.jpa.core.context.AttributeOverride;
import org.eclipse.jpt.jpa.core.context.AttributeOverrideContainer;
-import org.eclipse.jpt.jpa.core.context.BaseColumn;
import org.eclipse.jpt.jpa.core.context.Column;
import org.eclipse.jpt.jpa.core.context.Converter;
import org.eclipse.jpt.jpa.core.context.Embeddable;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.FetchType;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.OverrideContainer;
-import org.eclipse.jpt.jpa.core.context.Override_;
import org.eclipse.jpt.jpa.core.context.PersistentType;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAttributeOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.Relationship;
import org.eclipse.jpt.jpa.core.context.Table;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
@@ -89,6 +91,7 @@ import org.eclipse.jpt.jpa.core.jpa2.MappingKeys2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.CollectionTable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelField;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCollectionTable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmElementCollectionMapping2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmOrderable2_0;
@@ -375,9 +378,9 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
}
protected class CollectionTableOwner
- implements Table.Owner
+ implements ReadOnlyTable.Owner
{
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
return new CollectionTableValidator(AbstractOrmElementCollectionMapping2_0.this.getPersistentAttribute(), (CollectionTable2_0) table, textRangeResolver);
}
}
@@ -1329,6 +1332,10 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return AbstractOrmElementCollectionMapping2_0.this.getValidationTextRange();
}
+ public Iterable<String> getJavaOverrideNames() {
+ return null;
+ }
+
protected String getMappingName() {
return AbstractOrmElementCollectionMapping2_0.this.getName();
}
@@ -1371,8 +1378,8 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return this.getMappingName();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new NamedColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new NamedColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1401,8 +1408,8 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return this.getMappingName() + "_KEY"; //$NON-NLS-1$
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new MapKeyColumnValidator(this.getPersistentAttribute(), (BaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyColumnValidator(this.getPersistentAttribute(), (ReadOnlyBaseColumn) column, (BaseColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1411,7 +1418,7 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
protected class ValueAssociationOverrideContainerOwner
extends AbstractOwner
- implements OrmAssociationOverrideContainer.Owner
+ implements OrmAssociationOverrideContainer2_0.Owner
{
public TypeMapping getOverridableTypeMapping() {
return AbstractOrmElementCollectionMapping2_0.this.getResolvedTargetEmbeddable();
@@ -1430,24 +1437,28 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return MappingTools.resolveOverriddenRelationship(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (AssociationOverride) override, (JoinColumn) column, (JoinColumn.Owner) columnOwner, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideJoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (ReadOnlyJoinColumn) column, (ReadOnlyJoinColumn.Owner) columnOwner, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
- public JptValidator buildJoinTableJoinColumnValidator(AssociationOverride override, JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AssociationOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AssociationOverrideValidator(this.getPersistentAttribute(), (AssociationOverride) override, (AssociationOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(AssociationOverride override, JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
}
- public JptValidator buildTableValidator(AssociationOverride override, Table table, TableTextRangeResolver textRangeResolver) {
- throw new UnsupportedOperationException("An element collection containing a nested relationship mapping using a JoinTable is not supported"); //$NON-NLS-1$
+ public JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ throw this.buildJoinTableUnsupportedException();
+ }
+
+ protected UnsupportedOperationException buildJoinTableUnsupportedException() {
+ return new UnsupportedOperationException("An element collection containing a nested relationship mapping using a join table is not supported"); //$NON-NLS-1$
}
}
@@ -1463,8 +1474,8 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
public EList<XmlAttributeOverride> getXmlOverrides() {
@@ -1475,12 +1486,12 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new AttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new AttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
@@ -1496,8 +1507,8 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
}
public Iterator<String> allOverridableNames() {
- TypeMapping typeMapping = this.getOverridableTypeMapping();
- return (typeMapping != null) ? typeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
+ TypeMapping overriddenTypeMapping = this.getOverridableTypeMapping();
+ return (overriddenTypeMapping != null) ? overriddenTypeMapping.allOverridableAttributeNames() : EmptyIterator.<String>instance();
}
public EList<XmlAttributeOverride> getXmlOverrides() {
@@ -1508,12 +1519,12 @@ public abstract class AbstractOrmElementCollectionMapping2_0<X extends XmlElemen
return MappingTools.resolveOverriddenColumn(this.getOverridableTypeMapping(), attributeName);
}
- public JptValidator buildValidator(Override_ override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (AttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
+ public JptValidator buildOverrideValidator(ReadOnlyOverride override, OverrideContainer container, OverrideTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, (AttributeOverrideContainer) container, textRangeResolver, new EmbeddableOverrideDescriptionProvider());
}
- public JptValidator buildColumnValidator(Override_ override, BaseColumn column, BaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
- return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (AttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyOverride override, ReadOnlyBaseColumn column, ReadOnlyBaseColumn.Owner columnOwner, BaseColumnTextRangeResolver textRangeResolver) {
+ return new MapKeyAttributeOverrideColumnValidator(this.getPersistentAttribute(), (ReadOnlyAttributeOverride) override, column, textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmCollectionTable2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmCollectionTable2_0.java
index 9e8b3ffbdc..62b9f779e2 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmCollectionTable2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmCollectionTable2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -14,12 +14,12 @@ import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator;
import org.eclipse.jpt.jpa.core.context.Entity;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.NamedColumn;
import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyJoinColumn;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
@@ -46,7 +46,7 @@ public class GenericOrmCollectionTable2_0
}
@Override
- protected OrmJoinColumn.Owner buildJoinColumnOwner() {
+ protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() {
return new JoinColumnOwner();
}
@@ -114,7 +114,7 @@ public class GenericOrmCollectionTable2_0
* these point at the source/owning entity
*/
protected class JoinColumnOwner
- implements OrmJoinColumn.Owner
+ implements OrmReadOnlyJoinColumn.Owner
{
protected JoinColumnOwner() {
super();
@@ -199,8 +199,8 @@ public class GenericOrmCollectionTable2_0
return GenericOrmCollectionTable2_0.this.getElementCollectionMapping();
}
- public JptValidator buildColumnValidator(NamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
- return new JoinColumnValidator(this.getPersistentAttribute(), (JoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
+ public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) {
+ return new JoinColumnValidator(this.getPersistentAttribute(), (ReadOnlyJoinColumn) column, this, (JoinColumnTextRangeResolver) textRangeResolver, new CollectionTableTableDescriptionProvider());
}
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmDerivedIdentity2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmDerivedIdentity2_0.java
index 1312c10b27..11238fe493 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmDerivedIdentity2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmDerivedIdentity2_0.java
@@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.orm;
import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.XmlContextNode;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
import org.eclipse.jpt.jpa.core.jpa2.context.DerivedIdentityStrategy2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmDerivedIdentity2_0;
@@ -161,8 +162,9 @@ public class GenericOrmDerivedIdentity2_0
@Override
public void validate(List<IMessage> messages, IReporter reporter) {
super.validate(messages, reporter);
- this.idStrategy.validate(messages, reporter);
- this.mapsIdStrategy.validate(messages, reporter);
+ if (this.strategy != null) {
+ ((XmlContextNode) this.strategy).validate(messages, reporter);
+ }
}
public TextRange getValidationTextRange() {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmMapsIdDerivedIdentityStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmMapsIdDerivedIdentityStrategy2_0.java
index 3578c83fe1..3b41082bab 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmMapsIdDerivedIdentityStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmMapsIdDerivedIdentityStrategy2_0.java
@@ -13,6 +13,7 @@ import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
import org.eclipse.jpt.common.utility.internal.ArrayTools;
import org.eclipse.jpt.common.utility.internal.CollectionTools;
+import org.eclipse.jpt.common.utility.internal.NotNullFilter;
import org.eclipse.jpt.common.utility.internal.Tools;
import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
@@ -40,13 +41,13 @@ public class GenericOrmMapsIdDerivedIdentityStrategy2_0
extends AbstractOrmXmlContextNode
implements OrmMapsIdDerivedIdentityStrategy2_0
{
- protected String specifiedValue;
- // no default value
+ protected String specifiedIdAttributeName;
+ // no default
public GenericOrmMapsIdDerivedIdentityStrategy2_0(OrmDerivedIdentity2_0 parent) {
super(parent);
- this.specifiedValue = this.getXmlMapping().getMapsId();
+ this.specifiedIdAttributeName = this.getXmlMapping().getMapsId();
}
@@ -55,38 +56,38 @@ public class GenericOrmMapsIdDerivedIdentityStrategy2_0
@Override
public void synchronizeWithResourceModel() {
super.synchronizeWithResourceModel();
- this.setSpecifiedValue_(this.getXmlMapping().getMapsId());
+ this.setSpecifiedIdAttributeName_(this.getXmlMapping().getMapsId());
}
- // ********** value **********
+ // ********** ID attribute name **********
- public String getValue() {
- // there is no default value
- return this.specifiedValue;
+ public String getIdAttributeName() {
+ // there is no default
+ return this.specifiedIdAttributeName;
}
- public String getSpecifiedValue() {
- return this.specifiedValue;
+ public String getSpecifiedIdAttributeName() {
+ return this.specifiedIdAttributeName;
}
- public void setSpecifiedValue(String value) {
- this.setSpecifiedValue_(value);
- this.getXmlMapping().setMapsId(value);
+ public void setSpecifiedIdAttributeName(String idAttributeName) {
+ this.setSpecifiedIdAttributeName_(idAttributeName);
+ this.getXmlMapping().setMapsId(idAttributeName);
}
- protected void setSpecifiedValue_(String value) {
- String old = this.specifiedValue;
- this.specifiedValue = value;
- this.firePropertyChanged(SPECIFIED_VALUE_PROPERTY, old, value);
+ protected void setSpecifiedIdAttributeName_(String idAttributeName) {
+ String old = this.specifiedIdAttributeName;
+ this.specifiedIdAttributeName = idAttributeName;
+ this.firePropertyChanged(SPECIFIED_ID_ATTRIBUTE_NAME_PROPERTY, old, idAttributeName);
}
- public String getDefaultValue() {
- // there is no way to have default values in xml
+ public String getDefaultIdAttributeName() {
+ // there is no way to have a default in xml
return null;
}
- public boolean usesDefaultValue() {
+ public boolean defaultIdAttributeNameIsPossible() {
return false;
}
@@ -118,69 +119,67 @@ public class GenericOrmMapsIdDerivedIdentityStrategy2_0
return CollectionTools.collection(this.getPersistentAttribute().getOwningTypeMapping().allAttributeMappings());
}
- public Iterable<String> getSortedValueChoices() {
- return CollectionTools.sort(this.getAllAttributeMappingChoiceNames());
+ public Iterable<String> getSortedCandidateIdAttributeNames() {
+ return CollectionTools.sort(this.getNonNullCandidateIdAttributeNames());
}
- protected Iterable<String> getAllAttributeMappingChoiceNames() {
- return new FilteringIterable<String>(
- new TransformationIterable<AttributeMapping, String>(this.getAllAttributeMappingChoices()) {
- @Override
- protected String transform(AttributeMapping mapping) {
- return mapping.getName();
- }
- }) {
+ protected Iterable<String> getNonNullCandidateIdAttributeNames() {
+ return new FilteringIterable<String>(this.getCandidateIdAttributeNames(), NotNullFilter.<String>instance());
+ }
+
+ protected Iterable<String> getCandidateIdAttributeNames() {
+ return new TransformationIterable<AttributeMapping, String>(this.getCandidateIdAttributeMappings()) {
@Override
- protected boolean accept(String o) {
- return o != null;
+ protected String transform(AttributeMapping mapping) {
+ return mapping.getName();
}
};
}
- protected Iterable<AttributeMapping> getAllAttributeMappingChoices() {
- return this.buildAttributeMappingChoices(this.getAllAttributeMappings());
+ protected Iterable<AttributeMapping> getCandidateIdAttributeMappings() {
+ return this.buildCandidateIdAttributeMappings(this.getAllAttributeMappings());
}
- protected Iterable<AttributeMapping> buildAttributeMappingChoices(Iterable<AttributeMapping> attributeMappings) {
- return new CompositeIterable<AttributeMapping>(this.getAttributeMappingChoiceIterables(attributeMappings));
+ protected Iterable<AttributeMapping> buildCandidateIdAttributeMappings(Iterable<AttributeMapping> attributeMappings) {
+ return new CompositeIterable<AttributeMapping>(this.getCandidateIdAttributeMappingLists(attributeMappings));
}
- /**
- * @see #getEmbeddedIdMappingChoiceIterable(EmbeddedIdMapping)
- */
- protected Iterable<Iterable<AttributeMapping>> getAttributeMappingChoiceIterables(Iterable<AttributeMapping> availableMappings) {
- return new TransformationIterable<AttributeMapping, Iterable<AttributeMapping>>(availableMappings) {
+ protected Iterable<Iterable<AttributeMapping>> getCandidateIdAttributeMappingLists(Iterable<AttributeMapping> attributeMappings) {
+ return new TransformationIterable<AttributeMapping, Iterable<AttributeMapping>>(attributeMappings) {
@Override
- protected Iterable<AttributeMapping> transform(AttributeMapping o) {
- return Tools.valuesAreEqual(o.getKey(), MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) ?
- GenericOrmMapsIdDerivedIdentityStrategy2_0.this.getEmbeddedIdMappingChoiceIterable((EmbeddedIdMapping) o) :
- new SingleElementIterable<AttributeMapping>(o);
+ protected Iterable<AttributeMapping> transform(AttributeMapping attributeMapping) {
+ return Tools.valuesAreEqual(attributeMapping.getKey(), MappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) ?
+ this.getEmbeddedIdMappingChoiceIterable((EmbeddedIdMapping) attributeMapping) :
+ new SingleElementIterable<AttributeMapping>(attributeMapping);
+ }
+
+ /**
+ * Convert the specified mapping into a collection of its "mappings".
+ * Typically, this collection will include just the mapping itself;
+ * but, if the mapping is an embedded ID, this collection will include
+ * the mapping itself plus all the mappings of its target embeddable.
+ *
+ * NB: Recursion is unnecessary.
+ */
+ protected Iterable<AttributeMapping> getEmbeddedIdMappingChoiceIterable(EmbeddedIdMapping mapping) {
+ Embeddable embeddable = mapping.getTargetEmbeddable();
+ if (embeddable == null) {
+ return new SingleElementIterable<AttributeMapping>(mapping);
+ }
+ return new CompositeIterable<AttributeMapping>(
+ mapping,
+ CollectionTools.collection(embeddable.allAttributeMappings())
+ );
}
};
}
- /**
- * Convert the specified mapping into a collection of its "mappings".
- * Typically, this collection will include just the mapping itself;
- * but, if the mapping is an embedded ID, this collection will include
- * the mapping itself plus all the mappings of its target embeddable.
- */
- protected Iterable<AttributeMapping> getEmbeddedIdMappingChoiceIterable(EmbeddedIdMapping mapping) {
- Embeddable embeddable = mapping.getTargetEmbeddable();
- if (embeddable == null) {
- return new SingleElementIterable<AttributeMapping>(mapping);
- }
- return new CompositeIterable<AttributeMapping>(
- mapping,
- CollectionTools.collection(embeddable.allAttributeMappings())
- );
- }
- public AttributeMapping getResolvedAttributeMappingValue() {
- String value = this.getValue();
- if (value != null) {
- for (AttributeMapping mapping : this.getAllAttributeMappingChoices()) {
- if (value.equals(mapping.getName())) {
+ public AttributeMapping getDerivedIdAttributeMapping() {
+ String idAttributeName = this.getIdAttributeName();
+ if (idAttributeName != null) {
+ for (AttributeMapping mapping : this.getCandidateIdAttributeMappings()) {
+ if (idAttributeName.equals(mapping.getName())) {
return mapping;
}
}
@@ -201,7 +200,7 @@ public class GenericOrmMapsIdDerivedIdentityStrategy2_0
}
public void initializeFrom(OrmMapsIdDerivedIdentityStrategy2_0 oldStrategy) {
- this.setSpecifiedValue(oldStrategy.getSpecifiedValue());
+ this.setSpecifiedIdAttributeName(oldStrategy.getSpecifiedIdAttributeName());
}
@@ -247,21 +246,21 @@ public class GenericOrmMapsIdDerivedIdentityStrategy2_0
}
protected void validateMapsId_(List<IMessage> messages) {
- // test whether value can be resolved
- AttributeMapping attributeMapping = this.getResolvedAttributeMappingValue();
+ // test whether id attribute name can be resolved
+ AttributeMapping attributeMapping = this.getDerivedIdAttributeMapping();
if (attributeMapping == null) {
- // there is no defaulting, so only use the 'resolved' error, even if the value is empty string
- messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_NOT_RESOLVED, new String[] {this.getValue()}));
+ // there is no defaulting, so only use the 'resolved' error, even if the name is an empty string
+ messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_NOT_RESOLVED, new String[] {this.getIdAttributeName()}));
} else {
// test whether attribute mapping is allowable
if ( ! CollectionTools.contains(this.getValidAttributeMappingChoices(), attributeMapping)) {
- messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_INVALID, new String[] {this.getValue()}));
+ messages.add(this.buildMessage(JpaValidationMessages.MAPS_ID_VALUE_INVALID, new String[] {this.getIdAttributeName()}));
}
}
}
protected Iterable<AttributeMapping> getValidAttributeMappingChoices() {
- return this.buildAttributeMappingChoices(this.getIdAttributeMappings());
+ return this.buildCandidateIdAttributeMappings(this.getIdAttributeMappings());
}
protected IMessage buildMessage(String msgID, String[] parms) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmOverrideJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmOverrideJoinTableRelationshipStrategy2_0.java
index 12ca663dbf..ce3c95d40b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmOverrideJoinTableRelationshipStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmOverrideJoinTableRelationshipStrategy2_0.java
@@ -10,8 +10,9 @@
package org.eclipse.jpt.jpa.core.internal.jpa2.context.orm;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.Table;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
@@ -43,19 +44,18 @@ public class GenericOrmOverrideJoinTableRelationshipStrategy2_0
}
public TextRange getValidationTextRange() {
- TextRange textRange = this.getRelationship().getAssociationOverride().getXmlOverride().getValidationTextRange();
- return (textRange != null) ? textRange : this.getRelationship().getValidationTextRange();
+ return this.getRelationship().getValidationTextRange();
}
- public JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.getRelationship().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableValidator((ReadOnlyJoinTable) table, textRangeResolver);
}
- public JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
- return this.getRelationship().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
}
- public JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver) {
- return this.getRelationship().buildTableValidator(table, textRangeResolver);
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0.java
index 7d10e7a916..79133360e8 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0.java
@@ -9,25 +9,33 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.jpa2.context.orm;
+import java.util.List;
import org.eclipse.jpt.common.core.utility.TextRange;
-import org.eclipse.jpt.jpa.core.context.JoinTable;
-import org.eclipse.jpt.jpa.core.context.JoinTableRelationship;
-import org.eclipse.jpt.jpa.core.context.JoinTableRelationshipStrategy;
-import org.eclipse.jpt.jpa.core.context.Relationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTable;
-import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinTableRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmVirtualOverrideRelationship2_0;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
public class GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0
extends AbstractOrmXmlContextNode
- implements OrmVirtualJoinTableRelationshipStrategy
+ implements OrmVirtualJoinTableRelationshipStrategy, ReadOnlyTable.Owner
{
protected OrmVirtualJoinTable joinTable;
- public GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0(OrmVirtualJoinTableRelationship parent) {
+ public GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0(OrmVirtualOverrideRelationship2_0 parent) {
super(parent);
}
@@ -54,7 +62,7 @@ public class GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0
}
protected void updateJoinTable() {
- JoinTable overriddenJoinTable = this.getOverriddenJoinTable();
+ ReadOnlyJoinTable overriddenJoinTable = this.getOverriddenJoinTable();
if (overriddenJoinTable == null) {
if (this.joinTable != null) {
this.setJoinTable(null);
@@ -68,38 +76,38 @@ public class GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0
}
}
- protected JoinTable getOverriddenJoinTable() {
- JoinTableRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
+ protected ReadOnlyJoinTable getOverriddenJoinTable() {
+ ReadOnlyJoinTableRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy();
return (overriddenStrategy == null) ? null : overriddenStrategy.getJoinTable();
}
- protected OrmVirtualJoinTable buildJoinTable(JoinTable overriddenJoinTable) {
- return this.getContextNodeFactory().buildOrmVirtualJoinTable(this, overriddenJoinTable);
+ protected OrmVirtualJoinTable buildJoinTable(ReadOnlyJoinTable overriddenJoinTable) {
+ return this.getContextNodeFactory().buildOrmVirtualJoinTable(this, this, overriddenJoinTable);
}
// ********** misc **********
@Override
- public OrmVirtualJoinTableRelationship getParent() {
- return (OrmVirtualJoinTableRelationship) super.getParent();
+ public OrmVirtualOverrideRelationship2_0 getParent() {
+ return (OrmVirtualOverrideRelationship2_0) super.getParent();
}
- public OrmVirtualJoinTableRelationship getRelationship() {
+ public OrmVirtualOverrideRelationship2_0 getRelationship() {
return this.getParent();
}
- protected JoinTableRelationshipStrategy getOverriddenStrategy() {
- JoinTableRelationship relationship = this.getOverriddenJoinTableRelationship();
+ protected ReadOnlyJoinTableRelationshipStrategy getOverriddenStrategy() {
+ ReadOnlyJoinTableRelationship relationship = this.getOverriddenJoinTableRelationship();
return (relationship == null) ? null : relationship.getJoinTableStrategy();
}
- protected JoinTableRelationship getOverriddenJoinTableRelationship() {
- Relationship relationship = this.resolveOverriddenRelationship();
- return (relationship instanceof JoinTableRelationship) ? (JoinTableRelationship) relationship : null;
+ protected ReadOnlyJoinTableRelationship getOverriddenJoinTableRelationship() {
+ ReadOnlyRelationship relationship = this.resolveOverriddenRelationship();
+ return (relationship instanceof ReadOnlyJoinTableRelationship) ? (ReadOnlyJoinTableRelationship) relationship : null;
}
- protected Relationship resolveOverriddenRelationship() {
+ protected ReadOnlyRelationship resolveOverriddenRelationship() {
return this.getRelationship().resolveOverriddenRelationship();
}
@@ -114,7 +122,31 @@ public class GenericOrmVirtualOverrideJoinTableRelationshipStrategy2_0
// ********** validation **********
+ @Override
+ public void validate(List<IMessage> messages, IReporter reporter) {
+ super.validate(messages, reporter);
+ if (this.joinTable != null) {
+ this.joinTable.validate(messages, reporter);
+ }
+ }
+
+ public boolean validatesAgainstDatabase() {
+ return this.getRelationship().getTypeMapping().validatesAgainstDatabase();
+ }
+
public TextRange getValidationTextRange() {
return this.getRelationship().getValidationTextRange();
}
+
+ public JptValidator buildTableValidator(ReadOnlyTable table, TableTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableValidator((ReadOnlyJoinTable) table, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableJoinColumnValidator(column, owner, textRangeResolver);
+ }
+
+ public JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver) {
+ return this.getRelationship().buildJoinTableInverseJoinColumnValidator(column, owner, textRangeResolver);
+ }
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java
index 6da85e8058..423fe0c947 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/orm/GenericOrmXml2_0ContextNodeFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -19,11 +19,11 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmOrderable;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType;
import org.eclipse.jpt.jpa.core.context.orm.OrmSequenceGenerator;
-import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer.Owner;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNodeFactory;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmOrderable;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCacheable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCacheableHolder2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCollectionTable2_0;
@@ -66,7 +66,7 @@ public class GenericOrmXml2_0ContextNodeFactory
return new GenericOrmSequenceGenerator2_0(parent, resourceSequenceGenerator);
}
- public OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, Owner owner) {
+ public OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, OrmAssociationOverrideContainer2_0.Owner owner) {
return new GenericOrmAssociationOverrideContainer(parent, owner);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java
index c4a24d6350..e71255c5ca 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/validation/JpaValidationMessages.java
@@ -10,6 +10,7 @@
package org.eclipse.jpt.jpa.core.internal.validation;
@SuppressWarnings("nls")
+// TODO bjv rename to JptJpaValidationMessages
public interface JpaValidationMessages {
public static final String BUNDLE_NAME = "jpa_validation";
@@ -157,7 +158,8 @@ public interface JpaValidationMessages {
public static final String PRIMARY_KEY_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS = "PRIMARY_KEY_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS";
public static final String PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_NAME = "PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_NAME";
public static final String PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_REFERENCED_COLUMN_NAME = "PRIMARY_KEY_JOIN_COLUMN_UNRESOLVED_REFERENCED_COLUMN_NAME";
- //***Implied Attribute***
+
+ // virtual attribute
public static final String VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME";
public static final String VIRTUAL_ATTRIBUTE_COLUMN_TABLE_NOT_VALID="VIRTUAL_ATTRIBUTE_COLUMN_TABLE_NOT_VALID";
public static final String VIRTUAL_ATTRIBUTE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS = "VIRTUAL_ATTRIBUTE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_JOIN_COLUMNS";
@@ -191,7 +193,7 @@ public interface JpaValidationMessages {
public static final String ASSOCIATION_OVERRIDE_INVALID_NAME = "ASSOCIATION_OVERRIDE_INVALID_NAME";
public static final String ATTRIBUTE_OVERRIDE_INVALID_NAME = "ATTRIBUTE_OVERRIDE_INVALID_NAME";
public static final String ATTRIBUTE_OVERRIDE_INVALID_TYPE = "ATTRIBUTE_OVERRIDE_INVALID_TYPE";
- public static final String ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED = "ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED";
+ public static final String ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED = "ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED";
public static final String VIRTUAL_ASSOCIATION_OVERRIDE_INVALID_NAME = "VIRTUAL_ASSOCIATION_OVERRIDE_INVALID_NAME";
public static final String VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS = "VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS";
public static final String VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS = "VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS";
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/JpaFactory2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/JpaFactory2_0.java
index ebf2260b44..b14f32b336 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/JpaFactory2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/JpaFactory2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -16,9 +16,9 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaOrderable;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelSourceType;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0.Owner;
@@ -78,7 +78,7 @@ public interface JpaFactory2_0
JavaOrphanRemovable2_0 buildJavaOrphanRemoval(JavaOrphanRemovalHolder2_0 parent);
- JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaNamedColumn.Owner owner);
+ JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaReadOnlyNamedColumn.Owner owner);
JavaCollectionTable2_0 buildJavaCollectionTable(JavaElementCollectionMapping2_0 parent, Table.Owner owner);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/AssociationOverrideContainer2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/AssociationOverrideContainer2_0.java
new file mode 100644
index 0000000000..b7050489d9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/AssociationOverrideContainer2_0.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context;
+
+import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyTable;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+
+/**
+ * JPA 2.0
+ * Association override container.
+ * Used by entities, embedded mappings, and element collection mappings.
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface AssociationOverrideContainer2_0
+ extends AssociationOverrideContainer
+{
+ JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+
+ // ********** owner **********
+
+ interface Owner
+ extends AssociationOverrideContainer.Owner
+ {
+ JptValidator buildJoinTableValidator(ReadOnlyAssociationOverride override, ReadOnlyTable table, TableTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyAssociationOverride override, ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappedByRelationshipMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/DerivableIdMapping2_0.java
index 650dd4c9f1..071e4a85d3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappedByRelationshipMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/DerivableIdMapping2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -18,21 +18,21 @@ package org.eclipse.jpt.jpa.core.jpa2.context;
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
*/
-public interface MappedByRelationshipMapping2_0
+public interface DerivableIdMapping2_0
extends AttributeMapping2_0
{
/**
- * Return whether the ID (or embedded ID) mapping is mapped by a
+ * Return whether the ID (or embedded ID) mapping is derived from a
* relationship; i.e. a relationship maps the ID using the
* <code>@MapsId</code> annotation.
* <p>
- * <strong>NB:</strong> There can be several relationships
+ * <strong>NB:</strong> There can be several relationships that map the ID
* (erroneously, of course).
*/
- boolean isMappedByRelationship();
+ boolean isDerived();
/**
- * Property string associated with changes to the mapped by relationship
+ * Property string associated with changes to the derivable flag.
*/
- final String MAPPED_BY_RELATIONSHIP_PROPERTY = "mappedByRelationship"; //$NON-NLS-1$
+ final String DERIVED_PROPERTY = "derived"; //$NON-NLS-1$
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/EmbeddedIdMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/EmbeddedIdMapping2_0.java
index 1612665a3a..353893ab8a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/EmbeddedIdMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/EmbeddedIdMapping2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -24,7 +24,7 @@ import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping;
* @since 2.3
*/
public interface EmbeddedIdMapping2_0
- extends EmbeddedIdMapping, MappedByRelationshipMapping2_0
+ extends EmbeddedIdMapping, DerivableIdMapping2_0
{
// combine various interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/IdMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/IdMapping2_0.java
index f72838c729..57ff8da524 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/IdMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/IdMapping2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 Oracle. All rights reserved.
+ * Copyright (c) 2010, 2011 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.
@@ -24,7 +24,7 @@ import org.eclipse.jpt.jpa.core.context.IdMapping;
* @since 2.3
*/
public interface IdMapping2_0
- extends IdMapping, MappedByRelationshipMapping2_0
+ extends IdMapping, DerivableIdMapping2_0
{
// combine various interfaces
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappingRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappingRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..a3e534401f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MappingRelationshipStrategy2_0.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context;
+
+import org.eclipse.jpt.jpa.core.context.AssociationOverride;
+import org.eclipse.jpt.jpa.core.context.MappingRelationship;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.context.RelationshipMapping;
+import org.eclipse.jpt.jpa.core.context.RelationshipStrategy;
+
+/**
+ * Strategy describing how two entities are joined via a
+ * {@link RelationshipMapping}:<ul>
+ * <li>join column
+ * <li>join table
+ * <li>"mapped by"
+ * <li>primary key join column
+ * </ul>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ *
+ * @see RelationshipMapping
+ * @see AssociationOverride
+ * @see MappingRelationship
+ */
+public interface MappingRelationshipStrategy2_0
+ extends RelationshipStrategy
+{
+ /**
+ * Select from the specified override relationship which of its strategies
+ * is the override strategy (<em>join column</em> or <em>join table</em>).
+ * An association override can only override the same strategy as the
+ * strategy used by its overridden mapping (i.e. if the overridden mapping
+ * uses the <em>join column</em> strategy, the association override must
+ * also use the <em>join column</em> strategy; it cannot change the strategy
+ * to <em>join table</em>).
+ *
+ * Return <code>null</code> if the override relationship cannot be
+ * determined (typically because the association override's name does not
+ * match the name of an appropriate attribute mapping in the overridden
+ * mapped superclass or embeddable type).
+ */
+ ReadOnlyRelationshipStrategy selectOverrideStrategy(ReadOnlyOverrideRelationship2_0 overrideRelationship);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MapsIdDerivedIdentityStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MapsIdDerivedIdentityStrategy2_0.java
index d5309c83e6..57d37ba4cc 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MapsIdDerivedIdentityStrategy2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/MapsIdDerivedIdentityStrategy2_0.java
@@ -26,57 +26,56 @@ import org.eclipse.jpt.jpa.core.context.AttributeMapping;
public interface MapsIdDerivedIdentityStrategy2_0
extends DerivedIdentityStrategy2_0
{
-// TODO bjv rename value to attributeName
/**
- * Return the specified attribute name, or in its absence, the default
- * attribute name. This the name of the ID attribute the relationship
+ * Return the specified ID attribute name or, in its absence, the default
+ * ID attribute name. This the name of the ID attribute the relationship
* mapping also maps (e.g. a Child's parent mapping also maps part of
* the Child's primary key, the parent ID).
*/
- String getValue();
+ String getIdAttributeName();
/**
- * String associated with changes to the specified value property of this object
+ * String associated with changes to the specified ID attribute name property.
*/
- String SPECIFIED_VALUE_PROPERTY = "specifiedValue"; //$NON-NLS-1$
+ String SPECIFIED_ID_ATTRIBUTE_NAME_PROPERTY = "specifiedIdAttributeName"; //$NON-NLS-1$
/**
- * Return the specified attribute name.
+ * Return the specified ID attribute name.
* Return <code>null</code> if no name is specified.
*/
- String getSpecifiedValue();
+ String getSpecifiedIdAttributeName();
/**
* Set the specified attribute name.
*/
- void setSpecifiedValue(String value);
+ void setSpecifiedIdAttributeName(String idAttributeName);
/**
* Return whether a default value is ever used.
* (In some cases, there can be no default.)
*/
- boolean usesDefaultValue();
+ boolean defaultIdAttributeNameIsPossible();
/**
- * String associated with changes to the default value property of this object
+ * String associated with changes to the default ID attribute name property.
*/
- String DEFAULT_VALUE_PROPERTY = "defaultValue"; //$NON-NLS-1$
+ String DEFAULT_ID_ATTRIBUTE_NAME_PROPERTY = "defaultIdAttributeName"; //$NON-NLS-1$
/**
- * Return the default attribute name.
+ * Return the default ID attribute name.
*/
- String getDefaultValue();
+ String getDefaultIdAttributeName();
/**
- * Return a sorted list of possible attribute names.
+ * Return a sorted list of candidate ID attribute names.
*/
- Iterable<String> getSortedValueChoices();
+ Iterable<String> getSortedCandidateIdAttributeNames();
/**
- * Return attribute mapping referenced by the attribute name,
+ * Return attribute mapping referenced by the ID attribute name,
* which may be a mapping on the entity
* or a mapping within the embeddable mapping referenced by the entity's
* embedded ID mapping.
*/
- AttributeMapping getResolvedAttributeMappingValue();
+ AttributeMapping getDerivedIdAttributeMapping();
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyAssociationOverride2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyAssociationOverride2_0.java
new file mode 100644
index 0000000000..ca67250ac0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyAssociationOverride2_0.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context;
+
+import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
+
+/**
+ * JPA 2.0
+ * Read-only association override
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface ReadOnlyAssociationOverride2_0
+ extends ReadOnlyAssociationOverride
+{
+ JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyOverrideRelationship2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyOverrideRelationship2_0.java
index 14d0aceef3..da67243391 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyOverrideRelationship2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/ReadOnlyOverrideRelationship2_0.java
@@ -10,11 +10,16 @@
package org.eclipse.jpt.jpa.core.jpa2.context;
import org.eclipse.jpt.jpa.core.context.AssociationOverride;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable;
import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.ReadOnlyOverrideRelationship;
+import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
+import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
+import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
/**
- * Association override relationship
+ * JPA 2.0 association override relationship
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
@@ -28,5 +33,9 @@ public interface ReadOnlyOverrideRelationship2_0
extends ReadOnlyOverrideRelationship,
ReadOnlyJoinTableRelationship
{
- // add join table support to JPA 1.0 association override
+ JptValidator buildJoinTableJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableInverseJoinColumnValidator(ReadOnlyJoinColumn column, ReadOnlyJoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
+
+ JptValidator buildJoinTableValidator(ReadOnlyJoinTable table, TableTextRangeResolver textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/SingleRelationshipMapping2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/SingleRelationshipMapping2_0.java
index 6fb656dae7..a601c7215a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/SingleRelationshipMapping2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/SingleRelationshipMapping2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -12,7 +12,7 @@ package org.eclipse.jpt.jpa.core.jpa2.context;
import org.eclipse.jpt.jpa.core.context.SingleRelationshipMapping;
/**
- * JPA 2.0 single (m:1, 1:2) mapping
+ * JPA 2.0 single relationship (m:1, 1:1) mapping
* <p>
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/VirtualOverrideRelationship2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/VirtualOverrideRelationship2_0.java
index 5f2cb9985b..a490a8d03f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/VirtualOverrideRelationship2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/VirtualOverrideRelationship2_0.java
@@ -26,5 +26,5 @@ public interface VirtualOverrideRelationship2_0
VirtualJoinTableRelationship,
ReadOnlyOverrideRelationship2_0
{
- // combine interfaces
+ // add join table support to JPA 1.0 association override
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverride2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverride2_0.java
new file mode 100644
index 0000000000..6516652a4e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverride2_0.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyAssociationOverride2_0;
+
+/**
+ * JPA 2.0
+ * Java <em>specified</em> association override
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaAssociationOverride2_0
+ extends JavaAssociationOverride, ReadOnlyAssociationOverride2_0
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverrideContainer2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverrideContainer2_0.java
new file mode 100644
index 0000000000..945a0d9896
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAssociationOverrideContainer2_0.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
+import org.eclipse.jpt.jpa.core.jpa2.context.AssociationOverrideContainer2_0;
+
+/**
+ * JPA 2.0
+ * Java association override container
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaAssociationOverrideContainer2_0
+ extends JavaAssociationOverrideContainer, JavaOverrideContainer2_0, AssociationOverrideContainer2_0
+{
+ // combine interfaces
+
+
+ // ********** owner **********
+
+ interface Owner
+ extends JavaAssociationOverrideContainer.Owner, JavaOverrideContainer2_0.Owner, AssociationOverrideContainer2_0.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAttributeOverrideContainer2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAttributeOverrideContainer2_0.java
new file mode 100644
index 0000000000..9103d549a4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaAttributeOverrideContainer2_0.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeOverrideContainer;
+
+/**
+ * JPA 2.0
+ * Java attribute override container
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaAttributeOverrideContainer2_0
+ extends JavaAttributeOverrideContainer, JavaOverrideContainer2_0
+{
+ // combine interfaces
+
+
+ // ********** owner **********
+
+ interface Owner
+ extends JavaAttributeOverrideContainer.Owner, JavaOverrideContainer2_0.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinColumnRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinColumnRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..b65c8d46dd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinColumnRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaJoinColumnRelationshipStrategy;
+
+/**
+ * Java mapping join column relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaMappingJoinColumnRelationshipStrategy2_0
+ extends JavaMappingRelationshipStrategy2_0, JavaJoinColumnRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinTableRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..5d8c7c7d28
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingJoinTableRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaJoinTableRelationshipStrategy;
+
+/**
+ * Java mapping join table relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaMappingJoinTableRelationshipStrategy2_0
+ extends JavaMappingRelationshipStrategy2_0, JavaJoinTableRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingMappedByRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingMappedByRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..48afe663f4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingMappedByRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaMappedByRelationshipStrategy;
+
+/**
+ * Java mapping "mapped by" relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaMappingMappedByRelationshipStrategy2_0
+ extends JavaMappingRelationshipStrategy2_0, JavaMappedByRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..78f96e9e62
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumnRelationshipStrategy;
+
+/**
+ * Java mapping primary key join column relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0
+ extends JavaMappingRelationshipStrategy2_0, JavaPrimaryKeyJoinColumnRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..b9963e3400
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaMappingRelationshipStrategy2_0.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+
+/**
+ * Java mapping relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaMappingRelationshipStrategy2_0
+ extends MappingRelationshipStrategy2_0, JavaRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaOverrideContainer2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaOverrideContainer2_0.java
new file mode 100644
index 0000000000..b38d902a8f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaOverrideContainer2_0.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaOverrideContainer;
+
+/**
+ * JPA 2.0
+ * Java attribute or association override container
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaOverrideContainer2_0
+ extends JavaOverrideContainer
+{
+ /**
+ * Return a prefix (<em>without</em> the following <code>'.'</code>)
+ * that may be prepended to the override name.
+ * Return <code>null</code> if no prefix is supported.
+ * <p>
+ * JPA 2.0 supports the pre-defined prefixes
+ * <code>"value"</code> and <code>"key"</code>.
+ */
+ // TODO better name?
+ String getPossiblePrefix();
+
+ /**
+ * Return the prefix (<em>without</em> the following <code>'.'</code>)
+ * to be prepended to the override name.
+ */
+ // TODO better name?
+ String getWritePrefix();
+
+
+ // ********** owner **********
+
+ interface Owner
+ extends JavaOverrideContainer.Owner
+ {
+ /**
+ * @see JavaOverrideContainer2_0#getPossiblePrefix()
+ */
+ String getPossiblePrefix();
+
+ /**
+ * @see JavaOverrideContainer2_0#getWritePrefix()
+ */
+ String getWritePrefix();
+
+ /**
+ * This is necessary for JPA 2.0 because an override annotation for an
+ * element collection can have a name with a prefix that indicates
+ * whether the override applies to element collection's embedded key or
+ * value. Return whether the specified override name, which may have a
+ * prefix, is relevant to the override container.
+ */
+ // TODO better name?
+ boolean isRelevant(String overrideName);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaVirtualAssociationOverride2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaVirtualAssociationOverride2_0.java
new file mode 100644
index 0000000000..4941d63159
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/java/JavaVirtualAssociationOverride2_0.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.java;
+
+import org.eclipse.jpt.jpa.core.context.java.JavaVirtualAssociationOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyAssociationOverride2_0;
+
+/**
+ * JPA 2.0
+ * Java <em>virtual</em> association override
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface JavaVirtualAssociationOverride2_0
+ extends JavaVirtualAssociationOverride, ReadOnlyAssociationOverride2_0
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverride2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverride2_0.java
new file mode 100644
index 0000000000..52f063f07f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverride2_0.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyAssociationOverride2_0;
+
+/**
+ * JPA 2.0
+ * <code>orm.xml</code> <em>specified</em> association override
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmAssociationOverride2_0
+ extends OrmAssociationOverride, ReadOnlyAssociationOverride2_0
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverrideContainer2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverrideContainer2_0.java
new file mode 100644
index 0000000000..8fe53d9179
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmAssociationOverrideContainer2_0.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer;
+import org.eclipse.jpt.jpa.core.jpa2.context.AssociationOverrideContainer2_0;
+
+/**
+ * JPA 2.0
+ * <code>orm.xml</code> association override container
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmAssociationOverrideContainer2_0
+ extends OrmAssociationOverrideContainer, AssociationOverrideContainer2_0
+{
+ // combine interfaces
+
+
+ // ********** owner **********
+
+ interface Owner
+ extends OrmAssociationOverrideContainer.Owner, AssociationOverrideContainer2_0.Owner
+ {
+ // combine interfaces
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinColumnRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinColumnRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..b65a3e0bef
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinColumnRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmJoinColumnRelationshipStrategy;
+
+/**
+ * <code>orm.xml</code> mapping join column relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmMappingJoinColumnRelationshipStrategy2_0
+ extends OrmMappingRelationshipStrategy2_0, OrmJoinColumnRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinTableRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinTableRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..94ae8fae9c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingJoinTableRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
+
+/**
+ * <code>orm.xml</code> mapping join table relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmMappingJoinTableRelationshipStrategy2_0
+ extends OrmMappingRelationshipStrategy2_0, OrmJoinTableRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingMappedByRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingMappedByRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..02d3e5ac1b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingMappedByRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmMappedByRelationshipStrategy;
+
+/**
+ * <code>orm.xml</code> mapping "mapped by" relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmMappingMappedByRelationshipStrategy2_0
+ extends OrmMappingRelationshipStrategy2_0, OrmMappedByRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..41f61c1970
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmPrimaryKeyJoinColumnRelationshipStrategy;
+
+/**
+ * <code>orm.xml</code> mapping primary key join column relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0
+ extends OrmMappingRelationshipStrategy2_0, OrmPrimaryKeyJoinColumnRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingRelationshipStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingRelationshipStrategy2_0.java
new file mode 100644
index 0000000000..e6f0486254
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmMappingRelationshipStrategy2_0.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmRelationshipStrategy;
+import org.eclipse.jpt.jpa.core.jpa2.context.MappingRelationshipStrategy2_0;
+
+/**
+ * <code>orm.xml</code> mapping relationship strategy
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmMappingRelationshipStrategy2_0
+ extends MappingRelationshipStrategy2_0, OrmRelationshipStrategy
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOrderColumn2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOrderColumn2_0.java
index b27ad72124..234210e4a1 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOrderColumn2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOrderColumn2_0.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -10,6 +10,7 @@
package org.eclipse.jpt.jpa.core.jpa2.context.orm;
import org.eclipse.jpt.jpa.core.context.orm.OrmNamedColumn;
+import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.jpa2.context.OrderColumn2_0;
import org.eclipse.jpt.jpa.core.resource.orm.XmlOrderColumn;
@@ -37,12 +38,10 @@ public interface OrmOrderColumn2_0
* interface allowing order columns to be used in multiple places
*/
interface Owner
- extends OrmNamedColumn.Owner
+ extends OrmReadOnlyNamedColumn.Owner
{
XmlOrderColumn getXmlColumn();
-
XmlOrderColumn buildXmlColumn();
-
void removeXmlColumn();
}
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOverrideRelationship2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOverrideRelationship2_0.java
index 6482ea2742..a3b2a6da83 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOverrideRelationship2_0.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmOverrideRelationship2_0.java
@@ -9,15 +9,9 @@
******************************************************************************/
package org.eclipse.jpt.jpa.core.jpa2.context.orm;
-import org.eclipse.jpt.jpa.core.context.JoinColumn;
-import org.eclipse.jpt.jpa.core.context.Table;
-import org.eclipse.jpt.jpa.core.context.JoinColumn.Owner;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationship;
import org.eclipse.jpt.jpa.core.context.orm.OrmJoinTableRelationshipStrategy;
import org.eclipse.jpt.jpa.core.context.orm.OrmOverrideRelationship;
-import org.eclipse.jpt.jpa.core.internal.context.JoinColumnTextRangeResolver;
-import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
-import org.eclipse.jpt.jpa.core.internal.context.TableTextRangeResolver;
import org.eclipse.jpt.jpa.core.jpa2.context.OverrideRelationship2_0;
/**
@@ -38,10 +32,4 @@ public interface OrmOverrideRelationship2_0
OrmJoinTableRelationship
{
OrmJoinTableRelationshipStrategy getJoinTableStrategy();
-
- JptValidator buildJoinTableJoinColumnValidator(JoinColumn column, JoinColumn.Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildJoinTableInverseJoinColumnValidator(JoinColumn column, Owner owner, JoinColumnTextRangeResolver textRangeResolver);
-
- JptValidator buildTableValidator(Table table, TableTextRangeResolver textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmVirtualAssociationOverride2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmVirtualAssociationOverride2_0.java
new file mode 100644
index 0000000000..53ae5e6f27
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmVirtualAssociationOverride2_0.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.jpa.core.jpa2.context.orm;
+
+import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualAssociationOverride;
+import org.eclipse.jpt.jpa.core.jpa2.context.ReadOnlyAssociationOverride2_0;
+
+/**
+ * JPA 2.0
+ * <code>orm.xml</code> <em>virtual</em> association override
+ * <p>
+ * Provisional API: This interface is part of an interim API that is still
+ * under development and expected to change significantly before reaching
+ * stability. It is available at this early stage to solicit feedback from
+ * pioneering adopters on the understanding that any code that uses this API
+ * will almost certainly be broken (repeatedly) as the API evolves.
+ */
+public interface OrmVirtualAssociationOverride2_0
+ extends OrmVirtualAssociationOverride, ReadOnlyAssociationOverride2_0
+{
+ // combine interfaces
+}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java
index b5095b430d..6c9da52217 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/context/orm/OrmXml2_0ContextNodeFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -32,9 +32,7 @@ import org.eclipse.jpt.jpa.core.resource.orm.XmlElementCollection;
public interface OrmXml2_0ContextNodeFactory
extends OrmXmlContextNodeFactory
{
- // ********** ORM Context Model **********
-
- OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, OrmAssociationOverrideContainer.Owner owner);
+ OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, OrmAssociationOverrideContainer2_0.Owner owner);
OrmDerivedIdentity2_0 buildOrmDerivedIdentity(OrmSingleRelationshipMapping2_0 parent);
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java
index 88742e4f99..ec3f88c476 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/context/orm/OrmEclipseLinkEntityImpl.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2008, 2011 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.
@@ -10,13 +10,11 @@
package org.eclipse.jpt.jpa.eclipselink.core.internal.context.orm;
import java.util.List;
-
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IType;
import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable;
import org.eclipse.jpt.common.utility.internal.iterables.SingleElementIterable;
-import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType;
import org.eclipse.jpt.jpa.core.internal.context.JptValidator;
import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmEntity;
@@ -216,7 +214,7 @@ public class OrmEclipseLinkEntityImpl
return null;
}
- return this.getEntityMappings().resolveJavaResourcePersistentType(className);
+ return this.getMappingFileRoot().resolveJavaResourcePersistentType(className);
}
protected boolean classExtractorIsFor(String typeName) {
@@ -229,10 +227,6 @@ public class OrmEclipseLinkEntityImpl
return (classExtractorType != null) && classExtractorType.isIn(packageFragment);
}
- protected EntityMappings getEntityMappings() {
- return (EntityMappings) getMappingFileRoot();
- }
-
// ********** refactoring **********
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_1/context/EclipseLinkPersistentAttributeValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_1/context/EclipseLinkPersistentAttributeValidator.java
index 4cedb13238..c4692513e6 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_1/context/EclipseLinkPersistentAttributeValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v1_1/context/EclipseLinkPersistentAttributeValidator.java
@@ -10,7 +10,7 @@
package org.eclipse.jpt.jpa.eclipselink.core.internal.v1_1.context;
import java.util.List;
-import org.eclipse.jpt.jpa.core.context.PersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.AbstractPersistentAttributeValidator;
@@ -20,7 +20,7 @@ public class EclipseLinkPersistentAttributeValidator
extends AbstractPersistentAttributeValidator
{
public EclipseLinkPersistentAttributeValidator(
- PersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver)
+ ReadOnlyPersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver)
{
super(persistentAttribute, javaPersistentAttribute, textRangeResolver);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java
index 3b38a8ab75..74646243c0 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/EclipseLink2_0JpaFactory.java
@@ -17,11 +17,11 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
import org.eclipse.jpt.jpa.core.context.java.JavaColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode;
-import org.eclipse.jpt.jpa.core.context.java.JavaNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaNamedQuery;
import org.eclipse.jpt.jpa.core.context.java.JavaOrderable;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
+import org.eclipse.jpt.jpa.core.context.java.JavaReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.core.context.java.JavaSequenceGenerator;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJavaColumn;
@@ -134,7 +134,7 @@ public class EclipseLink2_0JpaFactory
return new GenericJavaCollectionTable2_0(parent, owner);
}
- public JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaNamedColumn.Owner owner) {
+ public JavaOrderColumn2_0 buildJavaOrderColumn(JavaOrderable2_0 parent, JavaReadOnlyNamedColumn.Owner owner) {
return new GenericJavaOrderColumn2_0(parent, owner);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java
index 4b48c65b03..f2576576d7 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/internal/v2_0/context/orm/EclipseLinkOrmXml2_0ContextNodeFactory.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -18,7 +18,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmOrderable;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute;
import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType;
import org.eclipse.jpt.jpa.core.context.orm.OrmSequenceGenerator;
-import org.eclipse.jpt.jpa.core.context.orm.OrmAssociationOverrideContainer.Owner;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmAssociationOverrideContainer;
import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmOrderable;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmCacheable2_0;
@@ -30,6 +29,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmOrderColumn2
import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmOrphanRemoval2_0;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.orm.GenericOrmSequenceGenerator2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmAssociationOverrideContainer2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCacheable2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCacheableHolder2_0;
import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmCollectionTable2_0;
@@ -58,7 +58,7 @@ public class EclipseLinkOrmXml2_0ContextNodeFactory
return new OrmEclipseLinkPersistentAttribute1_1(parent, (XmlAttributeMapping) resourceMapping);
}
- public OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, Owner owner) {
+ public OrmAssociationOverrideContainer buildOrmAssociationOverrideContainer(OrmEmbeddedMapping2_0 parent, OrmAssociationOverrideContainer2_0.Owner owner) {
return new GenericOrmAssociationOverrideContainer(parent, owner);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties b/jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties
index 755aaeef5d..8e32ffa27b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/property_files/jpt_ui_validation_preferences.properties
@@ -1,5 +1,5 @@
################################################################################
-# Copyright (c) 2009, 2010 Oracle. All rights reserved.
+# Copyright (c) 2009, 2011 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.
@@ -210,7 +210,6 @@ VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_TABLE_UNRESOLVED_SCHEMA=Implied association ov
VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID=Implied attribute override table for column not valid:
VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME=Implied attribute override column cannot be resolved:
VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_NAME=Implied attribute override name cannot be resolved to an attribute:
-VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE=Implied attribute override type cannot be resolved:
VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID=Implied map key attribute override table for column is not valid:
VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME=Implied map key attribute override name cannot be resolved to an attribute
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java
index 8906affedf..60e0d85f92 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/JptUiValidationPreferenceMessages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -223,7 +223,6 @@ public class JptUiValidationPreferenceMessages {
public static String VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID;
public static String VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME;
public static String VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_NAME;
- public static String VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE;
public static String VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID;
public static String VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME;
// ---------- Implied Attributes ------------
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java
index fb29087959..e7a24c5c58 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -55,8 +55,7 @@ public class AttributeOverrideComposite extends Pane<ReadOnlyAttributeOverride>
new ColumnComposite(
this,
buildColumnHolder(),
- container,
- false
+ container
);
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java
index ddeb54c501..3003fb8e4e 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -42,25 +42,6 @@ public class ColumnComposite
super(parentPane, subjectHolder, parent, false);
}
- public ColumnComposite(
- Pane<?> parentPane,
- PropertyValueModel<? extends ReadOnlyColumn> subjectHolder,
- Composite parent,
- boolean automaticallyAlignWidgets) {
-
- super(parentPane, subjectHolder, parent, automaticallyAlignWidgets);
- }
-
- public ColumnComposite(
- Pane<?> parentPane,
- PropertyValueModel<? extends ReadOnlyColumn> subjectHolder,
- Composite parent,
- boolean automaticallyAlignWidgets,
- boolean parentManagePane) {
-
- super(parentPane, subjectHolder, parent, automaticallyAlignWidgets, parentManagePane);
- }
-
private ColumnCombo<ReadOnlyColumn> addColumnCombo(Composite container) {
@@ -96,15 +77,10 @@ public class ColumnComposite
@Override
protected Table getDbTable_() {
- Column column = this.getColumn();
+ ReadOnlyColumn column = this.getSubject();
return (column == null) ? null : column.getDbTable();
}
- protected Column getColumn() {
- ReadOnlyColumn column = this.getSubject();
- return (column instanceof Column) ? (Column) column : null;
- }
-
@Override
protected String getValue() {
return getSubject().getSpecifiedName();
@@ -256,15 +232,11 @@ public class ColumnComposite
return this.getSubject().getSpecifiedTable();
}
+ // TODO we need to listen for this list to change...
@Override
protected Iterable<String> getValues_() {
- Column column = this.getColumn();
- return (column != null) ? CollectionTools.iterable(column.candidateTableNames()) : EmptyIterable.<String> instance();
- }
-
- protected Column getColumn() {
ReadOnlyColumn column = this.getSubject();
- return (column instanceof Column) ? (Column) column : null;
+ return (column != null) ? CollectionTools.iterable(column.candidateTableNames()) : EmptyIterable.<String> instance();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java
index e71826c251..70c586a80b 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2006, 2011 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.
@@ -10,7 +10,6 @@
package org.eclipse.jpt.jpa.ui.internal.details;
import java.util.Collection;
-
import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages;
import org.eclipse.jpt.common.ui.internal.util.PaneEnabler;
import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer;
@@ -24,6 +23,7 @@ import org.eclipse.jpt.jpa.core.context.DiscriminatorColumn;
import org.eclipse.jpt.jpa.core.context.DiscriminatorType;
import org.eclipse.jpt.jpa.core.context.Entity;
import org.eclipse.jpt.jpa.core.context.NamedColumn;
+import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn;
import org.eclipse.jpt.jpa.db.Table;
import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds;
import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo;
@@ -126,8 +126,8 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> {
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
super.addPropertyNames(propertyNames);
- propertyNames.add(NamedColumn.SPECIFIED_NAME_PROPERTY);
- propertyNames.add(NamedColumn.DEFAULT_NAME_PROPERTY);
+ propertyNames.add(ReadOnlyNamedColumn.SPECIFIED_NAME_PROPERTY);
+ propertyNames.add(ReadOnlyNamedColumn.DEFAULT_NAME_PROPERTY);
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java
index 6ee91890a4..9a03f13c24 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java
@@ -291,7 +291,7 @@ public class JoinTableComposite
try {
if (selected) {
- joinTable.convertDefaultToSpecifiedInverseJoinColumn();
+ joinTable.convertDefaultInverseJoinColumnToSpecified();
setSelectedInverseJoinColumn(joinTable.specifiedInverseJoinColumns().next());
} else {
joinTable.clearSpecifiedInverseJoinColumns();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java
index 371764dbd8..0a29891768 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -304,7 +304,7 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable>
try {
if (selected) {
- referenceTable.convertDefaultToSpecifiedJoinColumn();
+ referenceTable.convertDefaultJoinColumnToSpecified();
setSelectedJoinColumn(referenceTable.specifiedJoinColumns().next());
} else {
for (int index = referenceTable.specifiedJoinColumnsSize(); --index >= 0; ) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java
index 071d0aef2c..d09688c331 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -163,33 +163,33 @@ public class DerivedIdentity2_0Pane
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
super.addPropertyNames(propertyNames);
- propertyNames.add(MapsIdDerivedIdentityStrategy2_0.DEFAULT_VALUE_PROPERTY);
- propertyNames.add(MapsIdDerivedIdentityStrategy2_0.SPECIFIED_VALUE_PROPERTY);
+ propertyNames.add(MapsIdDerivedIdentityStrategy2_0.DEFAULT_ID_ATTRIBUTE_NAME_PROPERTY);
+ propertyNames.add(MapsIdDerivedIdentityStrategy2_0.SPECIFIED_ID_ATTRIBUTE_NAME_PROPERTY);
}
@Override
protected String getValue() {
- return (getSubject() == null) ? null : getSubject().getSpecifiedValue();
+ return (getSubject() == null) ? null : getSubject().getSpecifiedIdAttributeName();
}
@Override
protected void setValue(String value) {
- if (getSubject() != null) getSubject().setSpecifiedValue(value);
+ if (getSubject() != null) getSubject().setSpecifiedIdAttributeName(value);
}
@Override
protected boolean usesDefaultValue() {
- return (getSubject() == null) ? true : getSubject().usesDefaultValue();
+ return (getSubject() != null) && getSubject().defaultIdAttributeNameIsPossible();
}
@Override
protected String getDefaultValue() {
- return (getSubject() == null) ? null : getSubject().getDefaultValue();
+ return (getSubject() == null) ? null : getSubject().getDefaultIdAttributeName();
}
@Override
protected Iterable<String> getValues() {
- return (getSubject() == null) ? EmptyIterable.<String>instance() : getSubject().getSortedValueChoices();
+ return (getSubject() == null) ? EmptyIterable.<String>instance() : getSubject().getSortedCandidateIdAttributeNames();
}
@Override
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java
index 1a1151e508..1687ff9d61 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java
@@ -1,13 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.ui.internal.jpa2.details;
import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher;
@@ -17,7 +16,7 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
import org.eclipse.jpt.jpa.core.jpa2.context.EmbeddedIdMapping2_0;
-import org.eclipse.jpt.jpa.core.jpa2.context.MappedByRelationshipMapping2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.DerivableIdMapping2_0;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@@ -45,14 +44,14 @@ public class EmbeddedIdMapping2_0MappedByRelationshipPane<T extends EmbeddedIdMa
this.mappedByRelationshipLabel = addLabel(pageBook, JptUiDetailsMessages2_0.EmbeddedIdMapping2_0MappedByRelationshipPane_label);
- new ControlSwitcher(buildIsMappedByRelationshipHolder(), buildPaneTransformer(), pageBook);
+ new ControlSwitcher(buildDerivedModel(), buildPaneTransformer(), pageBook);
}
- protected WritablePropertyValueModel<Boolean> buildIsMappedByRelationshipHolder() {
- return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), MappedByRelationshipMapping2_0.MAPPED_BY_RELATIONSHIP_PROPERTY) {
+ protected WritablePropertyValueModel<Boolean> buildDerivedModel() {
+ return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), DerivableIdMapping2_0.DERIVED_PROPERTY) {
@Override
protected Boolean buildValue_() {
- return Boolean.valueOf(this.subject.isMappedByRelationship());
+ return Boolean.valueOf(this.subject.isDerived());
}
};
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java
index 1381b5bbff..cb9ecced70 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java
@@ -1,13 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2010 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
- *******************************************************************************/
+ * Copyright (c) 2010, 2011 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.jpa.ui.internal.jpa2.details;
import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher;
@@ -17,7 +16,7 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
import org.eclipse.jpt.jpa.core.jpa2.context.IdMapping2_0;
-import org.eclipse.jpt.jpa.core.jpa2.context.MappedByRelationshipMapping2_0;
+import org.eclipse.jpt.jpa.core.jpa2.context.DerivableIdMapping2_0;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@@ -47,14 +46,14 @@ public class IdMapping2_0MappedByRelationshipPane<T extends IdMapping2_0>
this.mappedByRelationshipLabel = addLabel(pageBook, JptUiDetailsMessages2_0.IdMapping2_0MappedByRelationshipPane_label);
- new ControlSwitcher(buildIsMappedByRelationshipHolder(), buildPaneTransformer(), pageBook);
+ new ControlSwitcher(buildDerivedModel(), buildPaneTransformer(), pageBook);
}
- protected WritablePropertyValueModel<Boolean> buildIsMappedByRelationshipHolder() {
- return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), MappedByRelationshipMapping2_0.MAPPED_BY_RELATIONSHIP_PROPERTY) {
+ protected WritablePropertyValueModel<Boolean> buildDerivedModel() {
+ return new PropertyAspectAdapter<T, Boolean>(getSubjectHolder(), DerivableIdMapping2_0.DERIVED_PROPERTY) {
@Override
protected Boolean buildValue_() {
- return Boolean.valueOf(this.subject.isMappedByRelationship());
+ return Boolean.valueOf(this.subject.isDerived());
}
};
}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java
index f5601a87d1..96509d449a 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2007, 2011 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.
@@ -70,42 +70,6 @@ public class OrderColumnComposite extends Pane<OrderColumn2_0> {
super(parentPane, subjectHolder, parent, false);
}
- /**
- * Creates a new <code>ColumnComposite</code>.
- *
- * @param parentPane The parent container of this one
- * @param subjectHolder The holder of the subject <code>IColumn</code>
- * @param parent The parent container
- * @param automaticallyAlignWidgets <code>true</code> to make the widgets
- * this pane aligned with the widgets of the given parent controller;
- * <code>false</code> to not align them
- */
- public OrderColumnComposite(Pane<?> parentPane,
- PropertyValueModel<? extends OrderColumn2_0> subjectHolder,
- Composite parent,
- boolean automaticallyAlignWidgets) {
-
- super(parentPane, subjectHolder, parent, automaticallyAlignWidgets);
- }
-
- /**
- * Creates a new <code>ColumnComposite</code>.
- *
- * @param parentPane The parent container of this one
- * @param subjectHolder The holder of the subject <code>IColumn</code>
- * @param parent The parent container
- * @param automaticallyAlignWidgets <code>true</code> to make the widgets
- * this pane aligned with the widgets of the given parent controller;
- * <code>false</code> to not align them
- */
- public OrderColumnComposite(Pane<?> parentPane,
- PropertyValueModel<? extends OrderColumn2_0> subjectHolder,
- Composite parent,
- boolean automaticallyAlignWidgets,
- boolean parentManagePane) {
-
- super(parentPane, subjectHolder, parent, automaticallyAlignWidgets, parentManagePane);
- }
private ColumnCombo<OrderColumn2_0> addColumnCombo(Composite container) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java
index 4722746511..1e5b2c70fe 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -9,7 +9,6 @@
******************************************************************************/
package org.eclipse.jpt.jpa.ui.internal.jpa2.details;
-import org.eclipse.jpt.common.ui.WidgetFactory;
import org.eclipse.jpt.common.ui.internal.util.PaneEnabler;
import org.eclipse.jpt.common.ui.internal.widgets.Pane;
import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter;
@@ -22,6 +21,8 @@ import org.eclipse.jpt.jpa.core.jpa2.context.Orderable2_0;
import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds;
import org.eclipse.jpt.jpa.ui.internal.details.AbstractOrderingComposite;
import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToManyMappingComposite;
+import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToManyMappingComposite;
import org.eclipse.swt.widgets.Composite;
/**
@@ -62,19 +63,6 @@ public class Ordering2_0Composite extends AbstractOrderingComposite
super(parentPane, parent);
}
- /**
- * Creates a new <code>OrderingComposite</code>.
- *
- * @param subjectHolder The holder of the subject <code>IMultiRelationshipMapping</code>
- * @param parent The parent container
- * @param widgetFactory The factory used to create various common widgets
- */
- public Ordering2_0Composite(PropertyValueModel<? extends CollectionMapping> subjectHolder,
- Composite parent,
- WidgetFactory widgetFactory) {
-
- super(subjectHolder, parent, widgetFactory);
- }
@Override
protected void initializeLayout(Composite container) {
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java
index 11b1c38e36..dcd5e5def5 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/preferences/JpaProblemSeveritiesPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -69,7 +69,7 @@ public class JpaProblemSeveritiesPage extends PropertyAndPreferencePage {
* <br> key is the preferenceKey which is also the validation message key @see JpaValidationMessages.
* <br> value is a severity level - @see JpaValidationPreferences#ERROR WARNING INFO IGNORE
*/
- private Map<String, String> severityLevels;
+ Map<String, String> severityLevels;
/**
* Default severity levels are stored here, ERROR is the default default so only need
@@ -172,30 +172,30 @@ public class JpaProblemSeveritiesPage extends PropertyAndPreferencePage {
this.expandablePanes = new ArrayList<ExpandableComposite>();
this.severityDisplayStrings = buildSeverityDisplayStrings();
this.severityLevels = new HashMap<String, String>();
- this.defaultSeverities = buildDefaultSeverties();
+ this.defaultSeverities = buildDefaultSeverities();
}
//since most of our problems have a default severity of ERROR, we are just defining the WARNING, INFO, IGNORE cases
- protected Map<String, String> buildDefaultSeverties() {
- Map<String, String> defaultSeverities = new HashMap<String, String>();
-
- defaultSeverities.put(JpaValidationMessages.PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PROJECT_NO_CONNECTION, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PROJECT_INVALID_CONNECTION, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PROJECT_INACTIVE_CONNECTION, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.MAPPING_FILE_EXTRANEOUS_PERSISTENCE_UNIT_METADATA, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PERSISTENT_TYPE_DUPLICATE_CLASS, JpaValidationPreferences.WARNING); //3.0 M7
- defaultSeverities.put(JpaValidationMessages.PERSISTENCE_UNIT_JAR_FILE_DEPLOYMENT_PATH_WARNING, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PERSISTENT_ATTRIBUTE_INHERITED_ATTRIBUTES_NOT_SUPPORTED, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PERSISTENT_TYPE_ANNOTATED_BUT_NOT_INCLUDED_IN_PERSISTENCE_UNIT, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.ENTITY_ABSTRACT_DISCRIMINATOR_VALUE_DEFINED, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_VERSION_MAPPING_TYPE, JpaValidationPreferences.WARNING); //3.0 M7
- defaultSeverities.put(JpaValidationMessages.ENTITY_TABLE_PER_CLASS_DISCRIMINATOR_VALUE_DEFINED, JpaValidationPreferences.WARNING);
- defaultSeverities.put(JpaValidationMessages.ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM, JpaValidationPreferences.WARNING);
-
- defaultSeverities.put(JpaValidationMessages.XML_VERSION_NOT_LATEST, JpaValidationPreferences.INFO);
- defaultSeverities.put(JpaValidationMessages.PERSISTENCE_UNIT_REDUNDANT_CLASS, JpaValidationPreferences.INFO);
- return defaultSeverities;
+ protected Map<String, String> buildDefaultSeverities() {
+ Map<String, String> result = new HashMap<String, String>();
+
+ result.put(JpaValidationMessages.PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PROJECT_NO_CONNECTION, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PROJECT_INVALID_CONNECTION, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PROJECT_INACTIVE_CONNECTION, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.MAPPING_FILE_EXTRANEOUS_PERSISTENCE_UNIT_METADATA, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PERSISTENT_TYPE_DUPLICATE_CLASS, JpaValidationPreferences.WARNING); //3.0 M7
+ result.put(JpaValidationMessages.PERSISTENCE_UNIT_JAR_FILE_DEPLOYMENT_PATH_WARNING, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PERSISTENT_ATTRIBUTE_INHERITED_ATTRIBUTES_NOT_SUPPORTED, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PERSISTENT_TYPE_ANNOTATED_BUT_NOT_INCLUDED_IN_PERSISTENCE_UNIT, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.ENTITY_ABSTRACT_DISCRIMINATOR_VALUE_DEFINED, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_VERSION_MAPPING_TYPE, JpaValidationPreferences.WARNING); //3.0 M7
+ result.put(JpaValidationMessages.ENTITY_TABLE_PER_CLASS_DISCRIMINATOR_VALUE_DEFINED, JpaValidationPreferences.WARNING);
+ result.put(JpaValidationMessages.ENTITY_TABLE_PER_CLASS_NOT_PORTABLE_ON_PLATFORM, JpaValidationPreferences.WARNING);
+
+ result.put(JpaValidationMessages.XML_VERSION_NOT_LATEST, JpaValidationPreferences.INFO);
+ result.put(JpaValidationMessages.PERSISTENCE_UNIT_REDUNDANT_CLASS, JpaValidationPreferences.INFO);
+ return result;
}
@Override
@@ -477,7 +477,7 @@ public class JpaProblemSeveritiesPage extends PropertyAndPreferencePage {
addLabeledCombo(parent, JptUiValidationPreferenceMessages.ASSOCIATION_OVERRIDE_INVALID_NAME, JpaValidationMessages.ASSOCIATION_OVERRIDE_INVALID_NAME);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.ATTRIBUTE_OVERRIDE_INVALID_NAME, JpaValidationMessages.ATTRIBUTE_OVERRIDE_INVALID_NAME);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.ATTRIBUTE_OVERRIDE_INVALID_TYPE, JpaValidationMessages.ATTRIBUTE_OVERRIDE_INVALID_TYPE);
- addLabeledCombo(parent, JptUiValidationPreferenceMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED, JpaValidationMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED); //3.0 M7
+ addLabeledCombo(parent, JptUiValidationPreferenceMessages.ATTRIBUTE_OVERRIDE_MAPPED_BY_RELATIONSHIP_AND_SPECIFIED, JpaValidationMessages.ATTRIBUTE_OVERRIDE_DERIVED_AND_SPECIFIED); //3.0 M7
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVALID_NAME, JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVALID_NAME);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS, JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS,JpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_INVERSE_JOIN_COLUMN_REFERENCED_COLUMN_NAME_MUST_BE_SPECIFIED_MULTIPLE_INVERSE_JOIN_COLUMNS);
@@ -495,7 +495,6 @@ public class JpaProblemSeveritiesPage extends PropertyAndPreferencePage {
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID, JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME, JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_NAME, JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_NAME);
- addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE, JpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_INVALID_TYPE);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID, JpaValidationMessages.VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_COLUMN_TABLE_NOT_VALID);
addLabeledCombo(parent, JptUiValidationPreferenceMessages.VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME, JpaValidationMessages.VIRTUAL_MAP_KEY_ATTRIBUTE_OVERRIDE_INVALID_NAME);
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java
index 267390e1e6..6f9b9607eb 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/context/orm/OrmEntityTests.java
@@ -1773,19 +1773,6 @@ public class OrmEntityTests extends ContextModelTestCase
assertEquals(4, overrideContainer.virtualOverridesSize());
virtualAttributeOverrides = overrideContainer.virtualOverrides();
virtualOverride = virtualAttributeOverrides.next();
- assertEquals("basic", virtualOverride.getName());
- assertEquals("MY_NAME", virtualOverride.getColumn().getSpecifiedName());
- assertEquals("BAR", virtualOverride.getColumn().getTable());
- assertEquals("COLUMN_DEF", virtualOverride.getColumn().getColumnDefinition());
- assertEquals(false, virtualOverride.getColumn().isInsertable());
- assertEquals(false, virtualOverride.getColumn().isUpdatable());
- assertEquals(true, virtualOverride.getColumn().isUnique());
- assertEquals(false, virtualOverride.getColumn().isNullable());
- assertEquals(5, virtualOverride.getColumn().getLength());
- assertEquals(6, virtualOverride.getColumn().getPrecision());
- assertEquals(7, virtualOverride.getColumn().getScale());
-
- virtualOverride = virtualAttributeOverrides.next();
assertEquals("foo", virtualOverride.getName());
assertEquals("FOO", virtualOverride.getColumn().getSpecifiedName());//TODO specified or default?
assertEquals("BAR", virtualOverride.getColumn().getSpecifiedTable());
@@ -1797,6 +1784,19 @@ public class OrmEntityTests extends ContextModelTestCase
assertEquals(Integer.valueOf(7), virtualOverride.getColumn().getSpecifiedLength());
assertEquals(Integer.valueOf(8), virtualOverride.getColumn().getSpecifiedPrecision());
assertEquals(Integer.valueOf(9), virtualOverride.getColumn().getSpecifiedScale());
+
+ virtualOverride = virtualAttributeOverrides.next();
+ assertEquals("basic", virtualOverride.getName());
+ assertEquals("MY_NAME", virtualOverride.getColumn().getSpecifiedName());
+ assertEquals("BAR", virtualOverride.getColumn().getTable());
+ assertEquals("COLUMN_DEF", virtualOverride.getColumn().getColumnDefinition());
+ assertEquals(false, virtualOverride.getColumn().isInsertable());
+ assertEquals(false, virtualOverride.getColumn().isUpdatable());
+ assertEquals(true, virtualOverride.getColumn().isUnique());
+ assertEquals(false, virtualOverride.getColumn().isNullable());
+ assertEquals(5, virtualOverride.getColumn().getLength());
+ assertEquals(6, virtualOverride.getColumn().getPrecision());
+ assertEquals(7, virtualOverride.getColumn().getScale());
virtualOverride = virtualAttributeOverrides.next();
assertEquals("id", virtualOverride.getName());
}
@@ -2176,12 +2176,12 @@ public class OrmEntityTests extends ContextModelTestCase
virtualOverrides = overrideContainer.virtualOverrides();
virtualOverride = virtualOverrides.next();
joiningStrategy = virtualOverride.getRelationship().getJoinColumnStrategy();
- assertEquals("manyToOne", virtualOverride.getName());
+ assertEquals("oneToOne", virtualOverride.getName());
ormJoinColumn = joiningStrategy.joinColumns().next();
- assertEquals("MY_NAME", ormJoinColumn.getSpecifiedName());
- assertEquals("MY_REFERNCE_NAME", ormJoinColumn.getSpecifiedReferencedColumnName());
- assertEquals("BAR2", ormJoinColumn.getSpecifiedTable());
- assertEquals("COLUMN_DEF2", ormJoinColumn.getColumnDefinition());
+ assertEquals("FOO", ormJoinColumn.getSpecifiedName());
+ assertEquals("REFERENCE", ormJoinColumn.getSpecifiedReferencedColumnName());
+ assertEquals("BAR", ormJoinColumn.getSpecifiedTable());
+ assertEquals("COLUMN_DEF", ormJoinColumn.getColumnDefinition());
assertEquals(Boolean.FALSE, ormJoinColumn.getSpecifiedInsertable());
assertEquals(Boolean.FALSE, ormJoinColumn.getSpecifiedUpdatable());
assertEquals(Boolean.TRUE, ormJoinColumn.getSpecifiedUnique());
@@ -2189,12 +2189,12 @@ public class OrmEntityTests extends ContextModelTestCase
virtualOverride = virtualOverrides.next();
joiningStrategy = virtualOverride.getRelationship().getJoinColumnStrategy();
- assertEquals("oneToOne", virtualOverride.getName());
+ assertEquals("manyToOne", virtualOverride.getName());
ormJoinColumn = joiningStrategy.joinColumns().next();
- assertEquals("FOO", ormJoinColumn.getSpecifiedName());
- assertEquals("REFERENCE", ormJoinColumn.getSpecifiedReferencedColumnName());
- assertEquals("BAR", ormJoinColumn.getSpecifiedTable());
- assertEquals("COLUMN_DEF", ormJoinColumn.getColumnDefinition());
+ assertEquals("MY_NAME", ormJoinColumn.getSpecifiedName());
+ assertEquals("MY_REFERNCE_NAME", ormJoinColumn.getSpecifiedReferencedColumnName());
+ assertEquals("BAR2", ormJoinColumn.getSpecifiedTable());
+ assertEquals("COLUMN_DEF2", ormJoinColumn.getColumnDefinition());
assertEquals(Boolean.FALSE, ormJoinColumn.getSpecifiedInsertable());
assertEquals(Boolean.FALSE, ormJoinColumn.getSpecifiedUpdatable());
assertEquals(Boolean.TRUE, ormJoinColumn.getSpecifiedUnique());
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaAssociationOverride2_0Tests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaAssociationOverride2_0Tests.java
index a59e36bf22..30b42bf061 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaAssociationOverride2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaAssociationOverride2_0Tests.java
@@ -465,7 +465,7 @@ public class GenericJavaAssociationOverride2_0Tests extends Generic2_0ContextMod
public void testSetJoinTableName() throws Exception {
- createTestMappedSuperclass();
+ createTestMappedSuperclassManyToMany();
createTestSubType();
addXmlClassRef(PACKAGE_NAME + ".AnnotationTestTypeChild");
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME);
@@ -473,7 +473,6 @@ public class GenericJavaAssociationOverride2_0Tests extends Generic2_0ContextMod
JavaAssociationOverrideContainer overrideContainer = getJavaEntity().getAssociationOverrideContainer();
ReadOnlyAssociationOverride javaAssociationOverride = overrideContainer.virtualOverrides().next();
javaAssociationOverride = ((VirtualAssociationOverride) javaAssociationOverride).convertToSpecified();
- ((OverrideRelationship2_0) javaAssociationOverride.getRelationship()).setStrategyToJoinTable();
JoinTableRelationshipStrategy joiningStrategy = ((OverrideRelationship2_0) javaAssociationOverride.getRelationship()).getJoinTableStrategy();
JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(PACKAGE_NAME + ".AnnotationTestTypeChild");
@@ -487,7 +486,7 @@ public class GenericJavaAssociationOverride2_0Tests extends Generic2_0ContextMod
}
public void testUpdateJoinTable() throws Exception {
- createTestMappedSuperclass();
+ createTestMappedSuperclassManyToMany();
createTestSubType();
addXmlClassRef(PACKAGE_NAME + ".AnnotationTestTypeChild");
addXmlClassRef(FULLY_QUALIFIED_TYPE_NAME);
@@ -495,7 +494,6 @@ public class GenericJavaAssociationOverride2_0Tests extends Generic2_0ContextMod
JavaAssociationOverrideContainer overrideContainer = getJavaEntity().getAssociationOverrideContainer();
ReadOnlyAssociationOverride javaAssociationOverride = overrideContainer.virtualOverrides().next();
javaAssociationOverride = ((VirtualAssociationOverride) javaAssociationOverride).convertToSpecified();
- ((OverrideRelationship2_0) javaAssociationOverride.getRelationship()).setStrategyToJoinTable();
JoinTableRelationshipStrategy joiningStrategy = ((OverrideRelationship2_0) javaAssociationOverride.getRelationship()).getJoinTableStrategy();
JavaResourcePersistentType typeResource = getJpaProject().getJavaResourcePersistentType(PACKAGE_NAME + ".AnnotationTestTypeChild");
@@ -505,6 +503,7 @@ public class GenericJavaAssociationOverride2_0Tests extends Generic2_0ContextMod
getJpaProject().synchronizeContextModel();
assertEquals("MY_JOIN_TABLE", joiningStrategy.getJoinTable().getSpecifiedName());
+ associationOverrideResource.getJoinTable().removeJoinColumn(0); // remove default
associationOverrideResource.getJoinTable().addJoinColumn(0);
associationOverrideResource.getJoinTable().addJoinColumn(1);
associationOverrideResource.getJoinTable().addJoinColumn(2);
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0Tests.java
index 84d453af25..5d2e2199f1 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaManyToOneMapping2_0Tests.java
@@ -163,24 +163,24 @@ public class GenericJavaManyToOneMapping2_0Tests
JavaManyToOneMapping2_0 contextMapping = (JavaManyToOneMapping2_0) contextAttribute.getMapping();
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
annotation.setValue("foo");
getJpaProject().synchronizeContextModel();
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
annotation.setValue("bar");
getJpaProject().synchronizeContextModel();
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceAttribute.removeAnnotation(JPA2_0.MAPS_ID);
getJpaProject().synchronizeContextModel();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -194,22 +194,22 @@ public class GenericJavaManyToOneMapping2_0Tests
JavaManyToOneMapping2_0 contextMapping = (JavaManyToOneMapping2_0) contextAttribute.getMapping();
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
assertNotNull(annotation);
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testUpdatePredominantDerivedIdentityStrategy() throws Exception {
@@ -307,7 +307,7 @@ public class GenericJavaManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertNotNull(resourceAttribute.getAnnotation(JPA.ID));
@@ -315,7 +315,7 @@ public class GenericJavaManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertNotNull(resourceAttribute.getAnnotation(JPA.ID));
@@ -323,7 +323,7 @@ public class GenericJavaManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ID_ATTRIBUTE_MAPPING_KEY);
assertNotNull(resourceAttribute.getAnnotation(JPA.ID));
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java
index e9eecf4dc0..a3d11e5196 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/java/GenericJavaOneToOneMapping2_0Tests.java
@@ -322,24 +322,24 @@ public class GenericJavaOneToOneMapping2_0Tests
JavaOneToOneMapping2_0 contextMapping = (JavaOneToOneMapping2_0) contextAttribute.getMapping();
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
annotation.setValue("foo");
getJpaProject().synchronizeContextModel();
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
annotation.setValue("bar");
getJpaProject().synchronizeContextModel();
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceAttribute.removeAnnotation(JPA2_0.MAPS_ID);
getJpaProject().synchronizeContextModel();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -353,22 +353,22 @@ public class GenericJavaOneToOneMapping2_0Tests
JavaOneToOneMapping2_0 contextMapping = (JavaOneToOneMapping2_0) contextAttribute.getMapping();
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
assertNotNull(annotation);
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testUpdatePredominantDerivedIdentityStrategy() throws Exception {
@@ -470,7 +470,7 @@ public class GenericJavaOneToOneMapping2_0Tests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertFalse(((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
@@ -478,7 +478,7 @@ public class GenericJavaOneToOneMapping2_0Tests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertFalse(((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
@@ -486,7 +486,7 @@ public class GenericJavaOneToOneMapping2_0Tests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testCandidateMappedByAttributeNames() throws Exception {
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0Tests.java
index e316c9c7de..26d026ccb0 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmManyToOneMapping2_0Tests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -261,23 +261,23 @@ public class GenericOrmManyToOneMapping2_0Tests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getManyToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("");
assertEquals("", resourceMapping.getMapsId());
- assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -289,23 +289,23 @@ public class GenericOrmManyToOneMapping2_0Tests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getManyToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("");
assertEquals("", resourceMapping.getMapsId());
- assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testUpdatePredominantDerivedIdentityStrategy() throws Exception {
@@ -402,7 +402,7 @@ public class GenericOrmManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceManyToOne.getMapsId());
assertEquals("foo", ((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
XmlOneToOne resourceOneToOne = resourceEntity.getAttributes().getOneToOnes().get(0);
@@ -411,7 +411,7 @@ public class GenericOrmManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceOneToOne.getMapsId());
assertEquals("foo", ((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
resourceManyToOne = resourceEntity.getAttributes().getManyToOnes().get(0);
@@ -420,7 +420,7 @@ public class GenericOrmManyToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceManyToOne.getMapsId());
assertEquals("foo", ((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testVirtualJoinTable() throws Exception {
diff --git a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java
index bf86d1be66..124609f7a8 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/jpa2/context/orm/GenericOrmOneToOneMapping2_0Tests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2010 Oracle. All rights reserved.
+ * Copyright (c) 2009, 2011 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.
@@ -324,23 +324,23 @@ public class GenericOrmOneToOneMapping2_0Tests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getOneToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("");
assertEquals("", resourceMapping.getMapsId());
- assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -352,23 +352,23 @@ public class GenericOrmOneToOneMapping2_0Tests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getOneToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("");
assertEquals("", resourceMapping.getMapsId());
- assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testUpdatePredominantDerivedIdentityStrategy() throws Exception {
@@ -465,7 +465,7 @@ public class GenericOrmOneToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceOneToOne.getMapsId());
assertNull(((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
XmlManyToOne resourceManyToOne = resourceEntity.getAttributes().getManyToOnes().get(0);
@@ -474,7 +474,7 @@ public class GenericOrmOneToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceManyToOne.getMapsId());
assertNull(((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
resourceOneToOne = resourceEntity.getAttributes().getOneToOnes().get(0);
@@ -483,7 +483,7 @@ public class GenericOrmOneToOneMapping2_0Tests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceOneToOne.getMapsId());
assertNull(((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaManyToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaManyToOneMappingTests.java
index 5a0a6e10ca..569c8d004f 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaManyToOneMappingTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaManyToOneMappingTests.java
@@ -173,17 +173,17 @@ public class EclipseLink2_0JavaManyToOneMappingTests
annotation.setValue("foo");
getJpaProject().synchronizeContextModel();
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
annotation.setValue("bar");
getJpaProject().synchronizeContextModel();
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceAttribute.removeAnnotation(JPA2_0.MAPS_ID);
getJpaProject().synchronizeContextModel();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -197,22 +197,22 @@ public class EclipseLink2_0JavaManyToOneMappingTests
JavaManyToOneMapping2_0 contextMapping = (JavaManyToOneMapping2_0) contextAttribute.getMapping();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
assertNotNull(annotation);
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testMorphMapping() throws Exception {
@@ -233,7 +233,7 @@ public class EclipseLink2_0JavaManyToOneMappingTests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertFalse(((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
@@ -241,7 +241,7 @@ public class EclipseLink2_0JavaManyToOneMappingTests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertFalse(((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
@@ -249,7 +249,7 @@ public class EclipseLink2_0JavaManyToOneMappingTests
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertEquals("foo", ((MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID)).getValue());
assertEquals("foo", ((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testModifyPredominantJoiningStrategy() throws Exception {
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaOneToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaOneToOneMappingTests.java
index 8d0d5add4c..1b7e6649a8 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaOneToOneMappingTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/java/EclipseLink2_0JavaOneToOneMappingTests.java
@@ -323,24 +323,24 @@ public class EclipseLink2_0JavaOneToOneMappingTests
JavaOneToOneMapping2_0 contextMapping = (JavaOneToOneMapping2_0) contextAttribute.getMapping();
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
annotation.setValue("foo");
getJpaProject().synchronizeContextModel();
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
annotation.setValue("bar");
getJpaProject().synchronizeContextModel();
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceAttribute.removeAnnotation(JPA2_0.MAPS_ID);
getJpaProject().synchronizeContextModel();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -354,22 +354,22 @@ public class EclipseLink2_0JavaOneToOneMappingTests
JavaOneToOneMapping2_0 contextMapping = (JavaOneToOneMapping2_0) contextAttribute.getMapping();
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
MapsId2_0Annotation annotation =
(MapsId2_0Annotation) resourceAttribute.getAnnotation(JPA2_0.MAPS_ID);
assertNotNull(annotation);
assertEquals("foo", annotation.getValue());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", annotation.getValue());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNotNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testMorphMapping() throws Exception {
@@ -386,7 +386,7 @@ public class EclipseLink2_0JavaOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertNotNull(resourceAttribute.getAnnotation(JPA.ID));
@@ -394,7 +394,7 @@ public class EclipseLink2_0JavaOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
assertNotNull(resourceAttribute.getAnnotation(JPA.ID));
@@ -402,7 +402,7 @@ public class EclipseLink2_0JavaOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceAttribute.getAnnotation(JPA2_0.MAPS_ID));
assertNull(((JavaManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
// this is no longer supported (it was a bit of a testing hack anyway...)
// contextAttribute.setMappingKey(MappingKeys.ID_ATTRIBUTE_MAPPING_KEY);
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java
index a21b53daef..5051ba899f 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/EclipseLink2_0OrmOneToOneMappingTests.java
@@ -330,19 +330,19 @@ public class EclipseLink2_0OrmOneToOneMappingTests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getOneToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -354,19 +354,19 @@ public class EclipseLink2_0OrmOneToOneMappingTests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getOneToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testMorphMapping() throws Exception {
@@ -382,7 +382,7 @@ public class EclipseLink2_0OrmOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceOneToOne.getMapsId());
assertEquals("foo", ((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
XmlManyToOne resourceManyToOne = resourceEntity.getAttributes().getManyToOnes().get(0);
@@ -391,7 +391,7 @@ public class EclipseLink2_0OrmOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceManyToOne.getMapsId());
assertEquals("foo", ((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
resourceOneToOne = resourceEntity.getAttributes().getOneToOnes().get(0);
@@ -400,7 +400,7 @@ public class EclipseLink2_0OrmOneToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertEquals("foo", resourceOneToOne.getMapsId());
assertEquals("foo", ((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testCandidateMappedByAttributeNames() throws Exception {
diff --git a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/Eclipselink2_0OrmManyToOneMappingTests.java b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/Eclipselink2_0OrmManyToOneMappingTests.java
index 3200bdf147..b8999b3cfd 100644
--- a/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/Eclipselink2_0OrmManyToOneMappingTests.java
+++ b/jpa/tests/org.eclipse.jpt.jpa.eclipselink.core.tests/src/org/eclipse/jpt/jpa/eclipselink/core/tests/internal/v2_0/context/orm/Eclipselink2_0OrmManyToOneMappingTests.java
@@ -261,19 +261,19 @@ public class Eclipselink2_0OrmManyToOneMappingTests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getManyToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
resourceMapping.setMapsId(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testSetMapsId() throws Exception {
@@ -285,19 +285,19 @@ public class Eclipselink2_0OrmManyToOneMappingTests
XmlMapsId_2_0 resourceMapping = resourceEntity.getAttributes().getManyToOnes().get(0);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("foo");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("foo");
assertEquals("foo", resourceMapping.getMapsId());
- assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("foo", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue("bar");
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName("bar");
assertEquals("bar", resourceMapping.getMapsId());
- assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertEquals("bar", contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
- contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedValue(null);
+ contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().setSpecifiedIdAttributeName(null);
assertNull(resourceMapping.getMapsId());
- assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ assertNull(contextMapping.getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testMorphMapping() throws Exception {
@@ -313,7 +313,7 @@ public class Eclipselink2_0OrmManyToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceManyToOne.getMapsId());
assertNull(((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
XmlOneToOne resourceOneToOne = resourceEntity.getAttributes().getOneToOnes().get(0);
@@ -322,7 +322,7 @@ public class Eclipselink2_0OrmManyToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceOneToOne.getMapsId());
assertNull(((OrmOneToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
contextAttribute.setMappingKey(MappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
resourceManyToOne.setId(Boolean.TRUE);
@@ -331,7 +331,7 @@ public class Eclipselink2_0OrmManyToOneMappingTests
getDerivedIdentity().getIdDerivedIdentityStrategy().getValue());
assertNull(resourceManyToOne.getMapsId());
assertNull(((OrmManyToOneMapping2_0) contextAttribute.getMapping()).
- getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedValue());
+ getDerivedIdentity().getMapsIdDerivedIdentityStrategy().getSpecifiedIdAttributeName());
}
public void testVirtualJoinTable() throws Exception {

Back to the top