From c7a08672e168714087c16ed7123975c92c21d7d9 Mon Sep 17 00:00:00 2001 From: kmoore Date: Mon, 1 Aug 2011 15:10:18 +0000 Subject: consolidation of the java resource model for JAXB and JPA. Changing API to Iterables instead of Iterators --- .../jpt/common/core/AnnotationProvider.java | 9 + .../jpt/common/core/GenericAnnotationProvider.java | 136 +++ .../resource/java/AbstractJavaResourceNode.java | 10 +- .../internal/resource/java/NullAnnotation.java | 25 +- .../resource/java/binary/BinaryAbstractType.java | 213 ++++ .../java/binary/BinaryAnnotatedElement.java | 328 ++++++ .../resource/java/binary/BinaryAnnotation.java | 7 +- .../resource/java/binary/BinaryAttribute.java | 405 +++++++ .../resource/java/binary/BinaryClassFile.java | 77 ++ .../internal/resource/java/binary/BinaryEnum.java | 128 +++ .../resource/java/binary/BinaryEnumConstant.java | 68 ++ .../internal/resource/java/binary/BinaryField.java | 68 ++ .../resource/java/binary/BinaryMember.java | 192 ++++ .../resource/java/binary/BinaryMethod.java | 161 +++ .../java/binary/BinaryNamedAnnotation.java | 32 + .../java/binary/BinaryPackageFragment.java | 135 +++ .../java/binary/BinaryPackageFragmentRoot.java | 115 ++ .../internal/resource/java/binary/BinaryType.java | 308 ++++++ .../resource/java/binary/BinaryTypeCache.java | 157 +++ .../resource/java/binary/RootBinaryNode.java | 82 ++ .../resource/java/source/SourceAbstractType.java | 18 +- .../java/source/SourceAnnotatedElement.java | 144 ++- .../resource/java/source/SourceAnnotation.java | 55 +- .../resource/java/source/SourceAttribute.java | 11 +- .../java/source/SourceCompilationUnit.java | 2 +- .../internal/resource/java/source/SourceEnum.java | 4 +- .../resource/java/source/SourceEnumConstant.java | 20 +- .../internal/resource/java/source/SourceField.java | 10 +- .../resource/java/source/SourceMember.java | 29 +- .../resource/java/source/SourceMethod.java | 17 +- .../java/source/SourceNamedAnnotation.java | 42 + .../internal/resource/java/source/SourceNode.java | 14 +- .../resource/java/source/SourcePackage.java | 22 +- .../source/SourcePackageInfoCompilationUnit.java | 9 +- .../internal/resource/java/source/SourceType.java | 47 +- .../java/source/SourceTypeCompilationUnit.java | 69 +- .../jpt/common/core/resource/java/Annotation.java | 8 +- .../resource/java/JavaResourceAbstractType.java | 38 +- .../java/JavaResourceAnnotatedElement.java | 63 +- .../core/resource/java/JavaResourceAttribute.java | 3 + .../core/resource/java/JavaResourceClassFile.java | 7 +- .../resource/java/JavaResourceCompilationUnit.java | 8 +- .../core/resource/java/JavaResourceEnum.java | 8 +- .../core/resource/java/JavaResourceNode.java | 6 +- .../resource/java/JavaResourcePackageFragment.java | 15 +- .../core/resource/java/JavaResourceType.java | 20 +- .../core/resource/java/JavaResourceTypeCache.java | 48 + .../java/NestableAnnotationDefinition.java | 2 +- .../META-INF/MANIFEST.MF | 1 + .../resource/java/JavaResourceModelTestCase.java | 197 ++++ .../jpt/jaxb/core/internal/AbstractJaxbNode.java | 6 +- .../core/internal/GenericAnnotationProvider.java | 128 --- .../context/java/GenericJavaPackageInfo.java | 10 +- .../jaxb21/GenericJaxb_2_1_PlatformDefinition.java | 4 + .../core/internal/platform/JaxbPlatformImpl.java | 2 +- .../XmlJavaTypeAdapterAnnotationDefinition.java | 5 +- .../XmlJavaTypeAdaptersAnnotationDefinition.java | 60 + .../java/XmlSchemaTypeAnnotationDefinition.java | 5 +- .../java/XmlSchemaTypesAnnotationDefinition.java | 60 + .../context/java/GenericJavaPackageInfoTests.java | 10 +- .../resource/java/JavaResourceModelTestCase.java | 197 ---- .../java/JaxbJavaResourceModelTestCase.java | 3 +- .../java/ELJaxbJavaResourceModelTestCase.java | 2 +- .../property_files/jpa_validation.properties | 1 + .../jpa/core/JpaAnnotationDefinitionProvider.java | 29 +- .../jpt/jpa/core/JpaAnnotationProvider.java | 144 --- .../src/org/eclipse/jpt/jpa/core/JpaFactory.java | 14 +- .../src/org/eclipse/jpt/jpa/core/JpaPlatform.java | 3 +- .../src/org/eclipse/jpt/jpa/core/JpaProject.java | 28 +- .../core/context/AssociationOverrideContainer.java | 8 +- .../core/context/AttributeOverrideContainer.java | 8 +- .../org/eclipse/jpt/jpa/core/context/Entity.java | 20 +- .../context/JoinColumnRelationshipStrategy.java | 6 +- .../eclipse/jpt/jpa/core/context/JoinTable.java | 6 +- .../jpt/jpa/core/context/OverrideContainer.java | 17 +- .../jpt/jpa/core/context/PersistentType.java | 12 +- .../PrimaryKeyJoinColumnRelationshipStrategy.java | 8 +- .../org/eclipse/jpt/jpa/core/context/Query.java | 2 +- .../jpt/jpa/core/context/QueryContainer.java | 12 +- .../jpa/core/context/ReadOnlyBaseJoinColumn.java | 2 +- .../ReadOnlyJoinColumnRelationshipStrategy.java | 12 +- .../jpt/jpa/core/context/ReadOnlyJoinTable.java | 12 +- .../jpa/core/context/ReadOnlyReferenceTable.java | 12 +- .../jpa/core/context/ReadOnlySecondaryTable.java | 12 +- .../jpt/jpa/core/context/ReadOnlyTable.java | 6 +- .../jpt/jpa/core/context/ReferenceTable.java | 6 +- .../jpt/jpa/core/context/SecondaryTable.java | 8 +- .../org/eclipse/jpt/jpa/core/context/Table.java | 4 +- .../VirtualJoinColumnRelationshipStrategy.java | 8 +- .../jpt/jpa/core/context/VirtualJoinTable.java | 6 +- .../jpa/core/context/VirtualReferenceTable.java | 6 +- .../jpa/core/context/VirtualSecondaryTable.java | 8 +- .../eclipse/jpt/jpa/core/context/VirtualTable.java | 4 +- .../jpt/jpa/core/context/java/Accessor.java | 55 + .../eclipse/jpt/jpa/core/context/java/JarFile.java | 7 +- .../java/JavaAssociationOverrideContainer.java | 8 +- .../core/context/java/JavaAttributeMapping.java | 8 +- .../java/JavaAttributeOverrideContainer.java | 8 +- .../jpt/jpa/core/context/java/JavaConverter.java | 22 +- .../jpt/jpa/core/context/java/JavaEntity.java | 12 +- .../core/context/java/JavaEnumeratedConverter.java | 4 +- .../core/context/java/JavaGeneratorContainer.java | 4 +- .../java/JavaJoinColumnRelationshipStrategy.java | 8 +- .../jpt/jpa/core/context/java/JavaJoinTable.java | 8 +- .../jpa/core/context/java/JavaLobConverter.java | 4 +- .../core/context/java/JavaNamedNativeQuery.java | 5 +- .../jpt/jpa/core/context/java/JavaNamedQuery.java | 6 +- .../core/context/java/JavaOverrideContainer.java | 12 +- .../core/context/java/JavaPersistentAttribute.java | 50 +- .../jpa/core/context/java/JavaPersistentType.java | 15 +- ...vaPrimaryKeyJoinColumnRelationshipStrategy.java | 6 +- .../jpt/jpa/core/context/java/JavaQuery.java | 3 +- .../jpa/core/context/java/JavaQueryContainer.java | 12 +- .../jpa/core/context/java/JavaReferenceTable.java | 8 +- .../jpa/core/context/java/JavaSecondaryTable.java | 8 +- .../jpt/jpa/core/context/java/JavaTable.java | 4 +- .../core/context/java/JavaTemporalConverter.java | 4 +- .../jpt/jpa/core/context/java/JavaTypeMapping.java | 9 +- .../context/java/JavaTypeMappingDefinition.java | 4 +- .../JavaVirtualJoinColumnRelationshipStrategy.java | 8 +- .../core/context/java/JavaVirtualJoinTable.java | 12 +- .../jpt/jpa/core/context/orm/EntityMappings.java | 6 +- .../orm/OrmAssociationOverrideContainer.java | 8 +- .../context/orm/OrmAttributeOverrideContainer.java | 8 +- .../jpt/jpa/core/context/orm/OrmEntity.java | 19 +- .../orm/OrmJoinColumnRelationshipStrategy.java | 8 +- .../jpt/jpa/core/context/orm/OrmJoinTable.java | 8 +- .../jpa/core/context/orm/OrmNamedNativeQuery.java | 6 +- .../jpt/jpa/core/context/orm/OrmNamedQuery.java | 6 +- .../jpa/core/context/orm/OrmOverrideContainer.java | 8 +- .../jpa/core/context/orm/OrmPersistentType.java | 15 +- ...rmPrimaryKeyJoinColumnRelationshipStrategy.java | 6 +- .../eclipse/jpt/jpa/core/context/orm/OrmQuery.java | 3 +- .../jpa/core/context/orm/OrmQueryContainer.java | 10 +- .../orm/OrmReadOnlyPersistentAttribute.java | 12 +- .../jpa/core/context/orm/OrmReferenceTable.java | 10 +- .../jpa/core/context/orm/OrmSecondaryTable.java | 8 +- .../eclipse/jpt/jpa/core/context/orm/OrmTable.java | 4 +- .../OrmVirtualJoinColumnRelationshipStrategy.java | 8 +- .../jpa/core/context/orm/OrmVirtualJoinTable.java | 12 +- .../core/context/orm/OrmVirtualSecondaryTable.java | 6 +- .../core/context/orm/OrmXmlContextNodeFactory.java | 12 +- .../jpa/core/context/persistence/Persistence.java | 9 +- .../core/context/persistence/PersistenceUnit.java | 58 +- .../PersistenceXmlContextNodeFactory.java | 4 +- .../AbstractJpaAnnotationDefinitionProvider.java | 83 +- .../jpt/jpa/core/internal/AbstractJpaFactory.java | 26 +- .../jpt/jpa/core/internal/AbstractJpaNode.java | 347 ++++++ .../jpt/jpa/core/internal/AbstractJpaProject.java | 197 ++-- .../GenericJpaAnnotationDefinitionProvider.java | 80 +- .../internal/GenericJpaAnnotationProvider.java | 194 ---- .../jpt/jpa/core/internal/GenericJpaPlatform.java | 12 +- .../core/internal/GenericJpaPlatformFactory.java | 4 +- .../core/internal/JarResourceModelProvider.java | 6 +- .../JavaPackageInfoResourceModelProvider.java | 6 +- .../core/internal/JavaResourceModelProvider.java | 6 +- .../jpa/core/internal/JpaAnnotationProvider.java | 174 +++ .../jpa/core/internal/context/MappingTools.java | 12 +- .../internal/context/java/AbstractAccessor.java | 268 +++++ .../context/java/AbstractJavaAttributeMapping.java | 10 +- .../java/AbstractJavaBaseEmbeddedMapping.java | 8 +- .../context/java/AbstractJavaBasicMapping.java | 12 +- .../internal/context/java/AbstractJavaEntity.java | 314 ++---- .../context/java/AbstractJavaIdMapping.java | 26 +- ...AbstractJavaJoinColumnRelationshipStrategy.java | 121 +- .../java/AbstractJavaMultiRelationshipMapping.java | 22 +- .../java/AbstractJavaPersistentAttribute.java | 122 +- .../context/java/AbstractJavaPersistentType.java | 560 ++++++++-- .../internal/context/java/AbstractJavaQuery.java | 84 +- .../java/AbstractJavaRelationshipMapping.java | 3 +- .../internal/context/java/AbstractJavaTable.java | 109 +- .../context/java/AbstractJavaTypeMapping.java | 12 +- .../context/java/AbstractJavaVersionMapping.java | 12 +- .../java/AbstractJavaVirtualReferenceTable.java | 91 +- .../context/java/AbstractJavaVirtualTable.java | 81 +- .../core/internal/context/java/FieldAccessor.java | 108 ++ .../context/java/GenericJavaIdClassReference.java | 35 +- ...cJavaMappingJoinColumnRelationshipStrategy.java | 38 +- .../java/GenericJavaOneToOneRelationship.java | 2 +- ...JavaOverrideJoinColumnRelationshipStrategy.java | 10 +- ...vaPrimaryKeyJoinColumnRelationshipStrategy.java | 140 +-- .../context/java/GenericJavaVirtualJoinTable.java | 104 +- .../context/java/JavaBasicMappingDefinition.java | 2 +- .../context/java/JavaEmbeddableDefinition.java | 4 +- .../java/JavaEmbeddedIdMappingDefinition.java | 6 +- .../java/JavaEmbeddedMappingDefinition.java | 6 +- .../context/java/JavaEntityDefinition.java | 22 +- .../context/java/JavaIdMappingDefinition.java | 2 +- .../java/JavaManyToManyMappingDefinition.java | 2 +- .../java/JavaManyToOneMappingDefinition.java | 6 +- .../java/JavaMappedSuperclassDefinition.java | 4 +- .../internal/context/java/JavaNullTypeMapping.java | 5 +- .../java/JavaOneToManyMappingDefinition.java | 6 +- .../java/JavaOneToOneMappingDefinition.java | 9 +- .../java/JavaTransientMappingDefinition.java | 4 +- .../context/java/JavaVersionMappingDefinition.java | 2 +- .../internal/context/java/PropertyAccessor.java | 139 +++ .../context/orm/AbstractEntityMappings.java | 194 ++-- .../internal/context/orm/AbstractOrmEntity.java | 344 +++--- .../AbstractOrmJoinColumnRelationshipStrategy.java | 121 +- .../internal/context/orm/AbstractOrmQuery.java | 82 +- .../orm/AbstractOrmRelationshipMapping.java | 3 +- .../internal/context/orm/AbstractOrmTable.java | 103 +- .../context/orm/AbstractOrmTypeMapping.java | 10 +- .../orm/AbstractOrmVirtualReferenceTable.java | 88 +- .../context/orm/AbstractOrmVirtualTable.java | 81 +- .../orm/AbstractOrmXmlContextNodeFactory.java | 13 +- .../context/orm/GenericOrmIdClassReference.java | 27 +- ...icOrmMappingJoinColumnRelationshipStrategy.java | 4 +- .../orm/GenericOrmOneToOneRelationship.java | 2 +- ...cOrmOverrideJoinColumnRelationshipStrategy.java | 4 +- ...rmPrimaryKeyJoinColumnRelationshipStrategy.java | 107 +- .../context/orm/GenericOrmVirtualJoinTable.java | 104 +- ...tualOverrideJoinColumnRelationshipStrategy.java | 92 +- .../orm/GenericOrmVirtualSecondaryTable.java | 101 +- .../orm/SpecifiedOrmPersistentAttribute.java | 129 ++- .../context/orm/VirtualOrmPersistentAttribute.java | 304 +---- .../context/persistence/AbstractJarFileRef.java | 3 +- .../persistence/AbstractPersistenceUnit.java | 508 ++++----- .../AbstractPersistenceXmlContextNodeFactory.java | 4 +- .../AbstractPersistentAttributeValidator.java | 7 +- .../jpa1/context/AbstractPrimaryKeyValidator.java | 2 +- .../jpa1/context/AbstractTypeMappingValidator.java | 30 +- .../jpa1/context/BaseJoinColumnValidator.java | 4 +- .../GenericPersistentAttributeValidator.java | 52 - .../jpa1/context/GenericRootContextNode.java | 26 +- .../jpa1/context/GenericTypeMappingValidator.java | 8 +- .../jpa1/context/PersistentFieldValidator.java | 41 + .../jpa1/context/PersistentPropertyValidator.java | 43 + .../jpa1/context/java/AbstractJavaConverter.java | 10 +- .../java/AbstractJavaOverrideContainer.java | 61 +- .../internal/jpa1/context/java/GenericJarFile.java | 107 +- .../GenericJavaAssociationOverrideContainer.java | 11 +- .../GenericJavaAttributeOverrideContainer.java | 11 +- .../java/GenericJavaDiscriminatorColumn.java | 12 +- .../context/java/GenericJavaEmbeddedIdMapping.java | 2 +- .../context/java/GenericJavaEmbeddedMapping.java | 6 +- .../context/java/GenericJavaGeneratedValue.java | 4 +- .../jpa1/context/java/GenericJavaJoinTable.java | 122 +- ...icJavaMappingJoinTableRelationshipStrategy.java | 12 +- .../java/GenericJavaNullAttributeMapping.java | 4 +- .../jpa1/context/java/GenericJavaOrderable.java | 18 +- .../java/GenericJavaPersistentAttribute.java | 21 +- .../context/java/GenericJavaPersistentType.java | 8 +- .../context/java/GenericJavaQueryContainer.java | 237 ++-- .../context/java/GenericJavaReferenceTable.java | 111 +- .../context/java/GenericJavaSecondaryTable.java | 115 +- .../jpa1/context/java/GenericJavaTable.java | 12 +- .../context/java/GenericJavaTableGenerator.java | 102 +- .../context/java/GenericJavaUniqueConstraint.java | 7 +- ...tualOverrideJoinColumnRelationshipStrategy.java | 93 +- .../jpa1/context/java/NullJavaConverter.java | 2 +- .../NullJavaJoinColumnRelationshipStrategy.java | 16 +- .../context/orm/AbstractOrmOverrideContainer.java | 25 +- .../orm/GenericOrmAttributeOverrideContainer.java | 3 +- .../context/orm/GenericOrmEmbeddedIdMapping.java | 2 +- .../jpa1/context/orm/GenericOrmGeneratedValue.java | 5 +- .../jpa1/context/orm/GenericOrmJoinTable.java | 121 +- .../context/orm/GenericOrmPersistentAttribute.java | 5 +- .../jpa1/context/orm/GenericOrmPersistentType.java | 401 +++++-- .../jpa1/context/orm/GenericOrmQueryContainer.java | 180 +-- .../jpa1/context/orm/GenericOrmReferenceTable.java | 113 +- .../jpa1/context/orm/GenericOrmSecondaryTable.java | 112 +- .../jpa1/context/orm/GenericOrmTableGenerator.java | 91 +- .../orm/NullOrmJoinColumnRelationshipStrategy.java | 16 +- .../jpa1/context/persistence/GenericClassRef.java | 20 +- .../context/persistence/GenericPersistence.java | 12 +- .../BinaryAssociationOverride1_0Annotation.java | 4 +- .../BinaryAssociationOverrides1_0Annotation.java | 33 - .../binary/BinaryNamedQueries1_0Annotation.java | 32 - .../java/binary/BinaryNamedQuery1_0Annotation.java | 4 +- .../BinarySequenceGenerator1_0Annotation.java | 4 +- .../SourceAssociationOverride1_0Annotation.java | 58 +- .../SourceAssociationOverrides1_0Annotation.java | 33 - .../java/source/SourceNamedQuery1_0Annotation.java | 32 +- .../SourceSequenceGenerator1_0Annotation.java | 10 +- .../Generic2_0JpaAnnotationDefinitionProvider.java | 96 +- .../jpa2/Generic2_0JpaPlatformFactory.java | 6 +- .../jpa2/GenericJpaDatabaseIdentifierAdapter.java | 2 +- .../core/internal/jpa2/GenericJpaFactory2_0.java | 6 +- .../jpa2/GenericMetamodelSynchronizer.java | 14 +- .../AbstractJavaElementCollectionMapping2_0.java | 34 +- .../jpa2/context/java/GenericJavaCacheable2_0.java | 12 +- .../java/GenericJavaCollectionTable2_0.java | 8 +- .../GenericJavaIdDerivedIdentityStrategy2_0.java | 6 +- ...enericJavaMapsIdDerivedIdentityStrategy2_0.java | 6 +- .../context/java/GenericJavaOrderColumn2_0.java | 12 +- .../context/java/GenericJavaPersistentType2_0.java | 21 +- .../JavaElementCollectionMappingDefinition2_0.java | 13 +- .../java/JavaEmbeddedMappingDefinition2_0.java | 4 +- .../java/JavaManyToManyMappingDefinition2_0.java | 8 +- .../java/JavaOneToManyMappingDefinition2_0.java | 8 +- .../jpa2/context/java/NullJavaMapKeyColumn2_0.java | 2 +- .../context/orm/GenericOrmCollectionTable2_0.java | 4 +- .../java/Access2_0AnnotationDefinition.java | 17 +- ...AssociationOverride2_0AnnotationDefinition.java | 38 +- ...ssociationOverrides2_0AnnotationDefinition.java | 62 -- .../java/Cacheable2_0AnnotationDefinition.java | 15 +- .../CollectionTable2_0AnnotationDefinition.java | 15 +- .../ElementCollection2_0AnnotationDefinition.java | 15 +- .../java/GeneratedAnnotationDefinition.java | 16 +- .../java/MapKeyClass2_0AnnotationDefinition.java | 15 +- .../java/MapKeyColumn2_0AnnotationDefinition.java | 15 +- .../MapKeyEnumerated2_0AnnotationDefinition.java | 16 +- .../MapKeyJoinColumn2_0AnnotationDefinition.java | 37 +- .../MapKeyJoinColumns2_0AnnotationDefinition.java | 25 +- .../MapKeyTemporal2_0AnnotationDefinition.java | 16 +- .../java/MapsId2_0AnnotationDefinition.java | 17 +- .../java/NamedQueries2_0AnnotationDefinition.java | 61 - .../java/NamedQuery2_0AnnotationDefinition.java | 36 +- .../resource/java/NullAccess2_0Annotation.java | 8 +- .../java/NullCollectionTable2_0Annotation.java | 19 +- .../resource/java/NullMapKeyColumnAnnotation.java | 4 +- .../java/NullMapKeyEnumerated2_0Annotation.java | 8 +- .../java/NullMapKeyTemporal2_0Annotation.java | 8 +- .../resource/java/NullMapsId2_0Annotation.java | 8 +- .../java/NullOrderColumn2_0Annotation.java | 6 +- .../java/OrderColumn2_0AnnotationDefinition.java | 17 +- .../SequenceGenerator2_0AnnotationDefinition.java | 13 +- .../java/SourceMapKeyJoinColumn2_0Annotation.java | 111 -- .../java/SourceMapKeyJoinColumns2_0Annotation.java | 137 --- .../java/StaticMetamodelAnnotationDefinition.java | 16 +- .../java/binary/BinaryAccess2_0Annotation.java | 8 +- .../BinaryAssociationOverride2_0Annotation.java | 4 +- .../BinaryAssociationOverrides2_0Annotation.java | 33 - .../java/binary/BinaryCacheable2_0Annotation.java | 8 +- .../binary/BinaryCollectionTable2_0Annotation.java | 21 +- .../BinaryElementCollection2_0Annotation.java | 8 +- .../java/binary/BinaryGeneratedAnnotation.java | 19 +- .../binary/BinaryMapKeyClass2_0Annotation.java | 8 +- .../binary/BinaryMapKeyColumn2_0Annotation.java | 6 +- .../BinaryMapKeyEnumerated2_0Annotation.java | 6 +- .../BinaryMapKeyJoinColumn2_0Annotation.java | 8 +- .../BinaryMapKeyJoinColumns2_0Annotation.java | 69 -- .../binary/BinaryMapKeyTemporal2_0Annotation.java | 6 +- .../java/binary/BinaryMapsId2_0Annotation.java | 8 +- .../binary/BinaryNamedQueries2_0Annotation.java | 32 - .../java/binary/BinaryNamedQuery2_0Annotation.java | 4 +- .../binary/BinaryOrderColumn2_0Annotation.java | 6 +- .../BinarySequenceGenerator2_0Annotation.java | 4 +- .../binary/BinaryStaticMetamodelAnnotation.java | 8 +- .../java/source/SourceAccess2_0Annotation.java | 16 +- .../SourceAssociationOverride2_0Annotation.java | 101 +- .../SourceAssociationOverrides2_0Annotation.java | 33 - .../java/source/SourceCacheable2_0Annotation.java | 17 +- .../source/SourceCollectionTable2_0Annotation.java | 205 +--- .../SourceElementCollection2_0Annotation.java | 18 +- .../java/source/SourceGeneratedAnnotation.java | 26 +- .../source/SourceMapKeyClass2_0Annotation.java | 16 +- .../source/SourceMapKeyColumn2_0Annotation.java | 10 +- .../SourceMapKeyEnumerated2_0Annotation.java | 10 +- .../SourceMapKeyJoinColumn2_0Annotation.java | 145 +++ .../source/SourceMapKeyTemporal2_0Annotation.java | 10 +- .../java/source/SourceMapsId2_0Annotation.java | 16 +- .../source/SourceNamedQueries2_0Annotation.java | 33 - .../java/source/SourceNamedQuery2_0Annotation.java | 62 +- .../source/SourceOrderColumn2_0Annotation.java | 41 +- .../SourceSequenceGenerator2_0Annotation.java | 10 +- .../source/SourceStaticMetamodelAnnotation.java | 16 +- .../jpt/jpa/core/internal/jpql/JpaEntity.java | 9 +- .../core/internal/jpql/JpaManagedTypeProvider.java | 6 +- .../jpt/jpa/core/internal/jpql/JpaMapping.java | 13 +- .../jpt/jpa/core/internal/jpql/JpaMappingFile.java | 5 +- .../jpt/jpa/core/internal/jpql/JpaOrmEntity.java | 4 +- .../jpa/core/internal/jpql/JpaPersistenceUnit.java | 17 +- .../OrmFileCreationDataModelProvider.java | 26 +- .../operations/OrmFileCreationOperation.java | 10 +- .../AbstractJpaDeleteTypeParticipant.java | 10 +- .../AbstractJpaMoveJavaElementParticipant.java | 10 +- .../AbstractJpaRenameJavaElementParticipant.java | 10 +- .../JpaDeleteMappingFileParticipant.java | 6 +- .../refactoring/JpaMoveFolderParticipant.java | 6 +- .../refactoring/JpaMoveMappingFileParticipant.java | 6 +- .../refactoring/JpaRenameFolderParticipant.java | 6 +- .../JpaRenameMappingFileParticipant.java | 6 +- .../resource/java/AbstractJavaResourceNode.java | 109 -- .../AssociationOverrideAnnotationDefinition.java | 37 +- .../AssociationOverridesAnnotationDefinition.java | 26 +- .../AttributeOverrideAnnotationDefinition.java | 37 +- .../AttributeOverridesAnnotationDefinition.java | 26 +- .../resource/java/BasicAnnotationDefinition.java | 17 +- .../resource/java/ColumnAnnotationDefinition.java | 12 +- .../DiscriminatorColumnAnnotationDefinition.java | 16 +- .../DiscriminatorValueAnnotationDefinition.java | 16 +- .../java/EmbeddableAnnotationDefinition.java | 14 +- .../java/EmbeddedAnnotationDefinition.java | 14 +- .../java/EmbeddedIdAnnotationDefinition.java | 15 +- .../resource/java/EntityAnnotationDefinition.java | 15 +- .../java/EnumeratedAnnotationDefinition.java | 17 +- .../java/GeneratedValueAnnotationDefinition.java | 15 +- .../resource/java/IdAnnotationDefinition.java | 15 +- .../resource/java/IdClassAnnotationDefinition.java | 15 +- .../java/InheritanceAnnotationDefinition.java | 17 +- .../java/JoinColumnAnnotationDefinition.java | 37 +- .../java/JoinColumnsAnnotationDefinition.java | 26 +- .../java/JoinTableAnnotationDefinition.java | 13 +- .../resource/java/LobAnnotationDefinition.java | 15 +- .../java/ManyToManyAnnotationDefinition.java | 15 +- .../java/ManyToOneAnnotationDefinition.java | 15 +- .../resource/java/MapKeyAnnotationDefinition.java | 15 +- .../java/MappedSuperclassAnnotationDefinition.java | 15 +- .../NamedNativeQueriesAnnotationDefinition.java | 21 +- .../java/NamedNativeQueryAnnotationDefinition.java | 36 +- .../java/NamedQueriesAnnotationDefinition.java | 21 +- .../java/NamedQueryAnnotationDefinition.java | 36 +- .../internal/resource/java/NullAnnotation.java | 94 -- .../resource/java/NullBaseColumnAnnotation.java | 4 +- .../resource/java/NullBaseTableAnnotation.java | 19 +- .../resource/java/NullColumnAnnotation.java | 5 +- .../java/NullDiscriminatorColumnAnnotation.java | 6 +- .../java/NullDiscriminatorValueAnnotation.java | 7 +- .../resource/java/NullEnumeratedAnnotation.java | 7 +- .../resource/java/NullInheritanceAnnotation.java | 7 +- .../resource/java/NullJoinColumnAnnotation.java | 4 +- .../resource/java/NullJoinTableAnnotation.java | 29 +- .../resource/java/NullNamedColumnAnnotation.java | 5 +- .../java/NullPrimaryKeyJoinColumnAnnotation.java | 4 +- .../resource/java/NullTableAnnotation.java | 6 +- .../resource/java/NullTemporalAnnotation.java | 7 +- .../java/OneToManyAnnotationDefinition.java | 15 +- .../java/OneToOneAnnotationDefinition.java | 15 +- .../resource/java/OrderByAnnotationDefinition.java | 15 +- .../PrimaryKeyJoinColumnAnnotationDefinition.java | 37 +- .../PrimaryKeyJoinColumnsAnnotationDefinition.java | 26 +- .../java/SecondaryTableAnnotationDefinition.java | 37 +- .../java/SecondaryTablesAnnotationDefinition.java | 22 +- .../SequenceGeneratorAnnotationDefinition.java | 13 +- .../resource/java/TableAnnotationDefinition.java | 17 +- .../java/TableGeneratorAnnotationDefinition.java | 13 +- .../java/TemporalAnnotationDefinition.java | 17 +- .../java/TransientAnnotationDefinition.java | 15 +- .../resource/java/VersionAnnotationDefinition.java | 15 +- .../java/binary/BinaryAnnotatedElement.java | 225 ---- .../resource/java/binary/BinaryAnnotation.java | 113 -- .../BinaryAssociationOverrideAnnotation.java | 23 +- .../BinaryAssociationOverridesAnnotation.java | 70 -- .../binary/BinaryAttributeOverrideAnnotation.java | 8 +- .../binary/BinaryAttributeOverridesAnnotation.java | 68 -- .../java/binary/BinaryBaseColumnAnnotation.java | 4 +- .../binary/BinaryBaseEnumeratedAnnotation.java | 5 +- .../binary/BinaryBaseJoinColumnAnnotation.java | 4 +- .../java/binary/BinaryBaseTableAnnotation.java | 21 +- .../java/binary/BinaryBaseTemporalAnnotation.java | 5 +- .../java/binary/BinaryBasicAnnotation.java | 7 +- .../resource/java/binary/BinaryClassFile.java | 68 -- .../java/binary/BinaryColumnAnnotation.java | 4 +- .../binary/BinaryCompleteColumnAnnotation.java | 4 +- .../java/binary/BinaryContainerAnnotation.java | 73 -- .../BinaryDiscriminatorColumnAnnotation.java | 6 +- .../binary/BinaryDiscriminatorValueAnnotation.java | 7 +- .../java/binary/BinaryEmbeddableAnnotation.java | 7 +- .../java/binary/BinaryEmbeddedAnnotation.java | 7 +- .../java/binary/BinaryEmbeddedIdAnnotation.java | 7 +- .../java/binary/BinaryEntityAnnotation.java | 7 +- .../java/binary/BinaryEnumeratedAnnotation.java | 6 +- .../binary/BinaryGeneratedValueAnnotation.java | 7 +- .../java/binary/BinaryGeneratorAnnotation.java | 5 +- .../resource/java/binary/BinaryIdAnnotation.java | 7 +- .../java/binary/BinaryIdClassAnnotation.java | 7 +- .../java/binary/BinaryInheritanceAnnotation.java | 7 +- .../java/binary/BinaryJoinColumnAnnotation.java | 8 +- .../java/binary/BinaryJoinColumnsAnnotation.java | 68 -- .../java/binary/BinaryJoinTableAnnotation.java | 29 +- .../resource/java/binary/BinaryLobAnnotation.java | 7 +- .../java/binary/BinaryManyToManyAnnotation.java | 6 +- .../java/binary/BinaryManyToOneAnnotation.java | 6 +- .../java/binary/BinaryMapKeyAnnotation.java | 7 +- .../binary/BinaryMappedSuperclassAnnotation.java | 7 +- .../java/binary/BinaryNamedColumnAnnotation.java | 5 +- .../binary/BinaryNamedNativeQueriesAnnotation.java | 68 -- .../binary/BinaryNamedNativeQueryAnnotation.java | 8 +- .../java/binary/BinaryNamedQueriesAnnotation.java | 70 -- .../java/binary/BinaryNamedQueryAnnotation.java | 8 +- .../internal/resource/java/binary/BinaryNode.java | 60 - .../java/binary/BinaryOneToManyAnnotation.java | 6 +- .../java/binary/BinaryOneToOneAnnotation.java | 6 +- .../java/binary/BinaryOrderByAnnotation.java | 7 +- .../java/binary/BinaryOverrideAnnotation.java | 5 +- .../java/binary/BinaryPackageFragment.java | 125 --- .../java/binary/BinaryPackageFragmentRoot.java | 116 -- .../java/binary/BinaryPersistentAttribute.java | 657 ----------- .../java/binary/BinaryPersistentMember.java | 190 ---- .../resource/java/binary/BinaryPersistentType.java | 700 ------------ .../java/binary/BinaryPersistentTypeCache.java | 149 --- .../BinaryPrimaryKeyJoinColumnAnnotation.java | 8 +- .../BinaryPrimaryKeyJoinColumnsAnnotation.java | 69 -- .../java/binary/BinaryQueryAnnotation.java | 21 +- .../java/binary/BinaryQueryHintAnnotation.java | 5 +- .../BinaryRelationshipMappingAnnotation.java | 7 +- .../binary/BinarySecondaryTableAnnotation.java | 23 +- .../binary/BinarySecondaryTablesAnnotation.java | 68 -- .../binary/BinarySequenceGeneratorAnnotation.java | 4 +- .../java/binary/BinaryTableAnnotation.java | 6 +- .../binary/BinaryTableGeneratorAnnotation.java | 19 +- .../java/binary/BinaryTemporalAnnotation.java | 6 +- .../java/binary/BinaryTransientAnnotation.java | 7 +- .../binary/BinaryUniqueConstraintAnnotation.java | 20 +- .../java/binary/BinaryVersionAnnotation.java | 7 +- .../resource/java/binary/RootBinaryNode.java | 82 -- .../java/source/AnnotationContainerTools.java | 281 ----- .../java/source/SourceAnnotatedElement.java | 473 -------- .../resource/java/source/SourceAnnotation.java | 279 ----- .../SourceAssociationOverrideAnnotation.java | 210 +--- .../SourceAssociationOverridesAnnotation.java | 131 --- .../source/SourceAttributeOverrideAnnotation.java | 110 +- .../source/SourceAttributeOverridesAnnotation.java | 135 --- .../java/source/SourceBaseColumnAnnotation.java | 55 +- .../source/SourceBaseEnumeratedAnnotation.java | 15 +- .../source/SourceBaseJoinColumnAnnotation.java | 46 +- .../java/source/SourceBaseTableAnnotation.java | 218 +--- .../java/source/SourceBaseTemporalAnnotation.java | 15 +- .../java/source/SourceBasicAnnotation.java | 17 +- .../java/source/SourceColumnAnnotation.java | 14 +- .../java/source/SourceCompilationUnit.java | 178 --- .../source/SourceCompleteColumnAnnotation.java | 40 +- .../SourceDiscriminatorColumnAnnotation.java | 35 +- .../source/SourceDiscriminatorValueAnnotation.java | 15 +- .../java/source/SourceEmbeddableAnnotation.java | 14 +- .../java/source/SourceEmbeddedAnnotation.java | 14 +- .../java/source/SourceEmbeddedIdAnnotation.java | 14 +- .../java/source/SourceEntityAnnotation.java | 13 +- .../java/source/SourceEnumeratedAnnotation.java | 10 +- .../source/SourceGeneratedValueAnnotation.java | 18 +- .../java/source/SourceGeneratorAnnotation.java | 11 +- .../resource/java/source/SourceIdAnnotation.java | 13 +- .../java/source/SourceIdClassAnnotation.java | 15 +- .../java/source/SourceInheritanceAnnotation.java | 15 +- .../java/source/SourceJoinColumnAnnotation.java | 80 +- .../java/source/SourceJoinColumnsAnnotation.java | 134 --- .../java/source/SourceJoinTableAnnotation.java | 380 ++----- .../resource/java/source/SourceLobAnnotation.java | 13 +- .../java/source/SourceManyToManyAnnotation.java | 10 +- .../java/source/SourceManyToOneAnnotation.java | 10 +- .../java/source/SourceMapKeyAnnotation.java | 15 +- .../source/SourceMappedSuperclassAnnotation.java | 13 +- .../java/source/SourceNamedColumnAnnotation.java | 43 +- .../source/SourceNamedNativeQueriesAnnotation.java | 135 --- .../source/SourceNamedNativeQueryAnnotation.java | 84 +- .../source/SourceNamedQueries1_0Annotation.java | 32 - .../java/source/SourceNamedQueriesAnnotation.java | 131 --- .../java/source/SourceNamedQueryAnnotation.java | 49 +- .../internal/resource/java/source/SourceNode.java | 35 - .../java/source/SourceOneToManyAnnotation.java | 10 +- .../java/source/SourceOneToOneAnnotation.java | 10 +- .../java/source/SourceOrderByAnnotation.java | 15 +- .../java/source/SourceOverrideAnnotation.java | 46 +- .../resource/java/source/SourcePackage.java | 118 -- .../source/SourcePackageInfoCompilationUnit.java | 120 -- .../java/source/SourcePersistentAttribute.java | 408 ------- .../java/source/SourcePersistentMember.java | 138 --- .../resource/java/source/SourcePersistentType.java | 930 ---------------- .../SourcePrimaryKeyJoinColumnAnnotation.java | 111 +- .../SourcePrimaryKeyJoinColumnsAnnotation.java | 135 --- .../java/source/SourceQueryAnnotation.java | 205 +--- .../java/source/SourceQueryHintAnnotation.java | 75 +- .../SourceRelationshipMappingAnnotation.java | 15 +- .../source/SourceSecondaryTableAnnotation.java | 254 ++--- .../source/SourceSecondaryTablesAnnotation.java | 135 --- .../source/SourceSequenceGeneratorAnnotation.java | 10 +- .../java/source/SourceTableAnnotation.java | 10 +- .../source/SourceTableGeneratorAnnotation.java | 168 +-- .../java/source/SourceTemporalAnnotation.java | 10 +- .../java/source/SourceTransientAnnotation.java | 13 +- .../java/source/SourceTypeCompilationUnit.java | 167 --- .../source/SourceUniqueConstraintAnnotation.java | 74 +- .../java/source/SourceVersionAnnotation.java | 14 +- .../core/internal/synch/SynchronizeClassesJob.java | 8 +- .../internal/validation/JpaValidationMessages.java | 1 + .../eclipse/jpt/jpa/core/jpa2/JpaProject2_0.java | 12 +- .../jpt/jpa/core/jpa2/MetamodelSynchronizer.java | 88 +- .../jpa/core/jpa2/context/MetamodelSourceType.java | 8 +- .../jpa2/context/java/JavaCacheableHolder2_0.java | 6 +- .../core/jpa2/context/java/JavaOrderable2_0.java | 6 +- .../jpa2/context/java/JavaPersistentType2_0.java | 8 +- .../jpa2/context/orm/OrmPersistentType2_0.java | 7 +- .../jpa2/resource/java/Access2_0Annotation.java | 4 +- .../jpa2/resource/java/Cacheable2_0Annotation.java | 4 +- .../java/ElementCollection2_0Annotation.java | 4 +- .../jpa2/resource/java/GeneratedAnnotation.java | 11 +- .../java/JavaResourcePersistentType2_0.java | 85 -- .../resource/java/MapKeyClass2_0Annotation.java | 4 +- .../java/MapKeyJoinColumns2_0Annotation.java | 33 - .../jpa2/resource/java/MapsId2_0Annotation.java | 4 +- .../java/NestableMapKeyJoinColumnAnnotation.java | 31 - .../resource/java/StaticMetamodelAnnotation.java | 4 +- .../jpt/jpa/core/resource/java/Annotation.java | 91 -- .../core/resource/java/AnnotationContainer.java | 92 -- .../core/resource/java/AnnotationDefinition.java | 67 -- .../java/AssociationOverrideAnnotation.java | 13 +- .../java/AssociationOverridesAnnotation.java | 31 - .../java/AttributeOverridesAnnotation.java | 31 - .../resource/java/BaseJoinColumnAnnotation.java | 4 +- .../core/resource/java/BaseTableAnnotation.java | 15 +- .../jpa/core/resource/java/BasicAnnotation.java | 3 +- .../core/resource/java/ContainerAnnotation.java | 47 - .../java/DiscriminatorValueAnnotation.java | 3 +- .../core/resource/java/EmbeddableAnnotation.java | 4 +- .../jpa/core/resource/java/EmbeddedAnnotation.java | 4 +- .../core/resource/java/EmbeddedIdAnnotation.java | 4 +- .../jpa/core/resource/java/EntityAnnotation.java | 3 +- .../core/resource/java/EnumeratedAnnotation.java | 3 +- .../resource/java/GeneratedValueAnnotation.java | 3 +- .../core/resource/java/GeneratorAnnotation.java | 3 +- .../jpt/jpa/core/resource/java/IdAnnotation.java | 4 +- .../jpa/core/resource/java/IdClassAnnotation.java | 3 +- .../core/resource/java/InheritanceAnnotation.java | 3 +- .../java/JavaResourceAnnotatedElement.java | 137 --- .../core/resource/java/JavaResourceClassFile.java | 33 - .../resource/java/JavaResourceCompilationUnit.java | 68 -- .../jpa/core/resource/java/JavaResourceNode.java | 100 -- .../core/resource/java/JavaResourcePackage.java | 35 - .../resource/java/JavaResourcePackageFragment.java | 46 - .../java/JavaResourcePackageFragmentRoot.java | 40 - .../JavaResourcePackageInfoCompilationUnit.java | 30 - .../java/JavaResourcePersistentAttribute.java | 144 --- .../java/JavaResourcePersistentMember.java | 83 -- .../resource/java/JavaResourcePersistentType.java | 215 ---- .../java/JavaResourcePersistentTypeCache.java | 48 - .../core/resource/java/JoinColumnsAnnotation.java | 31 - .../core/resource/java/JoinTableAnnotation.java | 13 +- .../jpt/jpa/core/resource/java/LobAnnotation.java | 4 +- .../jpa/core/resource/java/MapKeyAnnotation.java | 3 +- .../resource/java/MappedSuperclassAnnotation.java | 4 +- .../core/resource/java/NamedColumnAnnotation.java | 1 + .../java/NamedNativeQueriesAnnotation.java | 31 - .../core/resource/java/NamedQueriesAnnotation.java | 31 - .../jpa/core/resource/java/NestableAnnotation.java | 60 - .../NestableAssociationOverrideAnnotation.java | 29 - .../java/NestableAttributeOverrideAnnotation.java | 29 - .../java/NestableJoinColumnAnnotation.java | 29 - .../java/NestableNamedNativeQueryAnnotation.java | 29 - .../java/NestableNamedQueryAnnotation.java | 29 - .../NestablePrimaryKeyJoinColumnAnnotation.java | 29 - .../resource/java/NestableQueryHintAnnotation.java | 29 - .../java/NestableSecondaryTableAnnotation.java | 29 - .../java/NestableUniqueConstraintAnnotation.java | 29 - .../jpa/core/resource/java/OrderByAnnotation.java | 3 +- .../jpa/core/resource/java/OverrideAnnotation.java | 5 +- .../java/PrimaryKeyJoinColumnAnnotation.java | 5 +- .../java/PrimaryKeyJoinColumnsAnnotation.java | 31 - .../jpa/core/resource/java/QueryAnnotation.java | 17 +- .../core/resource/java/QueryHintAnnotation.java | 5 +- .../resource/java/ReferenceTableAnnotation.java | 13 +- .../java/RelationshipMappingAnnotation.java | 3 +- .../resource/java/SecondaryTableAnnotation.java | 16 +- .../resource/java/SecondaryTablesAnnotation.java | 31 - .../resource/java/TableGeneratorAnnotation.java | 13 +- .../jpa/core/resource/java/TemporalAnnotation.java | 3 +- .../core/resource/java/TransientAnnotation.java | 4 +- .../resource/java/UniqueConstraintAnnotation.java | 16 +- .../jpa/core/resource/java/VersionAnnotation.java | 4 +- .../context/EclipseLinkObjectTypeConverter.java | 8 +- .../orm/OrmEclipseLinkConverterContainer.java | 20 +- .../persistence/EclipseLinkPersistenceUnit.java | 25 +- ...EclipseLinkJpaAnnotationDefinitionProvider.java | 42 +- .../core/internal/EclipseLinkJpaFactory.java | 22 +- .../internal/EclipseLinkJpaPlatformFactory.java | 12 +- ...seLinkJavaBasicCollectionMappingDefinition.java | 2 +- .../EclipseLinkJavaBasicMapMappingDefinition.java | 2 +- ...pseLinkJavaTransformationMappingDefinition.java | 2 +- ...eLinkJavaVariableOneToOneMappingDefinition.java | 4 +- .../context/java/JavaEclipseLinkCachingImpl.java | 16 +- .../java/JavaEclipseLinkChangeTracking.java | 12 +- .../context/java/JavaEclipseLinkConvert.java | 12 +- .../context/java/JavaEclipseLinkConverter.java | 22 +- .../JavaEclipseLinkConverterContainerImpl.java | 28 +- .../context/java/JavaEclipseLinkCustomizer.java | 12 +- .../java/JavaEclipseLinkEmbeddableImpl.java | 4 +- .../context/java/JavaEclipseLinkEntityImpl.java | 6 +- .../context/java/JavaEclipseLinkJoinFetch.java | 12 +- .../java/JavaEclipseLinkMappedSuperclassImpl.java | 6 +- .../context/java/JavaEclipseLinkMutable.java | 12 +- .../java/JavaEclipseLinkObjectTypeConverter.java | 107 +- .../java/JavaEclipseLinkPersistentAttribute.java | 33 +- .../context/java/JavaEclipseLinkPrivateOwned.java | 12 +- .../context/java/JavaEclipseLinkReadOnly.java | 12 +- .../orm/OrmEclipseLinkConverterClassConverter.java | 16 +- .../orm/OrmEclipseLinkConverterContainerImpl.java | 373 ++----- .../context/orm/OrmEclipseLinkCustomizer.java | 12 +- .../context/orm/OrmEclipseLinkEmbeddableImpl.java | 4 +- .../context/orm/OrmEclipseLinkEntityImpl.java | 15 +- .../orm/OrmEclipseLinkMappedSuperclassImpl.java | 5 +- .../orm/OrmEclipseLinkObjectTypeConverter.java | 129 +-- .../orm/OrmEclipseLinkPersistentAttribute.java | 4 +- .../context/orm/OrmEclipseLinkTypeConverter.java | 22 +- .../EclipseLinkPersistenceUnitProperties.java | 4 +- ...pseLinkBasicCollectionAnnotationDefinition.java | 15 +- .../EclipseLinkBasicMapAnnotationDefinition.java | 15 +- .../java/EclipseLinkCacheAnnotationDefinition.java | 17 +- ...ipseLinkChangeTrackingAnnotationDefinition.java | 15 +- .../EclipseLinkConvertAnnotationDefinition.java | 15 +- .../EclipseLinkConverterAnnotationDefinition.java | 15 +- .../EclipseLinkCustomizerAnnotationDefinition.java | 15 +- ...eLinkExistenceCheckingAnnotationDefinition.java | 17 +- .../EclipseLinkJoinFetchAnnotationDefinition.java | 17 +- .../EclipseLinkMutableAnnotationDefinition.java | 15 +- ...inkObjectTypeConverterAnnotationDefinition.java | 15 +- .../EclipseLinkPrimaryKeyAnnotationDefinition.java | 14 +- ...clipseLinkPrivateOwnedAnnotationDefinition.java | 15 +- .../EclipseLinkReadOnlyAnnotationDefinition.java | 15 +- ...pseLinkReadTransformerAnnotationDefinition.java | 15 +- ...pseLinkStructConverterAnnotationDefinition.java | 15 +- ...ipseLinkTransformationAnnotationDefinition.java | 17 +- ...lipseLinkTypeConverterAnnotationDefinition.java | 15 +- ...seLinkVariableOneToOneAnnotationDefinition.java | 15 +- ...seLinkWriteTransformerAnnotationDefinition.java | 15 +- .../java/NullEclipseLinkCacheAnnotation.java | 8 +- .../java/NullEclipseLinkJoinFetchAnnotation.java | 8 +- .../NullEclipseLinkTransformationAnnotation.java | 8 +- ...naryBaseEclipseLinkTypeConverterAnnotation.java | 6 +- ...BinaryEclipseLinkBasicCollectionAnnotation.java | 8 +- .../BinaryEclipseLinkBasicMapAnnotation.java | 8 +- .../binary/BinaryEclipseLinkCacheAnnotation.java | 8 +- .../BinaryEclipseLinkChangeTrackingAnnotation.java | 8 +- ...BinaryEclipseLinkConversionValueAnnotation.java | 6 +- .../binary/BinaryEclipseLinkConvertAnnotation.java | 8 +- .../BinaryEclipseLinkConverterAnnotation.java | 6 +- .../BinaryEclipseLinkCustomizerAnnotation.java | 8 +- ...naryEclipseLinkExistenceCheckingAnnotation.java | 8 +- .../BinaryEclipseLinkJoinFetchAnnotation.java | 8 +- .../binary/BinaryEclipseLinkMutableAnnotation.java | 8 +- .../BinaryEclipseLinkNamedConverterAnnotation.java | 8 +- ...ryEclipseLinkObjectTypeConverterAnnotation.java | 21 +- .../BinaryEclipseLinkPrimaryKeyAnnotation.java | 8 +- .../BinaryEclipseLinkPrivateOwnedAnnotation.java | 8 +- .../BinaryEclipseLinkReadOnlyAnnotation.java | 8 +- ...BinaryEclipseLinkReadTransformerAnnotation.java | 6 +- ...BinaryEclipseLinkStructConverterAnnotation.java | 6 +- .../BinaryEclipseLinkTimeOfDayAnnotation.java | 6 +- .../BinaryEclipseLinkTransformationAnnotation.java | 8 +- .../BinaryEclipseLinkTransformerAnnotation.java | 8 +- .../BinaryEclipseLinkTypeConverterAnnotation.java | 6 +- ...inaryEclipseLinkVariableOneToOneAnnotation.java | 8 +- ...inaryEclipseLinkWriteTransformerAnnotation.java | 6 +- ...urceBaseEclipseLinkTypeConverterAnnotation.java | 8 +- ...SourceEclipseLinkBasicCollectionAnnotation.java | 14 +- .../SourceEclipseLinkBasicMapAnnotation.java | 14 +- .../source/SourceEclipseLinkCacheAnnotation.java | 32 +- .../SourceEclipseLinkChangeTrackingAnnotation.java | 16 +- ...SourceEclipseLinkConversionValueAnnotation.java | 70 +- .../source/SourceEclipseLinkConvertAnnotation.java | 16 +- .../SourceEclipseLinkConverterAnnotation.java | 10 +- .../SourceEclipseLinkCustomizerAnnotation.java | 16 +- ...urceEclipseLinkExistenceCheckingAnnotation.java | 16 +- .../SourceEclipseLinkJoinFetchAnnotation.java | 16 +- .../source/SourceEclipseLinkMutableAnnotation.java | 16 +- .../SourceEclipseLinkNamedConverterAnnotation.java | 12 +- ...ceEclipseLinkObjectTypeConverterAnnotation.java | 158 +-- .../SourceEclipseLinkPrimaryKeyAnnotation.java | 14 +- .../SourceEclipseLinkPrivateOwnedAnnotation.java | 14 +- .../SourceEclipseLinkReadOnlyAnnotation.java | 14 +- ...SourceEclipseLinkReadTransformerAnnotation.java | 10 +- ...SourceEclipseLinkStructConverterAnnotation.java | 10 +- .../SourceEclipseLinkTimeOfDayAnnotation.java | 22 +- .../SourceEclipseLinkTransformationAnnotation.java | 18 +- .../SourceEclipseLinkTransformerAnnotation.java | 18 +- .../SourceEclipseLinkTypeConverterAnnotation.java | 10 +- ...ourceEclipseLinkVariableOneToOneAnnotation.java | 14 +- ...ourceEclipseLinkWriteTransformerAnnotation.java | 17 +- .../v1_1/EclipseLink1_1JpaPlatformFactory.java | 12 +- .../AbstractEclipseLinkTypeMappingValidator.java | 6 +- .../EclipseLinkMappedSuperclassValidator.java | 8 +- .../EclipseLinkPersistentAttributeValidator.java | 5 +- .../context/EclipseLinkTypeMappingValidator.java | 8 +- ...ipseLink1_2JpaAnnotationDefinitionProvider.java | 19 +- .../v1_2/EclipseLink1_2JpaPlatformFactory.java | 12 +- .../internal/v2_0/EclipseLink2_0JpaFactory.java | 6 +- .../v2_0/EclipseLink2_0JpaPlatformFactory.java | 12 +- ...ipseLink2_1JpaAnnotationDefinitionProvider.java | 42 +- .../v2_1/EclipseLink2_1JpaPlatformFactory.java | 12 +- ...eLinkClassExtractor2_1AnnotationDefinition.java | 15 +- ...naryEclipseLinkClassExtractorAnnotation2_1.java | 8 +- ...urceEclipseLinkClassExtractorAnnotation2_1.java | 16 +- .../v2_2/EclipseLink2_2JpaPlatformFactory.java | 12 +- .../v2_3/EclipseLink2_3JpaPlatformFactory.java | 11 +- .../java/EclipseLinkBasicCollectionAnnotation.java | 4 +- .../java/EclipseLinkBasicMapAnnotation.java | 5 +- .../resource/java/EclipseLinkCacheAnnotation.java | 4 +- .../java/EclipseLinkChangeTrackingAnnotation.java | 4 +- .../java/EclipseLinkConversionValueAnnotation.java | 6 +- .../java/EclipseLinkConvertAnnotation.java | 4 +- .../java/EclipseLinkCustomizerAnnotation.java | 4 +- .../EclipseLinkExistenceCheckingAnnotation.java | 4 +- .../java/EclipseLinkJoinFetchAnnotation.java | 4 +- .../java/EclipseLinkMutableAnnotation.java | 4 +- .../java/EclipseLinkNamedConverterAnnotation.java | 4 +- .../EclipseLinkObjectTypeConverterAnnotation.java | 13 +- .../java/EclipseLinkPrimaryKeyAnnotation.java | 4 +- .../java/EclipseLinkPrivateOwnedAnnotation.java | 4 +- .../java/EclipseLinkReadOnlyAnnotation.java | 4 +- .../java/EclipseLinkReadTransformerAnnotation.java | 2 +- .../java/EclipseLinkStructConverterAnnotation.java | 2 +- .../java/EclipseLinkTimeOfDayAnnotation.java | 4 +- .../java/EclipseLinkTransformationAnnotation.java | 4 +- .../java/EclipseLinkTransformerAnnotation.java | 4 +- .../EclipseLinkVariableOneToOneAnnotation.java | 4 +- .../EclipseLinkWriteTransformerAnnotation.java | 2 +- ...stableEclipseLinkConversionValueAnnotation.java | 28 - .../EclipseLinkClassExtractorAnnotation2_1.java | 4 +- .../internal/ddlgen/EclipseLinkDDLGeneratorUi.java | 9 +- .../EclipseLinkObjectTypeConverterComposite.java | 9 +- .../orm/OrmEclipseLinkConvertersComposite.java | 37 +- ...eLinkPersistenceItemContentProviderFactory.java | 21 +- .../jpt/jpa/gen/internal/PackageGenerator.java | 8 +- .../details/AbstractOverridesComposite.java | 24 +- .../AbstractPrimaryKeyJoinColumnsComposite.java | 14 +- .../ui/internal/details/AddQueryStateObject.java | 7 +- .../internal/details/GeneratedValueComposite.java | 7 +- .../ui/internal/details/JoinTableComposite.java | 18 +- .../JoiningStrategyJoinColumnsComposite.java | 8 +- ...tegyJoinColumnsWithOverrideOptionComposite.java | 12 +- ...aryKeyJoinColumnsInSecondaryTableComposite.java | 16 +- .../jpa/ui/internal/details/QueriesComposite.java | 21 +- .../ui/internal/details/QueryHintsComposite.java | 5 +- .../internal/details/ReferenceTableComposite.java | 18 +- .../details/java/JavaSecondaryTablesComposite.java | 11 +- .../details/orm/AddGeneratorStateObject.java | 7 +- .../orm/OrmPrimaryKeyJoinColumnsComposite.java | 22 +- .../details/orm/OrmSecondaryTablesComposite.java | 16 +- .../jpa/ui/internal/editors/PersistenceEditor.java | 9 +- .../JpaJpqlJavaCompletionProposalComputer.java | 4 +- .../jpql/JpaJpqlSseCompletionProposalComputer.java | 8 +- .../details/PersistenceUnitClassesComposite.java | 15 +- .../details/PersistenceUnitJarFilesComposite.java | 13 +- .../PersistenceUnitMappingFilesComposite.java | 15 +- .../PersistenceUnitPropertiesComposite.java | 11 +- ...GenericNavigatorItemContentProviderFactory.java | 30 +- .../JavaPersistentTypeItemContentProvider.java | 10 +- .../OrmPersistentTypeItemContentProvider.java | 22 +- .../generic/PersistenceXmlItemContentProvider.java | 9 +- .../PersistenceItemContentProviderFactory.java | 35 +- .../internal/wizards/JpaMakePersistentWizard.java | 6 +- .../wizards/JpaMakePersistentWizardPage.java | 18 +- .../ui/internal/wizards/orm/MappingFileWizard.java | 4 +- .../resource/JavaTestAttributeMapping.java | 4 +- .../JavaTestAttributeMappingDefinition.java | 4 +- .../extension/resource/JavaTestTypeMapping.java | 4 +- .../resource/JavaTestTypeMappingDefinition.java | 4 +- .../extension/resource/TestJpaPlatformFactory.java | 6 +- .../internal/context/ContextModelTestCase.java | 8 +- .../core/tests/internal/context/JpaFileTests.java | 24 +- .../java/GenericJavaPersistentAttributeTests.java | 143 ++- .../java/GenericJavaPersistentTypeTests.java | 197 +++- .../context/java/JavaAssociationOverrideTests.java | 121 +- .../context/java/JavaAttributeOverrideTests.java | 67 +- .../context/java/JavaBasicMappingTests.java | 440 ++++---- .../internal/context/java/JavaCascadeTests.java | 87 +- .../internal/context/java/JavaColumnTests.java | 249 ++--- .../context/java/JavaDiscriminatorColumnTests.java | 55 +- .../internal/context/java/JavaEmbeddableTests.java | 16 +- .../context/java/JavaEmbeddedIdMappingTests.java | 313 +++--- .../context/java/JavaEmbeddedMappingTests.java | 320 +++--- .../internal/context/java/JavaEntityTests.java | 1160 ++++++++++---------- .../context/java/JavaGeneratedValueTests.java | 39 +- .../internal/context/java/JavaIdMappingTests.java | 339 +++--- .../internal/context/java/JavaJoinColumnTests.java | 173 +-- .../internal/context/java/JavaJoinTableTests.java | 430 ++++---- .../context/java/JavaManyToManyMappingTests.java | 359 +++--- .../context/java/JavaManyToOneMappingTests.java | 340 +++--- .../context/java/JavaMappedSuperclassTests.java | 35 +- .../context/java/JavaNamedNativeQueryTests.java | 111 +- .../internal/context/java/JavaNamedQueryTests.java | 75 +- .../context/java/JavaOneToManyMappingTests.java | 347 +++--- .../context/java/JavaOneToOneMappingTests.java | 549 ++++----- .../java/JavaPrimaryKeyJoinColumnTests.java | 77 +- .../internal/context/java/JavaQueryHintTests.java | 45 +- .../context/java/JavaSecondaryTableTests.java | 295 ++--- .../context/java/JavaSequenceGeneratorTests.java | 57 +- .../context/java/JavaTableGeneratorTests.java | 193 ++-- .../internal/context/java/JavaTableTests.java | 149 +-- .../context/java/JavaTransientMappingTests.java | 107 +- .../context/java/JavaVersionMappingTests.java | 175 +-- .../internal/context/orm/EntityMappingsTests.java | 92 +- .../orm/GenericOrmPersistentAttributeTests.java | 117 +- .../context/orm/GenericOrmPersistentTypeTests.java | 28 +- .../context/orm/OrmAssociationOverrideTests.java | 36 +- .../context/orm/OrmAttributeOverrideTests.java | 10 +- .../internal/context/orm/OrmBasicMappingTests.java | 54 +- .../tests/internal/context/orm/OrmColumnTests.java | 4 +- .../context/orm/OrmEmbeddedIdMappingTests.java | 142 +-- .../context/orm/OrmEmbeddedMappingTests.java | 152 +-- .../tests/internal/context/orm/OrmEntityTests.java | 336 +++--- .../context/orm/OrmGeneratedValueTests.java | 8 +- .../internal/context/orm/OrmIdMappingTests.java | 58 +- .../internal/context/orm/OrmJoinColumnTests.java | 16 +- .../internal/context/orm/OrmJoinTableTests.java | 100 +- .../context/orm/OrmManyToManyMappingTests.java | 57 +- .../context/orm/OrmManyToOneMappingTests.java | 33 +- .../context/orm/OrmOneToManyMappingTests.java | 55 +- .../context/orm/OrmOneToOneMappingTests.java | 81 +- .../context/orm/OrmPrimaryKeyJoinColumnTests.java | 8 +- .../context/orm/OrmSecondaryTableTests.java | 100 +- .../context/orm/OrmTableGeneratorTests.java | 4 +- .../tests/internal/context/orm/OrmTableTests.java | 32 +- .../context/orm/OrmTransientMappingTests.java | 52 +- .../context/orm/OrmVersionMappingTests.java | 52 +- .../tests/internal/context/orm/OrmXmlTests.java | 4 +- .../context/persistence/ClassRefTests.java | 12 +- .../context/persistence/MappingFileRefTests.java | 8 +- .../context/persistence/PersistenceTests.java | 24 +- .../context/persistence/PersistenceUnitTests.java | 102 +- .../GenericJavaAssociationOverride2_0Tests.java | 143 +-- .../context/java/GenericJavaCascade2_0Tests.java | 23 +- .../java/GenericJavaCollectionTable2_0Tests.java | 307 +++--- ...enericJavaElementCollectionMapping2_0Tests.java | 672 ++++++------ .../java/GenericJavaEmbeddedMapping2_0Tests.java | 533 +++++---- .../context/java/GenericJavaEntity2_0Tests.java | 608 +++++----- .../java/GenericJavaManyToManyMapping2_0Tests.java | 272 +++-- .../java/GenericJavaManyToOneMapping2_0Tests.java | 180 ++- .../java/GenericJavaOneToManyMapping2_0Tests.java | 368 +++---- .../java/GenericJavaOneToOneMapping2_0Tests.java | 274 +++-- .../GenericJavaPersistentAttribute2_0Tests.java | 18 +- .../java/GenericJavaPersistentType2_0Tests.java | 90 +- .../java/GenericJavaSequenceGenerator2_0Tests.java | 27 +- .../orm/GenericOrmAssociationOverride2_0Tests.java | 70 +- .../orm/GenericOrmCollectionTable2_0Tests.java | 70 +- ...GenericOrmElementCollectionMapping2_0Tests.java | 140 +-- .../orm/GenericOrmEmbeddedMapping2_0Tests.java | 326 +++--- .../jpa2/context/orm/GenericOrmEntity2_0Tests.java | 290 ++--- .../orm/GenericOrmManyToManyMapping2_0Tests.java | 22 +- .../orm/GenericOrmManyToOneMapping2_0Tests.java | 29 +- .../orm/GenericOrmOneToManyMapping2_0Tests.java | 34 +- .../orm/GenericOrmOneToOneMapping2_0Tests.java | 33 +- .../orm/GenericOrmPersistentAttribute2_0Tests.java | 219 ++-- .../orm/GenericOrmPersistentType2_0Tests.java | 40 +- .../resource/java/Access2_0AnnotationTests.java | 52 +- .../resource/java/AssociationOverride2_0Tests.java | 342 +++--- .../java/AssociationOverrides2_0Tests.java | 445 ++++---- .../resource/java/Cacheable2_0AnnotationTests.java | 30 +- .../java/CollectionTable2_0AnnotationTests.java | 211 ++-- .../java/ElementCollection2_0AnnotationTests.java | 55 +- .../java/JavaResourceModel2_0TestCase.java | 10 +- .../java/ManyToMany2_0AnnotationTests.java | 133 +-- .../resource/java/ManyToOne2_0AnnotationTests.java | 127 +-- .../java/MapKeyClass2_0AnnotationTests.java | 31 +- .../java/MapKeyColumn2_0AnnotationTests.java | 139 +-- .../java/MapKeyEnumerated2_0AnnotationTests.java | 26 +- .../java/MapKeyJoinColumn2_0AnnotationTests.java | 120 +- .../java/MapKeyJoinColumns2_0AnnotationTests.java | 190 ++-- .../java/MapKeyTemporal2_0AnnotationTests.java | 25 +- .../resource/java/MapsId2_0AnnotationTests.java | 25 +- .../resource/java/OneToMany2_0AnnotationTests.java | 133 +-- .../resource/java/OneToOne2_0AnnotationTests.java | 153 +-- .../java/OrderColumn2_0AnnotationTests.java | 89 +- .../java/SequenceGenerator2_0AnnotationTests.java | 37 +- .../resource/java/AssociationOverrideTests.java | 106 +- .../resource/java/AssociationOverridesTests.java | 170 +-- .../resource/java/AttributeOverrideTests.java | 62 +- .../resource/java/AttributeOverridesTests.java | 120 +- .../tests/internal/resource/java/BasicTests.java | 49 +- .../tests/internal/resource/java/ColumnTests.java | 139 +-- .../resource/java/DiscriminatorColumnTests.java | 44 +- .../resource/java/DiscriminatorValueTests.java | 16 +- .../internal/resource/java/EmbeddableTests.java | 16 +- .../internal/resource/java/EmbeddedIdTests.java | 15 +- .../internal/resource/java/EmbeddedTests.java | 15 +- .../tests/internal/resource/java/EntityTests.java | 29 +- .../internal/resource/java/EnumeratedTests.java | 25 +- .../resource/java/GeneratedValueTests.java | 37 +- .../tests/internal/resource/java/IdClassTests.java | 20 +- .../core/tests/internal/resource/java/IdTests.java | 15 +- .../internal/resource/java/InheritanceTests.java | 16 +- .../resource/java/JavaResourceAttributeTests.java | 718 ++++++++++++ .../resource/java/JavaResourceModelTestCase.java | 37 +- .../java/JavaResourcePersistentAttributeTests.java | 870 --------------- .../java/JavaResourcePersistentTypeTests.java | 937 ---------------- .../resource/java/JavaResourceTypeTests.java | 679 ++++++++++++ .../internal/resource/java/JoinColumnTests.java | 115 +- .../internal/resource/java/JoinColumnsTests.java | 190 ++-- .../internal/resource/java/JoinTableTests.java | 284 ++--- .../resource/java/JptJavaResourceTests.java | 6 +- .../tests/internal/resource/java/LobTests.java | 13 +- .../internal/resource/java/ManyToManyTests.java | 127 +-- .../internal/resource/java/ManyToOneTests.java | 121 +- .../tests/internal/resource/java/MapKeyTests.java | 25 +- .../resource/java/MappedSuperclassTests.java | 16 +- .../resource/java/NamedNativeQueriesTests.java | 182 +-- .../resource/java/NamedNativeQueryTests.java | 94 +- .../internal/resource/java/NamedQueriesTests.java | 158 +-- .../internal/resource/java/NamedQueryTests.java | 78 +- .../internal/resource/java/OneToManyTests.java | 127 +-- .../internal/resource/java/OneToOneTests.java | 145 +-- .../tests/internal/resource/java/OrderByTests.java | 25 +- .../resource/java/PrimaryKeyJoinColumnTests.java | 55 +- .../resource/java/PrimaryKeyJoinColumnsTests.java | 123 ++- .../internal/resource/java/QueryHintTests.java | 16 +- .../resource/java/SecondaryTableTests.java | 172 +-- .../resource/java/SecondaryTablesTests.java | 234 ++-- .../resource/java/SequenceGeneratorTests.java | 66 +- .../resource/java/TableGeneratorTests.java | 181 +-- .../tests/internal/resource/java/TableTests.java | 100 +- .../internal/resource/java/TemporalTests.java | 25 +- .../internal/resource/java/TransientTests.java | 15 +- .../tests/internal/resource/java/VersionTests.java | 15 +- .../java/EclipseLinkJavaBasicMappingTests.java | 85 +- .../context/java/EclipseLinkJavaCachingTests.java | 117 +- .../context/java/EclipseLinkJavaConvertTests.java | 61 +- .../java/EclipseLinkJavaConverterTests.java | 59 +- .../java/EclipseLinkJavaEmbeddableTests.java | 35 +- .../context/java/EclipseLinkJavaEntityTests.java | 49 +- .../java/EclipseLinkJavaIdMappingTests.java | 85 +- .../EclipseLinkJavaManyToManyMappingTests.java | 29 +- .../java/EclipseLinkJavaManyToOneMappingTests.java | 29 +- .../java/EclipseLinkJavaMappedSuperclassTests.java | 49 +- .../EclipseLinkJavaObjectTypeConverterTests.java | 207 ++-- .../java/EclipseLinkJavaOneToManyMappingTests.java | 197 ++-- .../java/EclipseLinkJavaOneToOneMappingTests.java | 131 +-- .../java/EclipseLinkJavaStructConverterTests.java | 59 +- .../java/EclipseLinkJavaTypeConverterTests.java | 85 +- .../java/EclipseLinkJavaVersionMappingTests.java | 85 +- .../orm/EclipseLinkEntityMappingsTests.java | 176 +-- .../context/orm/EclipseLinkOrmEmbeddableTests.java | 176 +-- .../context/orm/EclipseLinkOrmEntityTests.java | 176 +-- .../orm/EclipseLinkOrmManyToManyMappingTests.java | 26 +- .../orm/EclipseLinkOrmManyToOneMappingTests.java | 8 +- .../orm/EclipseLinkOrmMappedSuperclassTests.java | 176 +-- .../EclipseLinkOrmObjectTypeConverterTests.java | 48 +- .../orm/EclipseLinkOrmOneToManyMappingTests.java | 29 +- .../orm/EclipseLinkOrmOneToOneMappingTests.java | 14 +- .../EclipseLinkOrmPersistentAttributeTests.java | 121 +- .../orm/EclipseLinkOrmStructConverterTests.java | 4 +- .../orm/EclipseLinkOrmTypeConverterTests.java | 4 +- .../EclipseLinkPersistenceUnitTests.java | 6 +- .../SchemaGenerationBasicAdapterTests.java | 8 +- .../tests/internal/resource/java/CacheTests.java | 106 +- .../resource/java/ChangeTrackingTests.java | 16 +- .../java/ConversionValueAnnotationTests.java | 51 +- .../resource/java/ConvertAnnotationTests.java | 39 +- .../resource/java/ConverterAnnotationTests.java | 57 +- .../resource/java/CustomizerAnnotationTests.java | 28 +- .../java/EclipseLinkJavaResourceModelTestCase.java | 10 +- .../java/EclipseLinkPrimaryKeyAnnotationTests.java | 17 +- .../resource/java/ExistenceCheckingTests.java | 16 +- .../internal/resource/java/JoinFetchTests.java | 25 +- .../resource/java/MutableAnnotationTests.java | 39 +- .../java/ObjectTypeConverterAnnotationTests.java | 157 +-- .../internal/resource/java/PrivateOwnedTests.java | 13 +- .../internal/resource/java/ReadOnlyTests.java | 8 +- .../java/ReadTransformerAnnotationTests.java | 57 +- .../java/StructConverterAnnotationTests.java | 57 +- .../internal/resource/java/TimeOfDayTests.java | 40 +- .../java/TransformationAnnotationTests.java | 57 +- .../java/TypeConverterAnnotationTests.java | 75 +- .../java/WriteTransformerAnnotationTests.java | 75 +- .../EclipseLink1_1OrmPersistentAttributeTests.java | 188 ++-- .../EclipseLink2_0JavaCollectionTableTests.java | 310 +++--- ...seLink2_0JavaElementCollectionMappingTests.java | 671 ++++++----- .../java/EclipseLink2_0JavaEntityTests.java | 525 +++++---- .../EclipseLink2_0JavaManyToManyMappingTests.java | 286 +++-- .../EclipseLink2_0JavaManyToOneMappingTests.java | 132 ++- .../EclipseLink2_0JavaMappedSuperclassTests.java | 67 +- .../EclipseLink2_0JavaOneToManyMappingTests.java | 381 ++++--- .../EclipseLink2_0JavaOneToOneMappingTests.java | 250 +++-- .../orm/EclipseLink2_0OrmCollectionTableTests.java | 75 +- ...pseLink2_0OrmElementCollectionMappingTests.java | 140 +-- .../context/orm/EclipseLink2_0OrmEntityTests.java | 255 +++-- .../EclipseLink2_0OrmManyToManyMappingTests.java | 16 +- .../EclipseLink2_0OrmManyToOneMappingTests.java | 588 ++++++++++ .../EclipseLink2_0OrmMappedSuperclassTests.java | 176 +-- .../EclipseLink2_0OrmOneToManyMappingTests.java | 30 +- .../orm/EclipseLink2_0OrmOneToOneMappingTests.java | 31 +- .../Eclipselink2_0OrmManyToOneMappingTests.java | 589 ---------- .../orm/JptEclipseLink2_0OrmContextModelTests.java | 2 +- .../ui/internal/feature/AddAllEntitiesFeature.java | 9 +- .../ui/internal/feature/AddJPAEntityFeature.java | 14 +- .../internal/feature/CreateJPAEntityFeature.java | 8 +- .../feature/DirectEditJPAEntityFeature.java | 11 +- .../feature/GraphicalRemoveAttributeFeature.java | 10 +- .../feature/RefactorAttributeTypeFeature.java | 14 +- .../ui/internal/feature/RefactorEntityFeature.java | 31 +- .../provider/JPAEditorDiagramTypeProvider.java | 18 +- .../ui/internal/util/EntityChangeListener.java | 6 +- .../ui/internal/util/JPAEditorUtil.java | 38 +- .../ui/internal/util/JPASolver.java | 29 +- .../ui/internal/util/JpaArtifactFactory.java | 184 ++-- .../ui/tests/internal/JPACreateFactory.java | 26 +- .../feature/CreateRelationFeaturesTest.java | 32 +- .../feature/RefactorAttributeTypeFeatureTest.java | 6 +- .../internal/feature/SaveEntityFeatureTest.java | 6 +- .../relation/CreateRelationAttributesTest.java | 38 +- ...reateRelationsInFieldAnnotatedEntitiesTest.java | 32 +- .../internal/relation/CreateRelationsTest.java | 73 +- .../ui/tests/internal/util/CreateDeleteEntity.java | 21 +- .../ui/tests/internal/util/JPAEditorUtilTest.java | 12 +- .../internal/util/JpaArtifactFactoryTest.java | 22 +- 1085 files changed, 27852 insertions(+), 36382 deletions(-) create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/GenericAnnotationProvider.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAbstractType.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotatedElement.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAttribute.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryClassFile.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnum.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnumConstant.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryField.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMember.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMethod.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryNamedAnnotation.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragment.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragmentRoot.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryType.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryTypeCache.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/RootBinaryNode.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNamedAnnotation.java create mode 100644 common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceTypeCache.java create mode 100644 common/tests/org.eclipse.jpt.common.core.tests/src/org/eclipse/jpt/common/core/tests/internal/resource/java/JavaResourceModelTestCase.java delete mode 100644 jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericAnnotationProvider.java create mode 100644 jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java create mode 100644 jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypesAnnotationDefinition.java delete mode 100644 jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JavaResourceModelTestCase.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/java/Accessor.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/GenericJpaAnnotationProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/JpaAnnotationProvider.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractAccessor.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/FieldAccessor.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/PropertyAccessor.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentFieldValidator.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentPropertyValidator.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverrides1_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQueries1_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverrides1_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverrides2_0AnnotationDefinition.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQueries2_0AnnotationDefinition.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumn2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumns2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverrides2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumns2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQueries2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverrides2_0Annotation.java create mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyJoinColumn2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQueries2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AbstractJavaResourceNode.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryAnnotatedElement.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryAssociationOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryAttributeOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryClassFile.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryContainerAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryJoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryNamedNativeQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryNamedQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryNode.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPackageFragment.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPackageFragmentRoot.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPersistentAttribute.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPersistentMember.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPersistentType.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPersistentTypeCache.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinaryPrimaryKeyJoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/BinarySecondaryTablesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/binary/RootBinaryNode.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/AnnotationContainerTools.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceAnnotatedElement.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceAssociationOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceAttributeOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceCompilationUnit.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceJoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceNamedNativeQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceNamedQueries1_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceNamedQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceNode.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePackage.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePackageInfoCompilationUnit.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePersistentAttribute.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePersistentMember.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePersistentType.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourcePrimaryKeyJoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceSecondaryTablesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/source/SourceTypeCompilationUnit.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/resource/java/JavaResourcePersistentType2_0.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/resource/java/MapKeyJoinColumns2_0Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/jpa2/resource/java/NestableMapKeyJoinColumnAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/Annotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/AnnotationContainer.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/AnnotationDefinition.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/AssociationOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/AttributeOverridesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/ContainerAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourceAnnotatedElement.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourceClassFile.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourceCompilationUnit.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourceNode.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePackage.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePackageFragment.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePackageFragmentRoot.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePackageInfoCompilationUnit.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePersistentAttribute.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePersistentMember.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePersistentType.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JavaResourcePersistentTypeCache.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/JoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NamedNativeQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NamedQueriesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableAssociationOverrideAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableAttributeOverrideAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableJoinColumnAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableNamedNativeQueryAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableNamedQueryAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestablePrimaryKeyJoinColumnAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableQueryHintAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableSecondaryTableAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/NestableUniqueConstraintAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/PrimaryKeyJoinColumnsAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/resource/java/SecondaryTablesAnnotation.java delete mode 100644 jpa/plugins/org.eclipse.jpt.jpa.eclipselink.core/src/org/eclipse/jpt/jpa/eclipselink/core/resource/java/NestableEclipseLinkConversionValueAnnotation.java create mode 100644 jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/resource/java/JavaResourceAttributeTests.java delete mode 100644 jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/resource/java/JavaResourcePersistentAttributeTests.java delete mode 100644 jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/resource/java/JavaResourcePersistentTypeTests.java create mode 100644 jpa/tests/org.eclipse.jpt.jpa.core.tests/src/org/eclipse/jpt/jpa/core/tests/internal/resource/java/JavaResourceTypeTests.java create mode 100644 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 delete mode 100644 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 diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/AnnotationProvider.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/AnnotationProvider.java index cb47d9f2c4..5551329f03 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/AnnotationProvider.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/AnnotationProvider.java @@ -43,6 +43,8 @@ public interface AnnotationProvider { String getNestableAnnotationName(String containerAnnotationName); + String getContainerAnnotationName(String nestableAnnotationName); + String getNestableElementName(String nestableAnnotationName); /** @@ -66,6 +68,13 @@ public interface AnnotationProvider { */ Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation); + /** + * Build a nestable annotation for the specified JDT annotation and index. + * Throw an IllegalArgumentException if the specified annotation is unsupported. + * @see #getNestableAnnotationNames() + */ + NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index); + /** * Build a null annotation with the specified name. * Throw an IllegalArgumentException if the specified annotation is unsupported. diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/GenericAnnotationProvider.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/GenericAnnotationProvider.java new file mode 100644 index 0000000000..3eee738f74 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/GenericAnnotationProvider.java @@ -0,0 +1,136 @@ +/******************************************************************************* + * 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.common.core; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; + +/** + * Delegate to annotation definition providers. + * The platform factory will build an instance of this annotation provider, + * passing in the appropriate array of annotation definition providers necessary + * to build the annotations for the platform (vendor and/or version). + */ +public final class GenericAnnotationProvider + implements AnnotationProvider +{ + private final AnnotationDefinition[] annotationDefinitions; + + private final NestableAnnotationDefinition[] nestableAnnotationDefinitions; + + public GenericAnnotationProvider(AnnotationDefinition[] annotationDefinitions, NestableAnnotationDefinition[] nestableAnnotationDefinitions) { + super(); + this.annotationDefinitions = annotationDefinitions; + this.nestableAnnotationDefinitions = nestableAnnotationDefinitions; + } + + + protected Iterable getAnnotationDefinitions() { + return new ArrayIterable(this.annotationDefinitions); + } + + protected AnnotationDefinition getAnnotationDefinition(String annotationName) { + for (AnnotationDefinition annotationDefinition : this.annotationDefinitions) { + if (annotationDefinition.getAnnotationName().equals(annotationName)) { + return annotationDefinition; + } + } + return null; + } + + public Iterable getAnnotationNames() { + return new TransformationIterable(getAnnotationDefinitions()) { + @Override + protected String transform(AnnotationDefinition annotationDefinition) { + return annotationDefinition.getAnnotationName(); + } + }; + } + + public Iterable getContainerAnnotationNames() { + return new TransformationIterable(getNestableAnnotationDefinitions()) { + @Override + protected String transform(NestableAnnotationDefinition annotationDefinition) { + return annotationDefinition.getContainerAnnotationName(); + } + }; + } + + public Iterable getNestableAnnotationNames() { + return new TransformationIterable(getNestableAnnotationDefinitions()) { + @Override + protected String transform(NestableAnnotationDefinition annotationDefinition) { + return annotationDefinition.getNestableAnnotationName(); + } + }; + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element, String annotationName) { + return this.getAnnotationDefinition(annotationName).buildAnnotation(parent, element); + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + return this.getAnnotationDefinition(jdtAnnotation.getElementName()).buildAnnotation(parent, jdtAnnotation); + } + + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return this.getNestableAnnotationDefinition(jdtAnnotation.getElementName()).buildAnnotation(parent, jdtAnnotation, index); + } + + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent, String annotationName) { + return this.getAnnotationDefinition(annotationName).buildNullAnnotation(parent); + } + + protected Iterable getNestableAnnotationDefinitions() { + return new ArrayIterable(this.nestableAnnotationDefinitions); + } + + protected NestableAnnotationDefinition getNestableAnnotationDefinition(String annotationName) { + for (NestableAnnotationDefinition annotationDefinition : this.nestableAnnotationDefinitions) { + if (annotationDefinition.getNestableAnnotationName().equals(annotationName)) { + return annotationDefinition; + } + } + return null; + } + + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element, String annotationName, int index) { + return this.getNestableAnnotationDefinition(annotationName).buildAnnotation(parent, element, index); + } + + public String getNestableAnnotationName(String containerAnnotationName) { + return getNestableAnnotationDefinitionForContainer(containerAnnotationName).getNestableAnnotationName(); + } + + public String getContainerAnnotationName(String nestableAnnotationName) { + return getNestableAnnotationDefinition(nestableAnnotationName).getContainerAnnotationName(); + } + + public String getNestableElementName(String nestableAnnotationName) { + return getNestableAnnotationDefinition(nestableAnnotationName).getElementName(); + } + + private NestableAnnotationDefinition getNestableAnnotationDefinitionForContainer(String containerAnnotationName) { + for (NestableAnnotationDefinition nestableAnnotationDefinition : getNestableAnnotationDefinitions()) { + if (nestableAnnotationDefinition.getContainerAnnotationName().equals(containerAnnotationName)) { + return nestableAnnotationDefinition; + } + } + return null; + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/AbstractJavaResourceNode.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/AbstractJavaResourceNode.java index b5dac59af7..d5aad36057 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/AbstractJavaResourceNode.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/AbstractJavaResourceNode.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 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 abstract class AbstractJavaResourceNode this.parent = parent; } - protected JavaResourceNode getParent() { + public JavaResourceNode getParent() { return this.parent; } @@ -87,9 +87,9 @@ public abstract class AbstractJavaResourceNode // ********** JavaResourceNode implementation ********** /** - * @see org.eclipse.jpt.core.internal.resource.java.source.SourceCompilationUnit#getRoot() - * @see org.eclipse.jpt.core.internal.resource.java.binary.BinaryPackageFragmentRoot#getRoot() - * @see org.eclipse.jpt.core.internal.resource.java.binary.BinaryPersistentTypeCache#getRoot() + * @see org.eclipse.jpt.common.core.internal.resource.java.source.core.internal.resource.java.source.SourceCompilationUnit#getRoot() + * @see org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryPackageFragmentRoot#getRoot() + * @see org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryTypeCache#getRoot() */ public Root getRoot() { return this.parent.getRoot(); diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/NullAnnotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/NullAnnotation.java index 2ada7892c3..5a7e7b775e 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/NullAnnotation.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/NullAnnotation.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. @@ -19,7 +19,7 @@ import org.eclipse.jpt.common.core.utility.TextRange; /** * Simplify null annotation classes */ -public abstract class NullAnnotation +public abstract class NullAnnotation extends AbstractJavaResourceNode implements Annotation { @@ -40,6 +40,10 @@ public abstract class NullAnnotation throw new UnsupportedOperationException(); } + public boolean isMappingAnnotation() { + return false; + } + public void newAnnotation() { throw new UnsupportedOperationException(); } @@ -48,6 +52,14 @@ public abstract class NullAnnotation throw new UnsupportedOperationException(); } + public void moveAnnotation(int index) { + throw new UnsupportedOperationException(); + } + + public boolean isUnset() { + throw new UnsupportedOperationException(); + } + public TextRange getTextRange(CompilationUnit astRoot) { return null; } @@ -70,8 +82,13 @@ public abstract class NullAnnotation * Pre-condition: The annotation's parent must be a persistent member * (type or attribute). */ - protected Annotation addAnnotation() { - return this.getAnnotatedElement().addAnnotation(this.getAnnotationName()); + protected A addAnnotation() { + return this.addAnnotation_(); + } + + @SuppressWarnings("unchecked") + protected A addAnnotation_() { + return (A) this.getAnnotatedElement().addAnnotation(this.getAnnotationName()); } } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAbstractType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAbstractType.java new file mode 100644 index 0000000000..61eeb56123 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAbstractType.java @@ -0,0 +1,213 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnum; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.utility.internal.StringTools; + +/** + * binary persistent type + */ +abstract class BinaryAbstractType + extends BinaryMember + implements JavaResourceAbstractType +{ + private String name; + + private String qualifiedName; + + private String packageName; + + private String declaringTypeName; + + private boolean memberType; + + + // ********** construction/initialization ********** + + protected BinaryAbstractType(JavaResourceNode parent, IType type) { + super(parent, new TypeAdapter(type)); + this.name = this.buildName(); + this.qualifiedName = this.buildQualifiedName(); + this.packageName = this.buildPackageName(); + this.declaringTypeName = this.buildDeclaringTypeName(); + this.memberType = this.buildMemberType(); + } + + + // ********** overrides ********** + + @Override + public void update() { + super.update(); + this.setName(this.buildName()); + this.setQualifiedName(this.buildQualifiedName()); + this.setPackageName(this.buildPackageName()); + this.setDeclaringTypeName(this.buildDeclaringTypeName()); + this.setMemberType(this.buildMemberType()); + } + + @Override + public void toString(StringBuilder sb) { + sb.append(this.name); + } + + + // ********** JavaResourceAbstractType implementation ********** + + // ***** name + public String getName() { + return this.name; + } + + private void setName(String name) { + String old = this.name; + this.name = name; + this.firePropertyChanged(NAME_PROPERTY, old, name); + } + + private String buildName() { + return this.getMember().getElementName(); + } + + // ***** qualified name + public String getQualifiedName() { + return this.qualifiedName; + } + + private void setQualifiedName(String qualifiedName) { + String old = this.qualifiedName; + this.qualifiedName = qualifiedName; + this.firePropertyChanged(QUALIFIED_NAME_PROPERTY, old, qualifiedName); + } + + private String buildQualifiedName() { + return this.getMember().getFullyQualifiedName('.'); // no parameters are included here + } + + // ***** package + public String getPackageName() { + return this.packageName; + } + + private void setPackageName(String packageName) { + String old = this.packageName; + this.packageName = packageName; + this.firePropertyChanged(PACKAGE_NAME_PROPERTY, old, packageName); + } + + private String buildPackageName() { + return this.getMember().getPackageFragment().getElementName(); + } + + public boolean isIn(IPackageFragment packageFragment) { + return StringTools.stringsAreEqual(packageFragment.getElementName(), this.packageName); + } + + // ***** source folder + public boolean isIn(IPackageFragmentRoot sourceFolder) { + return getSourceFolder().equals(sourceFolder); + } + + private IPackageFragmentRoot getSourceFolder() { + return (IPackageFragmentRoot) this.getMember().getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); + } + + // ***** declaring type name + public String getDeclaringTypeName() { + return this.declaringTypeName; + } + + private void setDeclaringTypeName(String declaringTypeName) { + String old = this.declaringTypeName; + this.declaringTypeName = declaringTypeName; + this.firePropertyChanged(DECLARING_TYPE_NAME_PROPERTY, old, declaringTypeName); + } + + private String buildDeclaringTypeName() { + IType declaringType = this.getMember().getDeclaringType(); + return (declaringType == null) ? null : declaringType.getFullyQualifiedName('.'); // no parameters are included here + } + + + // ***** member + public boolean isMemberType() { + return this.memberType; + } + + private void setMemberType(boolean memberType) { + boolean old = this.memberType; + this.memberType = memberType; + this.firePropertyChanged(MEMBER_TYPE_PROPERTY, old, memberType); + } + + private boolean buildMemberType() { + try { + return this.getMember().isMember(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + + // ********** misc ********** + + @Override + public IType getMember() { + return (IType) super.getMember(); + } + + public Iterable getTypes() { + throw new UnsupportedOperationException(); + } + + public Iterable getEnums() { + throw new UnsupportedOperationException(); + } + + public Iterable getAllTypes() { + throw new UnsupportedOperationException(); + } + + public Iterable getAllEnums() { + throw new UnsupportedOperationException(); + } + + // ********** IType adapter ********** + + static class TypeAdapter implements Adapter { + private final IType type; + + TypeAdapter(IType type) { + super(); + this.type = type; + } + + public IType getElement() { + return this.type; + } + + public IAnnotation[] getAnnotations() throws JavaModelException { + return this.type.getAnnotations(); + } + + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotatedElement.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotatedElement.java new file mode 100644 index 0000000000..ef5159d476 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotatedElement.java @@ -0,0 +1,328 @@ +/******************************************************************************* + * 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.common.core.internal.resource.java.binary; + +import java.util.HashMap; +import java.util.Map; +import java.util.Vector; +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IMemberValuePair; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; +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.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; + +/** + * binary annotated element + */ +abstract class BinaryAnnotatedElement + extends BinaryNode + implements JavaResourceAnnotatedElement +{ + /** JDT annotated element adapter */ + final Adapter adapter; + + /** annotations */ + final Vector annotations = new Vector(); + + /** + * Annotation containers keyed on nestable annotation name. + * This is used to store annotations that can be both standalone and nested + * and are moved back and forth between the 2. + */ + final Map annotationContainers = new HashMap(); + + /** + * these are built as needed + */ + private final HashMap nullAnnotationsCache = new HashMap(); + + + // ********** construction/initialization ********** + + public BinaryAnnotatedElement(JavaResourceNode parent, Adapter adapter) { + super(parent); + this.adapter = adapter; + this.initializeAnnotations(); + } + + private void initializeAnnotations() { + for (IAnnotation annotation : this.getJdtAnnotations()) { + this.addAnnotation(annotation); + } + } + + private void addAnnotation(IAnnotation jdtAnnotation) { + String jdtAnnotationName = jdtAnnotation.getElementName(); + if (this.annotationIsValid(jdtAnnotationName)) { + this.annotations.add(this.getAnnotationProvider().buildAnnotation(this, jdtAnnotation)); + } + if (this.annotationIsValidNestable(jdtAnnotationName)) { + AnnotationContainer container = new AnnotationContainer(jdtAnnotation); + this.annotationContainers.put(jdtAnnotationName, container); + } + if (this.annotationIsValidContainer(jdtAnnotationName)) { + String nestableAnnotationName = this.getNestableAnnotationName(jdtAnnotationName); + AnnotationContainer container = new AnnotationContainer(jdtAnnotation); + this.annotationContainers.put(nestableAnnotationName, container); + } + } + + private boolean annotationIsValid(String annotationName) { + return CollectionTools.contains(this.getValidAnnotationNames(), annotationName); + } + + private boolean annotationIsValidContainer(String annotationName) { + return CollectionTools.contains(this.getValidContainerAnnotationNames(), annotationName); + } + + private boolean annotationIsValidNestable(String annotationName) { + return CollectionTools.contains(this.getValidNestableAnnotationNames(), annotationName); + } + + Iterable getValidAnnotationNames() { + return this.getAnnotationProvider().getAnnotationNames(); + } + + Iterable getValidContainerAnnotationNames() { + return this.getAnnotationProvider().getContainerAnnotationNames(); + } + + Iterable getValidNestableAnnotationNames() { + return this.getAnnotationProvider().getNestableAnnotationNames(); + } + + + private String getNestableAnnotationName(String containerAnnotationName) { + return getAnnotationProvider().getNestableAnnotationName(containerAnnotationName); + } + + + // ********** updating ********** + + @Override + public void update() { + super.update(); + this.updateAnnotations(); + } + + // TODO + private void updateAnnotations() { + throw new UnsupportedOperationException(); + } + + + // ********** annotations ********** + + public Iterable getAnnotations() { + return new LiveCloneIterable(this.annotations); + } + + public int getAnnotationsSize() { + return this.annotations.size(); + } + + protected Iterable getNestableAnnotations() { + return new CompositeIterable(this.getNestableAnnotationLists()); + } + + private Iterable> getNestableAnnotationLists() { + return new TransformationIterable>(this.annotationContainers.values()) { + @Override + protected Iterable transform(AnnotationContainer container) { + return container.getNestedAnnotations(); + } + }; + } + + public Annotation getAnnotation(String annotationName) { + return this.selectAnnotationNamed(this.getAnnotations(), annotationName); + } + + public Annotation getNonNullAnnotation(String annotationName) { + Annotation annotation = this.getAnnotation(annotationName); + return (annotation != null) ? annotation : this.getNullAnnotation(annotationName); + } + + private synchronized Annotation getNullAnnotation(String annotationName) { + Annotation annotation = this.nullAnnotationsCache.get(annotationName); + if (annotation == null) { + annotation = this.buildNullAnnotation(annotationName); + this.nullAnnotationsCache.put(annotationName, annotation); + } + return annotation; + } + + private Annotation buildNullAnnotation(String annotationName) { + return getAnnotationProvider().buildNullAnnotation(this, annotationName); + } + + // ********** nestable annotations ********** + + public ListIterable getAnnotations(String nestableAnnotationName) { + AnnotationContainer container = this.annotationContainers.get(nestableAnnotationName); + return container != null ? container.getNestedAnnotations() : EmptyListIterable. instance(); + } + + + public int getAnnotationsSize(String nestableAnnotationName) { + AnnotationContainer container = this.annotationContainers.get(nestableAnnotationName); + return container == null ? 0 : container.getNestedAnnotationsSize(); + } + + public NestableAnnotation getAnnotation(int index, String nestableAnnotationName) { + AnnotationContainer container = this.annotationContainers.get(nestableAnnotationName); + return container == null ? null : container.nestedAnnotationAt(index); + } + + // ********** simple state ********** + + public boolean isAnnotated() { + return ! this.annotations.isEmpty(); + } + + public boolean isAnnotatedWith(Iterable annotationNames) { + for (Annotation annotation : this.getAnnotations()) { + if (CollectionTools.contains(annotationNames, annotation.getAnnotationName())) { + return true; + } + } + for (Annotation annotation : this.getNestableAnnotations()) { + if (CollectionTools.contains(annotationNames, annotation.getAnnotationName())) { + return true; + } + } + return false; + } + + + // ********** misc ********** + + IJavaElement getAnnotatedElement() { + return this.adapter.getElement(); + } + + private Annotation selectAnnotationNamed(Iterable annotationList, String annotationName) { + for (Annotation annotation : annotationList) { + if (annotation.getAnnotationName().equals(annotationName)) { + return annotation; + } + } + return null; + } + + private IAnnotation[] getJdtAnnotations() { + try { + return this.adapter.getAnnotations(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_JDT_ANNOTATION_ARRAY; + } + } + private static final IAnnotation[] EMPTY_JDT_ANNOTATION_ARRAY = new IAnnotation[0]; + + + // ********** IJavaElement adapter ********** + + interface Adapter { + /** + * Return the adapter's JDT element (IPackageFragment, IType, IField, IMethod). + */ + IJavaElement getElement(); + + /** + * Return the adapter's element's JDT annotations. + */ + IAnnotation[] getAnnotations() throws JavaModelException; + } + + + // ********** unsupported JavaResourcePersistentMember implementation ********** + + public Annotation addAnnotation(String annotationName) { + throw new UnsupportedOperationException(); + } + + public NestableAnnotation addAnnotation(int index, String nestableAnnotationName) { + throw new UnsupportedOperationException(); + } + + public void moveAnnotation(int targetIndex, int sourceIndex, String nestableAnnotationName) { + throw new UnsupportedOperationException(); + } + + public void removeAnnotation(String annotationName) { + throw new UnsupportedOperationException(); + } + + public void removeAnnotation(int index, String nestableAnnotationName) { + throw new UnsupportedOperationException(); + } + + public TextRange getNameTextRange(CompilationUnit astRoot) { + throw new UnsupportedOperationException(); + } + + private static final IMemberValuePair[] EMPTY_MEMBER_VALUE_PAIR_ARRAY = new IMemberValuePair[0]; + + class AnnotationContainer + { + private final IAnnotation containerAnnotation; + + /** annotations */ + final Vector nestedAnnotations = new Vector(); + + protected AnnotationContainer(IAnnotation containerAnnotation) { + super(); + this.containerAnnotation = containerAnnotation; + } + + protected void initializeNestedAnnotations() { + int index = 0; + for(IMemberValuePair valuePair : this.getJdtMemberValuePairs()) { + IAnnotation nestedAnnotation = (IAnnotation) valuePair.getValue(); + this.nestedAnnotations.add(getAnnotationProvider().buildAnnotation(BinaryAnnotatedElement.this, nestedAnnotation, index++)); + } + } + + public ListIterable getNestedAnnotations() { + return new LiveCloneListIterable(this.nestedAnnotations); + } + + public int getNestedAnnotationsSize() { + return this.nestedAnnotations.size(); + } + + public NestableAnnotation nestedAnnotationAt(int index) { + return this.nestedAnnotations.get(index); + } + + private IMemberValuePair[] getJdtMemberValuePairs() { + try { + return this.containerAnnotation.getMemberValuePairs(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_MEMBER_VALUE_PAIR_ARRAY; + } + } + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotation.java index 97df7db3f1..63af604399 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotation.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAnnotation.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,7 +31,6 @@ public abstract class BinaryAnnotation this.jdtAnnotation = jdtAnnotation; } - // ********** convenience methods ********** /** @@ -75,6 +74,7 @@ public abstract class BinaryAnnotation // ********** Annotation implementation ********** + public org.eclipse.jdt.core.dom.Annotation getAstAnnotation(CompilationUnit astRoot) { throw new UnsupportedOperationException(); } @@ -84,6 +84,9 @@ public abstract class BinaryAnnotation public void removeAnnotation() { throw new UnsupportedOperationException(); } + public boolean isUnset() { + throw new UnsupportedOperationException(); + } // ********** NestableAnnotation implementation ********** public void moveAnnotation(@SuppressWarnings("unused") int index) { diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAttribute.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAttribute.java new file mode 100644 index 0000000000..bfdbbe0aca --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryAttribute.java @@ -0,0 +1,405 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Vector; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.Signature; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.utility.internal.ClassName; +import org.eclipse.jpt.common.utility.internal.StringTools; +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; + +/** + * binary attribute (field or property) + */ +abstract class BinaryAttribute + extends BinaryMember + implements JavaResourceAttribute +{ + private int modifiers; + + private String typeName; + + private boolean typeIsInterface; + + private boolean typeIsEnum; + + private boolean typeIsArray; + + private final Vector typeSuperclassNames = new Vector(); + + private final Vector typeInterfaceNames = new Vector(); + + private final Vector typeTypeArgumentNames = new Vector(); + + + protected BinaryAttribute(JavaResourceType parent, Adapter adapter) { + super(parent, adapter); + this.modifiers = this.buildModifiers(); + this.typeName = this.buildTypeName(); + + IType type = this.getType(); // shouldn't be an array... + this.typeIsInterface = this.buildTypeIsInterface(type); + this.typeIsEnum = this.buildTypeIsEnum(type); + this.typeIsArray = this.buildTypeIsArray(type); + this.typeSuperclassNames.addAll(this.buildTypeSuperclassNames(type)); + this.typeInterfaceNames.addAll(this.buildTypeInterfaceNames(type)); + + this.typeTypeArgumentNames.addAll(this.buildTypeTypeArgumentNames()); + } + + + // ******** overrides ******** + + @Override + public void update() { + super.update(); + this.setModifiers(this.buildModifiers()); + this.setTypeName(this.buildTypeName()); + + IType type = this.getType(); // shouldn't be an array... + this.setTypeIsInterface(this.buildTypeIsInterface(type)); + this.setTypeIsEnum(this.buildTypeIsEnum(type)); + this.setTypeIsArray(this.buildTypeIsArray(type)); + this.setTypeSuperclassNames(this.buildTypeSuperclassNames(type)); + this.setTypeInterfaceNames(this.buildTypeInterfaceNames(type)); + + this.setTypeTypeArgumentNames(this.buildTypeTypeArgumentNames()); + } + + @Override + public void toString(StringBuilder sb) { + sb.append(this.getName()); + } + + + // ********** BinaryPersistentMember implementation ********** + + private Adapter getAdapter() { + return (Adapter) this.adapter; + } + + + // ********** JavaResourceAttribute implementation ********** + + @Override + public JavaResourceType getParent() { + return (JavaResourceType) super.getParent(); + } + + public JavaResourceType getResourceType() { + return this.getParent(); + } + + public String getName() { + return this.getAdapter().getAttributeName(); + } + + public boolean typeIsSubTypeOf(String tn) { + return ((this.typeName != null) && this.typeName.equals(tn)) + || this.typeInterfaceNames.contains(tn) + || this.typeSuperclassNames.contains(tn); + } + + public boolean typeIsVariablePrimitive() { + return (this.typeName != null) && ClassName.isVariablePrimitive(this.typeName); + } + + // ***** modifiers + public int getModifiers() { + return this.modifiers; + } + + private void setModifiers(int modifiers) { + int old = this.modifiers; + this.modifiers = modifiers; + this.firePropertyChanged(MODIFIERS_PROPERTY, old, modifiers); + } + + /** + * zero seems like a reasonable default... + */ + private int buildModifiers() { + try { + return this.getMember().getFlags(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return 0; + } + } + + // ***** type name + public String getTypeName() { + return this.typeName; + } + + private void setTypeName(String typeName) { + String old = this.typeName; + this.typeName = typeName; + this.firePropertyChanged(TYPE_NAME_PROPERTY, old, typeName); + } + + /** + * JARs don't have array types; + * also, no generic type parameters + */ + private String buildTypeName() { + return convertTypeSignatureToTypeName(this.getTypeSignature()); + } + + // ***** type is interface + public boolean typeIsInterface() { + return this.typeIsInterface; + } + + private void setTypeIsInterface(boolean typeIsInterface) { + boolean old = this.typeIsInterface; + this.typeIsInterface = typeIsInterface; + this.firePropertyChanged(TYPE_IS_INTERFACE_PROPERTY, old, typeIsInterface); + } + + private boolean buildTypeIsInterface(IType type) { + try { + return (type != null) && type.isInterface(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** type is enum + public boolean typeIsEnum() { + return this.typeIsEnum; + } + + private void setTypeIsEnum(boolean typeIsEnum) { + boolean old = this.typeIsEnum; + this.typeIsEnum = typeIsEnum; + this.firePropertyChanged(TYPE_IS_ENUM_PROPERTY, old, typeIsEnum); + } + + private boolean buildTypeIsEnum(IType type) { + try { + return (type != null) && type.isEnum(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** type is array + public boolean typeIsArray() { + return this.typeIsArray; + } + + private void setTypeIsArray(boolean typeIsArray) { + boolean old = this.typeIsArray; + this.typeIsArray = typeIsArray; + this.firePropertyChanged(TYPE_IS_ARRAY_PROPERTY, old, typeIsArray); + } + + private boolean buildTypeIsArray(IType type) { + return false; //TODO debug this + } + + // ***** type superclass hierarchy + public ListIterable getTypeSuperclassNames() { + return new LiveCloneListIterable(this.typeSuperclassNames); + } + + public boolean typeSuperclassNamesContains(String superclassName) { + return this.typeSuperclassNames.contains(superclassName); + } + + private void setTypeSuperclassNames(List typeSuperclassNames) { + this.synchronizeList(typeSuperclassNames, this.typeSuperclassNames, TYPE_SUPERCLASS_NAMES_LIST); + } + + private List buildTypeSuperclassNames(IType type) { + if (type == null) { + return Collections.emptyList(); + } + + ArrayList names = new ArrayList(); + type = this.findSuperclass(type); + while (type != null) { + names.add(type.getFullyQualifiedName('.')); // no parameters are included here + type = this.findSuperclass(type); + } + return names; + } + + // ***** type interface hierarchy + public Iterable getTypeInterfaceNames() { + return new LiveCloneIterable(this.typeInterfaceNames); + } + + public boolean typeInterfaceNamesContains(String interfaceName) { + return this.typeInterfaceNames.contains(interfaceName); + } + + private void setTypeInterfaceNames(Collection typeInterfaceNames) { + this.synchronizeCollection(typeInterfaceNames, this.typeInterfaceNames, TYPE_INTERFACE_NAMES_COLLECTION); + } + + private Collection buildTypeInterfaceNames(IType type) { + if (type == null) { + return Collections.emptySet(); + } + + HashSet names = new HashSet(); + while (type != null) { + this.addInterfaceNamesTo(type, names); + type = this.findSuperclass(type); + } + return names; + } + + private void addInterfaceNamesTo(IType type, HashSet names) { + for (String interfaceSignature : this.getSuperInterfaceTypeSignatures(type)) { + String interfaceName = convertTypeSignatureToTypeName(interfaceSignature); + names.add(interfaceName); + IType interfaceType = this.findType(interfaceName); + if (interfaceType != null) { + this.addInterfaceNamesTo(interfaceType, names); // recurse + } + } + } + + // ***** type type argument names + public ListIterable getTypeTypeArgumentNames() { + return new LiveCloneListIterable(this.typeTypeArgumentNames); + } + + public int getTypeTypeArgumentNamesSize() { + return this.typeTypeArgumentNames.size(); + } + + public String getTypeTypeArgumentName(int index) { + return this.typeTypeArgumentNames.get(index); + } + + private void setTypeTypeArgumentNames(List typeTypeArgumentNames) { + this.synchronizeList(typeTypeArgumentNames, this.typeTypeArgumentNames, TYPE_TYPE_ARGUMENT_NAMES_LIST); + } + + /** + * these types can be arrays (e.g. "java.lang.String[]"); + * but they won't have any further nested generic type arguments + * (e.g. "java.util.Collection") + */ + private List buildTypeTypeArgumentNames() { + String typeSignature = this.getTypeSignature(); + if (typeSignature == null) { + return Collections.emptyList(); + } + + String[] typeArgumentSignatures = Signature.getTypeArguments(typeSignature); + if (typeArgumentSignatures.length == 0) { + return Collections.emptyList(); + } + + ArrayList names = new ArrayList(typeArgumentSignatures.length); + for (String typeArgumentSignature : typeArgumentSignatures) { + names.add(convertTypeSignatureToTypeName(typeArgumentSignature)); + } + return names; + } + + + // ********** convenience methods ********** + + private String getTypeSignature() { + try { + return this.getAdapter().getTypeSignature(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return null; + } + } + + private IType findSuperclass(IType type) { + return this.findTypeBySignature(this.getSuperclassSignature(type)); + } + + private String getSuperclassSignature(IType type) { + try { + return type.getSuperclassTypeSignature(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return null; + } + } + + private String[] getSuperInterfaceTypeSignatures(IType type) { + try { + return type.getSuperInterfaceTypeSignatures(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return StringTools.EMPTY_STRING_ARRAY; + } + } + + private IType findTypeBySignature(String typeSignature) { + return (typeSignature == null) ? null : this.findType(convertTypeSignatureToTypeName_(typeSignature)); + } + + private IType getType() { + return (this.typeName == null) ? null : this.findType(this.typeName); + } + + private IType findType(String fullyQualifiedName) { + try { + return this.getJavaProject().findType(fullyQualifiedName); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return null; + } + } + + private IJavaProject getJavaProject() { + return this.getMember().getJavaProject(); + } + + + + // ********** adapters ********** + + /** + * Adapt an IField or IMethod. + */ + interface Adapter + extends BinaryMember.Adapter + { + /** + * Return the field or getter method's "attribute" name + * (e.g. field "foo" -> "foo"; method "getFoo" -> "foo"). + */ + String getAttributeName(); + + /** + * Return the attribute's type signature. + */ + String getTypeSignature() throws JavaModelException; + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryClassFile.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryClassFile.java new file mode 100644 index 0000000000..3c4d009ad6 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryClassFile.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.IClassFile; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceClassFile; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragment; + +/** + * binary class file + */ +final class BinaryClassFile + extends BinaryNode + implements JavaResourceClassFile +{ + /** JDT class file */ + private final IClassFile classFile; + + /** class file's type */ + private final JavaResourceAbstractType type; + + + // ********** construction/initialization ********** + + /** + * The JDT type gets passed in because the package fragment inspects it + * beforehand to determine whether it exists and is relevant. + */ + BinaryClassFile(JavaResourcePackageFragment parent, IClassFile classFile, IType jdtType) { + super(parent); + this.classFile = classFile; + this.type = this.buildType(jdtType); + } + + private JavaResourceAbstractType buildType(IType jdtType) { + try { + if (jdtType.isEnum()) { + return new BinaryEnum(this, jdtType); + } + } + catch (JavaModelException e) { + JptCommonCorePlugin.log(e); + } + return new BinaryType(this, jdtType); + } + + @Override + public void toString(StringBuilder sb) { + sb.append(this.classFile.getElementName()); + } + + + // ********** JavaResourceClassFile implementation ********** + + public JavaResourceAbstractType getType() { + return this.type; + } + + // TODO + @Override + public void update() { + super.update(); +// type(this.classFile.getType()); + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnum.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnum.java new file mode 100644 index 0000000000..c41524bbd3 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnum.java @@ -0,0 +1,128 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.Collection; +import java.util.Vector; +import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnum; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnumConstant; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; + +/** + * binary enum + */ +final class BinaryEnum + extends BinaryAbstractType + implements JavaResourceEnum +{ + private final Vector enumConstants; + + + // ********** construction/initialization ********** + + BinaryEnum(JavaResourceNode parent, IType type) { + super(parent, type); + this.enumConstants = this.buildEnumConstants(); + } + + public Kind getKind() { + return JavaResourceAnnotatedElement.Kind.ENUM; + } + // ********** overrides ********** + + @Override + public void update() { + super.update(); + this.updateEnumConstants(); + } + + // TODO + private void updateEnumConstants() { + throw new UnsupportedOperationException(); + } + + + + // ********** JavaResourceEnum implementation ********** + + + + // ********** enum constants ********** + + public Iterable getEnumConstants() { + return new LiveCloneIterable(this.enumConstants); + } + + private void addEnumConstant(JavaResourceEnumConstant enumConstants) { + this.addItemToCollection(enumConstants, this.enumConstants, ENUMS_COLLECTION); + } + + private JavaResourceEnumConstant getEnumConstant(String enumConstantName, int occurrence) { + for (JavaResourceEnumConstant enumConstant : this.getEnumConstants()) { + if (enumConstant.isFor(enumConstantName, occurrence)) { + return enumConstant; + } + } + return null; + } + + private void removeEnumConstants(Collection remove) { + this.removeItemsFromCollection(remove, this.enumConstants, ENUMS_COLLECTION); + } + + private Vector buildEnumConstants() { + Iterable jdtEnumConstants = this.getEnumConstants(this.getMember()); + Vector result = new Vector(CollectionTools.size(jdtEnumConstants)); + for (IField jdtEnumConstant : jdtEnumConstants) { + result.add(this.buildEnumConstant(jdtEnumConstant)); + } + return result; + } + + private Iterable getEnumConstants(IType type) { + return new FilteringIterable(CollectionTools.iterable(this.getFields(type))) { + @Override + protected boolean accept(IField jdtField) { + return isEnumConstant(jdtField); + } + }; + } + + private IField[] getFields(IType type) { + try { + return type.getFields(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_FIELD_ARRAY; + } + } + private static final IField[] EMPTY_FIELD_ARRAY = new IField[0]; + + private boolean isEnumConstant(IField field) { + try { + return field.isEnumConstant(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + private JavaResourceEnumConstant buildEnumConstant(IField jdtEnumConstant) { + return new BinaryEnumConstant(this, jdtEnumConstant); + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnumConstant.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnumConstant.java new file mode 100644 index 0000000000..561fcab7e0 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryEnumConstant.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * 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.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnum; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnumConstant; + +/** + * Java binary enum constant, IField that returns true to isEnumConstant + */ +final class BinaryEnumConstant + extends BinaryMember + implements JavaResourceEnumConstant { + + + + BinaryEnumConstant(JavaResourceEnum parent, IField enumConstant){ + super(parent, new EnumConstantAdapter(enumConstant)); + } + + @Override + IField getMember() { + return (IField) super.getMember(); + } + + // ******** JavaResourceAnnotatedElement implementation ******** + + public Kind getKind() { + return Kind.ENUM_CONSTANT; + } + + + // ******** JavaResourceEnumConstant implementation ******** + + public String getName() { + return this.getMember().getElementName(); + } + + + // ********** IField adapter ********** + + static class EnumConstantAdapter implements Adapter { + private final IField enumConstant; + + EnumConstantAdapter(IField enumConstant) { + super(); + this.enumConstant = enumConstant; + } + + public IField getElement() { + return this.enumConstant; + } + + public IAnnotation[] getAnnotations() throws JavaModelException { + return this.enumConstant.getAnnotations(); + } + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryField.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryField.java new file mode 100644 index 0000000000..e4499a24c6 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryField.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; + +/** + * binary field + */ +final class BinaryField + extends BinaryAttribute + implements JavaResourceField +{ + + BinaryField(JavaResourceType parent, IField field) { + super(parent, new FieldAdapter(field)); + } + + + // ******** JavaResourceAnnotatedElement implementation ******** + + public Kind getKind() { + return Kind.FIELD; + } + + // ********** adapters ********** + + /** + * IField adapter + */ + static class FieldAdapter + implements BinaryAttribute.Adapter + { + final IField field; + + FieldAdapter(IField field) { + super(); + this.field = field; + } + + public IField getElement() { + return this.field; + } + + public IAnnotation[] getAnnotations() throws JavaModelException { + return this.field.getAnnotations(); + } + + public String getAttributeName() { + return this.field.getElementName(); + } + + public String getTypeSignature() throws JavaModelException { + return this.field.getTypeSignature(); + } + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMember.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMember.java new file mode 100644 index 0000000000..12c0b6f3c4 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMember.java @@ -0,0 +1,192 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.Flags; +import org.eclipse.jdt.core.IMember; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.Signature; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMember; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; + +/** + * binary persistent member + */ +abstract class BinaryMember + extends BinaryAnnotatedElement + implements JavaResourceMember +{ + + private boolean final_; // 'final' is a reserved word + private boolean transient_; // 'transient' is a reserved word + private boolean public_; // 'public' is a reserved word + private boolean static_; // 'static' is a reserved word + + + // ********** construction/initialization ********** + + public BinaryMember(JavaResourceNode parent, Adapter adapter) { + super(parent, adapter); + this.final_ = this.buildFinal(); + this.transient_ = this.buildTransient(); + this.public_ = this.buildPublic(); + this.static_ = this.buildStatic(); + } + + + // ********** updating ********** + + @Override + public void update() { + super.update(); + this.setFinal(this.buildFinal()); + this.setTransient(this.buildTransient()); + this.setPublic(this.buildPublic()); + this.setStatic(this.buildStatic()); + } + + + // ********** simple state ********** + + // ***** final + public boolean isFinal() { + return this.final_; + } + + private void setFinal(boolean final_) { + boolean old = this.final_; + this.final_ = final_; + this.firePropertyChanged(FINAL_PROPERTY, old, final_); + } + + private boolean buildFinal() { + try { + return Flags.isFinal(this.getMember().getFlags()); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** transient + public boolean isTransient() { + return this.transient_; + } + + private void setTransient(boolean transient_) { + boolean old = this.transient_; + this.transient_ = transient_; + this.firePropertyChanged(TRANSIENT_PROPERTY, old, transient_); + } + + private boolean buildTransient() { + try { + return Flags.isTransient(this.getMember().getFlags()); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** public + public boolean isPublic() { + return this.public_; + } + + private void setPublic(boolean public_) { + boolean old = this.public_; + this.public_ = public_; + this.firePropertyChanged(PUBLIC_PROPERTY, old, public_); + } + + private boolean buildPublic() { + try { + return Flags.isPublic(this.getMember().getFlags()); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** static + public boolean isStatic() { + return this.static_; + } + + private void setStatic(boolean static_) { + boolean old = this.static_; + this.static_ = static_; + this.firePropertyChanged(STATIC_PROPERTY, old, static_); + } + + private boolean buildStatic() { + try { + return Flags.isStatic(this.getMember().getFlags()); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + + // ********** miscellaneous ********** + + IMember getMember() { + return this.getAdapter().getElement(); + } + + private Adapter getAdapter() { + return (Adapter) this.adapter; + } + + /** + * Strip off the type signature's parameters if present. + * Convert to a readable string. + */ + static String convertTypeSignatureToTypeName(String typeSignature) { + return (typeSignature == null) ? null : convertTypeSignatureToTypeName_(typeSignature); + } + + /** + * no null check + */ + static String convertTypeSignatureToTypeName_(String typeSignature) { + return Signature.toString(Signature.getTypeErasure(typeSignature)); + } + + + // ********** IMember adapter ********** + + interface Adapter extends BinaryAnnotatedElement.Adapter { + /** + * Return the adapter's JDT member (IType, IField, IMethod). + */ + IMember getElement(); + + } + + + // ********** unsupported JavaResourceMember implementation ********** + + public Annotation setPrimaryAnnotation(String primaryAnnotationName, Iterable supportingAnnotationNames) { + throw new UnsupportedOperationException(); + } + + public void resolveTypes(CompilationUnit astRoot) { + throw new UnsupportedOperationException(); + } + + public boolean isFor(String memberName, int occurrence) { + throw new UnsupportedOperationException(); + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMethod.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMethod.java new file mode 100644 index 0000000000..ad938466f0 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryMethod.java @@ -0,0 +1,161 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jdt.core.ILocalVariable; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.utility.MethodSignature; +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; + +/** + * binary method + */ +final class BinaryMethod + extends BinaryAttribute + implements JavaResourceMethod +{ + + private boolean constructor; + + private final Vector parameterTypeNames = new Vector(); + + BinaryMethod(JavaResourceType parent, IMethod method) { + super(parent, new MethodAdapter(method)); + } + + public Kind getKind() { + return JavaResourceAnnotatedElement.Kind.METHOD; + } + + public String getMethodName() { + return getMember().getElementName(); + } + + // ******** overrides ******** + + @Override + public void update() { + super.update(); + this.setConstructor(this.buildConstructor()); + + this.setParameterTypeNames(this.buildParameterTypeNames()); + } + + @Override + IMethod getMember() { + return (IMethod) super.getMember(); + } + + + // ********** JavaResourcePersistentAttribute implementation ********** + + + public boolean isFor(MethodSignature methodSignature, int occurrence) { + throw new UnsupportedOperationException(); + } + + + // ***** type is interface + public boolean isConstructor() { + return this.constructor; + } + + private void setConstructor(boolean isConstructor) { + boolean old = this.constructor; + this.constructor = isConstructor; + this.firePropertyChanged(CONSTRUCTOR_PROPERTY, old, isConstructor); + } + + private boolean buildConstructor() { + try { + return this.getMember().isConstructor(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + + // ***** parameter type names + public ListIterable getParameterTypeNames() { + return new LiveCloneListIterable(this.parameterTypeNames); + } + + public int getParametersSize() { + return this.parameterTypeNames.size(); + } + + private List buildParameterTypeNames() { + ArrayList names = new ArrayList(); + for (ILocalVariable parameter : this.getParameters(this.getMember())) { + names.add(parameter.getElementName());//TODO is this right? + } + return names; + } + + private ILocalVariable[] getParameters(IMethod jdtMethod) { + try { + return jdtMethod.getParameters(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return null; + } + } + + private void setParameterTypeNames(List parameterTypeNames) { + this.synchronizeList(parameterTypeNames, this.parameterTypeNames, PARAMETER_TYPE_NAMES_LIST); + } + + + // ********** adapters ********** + + /** + * IMethod adapter + */ + static class MethodAdapter + implements BinaryAttribute.Adapter + { + final IMethod method; + static final IMethod[] EMPTY_METHOD_ARRAY = new IMethod[0]; + + MethodAdapter(IMethod method) { + super(); + this.method = method; + } + + public IMethod getElement() { + return this.method; + } + + public IAnnotation[] getAnnotations() throws JavaModelException { + return this.method.getAnnotations(); + } + + public String getAttributeName() { + return NameTools.convertGetterSetterMethodNameToPropertyName(this.method.getElementName()); + } + + public String getTypeSignature() throws JavaModelException { + return this.method.getReturnType(); + } + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryNamedAnnotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryNamedAnnotation.java new file mode 100644 index 0000000000..3e3b3f8cc0 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryNamedAnnotation.java @@ -0,0 +1,32 @@ +/******************************************************************************* + * 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.common.core.internal.resource.java.binary; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; + +/** + * Used for annotations that have no behavior, just a name + */ +public final class BinaryNamedAnnotation + extends BinaryAnnotation +{ + + private final String annotationName; + + public BinaryNamedAnnotation(JavaResourceNode parent, IAnnotation jdtAnnotation, String annotationName) { + super(parent, jdtAnnotation); + this.annotationName = annotationName; + } + + public String getAnnotationName() { + return this.annotationName; + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragment.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragment.java new file mode 100644 index 0000000000..5550d24d9d --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragment.java @@ -0,0 +1,135 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Vector; +import org.eclipse.jdt.core.IClassFile; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceClassFile; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragment; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; +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.TransformationIterable; + +/** + * binary package fragment + */ +final class BinaryPackageFragment + extends BinaryNode + implements JavaResourcePackageFragment +{ + /** JDT package fragment */ + private final IPackageFragment packageFragment; + + /** + * class files in the package fragment; + * we only hold class files/types that are actually annotated; + * if the unannotated types are needed (e.g. for orm.xml or an + * inheritance tree) they can be discovered on the classpath as needed + */ + private final Vector classFiles = new Vector(); + + + // ********** construction/initialization ********** + + BinaryPackageFragment(JavaResourcePackageFragmentRoot parent, IPackageFragment packageFragment) { + super(parent); + this.packageFragment = packageFragment; + this.classFiles.addAll(this.buildClassFiles()); + } + + private Collection buildClassFiles() { + IJavaElement[] children = this.getJDTChildren(); + ArrayList result = new ArrayList(children.length); + for (IJavaElement child : children) { + IClassFile jdtClassFile = (IClassFile) child; + IType jdtType = jdtClassFile.getType(); + if (typeIsRelevant(jdtType)) { + JavaResourceClassFile classFile = new BinaryClassFile(this, jdtClassFile, jdtType); + if (classFile.getType().isAnnotated()) { // we only hold annotated types + result.add(classFile); + } + } + } + return result; + } + + //we will limit to classes, interfaces, and enums. Annotation types will be ignored. + static boolean typeIsRelevant(IType type) { + try { + return (type != null) + && type.exists() + && (type.isClass() || type.isInterface()|| type.isEnum()); + } + catch (JavaModelException e) { + return false; + } + } + + // ********** JarResourceNode implementation ********** + + @Override + public void update() { + super.update(); + this.updateClassFiles(); + } + + // TODO + private void updateClassFiles() { + throw new UnsupportedOperationException(); + } + + + // ********** JavaResourcePackageFragment implementation ********** + + public ListIterable getClassFiles() { + return new LiveCloneListIterable(this.classFiles); + } + + public int getClassFilesSize() { + return this.classFiles.size(); + } + + public Iterable getTypes() { + return new TransformationIterable(this.getClassFiles()) { + @Override + protected JavaResourceAbstractType transform(JavaResourceClassFile classFile) { + return classFile.getType(); // we only hold annotated types + } + }; + } + + + // ********** misc ********** + + private IJavaElement[] getJDTChildren() { + try { + return this.packageFragment.getChildren(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_JAVA_ELEMENT_ARRAY; + } + } + protected static final IJavaElement[] EMPTY_JAVA_ELEMENT_ARRAY = new IJavaElement[0]; + + @Override + public void toString(StringBuilder sb) { + sb.append(this.packageFragment.getElementName()); + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragmentRoot.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragmentRoot.java new file mode 100644 index 0000000000..42865f3267 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryPackageFragmentRoot.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Vector; +import org.eclipse.core.resources.IFile; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.internal.utility.JDTTools; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragment; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; +import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; + +/** + * binary package fragment root + */ +public final class BinaryPackageFragmentRoot + extends RootBinaryNode + implements JavaResourcePackageFragmentRoot +{ + /** JDT package fragment root */ + private final IPackageFragmentRoot packageFragmentRoot; + + /** package fragments in the JAR */ + private final Vector packageFragments = new Vector(); + + + // ********** construction/initialization ********** + + public BinaryPackageFragmentRoot(IPackageFragmentRoot packageFragmentRoot, AnnotationProvider annotationProvider) { + super(null, annotationProvider); // the package fragment root is the root of its sub-tree + this.packageFragmentRoot = packageFragmentRoot; + this.packageFragments.addAll(this.buildPackageFragments()); + } + + private Collection buildPackageFragments() { + IJavaElement[] jdtChildren = this.getJDTChildren(); + ArrayList result = new ArrayList(jdtChildren.length); + for (IJavaElement child : jdtChildren) { + result.add(new BinaryPackageFragment(this, (IPackageFragment) child)); + } + return result; + } + + + // ********** overrides ********** + + @Override + public IFile getFile() { + return (IFile) this.packageFragmentRoot.getResource(); + } + + @Override + public void update() { + super.update(); + this.updatePackageFragments(); + } + + // TODO + private void updatePackageFragments() { + throw new UnsupportedOperationException(); + } + + + // ********** JavaResourceNode.Root implementation ********** + + /** + * NB: we hold only annotated types + */ + public Iterable getTypes() { + return new CompositeIterable(this.persistedTypesLists()); + } + + private Iterable> persistedTypesLists() { + return new TransformationIterable>(this.getPackageFragments()) { + @Override + protected Iterable transform(JavaResourcePackageFragment fragment) { + return fragment.getTypes(); + } + }; + } + + + // ********** JavaResourcePackageFragmentRoot implementation ********** + + public Iterable getPackageFragments() { + return new LiveCloneIterable(this.packageFragments); + } + + public int getPackageFragmentsSize() { + return this.packageFragments.size(); + } + + + // ********** misc ********** + + private IJavaElement[] getJDTChildren() { + return JDTTools.getChildren(this.packageFragmentRoot); + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryType.java new file mode 100644 index 0000000000..2aca5d8f93 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryType.java @@ -0,0 +1,308 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.Collection; +import java.util.Vector; +import org.eclipse.jdt.core.Flags; +import org.eclipse.jdt.core.IField; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.utility.MethodSignature; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; + +/** + * binary type + */ +final class BinaryType + extends BinaryAbstractType + implements JavaResourceType +{ + private String superclassQualifiedName; + + private boolean abstract_; // 'abstract' is a reserved word + + private boolean hasNoArgConstructor; + + private boolean hasPrivateNoArgConstructor; + + private final Vector fields; + + private final Vector methods; + + + // ********** construction/initialization ********** + + BinaryType(JavaResourceNode parent, IType type) { + super(parent, type); + this.superclassQualifiedName = this.buildSuperclassQualifiedName(); + this.abstract_ = this.buildAbstract(); + this.hasNoArgConstructor = this.buildHasNoArgConstructor(); + this.hasPrivateNoArgConstructor = this.buildHasPrivateNoArgConstructor(); + this.fields = this.buildFields(); + this.methods = this.buildMethods(); + } + + public Kind getKind() { + return JavaResourceAnnotatedElement.Kind.TYPE; + } + + + // ********** overrides ********** + + @Override + public void update() { + super.update(); + this.setSuperclassQualifiedName(this.buildSuperclassQualifiedName()); + this.setAbstract(this.buildAbstract()); + this.setHasNoArgConstructor(this.buildHasNoArgConstructor()); + this.setHasPrivateNoArgConstructor(this.buildHasPrivateNoArgConstructor()); + this.updateFields(); + this.updateMethods(); + } + + // TODO + private void updateFields() { + throw new UnsupportedOperationException(); + } + + // TODO + private void updateMethods() { + throw new UnsupportedOperationException(); + } + + + + // ********** JavaResourceType implementation ********** + + // ***** superclass qualified name + public String getSuperclassQualifiedName() { + return this.superclassQualifiedName; + } + + private void setSuperclassQualifiedName(String superclassQualifiedName) { + String old = this.superclassQualifiedName; + this.superclassQualifiedName = superclassQualifiedName; + this.firePropertyChanged(SUPERCLASS_QUALIFIED_NAME_PROPERTY, old, superclassQualifiedName); + } + + private String buildSuperclassQualifiedName() { + return convertTypeSignatureToTypeName(this.getSuperclassTypeSignature()); + } + + private String getSuperclassTypeSignature() { + try { + return this.getMember().getSuperclassTypeSignature(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return null; + } + } + + + // ***** abstract + public boolean isAbstract() { + return this.abstract_; + } + + private void setAbstract(boolean abstract_) { + boolean old = this.abstract_; + this.abstract_ = abstract_; + this.firePropertyChanged(ABSTRACT_PROPERTY, old, abstract_); + } + + private boolean buildAbstract() { + try { + return Flags.isAbstract(this.getMember().getFlags()); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + // ***** no-arg constructor + public boolean hasNoArgConstructor() { + return this.hasNoArgConstructor; + } + + private void setHasNoArgConstructor(boolean hasNoArgConstructor) { + boolean old = this.hasNoArgConstructor; + this.hasNoArgConstructor = hasNoArgConstructor; + this.firePropertyChanged(NO_ARG_CONSTRUCTOR_PROPERTY, old, hasNoArgConstructor); + } + + private boolean buildHasNoArgConstructor() { + return this.findNoArgConstructor() != null; + } + + private IMethod findNoArgConstructor() { + try { + for (IMethod method : this.getMember().getMethods()) { + if (method.isConstructor()) { + return method; + } + } + } + catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + } + return null; + } + + // ***** private no-arg constructor + public boolean hasPrivateNoArgConstructor() { + return this.hasPrivateNoArgConstructor; + } + + private void setHasPrivateNoArgConstructor(boolean hasPrivateNoArgConstructor) { + boolean old = this.hasPrivateNoArgConstructor; + this.hasPrivateNoArgConstructor = hasPrivateNoArgConstructor; + this.firePropertyChanged(PRIVATE_NO_ARG_CONSTRUCTOR_PROPERTY, old, hasPrivateNoArgConstructor); + } + + private boolean buildHasPrivateNoArgConstructor() { + IMethod method = this.findNoArgConstructor(); + try { + return method != null && Flags.isPrivate(method.getFlags()); + } + catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return false; + } + } + + + // ********** misc ********** + + public boolean hasAnyAnnotatedFields() { + for (JavaResourceField field : this.getFields()) { + if (field.isAnnotated()) { + return true; + } + } + return false; + } + + public boolean hasAnyAnnotatedMethods() { + for (JavaResourceMethod method : this.getMethods()) { + if (method.isAnnotated()) { + return true; + } + } + return false; + } + + @Override + public IType getMember() { + return super.getMember(); + } + + + // ********** fields ********** + + public Iterable getFields() { + return new LiveCloneIterable(this.fields); + } + + private void addField(JavaResourceField field) { + this.addItemToCollection(field, this.fields, FIELDS_COLLECTION); + } + + private JavaResourceField getField(String fieldName, int occurrence) { + for (JavaResourceField field : this.getFields()) { + if (field.isFor(fieldName, occurrence)) { + return field; + } + } + return null; + } + + private void removeFields(Collection remove) { + this.removeItemsFromCollection(remove, this.fields, FIELDS_COLLECTION); + } + + private Vector buildFields() { + IField[] jdtFields = this.getFields(this.getMember()); + Vector result = new Vector(jdtFields.length); + for (IField jdtField : jdtFields) { + result.add(this.buildField(jdtField)); + } + return result; + } + + private IField[] getFields(IType type) { + try { + return type.getFields(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_FIELD_ARRAY; + } + } + private static final IField[] EMPTY_FIELD_ARRAY = new IField[0]; + + private JavaResourceField buildField(IField jdtField) { + return new BinaryField(this, jdtField); + } + + + // ********** methods ********** + + public Iterable getMethods() { + return new LiveCloneIterable(this.methods); + } + + private JavaResourceMethod getMethod(MethodSignature signature, int occurrence) { + for (JavaResourceMethod method : this.getMethods()) { + if (method.isFor(signature, occurrence)) { + return method; + } + } + return null; + } + + private void addMethod(JavaResourceMethod method) { + this.addItemToCollection(method, this.methods, METHODS_COLLECTION); + } + + private void removeMethods(Collection remove) { + this.removeItemsFromCollection(remove, this.methods, METHODS_COLLECTION); + } + + private Vector buildMethods() { + IMethod[] jdtMethods = this.getMethods(this.getMember()); + Vector result = new Vector(jdtMethods.length); + for (IMethod jdtMethod : jdtMethods) { + result.add(this.buildMethod(jdtMethod)); + } + return result; + } + + private IMethod[] getMethods(IType type) { + try { + return type.getMethods(); + } catch (JavaModelException ex) { + JptCommonCorePlugin.log(ex); + return EMPTY_METHOD_ARRAY; + } + } + private static final IMethod[] EMPTY_METHOD_ARRAY = new IMethod[0]; + + private JavaResourceMethod buildMethod(IMethod jdtMethod) { + return new BinaryMethod(this, jdtMethod); + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryTypeCache.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryTypeCache.java new file mode 100644 index 0000000000..fdc5684ba7 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/BinaryTypeCache.java @@ -0,0 +1,157 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import java.util.Vector; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceTypeCache; +import org.eclipse.jpt.common.utility.internal.StringTools; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; + +/** + * cache used to hold binary "external" Java resource types + * (typically derived from JARs on the project's build path) + */ +public final class BinaryTypeCache + extends RootBinaryNode + implements JavaResourceTypeCache +{ + /** populated on-demand */ + private final Vector entries = new Vector(); + + + // ********** construction ********** + + public BinaryTypeCache(AnnotationProvider annotationProvider) { + super(null, annotationProvider); + } + + + // ********** JavaResourceNode.Root implementation ********** + + public Iterable getTypes() { + return new TransformationIterable(this.getEntries()) { + @Override + protected JavaResourceAbstractType transform(Entry entry) { + return entry.type; + } + }; + } + + private Iterable getEntries() { + return new LiveCloneIterable(this.entries); + } + + + // ********** JavaResourcePersistentTypeCache implementation ********** + + public int getTypesSize() { + return this.entries.size(); + } + + public JavaResourceAbstractType addType(IType jdtType) { + Entry entry = this.buildEntry(jdtType); + this.entries.add(entry); + this.fireItemAdded(TYPES_COLLECTION, entry.type); + return entry.type; + } + + private Entry buildEntry(IType jdtType) { + return new Entry(this.buildType(jdtType), jdtType.getResource()); + } + + //ignore annotations + private JavaResourceAbstractType buildType(IType jdtType) { + try { + if (jdtType.isClass() || jdtType.isInterface()) { + return new BinaryType(this, jdtType); + } + if (jdtType.isEnum()) { + return new BinaryEnum(this, jdtType); + } + } + catch(JavaModelException e) { + JptCommonCorePlugin.log(e); + } + return null; + } + + public boolean removeTypes(IFile jarFile) { + boolean modified = false; + for (Entry entry : this.getEntries()) { + IResource resource = entry.resource; + if ((resource != null) && resource.equals(jarFile)) { + this.removeEntry(entry); + modified = true; + } + } + return modified; + } + + private void removeEntry(Entry entry) { + this.entries.remove(entry); + this.fireItemRemoved(TYPES_COLLECTION, entry.type); + } + + + // ********** overrides ********** + + /** + * Ignore changes to this collection. Adds can be ignored since they are triggered + * by requests that will, themselves, trigger updates (typically during the + * update of an object that calls a setter with the newly-created resource + * type). Deletes will be accompanied by manual updates. + */ + @Override + protected void aspectChanged(String aspectName) { + if ((aspectName != null) && ! aspectName.equals(TYPES_COLLECTION)) { + super.aspectChanged(aspectName); + } + } + + @Override + public void toString(StringBuilder sb) { + sb.append(this.entries); + } + + + // ********** cache entry ********** + + /** + * Associate a type with its resource. + * This will be a JAR in the case of a type loaded from a JAR that is in + * the Eclipse workspace. The resource will be null for a type loaded + * from a JAR or class directory outside of the workspace. + */ + static class Entry { + final JavaResourceAbstractType type; + final IResource resource; + + Entry(JavaResourceAbstractType type, IResource resource) { + super(); + this.type = type; + this.resource = resource; + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this, this.type); + } + + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/RootBinaryNode.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/RootBinaryNode.java new file mode 100644 index 0000000000..3afcf608da --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/binary/RootBinaryNode.java @@ -0,0 +1,82 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.internal.resource.java.binary; + +import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.JptCommonCorePlugin; +import org.eclipse.jpt.common.core.JptResourceModelListener; +import org.eclipse.jpt.common.core.JptResourceType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.utility.internal.ListenerList; + +/** + * JAR and external types + */ +abstract class RootBinaryNode + extends BinaryNode + implements JavaResourceNode.Root +{ + /** pluggable annotation provider */ + private final AnnotationProvider annotationProvider; + + /** listeners notified whenever the resource model changes */ + private final ListenerList resourceModelListenerList = new ListenerList(JptResourceModelListener.class); + + + // ********** construction ********** + + RootBinaryNode(JavaResourceNode parent, AnnotationProvider annotationProvider) { + super(parent); + this.annotationProvider = annotationProvider; + } + + + // ********** overrides ********** + + @Override + protected boolean requiresParent() { + return false; + } + + @Override + public Root getRoot() { + return this; + } + + @Override + public AnnotationProvider getAnnotationProvider() { + return this.annotationProvider; + } + + + // ********** JavaResourceNode.Root implementation ********** + + public void resourceModelChanged() { + for (JptResourceModelListener listener : this.resourceModelListenerList.getListeners()) { + listener.resourceModelChanged(this); + } + } + + + // ********** JptResourceModel implementation ********** + + public JptResourceType getResourceType() { + return JptCommonCorePlugin.JAR_RESOURCE_TYPE; + } + + public void addResourceModelListener(JptResourceModelListener listener) { + this.resourceModelListenerList.add(listener); + } + + public void removeResourceModelListener(JptResourceModelListener listener) { + this.resourceModelListenerList.remove(listener); + } + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAbstractType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAbstractType.java index 201ce57690..533b3083c3 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAbstractType.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAbstractType.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,13 +10,14 @@ package org.eclipse.jpt.common.core.internal.resource.java.source; import java.util.HashMap; +import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; import org.eclipse.jpt.common.core.resource.java.JavaResourceCompilationUnit; import org.eclipse.jpt.common.core.utility.jdt.AbstractType; -import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.SimpleIntReference; import org.eclipse.jpt.common.utility.internal.StringTools; @@ -128,6 +129,15 @@ abstract class SourceAbstractType return StringTools.stringsAreEqual(packageFragment.getElementName(), this.packageName); } + // ***** source folder + public boolean isIn(IPackageFragmentRoot sourceFolder) { + return getSourceFolder().equals(sourceFolder); + } + + private IPackageFragmentRoot getSourceFolder() { + return (IPackageFragmentRoot) this.getJavaResourceCompilationUnit().getCompilationUnit().getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); + } + // ***** declaring type name public String getDeclaringTypeName() { return this.declaringTypeName; @@ -162,10 +172,6 @@ abstract class SourceAbstractType return (binding == null) ? false : binding.isMember(); } - public boolean isMapped() { - return ! CollectionTools.isEmpty(getAnnotations()); - } - // ********** CounterMap ********** diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotatedElement.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotatedElement.java index e9fe88dfdd..0327426360 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotatedElement.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotatedElement.java @@ -30,9 +30,11 @@ import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; 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.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; /** * Java source annotated element (annotations) @@ -77,19 +79,17 @@ abstract class SourceAnnotatedElement /* private */ void addInitialAnnotation(org.eclipse.jdt.core.dom.Annotation node) { String jdtAnnotationName = ASTTools.resolveAnnotation(node); if (jdtAnnotationName != null) { - if (this.annotationIsValid(jdtAnnotationName)) { + if(this.annotationIsValidContainer(jdtAnnotationName)) { + String nestableAnnotationName = this.getNestableAnnotationName(jdtAnnotationName); + AnnotationContainer container = new AnnotationContainer(nestableAnnotationName); + container.initialize(node); + this.annotationContainers.put(nestableAnnotationName, container); + } + else if (this.annotationIsValid(jdtAnnotationName)) { if (this.selectAnnotationNamed(this.annotations, jdtAnnotationName) == null) { // ignore duplicates - // TODO - remove and replace with API post 3.0 - try { - Annotation annotation = this.buildAnnotation(jdtAnnotationName); - annotation.initialize((CompilationUnit) node.getRoot()); - this.annotations.add(annotation); - } - catch (ClassCastException cce) { - // an annotation has been placed on a java member to which it is not been targetted, - // and an exception has occurred in the annotation construction/initialization, - // which is expecting only a certain subset of members - } + Annotation annotation = this.buildAnnotation(jdtAnnotationName); + annotation.initialize((CompilationUnit) node.getRoot()); + this.annotations.add(annotation); } } else if(this.annotationIsValidNestable(jdtAnnotationName)) { @@ -97,12 +97,6 @@ abstract class SourceAnnotatedElement container.initializeNestableAnnotation(node); this.annotationContainers.put(jdtAnnotationName, container); } - else if(this.annotationIsValidContainer(jdtAnnotationName)) { - String nestableAnnotationName = this.getNestableAnnotationName(jdtAnnotationName); - AnnotationContainer container = new AnnotationContainer(nestableAnnotationName); - container.initialize(node); - this.annotationContainers.put(nestableAnnotationName, container); - } } } @@ -121,7 +115,23 @@ abstract class SourceAnnotatedElement return this.annotations.size(); } + protected Iterable getNestableAnnotations() { + return new CompositeIterable(this.getNestableAnnotationLists()); + } + + private Iterable> getNestableAnnotationLists() { + return new TransformationIterable>(this.annotationContainers.values()) { + @Override + protected Iterable transform(AnnotationContainer container) { + return container.getNestedAnnotations(); + } + }; + } + public Annotation getAnnotation(String annotationName) { + if (this.annotationIsValidContainer(annotationName)) { + return this.annotationContainers.get(getAnnotationProvider().getNestableAnnotationName(annotationName)).getContainerAnnotation(); + } return this.selectAnnotationNamed(this.getAnnotations(), annotationName); } @@ -145,6 +155,11 @@ abstract class SourceAnnotatedElement return container == null ? null : container.nestedAnnotationAt(index); } + public Annotation getContainerAnnotation(String containerAnnotationName) { + AnnotationContainer container = this.annotationContainers.get(getAnnotationProvider().getNestableAnnotationName(containerAnnotationName)); + return container == null ? null : container.getContainerAnnotation(); + } + private String getNestableAnnotationName(String containerAnnotationName) { return getAnnotationProvider().getNestableAnnotationName(containerAnnotationName); } @@ -160,15 +175,6 @@ abstract class SourceAnnotatedElement return annotation; } - /** - * 1. check for a container annotation; - * if it is present, add a nested annotation to it - * 2. check for a stand-alone nested annotation; - * if it is missing, add a stand-alone nested annotation - * 3. if there is an existing stand-alone nested annotation, - * add a container annotation and move the stand-alone nested annotation to it - * and add a new nested annotation to it also - */ public NestableAnnotation addAnnotation(int index, String nestableAnnotationName) { AnnotationContainer container = this.annotationContainers.get(nestableAnnotationName); if (container == null) { @@ -195,18 +201,19 @@ abstract class SourceAnnotatedElement } public void removeAnnotation(int index, String nestableAnnotationName) { - this.annotationContainers.get(nestableAnnotationName).removeNestedAnnotation(index); + AnnotationContainer container = this.annotationContainers.get(nestableAnnotationName); + container.removeNestedAnnotation(index); } - private boolean annotationIsValid(String annotationName) { + protected boolean annotationIsValid(String annotationName) { return CollectionTools.contains(this.getValidAnnotationNames(), annotationName); } - private boolean annotationIsValidContainer(String annotationName) { + protected boolean annotationIsValidContainer(String annotationName) { return CollectionTools.contains(this.getValidContainerAnnotationNames(), annotationName); } - private boolean annotationIsValidNestable(String annotationName) { + protected boolean annotationIsValidNestable(String annotationName) { return CollectionTools.contains(this.getValidNestableAnnotationNames(), annotationName); } @@ -269,15 +276,15 @@ abstract class SourceAnnotatedElement /* private */ void addOrSyncAnnotation(org.eclipse.jdt.core.dom.Annotation node, Set annotationsToRemove, Set containersToRemove) { String jdtAnnotationName = ASTTools.resolveAnnotation(node); if (jdtAnnotationName != null) { - if (this.annotationIsValid(jdtAnnotationName)) { + if (this.annotationIsValidContainer(jdtAnnotationName)) { + this.addOrSyncContainerAnnotation_(node, jdtAnnotationName, containersToRemove); + } + else if (this.annotationIsValid(jdtAnnotationName)) { this.addOrSyncAnnotation_(node, jdtAnnotationName, annotationsToRemove); } else if(this.annotationIsValidNestable(jdtAnnotationName)) { this.addOrSyncNestableAnnotation_(node, jdtAnnotationName, containersToRemove); } - else if(this.annotationIsValidContainer(jdtAnnotationName)) { - this.addOrSyncContainerAnnotation_(node, jdtAnnotationName, containersToRemove); - } } } @@ -290,17 +297,9 @@ abstract class SourceAnnotatedElement annotation.synchronizeWith((CompilationUnit) node.getRoot()); annotationsToRemove.remove(annotation); } else { - // TODO - remove and replace with API post 3.0 - try { - annotation = this.buildAnnotation(jdtAnnotationName); - annotation.initialize((CompilationUnit) node.getRoot()); - this.addItemToCollection(annotation, this.annotations, ANNOTATIONS_COLLECTION); - } - catch (ClassCastException cce) { - // an annotation has been placed on a java member to which it is not been targetted, - // and an exception has occurred in the annotation construction/initialization, - // which is expecting only a certain subset of members - } + annotation = this.buildAnnotation(jdtAnnotationName); + annotation.initialize((CompilationUnit) node.getRoot()); + this.addItemToCollection(annotation, this.annotations, ANNOTATIONS_COLLECTION); } } @@ -346,6 +345,20 @@ abstract class SourceAnnotatedElement return ! this.annotations.isEmpty() || ! this.annotationContainers.isEmpty(); } + public boolean isAnnotatedWith(Iterable annotationNames) { + for (Annotation annotation : this.getAnnotations()) { + if (CollectionTools.contains(annotationNames, annotation.getAnnotationName())) { + return true; + } + } + for (Annotation annotation : this.getNestableAnnotations()) { + if (CollectionTools.contains(annotationNames, annotation.getAnnotationName())) { + return true; + } + } + return false; + } + public TextRange getTextRange(CompilationUnit astRoot) { return this.fullTextRange(astRoot); } @@ -458,10 +471,31 @@ abstract class SourceAnnotatedElement { private final String nestableAnnotationName; + private Annotation containerAnnotation; + protected AnnotationContainer(String nestableAnnotationName) { super(); this.nestableAnnotationName = nestableAnnotationName; - } + } + + @Override + public void initialize(org.eclipse.jdt.core.dom.Annotation astContainerAnnotation) { + super.initialize(astContainerAnnotation); + this.containerAnnotation = this.buildContainerAnnotation(ASTTools.resolveAnnotation(astContainerAnnotation)); + } + + protected Annotation buildContainerAnnotation(String name) { + return getAnnotationProvider().buildAnnotation(SourceAnnotatedElement.this, SourceAnnotatedElement.this.annotatedElement, name); + } + + protected Annotation getContainerAnnotation() { + return this.containerAnnotation; + } + + @Override + public void synchronize(org.eclipse.jdt.core.dom.Annotation astContainerAnnotation) { + super.synchronize(astContainerAnnotation); + } /** * Return the element name of the nested annotations @@ -502,6 +536,22 @@ abstract class SourceAnnotatedElement } } + @Override + public NestableAnnotation addNestedAnnotation(int index) { + if (getNestedAnnotationsSize() == 1 && getContainerAnnotation() == null) { + this.containerAnnotation = buildContainerAnnotation(getAnnotationProvider().getContainerAnnotationName(getNestedAnnotationName())); + } + return super.addNestedAnnotation(index); + } + + @Override + public NestableAnnotation removeNestedAnnotation(int index) { + if (getNestedAnnotationsSize() == 2) { + this.containerAnnotation = null; + } + return super.removeNestedAnnotation(index); + } + @Override protected void fireItemAdded(int index, NestableAnnotation nestedAnnotation) { SourceAnnotatedElement.this.fireItemAdded(NESTABLE_ANNOTATIONS_COLLECTION, nestedAnnotation); diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotation.java index 640919457b..d7e2a7524f 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotation.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAnnotation.java @@ -13,6 +13,8 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools; +import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; +import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; @@ -20,8 +22,10 @@ import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; +import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; /** * some common state and behavior for Java source annotations; @@ -41,16 +45,16 @@ public abstract class SourceAnnotation /** * constructor for straight member annotation */ - protected SourceAnnotation(JavaResourceNode parent, AnnotatedElement annotatedElement, DeclarationAnnotationAdapter daa) { - this(parent, annotatedElement, daa, new ElementAnnotationAdapter(annotatedElement, daa)); + protected SourceAnnotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa) { + this(parent, element, daa, new ElementAnnotationAdapter(element, daa)); } /** * constructor for nested annotation (typically) */ - protected SourceAnnotation(JavaResourceNode parent, AnnotatedElement annotatedElement, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { + protected SourceAnnotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { super(parent); - this.annotatedElement = annotatedElement; + this.annotatedElement = element; this.daa = daa; this.annotationAdapter = annotationAdapter; } @@ -77,9 +81,37 @@ public abstract class SourceAnnotation this.annotationAdapter.removeAnnotation(); } + public boolean isUnset() { + return true; + } + // ********** convenience methods ********** + protected DeclarationAnnotationElementAdapter buildStringElementAdapter(String elementName) { + return ConversionDeclarationAnnotationElementAdapter.forStrings(this.daa, elementName); + } + + protected DeclarationAnnotationElementAdapter buildBooleanElementAdapter(String elementName) { + return ConversionDeclarationAnnotationElementAdapter.forBooleans(this.daa, elementName); + } + + protected DeclarationAnnotationElementAdapter buildIntegerElementAdapter(String elementName) { + return ConversionDeclarationAnnotationElementAdapter.forNumbers(this.daa, elementName); + } + + protected AnnotationElementAdapter buildStringElementAdapter(DeclarationAnnotationElementAdapter daea) { + return new AnnotatedElementAnnotationElementAdapter(this.annotatedElement, daea); + } + + protected AnnotationElementAdapter buildBooleanElementAdapter(DeclarationAnnotationElementAdapter daea) { + return new AnnotatedElementAnnotationElementAdapter(this.annotatedElement, daea); + } + + protected AnnotationElementAdapter buildIntegerElementAdapter(DeclarationAnnotationElementAdapter daea) { + return new AnnotatedElementAnnotationElementAdapter(this.annotatedElement, daea); + } + /** * Return the text range corresponding to the annotation. * If the annotation is missing, return null. @@ -144,14 +176,27 @@ public abstract class SourceAnnotation return (astNode == null) ? null : ASTTools.buildTextRange(astNode); } + + //*********** NestableAnnotation implementation **************** + + /** + * convenience implementation of method from NestableAnnotation interface + * for subclasses + */ + public void moveAnnotation(int newIndex) { + this.getIndexedAnnotationAdapter().moveAnnotation(newIndex); + } + private IndexedAnnotationAdapter getIndexedAnnotationAdapter() { + return (IndexedAnnotationAdapter) this.annotationAdapter; + } /** * A container for nested annotations. The owner of the AnnotationContainer * needs to call initialize(CompilationUnit) on it. * @param the type of the resource nestable annotations */ - protected abstract class AnnotationContainer extends SourceNode.AnnotationContainer + public abstract class AnnotationContainer extends SourceNode.AnnotationContainer { protected AnnotationContainer() { super(); diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAttribute.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAttribute.java index 106a07814c..98a91b1384 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAttribute.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceAttribute.java @@ -101,8 +101,17 @@ abstract class SourceAttribute } - // ******** JavaResourcePersistentAttribute implementation ******** + // ******** JavaResourceAttribute implementation ******** + @Override + public JavaResourceType getParent() { + return (JavaResourceType) super.getParent(); + } + + public JavaResourceType getResourceType() { + return this.getParent(); + } + public String getName() { return this.annotatedElement.getAttributeName(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceCompilationUnit.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceCompilationUnit.java index b566b4cd95..a44bb76cc2 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceCompilationUnit.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceCompilationUnit.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. diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnum.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnum.java index 03781221bd..edc6b44065 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnum.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnum.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. @@ -113,7 +113,7 @@ final class SourceEnum } - // ******** JavaResourceEnum implementation ******** + // ******** JavaResourceAnnotatedElement implementation ******** public Kind getKind() { return Kind.ENUM; diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnumConstant.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnumConstant.java index dffa6a0ad6..939a08f374 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnumConstant.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceEnumConstant.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. @@ -35,6 +35,7 @@ final class SourceEnumConstant int occurrence, JavaResourceCompilationUnit javaResourceCompilationUnit, CompilationUnit astRoot) { + EnumConstant enumConstant = new JDTEnumConstant( declaringEnum, name, @@ -46,17 +47,26 @@ final class SourceEnumConstant jrec.initialize(astRoot); return jrec; } - + + private SourceEnumConstant(JavaResourceEnum parent, EnumConstant enumConstant){ super(parent, enumConstant); } - + + @Override public void initialize(CompilationUnit astRoot) { super.initialize(astRoot); } - - + + + // ******** JavaResourceAnnotatedElement implementation ******** + + public Kind getKind() { + return Kind.ENUM_CONSTANT; + } + + // ******** overrides ******** @Override diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceField.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceField.java index 0a728b6166..936231cc6a 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceField.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceField.java @@ -35,6 +35,7 @@ final class SourceField int occurrence, JavaResourceCompilationUnit javaResourceCompilationUnit, CompilationUnit astRoot) { + FieldAttribute field = new JDTFieldAttribute( declaringType, name, @@ -46,8 +47,15 @@ final class SourceField jrpa.initialize(astRoot); return jrpa; } - + + private SourceField(JavaResourceType parent, FieldAttribute field){ super(parent, field); } + + // ******** JavaResourceAnnotatedElement implementation ******** + + public Kind getKind() { + return Kind.FIELD; + } } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMember.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMember.java index 5a66b9db4e..deb400b105 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMember.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMember.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,6 +10,7 @@ package org.eclipse.jpt.common.core.internal.resource.java.source; import java.util.ArrayList; +import java.util.Iterator; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.IBinding; import org.eclipse.jdt.core.dom.Modifier; @@ -20,7 +21,7 @@ import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.common.utility.internal.CollectionTools; /** - * Java source member (annotations) + * Java source member (annotations, "persistable") */ abstract class SourceMember extends SourceAnnotatedElement @@ -73,18 +74,32 @@ abstract class SourceMember } for (Annotation annotation : this.getAnnotations()) { if ( ! CollectionTools.contains(annotationNames, annotation.getAnnotationName())) { - this.annotations.remove(annotation); + if (annotationIsValidContainer(annotation.getAnnotationName())) { + this.annotationContainers.remove(getAnnotationProvider().getNestableAnnotationName(annotation.getAnnotationName())); + } + else { + this.annotations.remove(annotation); + } annotation.removeAnnotation(); } } - Annotation newPrimaryAnnotation = null; - if ((primaryAnnotationName != null) && (this.getAnnotation(primaryAnnotationName) == null)) { + //At this point the only thing remaining would be a standalone "nestable" annotation + Iterator containers = this.annotationContainers.values().iterator(); + for (; containers.hasNext();) { + AnnotationContainer container = containers.next(); + String nestedAnnotatioName = container.getNestedAnnotationName(); + if ( ! CollectionTools.contains(annotationNames, nestedAnnotatioName)) { + containers.remove(); + container.getNestedAnnotations().iterator().next().removeAnnotation(); + } + } + + Annotation newPrimaryAnnotation = this.getAnnotation(primaryAnnotationName); + if ((primaryAnnotationName != null) && (newPrimaryAnnotation == null)) { newPrimaryAnnotation = this.buildAnnotation(primaryAnnotationName); this.annotations.add(newPrimaryAnnotation); newPrimaryAnnotation.newAnnotation(); } - // fire collection change event after all annotation changes are done - this.fireCollectionChanged(ANNOTATIONS_COLLECTION, this.annotations); return newPrimaryAnnotation; } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMethod.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMethod.java index 130c0ed9ef..ad0b274a92 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMethod.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceMethod.java @@ -33,8 +33,9 @@ final class SourceMethod extends SourceAttribute implements JavaResourceMethod { - boolean constructor; + boolean constructor; + private final Vector parameterTypeNames = new Vector(); /** @@ -59,10 +60,12 @@ final class SourceMethod return jrm; } + private SourceMethod(JavaResourceType parent, MethodAttribute method){ super(parent, method); } + @Override public void initialize(CompilationUnit astRoot) { super.initialize(astRoot); @@ -72,13 +75,15 @@ final class SourceMethod } - // ******** overrides ******** + // ******** JavaResourceAnnotatedElement implementation ******** - @Override - protected JavaResourceType getParent() { - return (JavaResourceType) super.getParent(); + public Kind getKind() { + return Kind.METHOD; } + + // ******** overrides ******** + @Override public void resolveTypes(CompilationUnit astRoot) { super.resolveTypes(astRoot); @@ -118,7 +123,7 @@ final class SourceMethod private boolean buildConstructor(IMethodBinding methodBinding) { return methodBinding == null ? false : methodBinding.isConstructor(); } - + public boolean isFor(MethodSignature signature, int occurrence) { return this.annotatedElement.matches(signature, occurrence); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNamedAnnotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNamedAnnotation.java new file mode 100644 index 0000000000..87225ba0fb --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNamedAnnotation.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * 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.common.core.internal.resource.java.source; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; +import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; + +/** + * Used for annotations that have no behavior, just a name + */ +public final class SourceNamedAnnotation + extends SourceAnnotation +{ + private final String annotationName; + + public SourceNamedAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, String annotationName) { + super(parent, annotatedElement, new SimpleDeclarationAnnotationAdapter(annotationName)); + this.annotationName = annotationName; + } + + public String getAnnotationName() { + return this.annotationName; + } + + public void initialize(CompilationUnit astRoot) { + //nothing + } + + public void synchronizeWith(CompilationUnit astRoot) { + //nothing + } +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNode.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNode.java index 2cf83af052..d120817e2c 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNode.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceNode.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. @@ -46,6 +46,10 @@ public abstract class SourceNode return (JavaResourceCompilationUnit) this.getRoot(); } + protected CompilationUnit buildASTRoot() { + return this.getJavaResourceCompilationUnit().buildASTRoot(); + } + /** * A container for nested annotations. The owner of the AnnotationContainer * needs to call initialize(org.eclipse.jdt.core.dom.Annotation) on it. @@ -326,9 +330,17 @@ public abstract class SourceNode this.fireItemsRemoved(index, removedItems); } + public boolean isEmpty() { + return this.nestedAnnotations.isEmpty(); + } + @Override public String toString() { return StringTools.buildToStringFor(this); } + + public void toString(StringBuilder sb) { + sb.append(this.nestedAnnotations); + } } } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackage.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackage.java index ed73c0844c..7c3d504d1d 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackage.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackage.java @@ -25,10 +25,11 @@ import org.eclipse.jpt.common.core.utility.jdt.AnnotatedPackage; */ public final class SourcePackage extends SourceAnnotatedElement - implements JavaResourcePackage { - + implements JavaResourcePackage +{ + private String name; - + /** * construct package info */ @@ -45,19 +46,26 @@ public final class SourcePackage jrpp.initialize(astRoot); return jrpp; } - + private SourcePackage( JavaResourceCompilationUnit parent, AnnotatedPackage pack){ super(parent, pack); } - + + @Override public void initialize(CompilationUnit astRoot) { super.initialize(astRoot); this.name = this.buildName(astRoot); } + // ******** JavaResourceAnnotatedElement implementation ******** + + public Kind getKind() { + return Kind.PACKAGE; + } + // ********** JavaResourcePackageInfo implementation ********** @@ -79,7 +87,7 @@ public final class SourcePackage return (binding == null) ? null : binding.getName(); } - + // ********** Java changes ********** @Override @@ -87,11 +95,9 @@ public final class SourcePackage super.synchronizeWith(astRoot); this.syncName(this.buildName(astRoot)); } - @Override public void toString(StringBuilder sb) { sb.append(this.name); } - } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackageInfoCompilationUnit.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackageInfoCompilationUnit.java index e5a5164969..3ea302a474 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackageInfoCompilationUnit.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourcePackageInfoCompilationUnit.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Red Hat, Inc. + * Copyright (c) 2010, 2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, @@ -57,8 +57,11 @@ public final class SourcePackageInfoCompilationUnit public Iterable getTypes() { return EmptyIterable.instance(); } - - + + public JavaResourceAbstractType getPrimaryType() { + return null; + } + // ********** JptResourceModel implementation ********** public JptResourceType getResourceType() { diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java index 51bc4dd843..ea2565fc24 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceType.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,7 +36,7 @@ import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; import org.eclipse.jpt.common.utility.internal.iterables.TreeIterable; /** - * Java source type + * Java source type (type or interface) */ final class SourceType extends SourceAbstractType @@ -49,6 +49,8 @@ final class SourceType private boolean hasNoArgConstructor; + private boolean hasPrivateNoArgConstructor; + private final Vector types; private final Vector enums; @@ -113,6 +115,7 @@ final class SourceType this.superclassQualifiedName = this.buildSuperclassQualifiedName(binding); this.abstract_ = this.buildAbstract(binding); this.hasNoArgConstructor = this.buildHasNoArgConstructor(binding); + this.hasPrivateNoArgConstructor = this.buildHasPrivateNoArgConstructor(binding); this.initializeTypes(astRoot); this.initializeEnums(astRoot); this.initializeFields(astRoot); @@ -129,6 +132,7 @@ final class SourceType this.syncSuperclassQualifiedName(this.buildSuperclassQualifiedName(binding)); this.syncAbstract(this.buildAbstract(binding)); this.syncHasNoArgConstructor(this.buildHasNoArgConstructor(binding)); + this.syncHasPrivateNoArgConstructor(this.buildHasPrivateNoArgConstructor(binding)); this.syncTypes(astRoot); this.syncEnums(astRoot); this.syncFields(astRoot); @@ -236,6 +240,26 @@ final class SourceType return null; } + // ***** private no-arg constructor + public boolean hasPrivateNoArgConstructor() { + return this.hasPrivateNoArgConstructor; + } + + private void syncHasPrivateNoArgConstructor(boolean astHasPrivateNoArgConstructor) { + boolean old = this.hasPrivateNoArgConstructor; + this.hasPrivateNoArgConstructor = astHasPrivateNoArgConstructor; + this.firePropertyChanged(PRIVATE_NO_ARG_CONSTRUCTOR_PROPERTY, old, astHasPrivateNoArgConstructor); + } + + private boolean buildHasPrivateNoArgConstructor(ITypeBinding binding) { + return (binding == null) ? false : typeHasPrivateNoArgConstructor(binding); + } + + protected static boolean typeHasPrivateNoArgConstructor(ITypeBinding binding) { + IMethodBinding method = findNoArgConstructor(binding); + return (method != null) && Modifier.isPrivate(method.getModifiers()); + } + // ********** types ********** public Iterable getTypes() { @@ -485,4 +509,23 @@ final class SourceType private JavaResourceMethod buildMethod(MethodSignature signature, int occurrence, CompilationUnit astRoot) { return SourceMethod.newInstance(this, this.annotatedElement, signature, occurrence, this.getJavaResourceCompilationUnit(), astRoot); } + + + public boolean hasAnyAnnotatedFields() { + for (JavaResourceField field : this.getFields()) { + if (field.isAnnotated()) { + return true; + } + } + return false; + } + + public boolean hasAnyAnnotatedMethods() { + for (JavaResourceMethod method : this.getMethods()) { + if (method.isAnnotated()) { + return true; + } + } + return false; + } } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceTypeCompilationUnit.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceTypeCompilationUnit.java index e5756e60d2..a11bff1bce 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceTypeCompilationUnit.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/java/source/SourceTypeCompilationUnit.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. @@ -40,7 +40,7 @@ public final class SourceTypeCompilationUnit * the constructor in a package class (which is what all top-level, * non-primary classes must be). */ - private JavaResourceAbstractType type; + private JavaResourceAbstractType primaryType; // ********** construction ********** @@ -51,21 +51,21 @@ public final class SourceTypeCompilationUnit AnnotationEditFormatter annotationEditFormatter, CommandExecutor modifySharedDocumentCommandExecutor) { super(compilationUnit, annotationProvider, annotationEditFormatter, modifySharedDocumentCommandExecutor); // the compilation unit is the root of its sub-tree - this.type = this.buildType(); + this.primaryType = this.buildPrimaryType(); } - private JavaResourceAbstractType buildType() { + private JavaResourceAbstractType buildPrimaryType() { this.openCompilationUnit(); CompilationUnit astRoot = this.buildASTRoot(); this.closeCompilationUnit(); - return this.buildPersistentType(astRoot); + return this.buildPrimaryType(astRoot); } // ********** JavaResourceNode implementation ********** public void synchronizeWith(CompilationUnit astRoot) { - this.syncType(astRoot); + this.syncPrimaryType(astRoot); } @@ -75,9 +75,9 @@ public final class SourceTypeCompilationUnit * NB: return *all* the types since we build them all */ public Iterable getTypes() { - return (this.type == null) ? + return (this.primaryType == null) ? EmptyIterable.instance() : - new CompositeIterable(this.type.getAllTypes(), this.type.getAllEnums()); + new CompositeIterable(this.primaryType.getAllTypes(), this.primaryType.getAllEnums()); } @@ -91,43 +91,47 @@ public final class SourceTypeCompilationUnit // ********** JavaResourceCompilationUnit implementation ********** public void resolveTypes() { - if (this.type != null) { - this.type.resolveTypes(this.buildASTRoot()); + if (this.primaryType != null) { + this.primaryType.resolveTypes(this.buildASTRoot()); } } - // ********** persistent type ********** + // ********** type ********** - private JavaResourceAbstractType buildPersistentType(CompilationUnit astRoot) { - AbstractTypeDeclaration td = this.getPrimaryTypeDeclaration(astRoot); - return (td == null) ? null : this.buildType(astRoot, td); + public JavaResourceAbstractType getPrimaryType() { + return this.primaryType; + } + + private JavaResourceAbstractType buildPrimaryType(CompilationUnit astRoot) { + AbstractTypeDeclaration td = this.getPrimaryTypeOrEnumDeclaration(astRoot); + return (td == null) ? null : this.buildPrimaryType(astRoot, td); } - private void syncType(CompilationUnit astRoot) { - AbstractTypeDeclaration td = this.getPrimaryTypeDeclaration(astRoot); + private void syncPrimaryType(CompilationUnit astRoot) { + AbstractTypeDeclaration td = this.getPrimaryTypeOrEnumDeclaration(astRoot); if (td == null) { - this.syncType_(null); + this.syncPrimaryType_(null); } else { - if (this.type == null) { - this.syncType_(this.buildType(astRoot, td)); + if (this.primaryType == null) { + this.syncPrimaryType_(this.buildPrimaryType(astRoot, td)); } else { - this.type.synchronizeWith(astRoot); + this.primaryType.synchronizeWith(astRoot); } } } - private void syncType_(JavaResourceAbstractType astType) { - JavaResourceAbstractType old = this.type; - this.type = astType; + private void syncPrimaryType_(JavaResourceAbstractType astType) { + JavaResourceAbstractType old = this.primaryType; + this.primaryType = astType; this.firePropertyChanged(TYPES_COLLECTION, old, astType); } // ********** internal ********** - private JavaResourceAbstractType buildType(CompilationUnit astRoot, AbstractTypeDeclaration typeDeclaration) { + private JavaResourceAbstractType buildPrimaryType(CompilationUnit astRoot, AbstractTypeDeclaration typeDeclaration) { if (typeDeclaration.getNodeType() == ASTNode.TYPE_DECLARATION) { return SourceType.newInstance(this, (TypeDeclaration) typeDeclaration, astRoot); } @@ -139,29 +143,34 @@ public final class SourceTypeCompilationUnit /** * i.e. the type with the same name as the compilation unit; - * return the first class or interface (ignore annotations and enums) with + * return the first class, interface or enum (ignore annotations) with * the same name as the compilation unit (file); - * NB: this type could be in error if there is an annotation or enum + * NB: this type could be in error if there is an annotation * with the same name preceding it in the compilation unit * * Return null if the parser did not resolve the type declaration's binding. * This can occur if the project JRE is removed (bug 225332). */ - private AbstractTypeDeclaration getPrimaryTypeDeclaration(CompilationUnit astRoot) { + private AbstractTypeDeclaration getPrimaryTypeOrEnumDeclaration(CompilationUnit astRoot) { String primaryTypeName = this.getPrimaryTypeName(); for (AbstractTypeDeclaration atd : this.types(astRoot)) { - if (this.nodeIsPrimaryTypeDeclaration(atd, primaryTypeName)) { + if (this.nodeIsPrimaryTypeOrEnumDeclaration(atd, primaryTypeName)) { return (atd.resolveBinding() == null) ? null : atd; } } return null; } - private boolean nodeIsPrimaryTypeDeclaration(AbstractTypeDeclaration atd, String primaryTypeName) { - return (atd.getNodeType() == ASTNode.TYPE_DECLARATION || atd.getNodeType() == ASTNode.ENUM_DECLARATION) && + private boolean nodeIsPrimaryTypeOrEnumDeclaration(AbstractTypeDeclaration atd, String primaryTypeName) { + return this.nodeIsTypeOrEnumDeclaration(atd) && (atd.getName().getFullyQualifiedName().equals(primaryTypeName)); } + private boolean nodeIsTypeOrEnumDeclaration(AbstractTypeDeclaration atd) { + return atd.getNodeType() == ASTNode.TYPE_DECLARATION || + atd.getNodeType() == ASTNode.ENUM_DECLARATION; + } + private String getPrimaryTypeName() { return this.getCompilationUnitName(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/Annotation.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/Annotation.java index 68bdba6581..a4cd5e0352 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/Annotation.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/Annotation.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. @@ -51,4 +51,10 @@ public interface Annotation */ void removeAnnotation(); + /** + * Return whether all the annotation's member values are null; + * implying the annotation can be removed if it has no semantic value as a + * marker annotation. + */ + boolean isUnset(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAbstractType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAbstractType.java index 42b83a7f36..c228a6e8c6 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAbstractType.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAbstractType.java @@ -10,6 +10,7 @@ package org.eclipse.jpt.common.core.resource.java; import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; /** @@ -58,18 +59,14 @@ public interface JavaResourceAbstractType */ boolean isMemberType(); String MEMBER_TYPE_PROPERTY = "memberType"; //$NON-NLS-1$ - - /** - * Return whether the type is annotated with any annotations that determine whether and - * how the type is persisted - */ - boolean isMapped(); boolean isIn(IPackageFragment packageFragment); + boolean isIn(IPackageFragmentRoot sourceFolder); + /** - * Return the immediately nested types (children). + * Return the immediately nested types (classes or interfaces, not enums or annotations) (children). */ Iterable getTypes(); String TYPES_COLLECTION = "types"; //$NON-NLS-1$ @@ -91,30 +88,5 @@ public interface JavaResourceAbstractType * etc. */ Iterable getAllEnums(); - - /** - * Return the kind of java type this corresponds to - */ - Kind getKind(); - - - /** - * The kind of java type. - */ - public enum Kind { - - /** - * Represents a class or interface. - * An {@link JavaResourceAbstractType} of {@link Kind} TYPE may safely be cast as a - * {@link JavaResourceType} - */ - TYPE, - - /** - * Represents an enum. - * An {@link JavaResourceAbstractType} of {@link Kind} ENUM may safely be cast as a - * {@link JavaResourceEnum} - */ - ENUM - } + } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAnnotatedElement.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAnnotatedElement.java index fc2935895e..6b6d22fae9 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAnnotatedElement.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAnnotatedElement.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. @@ -74,7 +74,7 @@ public interface JavaResourceAnnotatedElement */ // TODO tie the singular and plural annotations together so we can generate // a validation error when both are specified - ListIterable getAnnotations(String nestableAnnotationName); + ListIterable getAnnotations(String nestableAnnotationName); /** * Return the number of nestable annotations with the specified name. @@ -135,9 +135,68 @@ public interface JavaResourceAnnotatedElement * annotations. */ boolean isAnnotated(); + + /** + * Return whether the underlying JDT member is annotated with any of the given annotations. + */ + boolean isAnnotatedWith(Iterable annotationNames); + + /** + * Return the element kind + */ + Kind getKind(); /** * Return the text range for the member's name. */ TextRange getNameTextRange(CompilationUnit astRoot); + + + /** + * The kind of java element. + */ + public enum Kind { + + /** + * Represents an annotatable package. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} PACKAGE may safely be cast as a + * {@link JavaResourcePackage} + */ + PACKAGE, + + /** + * Represents a class or interface. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} TYPE may safely be cast as a + * {@link JavaResourceType} + */ + TYPE, + + /** + * Represents an enum. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} ENUM may safely be cast as a + * {@link JavaResourceEnum} + */ + ENUM, + + /** + * Represents a method. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} METHOD may safely be cast as a + * {@link JavaResourceMethod} + */ + METHOD, + + /** + * Represents a type field. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} FIELD may safely be cast as a + * {@link JavaResourceField} + */ + FIELD, + + /** + * Represents an enum constant. + * An {@link JavaResourceAnnotatedElement} of {@link Kind} ENUM_CONSTANT may safely be cast as a + * {@link JavaResourceEnumConstant} + */ + ENUM_CONSTANT; + } } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAttribute.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAttribute.java index d5f9d74e95..d3eb50765c 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAttribute.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceAttribute.java @@ -26,6 +26,9 @@ import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; public interface JavaResourceAttribute extends JavaResourceMember { + JavaResourceType getParent(); + + JavaResourceType getResourceType(); /** * Return whether the attribute's type implements or extends the specified diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceClassFile.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceClassFile.java index f9a9f214ea..ebda076809 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceClassFile.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceClassFile.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.common.core.resource.java; + /** * Java class file * @@ -26,8 +27,8 @@ public interface JavaResourceClassFile extends JavaResourceNode { /** - * Return the class file's persistent type. + * Return the class file's type. */ - JavaResourceType getPersistentType(); + JavaResourceAbstractType getType(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceCompilationUnit.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceCompilationUnit.java index f004c09377..147f717bb4 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceCompilationUnit.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceCompilationUnit.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. @@ -53,6 +53,12 @@ public interface JavaResourceCompilationUnit */ void resolveTypes(); + /** + * The primary type of the AST compilation unit, can be null. + * This is named the same as the compilation unit. + */ + JavaResourceAbstractType getPrimaryType(); + /** * Something in Java has changed (typically either the compilation unit's * source code or the Java classpath); synchronize the compilation unit's diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceEnum.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceEnum.java index a3245d02f9..774d95aa5c 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceEnum.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceEnum.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.common.core.resource.java; + /** * Java source code or binary enum. *

@@ -34,9 +35,4 @@ public interface JavaResourceEnum */ Iterable getEnumConstants(); String ENUM_CONSTANTS_COLLECTION = "enumConstants"; //$NON-NLS-1$ -// -// /** -// * Return the type's persistable fields. -// */ -// Iterable getPersistableFields(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceNode.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceNode.java index cbe0314c68..21e446ebfd 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceNode.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceNode.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. @@ -31,6 +31,10 @@ import org.eclipse.jpt.common.utility.model.Model; public interface JavaResourceNode extends Model { + /** + * Return the node's parent node. + */ + JavaResourceNode getParent(); /** * Return the Eclipse file that contains the Java resource node diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourcePackageFragment.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourcePackageFragment.java index ede8d1558d..87ceb27c66 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourcePackageFragment.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourcePackageFragment.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,6 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.common.core.resource.java; +import org.eclipse.jpt.common.core.AnnotationProvider; + + /** * Java package fragment @@ -26,7 +29,9 @@ public interface JavaResourcePackageFragment extends JavaResourceNode { /** - * Return the package fragment's class files that contain "persistable" types. + * Return the package fragment's class files that contain "annotated" types. + * Annotated with the annotations we care about, + * @see AnnotationProvider */ Iterable getClassFiles(); String CLASS_FILES_COLLECTION = "classFiles"; //$NON-NLS-1$ @@ -37,9 +42,9 @@ public interface JavaResourcePackageFragment int getClassFilesSize(); /** - * Return the package fragment's Java persistent types. - * Return only the files that are annotated with JAXB annotations. + * Return the package fragment's Java types. + * This is a convenience method that returns the JavaResourceTypes of the classFiles. */ - Iterable getPersistedTypes(); + Iterable getTypes(); } diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceType.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceType.java index 50a47a2c9f..fbd1cf6f27 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceType.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceType.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.common.core.resource.java; + /** * Java source code or binary class or interface. *

@@ -43,6 +44,23 @@ public interface JavaResourceType boolean hasNoArgConstructor(); String NO_ARG_CONSTRUCTOR_PROPERTY = "noArgConstructor"; //$NON-NLS-1$ + /** + * Return whether the type has a private no-arg constructor + */ + boolean hasPrivateNoArgConstructor(); + String PRIVATE_NO_ARG_CONSTRUCTOR_PROPERTY = "privateNoArgConstructor"; //$NON-NLS-1$ + + /** + * Return whether the type has any field that have relevant annotations + * on them (which can be used to infer the type's access type). + */ + boolean hasAnyAnnotatedFields(); + + /** + * Return whether the type has any field that have relevant annotations + * on them (which can be used to infer the type's access type). + */ + boolean hasAnyAnnotatedMethods(); // ********** fields ********** diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceTypeCache.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceTypeCache.java new file mode 100644 index 0000000000..59d5e7e883 --- /dev/null +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/JavaResourceTypeCache.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.core.resource.java; + +import org.eclipse.core.resources.IFile; +import org.eclipse.jdt.core.IType; + +/** + * Java persistent type cache - used to hold "external" types + * + * 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.2 + */ +public interface JavaResourceTypeCache + extends JavaResourceNode.Root +{ + + /** + * Return the size of the cache's types. + */ + int getTypesSize(); + + /** + * Add a Java resource type for the specified JDT type to the + * cache. Return the new type. + */ + JavaResourceAbstractType addType(IType jdtType); + + /** + * Remove all the types associated with the specified JAR file. + * Return whether any types were removed. + */ + boolean removeTypes(IFile jarFile); + +} diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/NestableAnnotationDefinition.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/NestableAnnotationDefinition.java index 82e86822e3..eb9784f1d0 100644 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/NestableAnnotationDefinition.java +++ b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/resource/java/NestableAnnotationDefinition.java @@ -50,5 +50,5 @@ public interface NestableAnnotationDefinition * Build and return an annotation for the specified JDT annotation * on the specified annotated element. */ - Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation); + NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index); } diff --git a/common/tests/org.eclipse.jpt.common.core.tests/META-INF/MANIFEST.MF b/common/tests/org.eclipse.jpt.common.core.tests/META-INF/MANIFEST.MF index 728ab395c7..c382d34283 100644 --- a/common/tests/org.eclipse.jpt.common.core.tests/META-INF/MANIFEST.MF +++ b/common/tests/org.eclipse.jpt.common.core.tests/META-INF/MANIFEST.MF @@ -17,4 +17,5 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)", org.junit;bundle-version="3.8.0" Export-Package: org.eclipse.jpt.common.core.tests.internal;x-internal:=true, org.eclipse.jpt.common.core.tests.internal.projects;x-internal:=true, + org.eclipse.jpt.common.core.tests.internal.resource.java;x-internal:=true, org.eclipse.jpt.common.core.tests.internal.utility.jdt;x-internal:=true diff --git a/common/tests/org.eclipse.jpt.common.core.tests/src/org/eclipse/jpt/common/core/tests/internal/resource/java/JavaResourceModelTestCase.java b/common/tests/org.eclipse.jpt.common.core.tests/src/org/eclipse/jpt/common/core/tests/internal/resource/java/JavaResourceModelTestCase.java new file mode 100644 index 0000000000..4c3bd461f3 --- /dev/null +++ b/common/tests/org.eclipse.jpt.common.core.tests/src/org/eclipse/jpt/common/core/tests/internal/resource/java/JavaResourceModelTestCase.java @@ -0,0 +1,197 @@ +/******************************************************************************* + * 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.common.core.tests.internal.resource.java; + +import org.eclipse.jdt.core.ElementChangedEvent; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IElementChangedListener; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaElementDelta; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.GenericAnnotationProvider; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourcePackageInfoCompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceTypeCompilationUnit; +import org.eclipse.jpt.common.core.internal.utility.jdt.NullAnnotationEditFormatter; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceCompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnum; +import org.eclipse.jpt.common.core.resource.java.JavaResourceEnumConstant; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageInfoCompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.core.tests.internal.utility.jdt.AnnotationTestCase; +import org.eclipse.jpt.common.utility.CommandExecutor; +import org.eclipse.jpt.common.utility.internal.BitTools; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.ReflectionTools; +import org.eclipse.jpt.common.utility.internal.StringTools; + +@SuppressWarnings("nls") +public abstract class JavaResourceModelTestCase + extends AnnotationTestCase { + + private JavaElementChangeListener javaElementChangeListener; + protected JavaResourceCompilationUnit javaResourceCompilationUnit; + + + public JavaResourceModelTestCase(String name) { + super(name); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + this.javaElementChangeListener = new JavaElementChangeListener(); + JavaCore.addElementChangedListener(this.javaElementChangeListener); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + JavaCore.removeElementChangedListener(this.javaElementChangeListener); + this.javaElementChangeListener = null; + } + + private class JavaElementChangeListener + implements IElementChangedListener { + + JavaElementChangeListener() { + super(); + } + + public void elementChanged(ElementChangedEvent event) { + JavaResourceModelTestCase.this.javaElementChanged(event); + } + + @Override + public String toString() { + return StringTools.buildToStringFor(this); + } + } + + void javaElementChanged(ElementChangedEvent event) { + if (this.javaResourceCompilationUnit == null) { + return; + } + this.syncWithJavaDelta(event.getDelta()); + } + + /** + * NB: this is copied from GenericJpaProject, so it might need to be + * kept in synch with that code if it changes... yech... + */ + protected void syncWithJavaDelta(IJavaElementDelta delta) { + switch (delta.getElement().getElementType()) { + case IJavaElement.JAVA_MODEL : + case IJavaElement.JAVA_PROJECT : + case IJavaElement.PACKAGE_FRAGMENT_ROOT : + case IJavaElement.PACKAGE_FRAGMENT : + this.syncWithJavaDeltaChildren(delta); + break; + case IJavaElement.COMPILATION_UNIT : + this.javaCompilationUnitChanged(delta); + break; + default : + break; // ignore the elements inside a compilation unit + } + } + + protected void syncWithJavaDeltaChildren(IJavaElementDelta delta) { + for (IJavaElementDelta child : delta.getAffectedChildren()) { + this.syncWithJavaDelta(child); // recurse + } + } + + protected void javaCompilationUnitChanged(IJavaElementDelta delta) { + if (this.deltaIsRelevant(delta)) { + this.javaResourceCompilationUnit.synchronizeWithJavaSource(); + } + } + + protected boolean deltaIsRelevant(IJavaElementDelta delta) { + if (BitTools.onlyFlagIsSet(delta.getFlags(), IJavaElementDelta.F_PRIMARY_WORKING_COPY)) { + return false; + } + return delta.getKind() == IJavaElementDelta.CHANGED; + } + + protected ICompilationUnit createAnnotationAndMembers(String packageName, String annotationName, String annotationBody) throws Exception { + return this.javaProject.createCompilationUnit(packageName, annotationName + ".java", "public @interface " + annotationName + " { " + annotationBody + " }"); + } + + protected ICompilationUnit createEnumAndMembers(String packageName, String enumName, String enumBody) throws Exception { + return this.javaProject.createCompilationUnit(packageName, enumName + ".java", "public enum " + enumName + " { " + enumBody + " }"); + } + + protected JavaResourcePackage buildJavaResourcePackage(ICompilationUnit cu) { + JavaResourcePackageInfoCompilationUnit pkgCu = + new SourcePackageInfoCompilationUnit( + cu, + this.buildAnnotationProvider(), + NullAnnotationEditFormatter.instance(), + CommandExecutor.Default.instance()); + this.javaResourceCompilationUnit = pkgCu; + return pkgCu.getPackage(); + } + + protected JavaResourceType buildJavaResourceType(ICompilationUnit cu) { + return (JavaResourceType) this.buildJavaResourceType_(cu); + } + + protected JavaResourceEnum buildJavaResourceEnum(ICompilationUnit cu) { + return (JavaResourceEnum) this.buildJavaResourceType_(cu); + } + + private JavaResourceAbstractType buildJavaResourceType_(ICompilationUnit cu) { + this.javaResourceCompilationUnit = this.buildJavaResourceCompilationUnit(cu); + this.javaResourceCompilationUnit.resolveTypes(); + return this.hackJavaResourceType(); + } + + protected JavaResourceField getField(JavaResourceType type, int index) { + return CollectionTools.get(type.getFields(), index); + } + + protected JavaResourceMethod getMethod(JavaResourceType type, int index) { + return CollectionTools.get(type.getMethods(), index); + } + + protected JavaResourceEnumConstant getEnumConstant(JavaResourceEnum resourceEnum, int index) { + return CollectionTools.get(resourceEnum.getEnumConstants(), index); + } + + protected JavaResourceAbstractType hackJavaResourceType() { + return (JavaResourceAbstractType) ReflectionTools.getFieldValue(this.javaResourceCompilationUnit, "primaryType"); + } + + protected JavaResourceCompilationUnit buildJavaResourceCompilationUnit(ICompilationUnit cu) { + if (this.javaResourceCompilationUnit != null) { + throw new IllegalStateException(); + } + return new SourceTypeCompilationUnit( + cu, + this.buildAnnotationProvider(), + NullAnnotationEditFormatter.instance(), + CommandExecutor.Default.instance()); + } + + protected AnnotationProvider buildAnnotationProvider() { + return new GenericAnnotationProvider(this.annotationDefinitions(), this.nestableAnnotationDefinitions()); + } + + protected abstract AnnotationDefinition[] annotationDefinitions(); + + protected abstract NestableAnnotationDefinition[] nestableAnnotationDefinitions(); +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbNode.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbNode.java index 84dcf57c39..97a1fdeb03 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbNode.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/AbstractJaxbNode.java @@ -371,7 +371,7 @@ public abstract class AbstractJaxbNode return this.contextElements.indexOf(contextElement); } - public C contextElementAt(int index) { + public C getContextElement(int index) { return this.contextElements.elementAt(index); } @@ -414,7 +414,7 @@ public abstract class AbstractJaxbNode int index = 0; for (R resourceElement : resourceElements) { if (this.getContextElementsSize() > index) { - if (this.contextElementAt(index) != resourceElement) { + if (this.getContextElement(index) != resourceElement) { this.addContextElement(index, resourceElement); } } @@ -458,7 +458,7 @@ public abstract class AbstractJaxbNode return this.contextElements.indexOf(contextElement); } - public C contextElementAt(int index) { + public C getContextElement(int index) { return this.contextElements.elementAt(index); } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericAnnotationProvider.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericAnnotationProvider.java deleted file mode 100644 index f55185786c..0000000000 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericAnnotationProvider.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * 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 - ******************************************************************************/ -package org.eclipse.jpt.jaxb.core.internal; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.AnnotationProvider; -import org.eclipse.jpt.common.core.resource.java.Annotation; -import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; -import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; -import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; -import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; - -/** - * Delegate to annotation definition providers. - * The platform factory will build an instance of this annotation provider, - * passing in the appropriate array of annotation definition providers necessary - * to build the annotations for the platform (vendor and/or version). - */ -public final class GenericAnnotationProvider - implements AnnotationProvider -{ - private final AnnotationDefinition[] annotationDefinitions; - - private final NestableAnnotationDefinition[] nestableAnnotationDefinitions; - - public GenericAnnotationProvider(AnnotationDefinition[] annotationDefinitions, NestableAnnotationDefinition[] nestableAnnotationDefinitions) { - super(); - this.annotationDefinitions = annotationDefinitions; - this.nestableAnnotationDefinitions = nestableAnnotationDefinitions; - } - - - protected Iterable getAnnotationDefinitions() { - return new ArrayIterable(this.annotationDefinitions); - } - - protected AnnotationDefinition getAnnotationDefinition(String annotationName) { - for (AnnotationDefinition annotationDefinition : this.annotationDefinitions) { - if (annotationDefinition.getAnnotationName().equals(annotationName)) { - return annotationDefinition; - } - } - return null; - } - - public Iterable getAnnotationNames() { - return new TransformationIterable(getAnnotationDefinitions()) { - @Override - protected String transform(AnnotationDefinition annotationDefinition) { - return annotationDefinition.getAnnotationName(); - } - }; - } - - public Iterable getContainerAnnotationNames() { - return new TransformationIterable(getNestableAnnotationDefinitions()) { - @Override - protected String transform(NestableAnnotationDefinition annotationDefinition) { - return annotationDefinition.getContainerAnnotationName(); - } - }; - } - - public Iterable getNestableAnnotationNames() { - return new TransformationIterable(getNestableAnnotationDefinitions()) { - @Override - protected String transform(NestableAnnotationDefinition annotationDefinition) { - return annotationDefinition.getNestableAnnotationName(); - } - }; - } - - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element, String annotationName) { - return this.getAnnotationDefinition(annotationName).buildAnnotation(parent, element); - } - - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return this.getAnnotationDefinition(jdtAnnotation.getElementName()).buildAnnotation(parent, jdtAnnotation); - } - - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent, String annotationName) { - return this.getAnnotationDefinition(annotationName).buildNullAnnotation(parent); - } - - protected Iterable getNestableAnnotationDefinitions() { - return new ArrayIterable(this.nestableAnnotationDefinitions); - } - - protected NestableAnnotationDefinition getNestableAnnotationDefinition(String annotationName) { - for (NestableAnnotationDefinition annotationDefinition : this.nestableAnnotationDefinitions) { - if (annotationDefinition.getNestableAnnotationName().equals(annotationName)) { - return annotationDefinition; - } - } - return null; - } - - public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element, String annotationName, int index) { - return this.getNestableAnnotationDefinition(annotationName).buildAnnotation(parent, element, index); - } - - public String getNestableAnnotationName(String containerAnnotationName) { - return getNestableAnnotationDefinitionForContainer(containerAnnotationName).getNestableAnnotationName(); - } - - public String getNestableElementName(String nestableAnnotationName) { - return getNestableAnnotationDefinition(nestableAnnotationName).getElementName(); - } - - private NestableAnnotationDefinition getNestableAnnotationDefinitionForContainer(String containerAnnotationName) { - for (NestableAnnotationDefinition nestableAnnotationDefinition : getNestableAnnotationDefinitions()) { - if (nestableAnnotationDefinition.getContainerAnnotationName().equals(containerAnnotationName)) { - return nestableAnnotationDefinition; - } - } - return null; - } -} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java index 0f4e6c3c4b..992c62dbad 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java @@ -15,11 +15,13 @@ import org.eclipse.core.resources.IResource; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNode; import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; 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.iterables.EmptyIterable; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.SubListIterableWrapper; import org.eclipse.jpt.jaxb.core.context.JaxbPackage; import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo; import org.eclipse.jpt.jaxb.core.context.XmlAccessOrder; @@ -221,9 +223,9 @@ public class GenericJavaPackageInfo this.xmlSchemaTypeContainer.update(); } - @SuppressWarnings("unchecked") protected ListIterable getXmlSchemaTypeAnnotations() { - return (ListIterable) this.resourcePackage.getAnnotations(XmlSchemaTypeAnnotation.ANNOTATION_NAME); + return new SubListIterableWrapper( + this.resourcePackage.getAnnotations(XmlSchemaTypeAnnotation.ANNOTATION_NAME)); } @@ -268,9 +270,9 @@ public class GenericJavaPackageInfo this.xmlJavaTypeAdapterContainer.synchronizeWithResourceModel(); } - @SuppressWarnings("unchecked") protected ListIterable getXmlJavaTypeAdapterAnnotations() { - return (ListIterable) this.resourcePackage.getAnnotations(XmlJavaTypeAdapterAnnotation.ANNOTATION_NAME); + return new SubListIterableWrapper( + this.resourcePackage.getAnnotations(XmlJavaTypeAdapterAnnotation.ANNOTATION_NAME)); } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/jaxb21/GenericJaxb_2_1_PlatformDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/jaxb21/GenericJaxb_2_1_PlatformDefinition.java index 81a5a525fc..379eaf87c5 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/jaxb21/GenericJaxb_2_1_PlatformDefinition.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/jaxb21/GenericJaxb_2_1_PlatformDefinition.java @@ -50,6 +50,7 @@ import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlIDAnnotationDefinitio import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlIDREFAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlInlineBinaryDataAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlJavaTypeAdapterAnnotationDefinition; +import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlJavaTypeAdaptersAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlListAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlMimeTypeAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlMixedAnnotationDefinition; @@ -57,6 +58,7 @@ import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlRegistryAnnotationDef import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlRootElementAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaTypeAnnotationDefinition; +import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaTypesAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSeeAlsoAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlTransientAnnotationDefinition; import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlTypeAnnotationDefinition; @@ -132,12 +134,14 @@ public class GenericJaxb_2_1_PlatformDefinition XmlIDAnnotationDefinition.instance(), XmlIDREFAnnotationDefinition.instance(), XmlInlineBinaryDataAnnotationDefinition.instance(), + XmlJavaTypeAdaptersAnnotationDefinition.instance(), XmlListAnnotationDefinition.instance(), XmlMimeTypeAnnotationDefinition.instance(), XmlMixedAnnotationDefinition.instance(), XmlRegistryAnnotationDefinition.instance(), XmlRootElementAnnotationDefinition.instance(), XmlSchemaAnnotationDefinition.instance(), + XmlSchemaTypesAnnotationDefinition.instance(), XmlSeeAlsoAnnotationDefinition.instance(), XmlTransientAnnotationDefinition.instance(), XmlTypeAnnotationDefinition.instance(), diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/platform/JaxbPlatformImpl.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/platform/JaxbPlatformImpl.java index f7958a5df1..230f624811 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/platform/JaxbPlatformImpl.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/platform/JaxbPlatformImpl.java @@ -12,6 +12,7 @@ package org.eclipse.jpt.jaxb.core.internal.platform; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jpt.common.core.AnnotationProvider; +import org.eclipse.jpt.common.core.GenericAnnotationProvider; import org.eclipse.jpt.common.core.JptResourceModel; import org.eclipse.jpt.common.core.internal.utility.PlatformTools; import org.eclipse.jpt.common.core.internal.utility.jdt.DefaultAnnotationEditFormatter; @@ -25,7 +26,6 @@ import org.eclipse.jpt.jaxb.core.JaxbResourceModelProvider; import org.eclipse.jpt.jaxb.core.context.JaxbPersistentAttribute; import org.eclipse.jpt.jaxb.core.context.java.DefaultJavaAttributeMappingDefinition; import org.eclipse.jpt.jaxb.core.context.java.JavaAttributeMappingDefinition; -import org.eclipse.jpt.jaxb.core.internal.GenericAnnotationProvider; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatform; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDefinition; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDescription; diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdapterAnnotationDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdapterAnnotationDefinition.java index 11a6a6ee84..1e7751e87d 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdapterAnnotationDefinition.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdapterAnnotationDefinition.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,6 @@ package org.eclipse.jpt.jaxb.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; @@ -61,7 +60,7 @@ public final class XmlJavaTypeAdapterAnnotationDefinition return SourceXmlJavaTypeAdapterAnnotation.buildSourceXmlJavaTypeAdapterAnnotation(parent, annotatedElement, index); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { return new BinaryXmlJavaTypeAdapterAnnotation(parent, jdtAnnotation); } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java new file mode 100644 index 0000000000..adef72670c --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * 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.jaxb.core.internal.resource.java; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.jaxb.core.resource.java.JAXB; + +/** + * javax.xml.bind.annotation.adapters.XmlJavaTypeAdaptersAnnotation + */ +public final class XmlJavaTypeAdaptersAnnotationDefinition + implements AnnotationDefinition +{ + // singleton + private static final AnnotationDefinition INSTANCE = new XmlJavaTypeAdaptersAnnotationDefinition(); + + /** + * Return the singleton. + */ + public static AnnotationDefinition instance() { + return INSTANCE; + } + + /** + * Ensure single instance. + */ + private XmlJavaTypeAdaptersAnnotationDefinition() { + super(); + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); + } + + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + throw new UnsupportedOperationException(); + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); + } + + public String getAnnotationName() { + return JAXB.XML_JAVA_TYPE_ADAPTERS; + } + +} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypeAnnotationDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypeAnnotationDefinition.java index 2e4d3be3f6..6fb9f98ae2 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypeAnnotationDefinition.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypeAnnotationDefinition.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,6 @@ package org.eclipse.jpt.jaxb.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; @@ -55,7 +54,7 @@ public class XmlSchemaTypeAnnotationDefinition return SourceXmlSchemaTypeAnnotation.buildSourceXmlSchemaTypeAnnotation(parent, annotatedElement, index); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { throw new UnsupportedOperationException(); } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypesAnnotationDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypesAnnotationDefinition.java new file mode 100644 index 0000000000..86e59a162a --- /dev/null +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlSchemaTypesAnnotationDefinition.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * 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.jaxb.core.internal.resource.java; + +import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.jaxb.core.resource.java.JAXB; + +/** + * javax.xml.bind.annotation.adapters.XmlJavaTypeAdaptersAnnotation + */ +public final class XmlSchemaTypesAnnotationDefinition + implements AnnotationDefinition +{ + // singleton + private static final AnnotationDefinition INSTANCE = new XmlSchemaTypesAnnotationDefinition(); + + /** + * Return the singleton. + */ + public static AnnotationDefinition instance() { + return INSTANCE; + } + + /** + * Ensure single instance. + */ + private XmlSchemaTypesAnnotationDefinition() { + super(); + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); + } + + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + throw new UnsupportedOperationException(); + } + + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); + } + + public String getAnnotationName() { + return JAXB.XML_SCHEMA_TYPES; + } + +} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/context/java/GenericJavaPackageInfoTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/context/java/GenericJavaPackageInfoTests.java index 84b505a456..140e5a70c8 100644 --- a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/context/java/GenericJavaPackageInfoTests.java +++ b/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/context/java/GenericJavaPackageInfoTests.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. @@ -16,11 +16,13 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.NormalAnnotation; import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.common.core.utility.jdt.ModifiedDeclaration; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.SubListIterableWrapper; import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo; import org.eclipse.jpt.jaxb.core.context.XmlAccessOrder; import org.eclipse.jpt.jaxb.core.context.XmlAccessType; @@ -266,9 +268,8 @@ public class GenericJavaPackageInfoTests extends JaxbContextModelTestCase assertFalse(xmlSchemaTypes.hasNext()); } - @SuppressWarnings("unchecked") protected Iterator getSchemaTypeAnnotations(JavaResourcePackage resourcePackage) { - return (Iterator) resourcePackage.getAnnotations(JAXB.XML_SCHEMA_TYPE).iterator(); + return new SubListIterableWrapper(resourcePackage.getAnnotations(JAXB.XML_SCHEMA_TYPE)).iterator(); } public void testAddXmlSchemaType2() throws Exception { @@ -599,9 +600,8 @@ public class GenericJavaPackageInfoTests extends JaxbContextModelTestCase assertFalse(xmlJavaTypeAdapters.hasNext()); } - @SuppressWarnings("unchecked") protected Iterator getXmlJavaTypeAdapterAnnotations(JavaResourcePackage resourcePackage) { - return (Iterator) resourcePackage.getAnnotations(JAXB.XML_JAVA_TYPE_ADAPTER).iterator(); + return new SubListIterableWrapper(resourcePackage.getAnnotations(JAXB.XML_JAVA_TYPE_ADAPTER)).iterator(); } public void testAddXmlJavaTypeAdapter2() throws Exception { diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JavaResourceModelTestCase.java b/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JavaResourceModelTestCase.java deleted file mode 100644 index 657f1cc58b..0000000000 --- a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JavaResourceModelTestCase.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * 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 - ******************************************************************************/ -package org.eclipse.jpt.jaxb.core.tests.internal.resource.java; - -import org.eclipse.jdt.core.ElementChangedEvent; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IElementChangedListener; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaElementDelta; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jpt.common.core.AnnotationProvider; -import org.eclipse.jpt.common.core.internal.resource.java.source.SourcePackageInfoCompilationUnit; -import org.eclipse.jpt.common.core.internal.resource.java.source.SourceTypeCompilationUnit; -import org.eclipse.jpt.common.core.internal.utility.jdt.NullAnnotationEditFormatter; -import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; -import org.eclipse.jpt.common.core.resource.java.JavaResourceCompilationUnit; -import org.eclipse.jpt.common.core.resource.java.JavaResourceEnum; -import org.eclipse.jpt.common.core.resource.java.JavaResourceEnumConstant; -import org.eclipse.jpt.common.core.resource.java.JavaResourceField; -import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; -import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; -import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageInfoCompilationUnit; -import org.eclipse.jpt.common.core.resource.java.JavaResourceType; -import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; -import org.eclipse.jpt.common.core.tests.internal.utility.jdt.AnnotationTestCase; -import org.eclipse.jpt.common.utility.CommandExecutor; -import org.eclipse.jpt.common.utility.internal.BitTools; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.ReflectionTools; -import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.jaxb.core.internal.GenericAnnotationProvider; - -@SuppressWarnings("nls") -public abstract class JavaResourceModelTestCase - extends AnnotationTestCase { - - private JavaElementChangeListener javaElementChangeListener; - protected JavaResourceCompilationUnit javaResourceCompilationUnit; - - - public JavaResourceModelTestCase(String name) { - super(name); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - this.javaElementChangeListener = new JavaElementChangeListener(); - JavaCore.addElementChangedListener(this.javaElementChangeListener); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - JavaCore.removeElementChangedListener(this.javaElementChangeListener); - this.javaElementChangeListener = null; - } - - private class JavaElementChangeListener - implements IElementChangedListener { - - JavaElementChangeListener() { - super(); - } - - public void elementChanged(ElementChangedEvent event) { - JavaResourceModelTestCase.this.javaElementChanged(event); - } - - @Override - public String toString() { - return StringTools.buildToStringFor(this); - } - } - - void javaElementChanged(ElementChangedEvent event) { - if (this.javaResourceCompilationUnit == null) { - return; - } - this.syncWithJavaDelta(event.getDelta()); - } - - /** - * NB: this is copied from GenericJpaProject, so it might need to be - * kept in synch with that code if it changes... yech... - */ - protected void syncWithJavaDelta(IJavaElementDelta delta) { - switch (delta.getElement().getElementType()) { - case IJavaElement.JAVA_MODEL : - case IJavaElement.JAVA_PROJECT : - case IJavaElement.PACKAGE_FRAGMENT_ROOT : - case IJavaElement.PACKAGE_FRAGMENT : - this.syncWithJavaDeltaChildren(delta); - break; - case IJavaElement.COMPILATION_UNIT : - this.javaCompilationUnitChanged(delta); - break; - default : - break; // ignore the elements inside a compilation unit - } - } - - protected void syncWithJavaDeltaChildren(IJavaElementDelta delta) { - for (IJavaElementDelta child : delta.getAffectedChildren()) { - this.syncWithJavaDelta(child); // recurse - } - } - - protected void javaCompilationUnitChanged(IJavaElementDelta delta) { - if (this.deltaIsRelevant(delta)) { - this.javaResourceCompilationUnit.synchronizeWithJavaSource(); - } - } - - protected boolean deltaIsRelevant(IJavaElementDelta delta) { - if (BitTools.onlyFlagIsSet(delta.getFlags(), IJavaElementDelta.F_PRIMARY_WORKING_COPY)) { - return false; - } - return delta.getKind() == IJavaElementDelta.CHANGED; - } - - protected ICompilationUnit createAnnotationAndMembers(String packageName, String annotationName, String annotationBody) throws Exception { - return this.javaProject.createCompilationUnit(packageName, annotationName + ".java", "public @interface " + annotationName + " { " + annotationBody + " }"); - } - - protected ICompilationUnit createEnumAndMembers(String packageName, String enumName, String enumBody) throws Exception { - return this.javaProject.createCompilationUnit(packageName, enumName + ".java", "public enum " + enumName + " { " + enumBody + " }"); - } - - protected JavaResourcePackage buildJavaResourcePackage(ICompilationUnit cu) { - JavaResourcePackageInfoCompilationUnit pkgCu = - new SourcePackageInfoCompilationUnit( - cu, - this.buildAnnotationProvider(), - NullAnnotationEditFormatter.instance(), - CommandExecutor.Default.instance()); - this.javaResourceCompilationUnit = pkgCu; - return pkgCu.getPackage(); - } - - protected JavaResourceType buildJavaResourceType(ICompilationUnit cu) { - return (JavaResourceType) this.buildJavaResourceType_(cu); - } - - protected JavaResourceEnum buildJavaResourceEnum(ICompilationUnit cu) { - return (JavaResourceEnum) this.buildJavaResourceType_(cu); - } - - private JavaResourceAbstractType buildJavaResourceType_(ICompilationUnit cu) { - this.javaResourceCompilationUnit = this.buildJavaResourceCompilationUnit(cu); - this.javaResourceCompilationUnit.resolveTypes(); - return this.hackJavaResourceType(); - } - - protected JavaResourceField getField(JavaResourceType type, int index) { - return CollectionTools.get(type.getFields(), index); - } - - protected JavaResourceMethod getMethod(JavaResourceType type, int index) { - return CollectionTools.get(type.getMethods(), index); - } - - protected JavaResourceEnumConstant getEnumConstant(JavaResourceEnum resourceEnum, int index) { - return CollectionTools.get(resourceEnum.getEnumConstants(), index); - } - - protected JavaResourceAbstractType hackJavaResourceType() { - return (JavaResourceAbstractType) ReflectionTools.getFieldValue(this.javaResourceCompilationUnit, "type"); - } - - protected JavaResourceCompilationUnit buildJavaResourceCompilationUnit(ICompilationUnit cu) { - if (this.javaResourceCompilationUnit != null) { - throw new IllegalStateException(); - } - return new SourceTypeCompilationUnit( - cu, - this.buildAnnotationProvider(), - NullAnnotationEditFormatter.instance(), - CommandExecutor.Default.instance()); - } - - protected AnnotationProvider buildAnnotationProvider() { - return new GenericAnnotationProvider(this.annotationDefinitions(), this.nestableAnnotationDefinitions()); - } - - protected abstract AnnotationDefinition[] annotationDefinitions(); - - protected abstract NestableAnnotationDefinition[] nestableAnnotationDefinitions(); -} diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JaxbJavaResourceModelTestCase.java b/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JaxbJavaResourceModelTestCase.java index 4781380927..b75e22c6e5 100644 --- a/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JaxbJavaResourceModelTestCase.java +++ b/jaxb/tests/org.eclipse.jpt.jaxb.core.tests/src/org/eclipse/jpt/jaxb/core/tests/internal/resource/java/JaxbJavaResourceModelTestCase.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,6 +11,7 @@ package org.eclipse.jpt.jaxb.core.tests.internal.resource.java; import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; +import org.eclipse.jpt.common.core.tests.internal.resource.java.JavaResourceModelTestCase; import org.eclipse.jpt.jaxb.core.internal.jaxb21.GenericJaxb_2_1_PlatformDefinition; public class JaxbJavaResourceModelTestCase diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTestCase.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTestCase.java index 681dd41534..2ab7e242b7 100644 --- a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTestCase.java +++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/resource/java/ELJaxbJavaResourceModelTestCase.java @@ -11,7 +11,7 @@ package org.eclipse.jpt.jaxb.eclipselink.core.tests.internal.resource.java; import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; -import org.eclipse.jpt.jaxb.core.tests.internal.resource.java.JavaResourceModelTestCase; +import org.eclipse.jpt.common.core.tests.internal.resource.java.JavaResourceModelTestCase; import org.eclipse.jpt.jaxb.eclipselink.core.internal.v2_1.ELJaxb_2_1_PlatformDefinition; import org.eclipse.jpt.jaxb.eclipselink.core.tests.JptJaxbEclipseLinkCoreTestsPlugin; 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 1cae819255..84305b99db 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 @@ -95,6 +95,7 @@ ORDER_COLUMN_AND_ORDER_BY_BOTH_SPECIFIED=Attribute \"{0}\" specifies both OrderC PERSISTENT_ATTRIBUTE_ELEMENT_COLLECTION_INVALID_VALUE_TYPE=The element collection value for a Temporal type must be of type java.util.Date, java.util.Calendar or java.util.GregorianCalendar PERSISTENT_ATTRIBUTE_FINAL_FIELD=The java field for attribute \"{0}\" is final PERSISTENT_ATTRIBUTE_FINAL_GETTER=The get method for attribute \"{0}\" is final +PERSISTENT_ATTRIBUTE_FINAL_SETTER=The set method for attribute \"{0}\" is final PERSISTENT_ATTRIBUTE_INHERITED_ATTRIBUTES_NOT_SUPPORTED=Attribute \"{0}\" is inherited; referring to inherited attributes in the orm.xml may not be supported by all persistence providers PERSISTENT_ATTRIBUTE_INVALID_MAPPING=Attribute \"{0}\" has invalid mapping type in this context PERSISTENT_ATTRIBUTE_INVALID_TEMPORAL_MAPPING_TYPE=The persistent field or property for a Temporal type must be of type java.util.Date, java.util.Calendar or java.util.GregorianCalendar diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationDefinitionProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationDefinitionProvider.java index c49f656fec..0e6a73cbe2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationDefinitionProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationDefinitionProvider.java @@ -9,11 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; + /** - * Provides annotation definitions for types and attributes. - * {@link JpaAnnotationProvider} + * Provides annotation definitions and nestable annotation definitions + * {@link AnnotationProvider} * then uses a collection of these to build annotations. *

* Provisional API: This interface is part of an interim API that is still @@ -28,24 +30,13 @@ import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; public interface JpaAnnotationDefinitionProvider { /** - * Return all annotation definitions which can appear on a type - */ - Iterable getTypeAnnotationDefinitions(); - - /** - * Return all annotation definitions which can appear on a type and are used to determine - * whether and how the type is persisted (how it is "mapped"). - * This should be a subset of {@link #getTypeAnnotationDefinitions()}. + * Return all annotation definitions */ - Iterable getTypeMappingAnnotationDefinitions(); - - /** - * Return all annotation definitions which can appear on an attribute - */ - Iterable getAttributeAnnotationDefinitions(); + Iterable getAnnotationDefinitions(); /** - * Return all annotation definitions which can appear on a package. + * Return all nestable annotation definitions */ - Iterable getPackageAnnotationDefinitions(); + Iterable getNestableAnnotationDefinitions(); + } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationProvider.java deleted file mode 100644 index 4802b5d1e9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaAnnotationProvider.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core; - -import java.util.Iterator; -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.utility.jdt.AnnotatedPackage; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePackage; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; - -/** - * This is used to provide type and attribute annotations. - * Also provides list of supported annotation names, check the appropriate list - * before trying to build an annotation with that name. An exception will - * be thrown on an attempt to build an annotation that does not exist. - * - * This interface is not intended to be implemented. Instead implement - * JpaAnnotationDefinitionProvider to extend the list of supported annotation definitions. - * - * @see JpaAnnotationDefinitionProvider - * @version 3.0 - * @since 2.0? - * - * 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 JpaAnnotationProvider -{ - // ********** type annotations ********** - - /** - * Return the names of the annotations that can appear on a type. - */ - Iterator typeAnnotationNames(); - - /** - * Return the names of the annotations that can appear on a type and are used to - * determine whether and how the type is persisted (how it is "mapped"). - * This should be a subset of {@link #typeAnnotationNames()}. - */ - Iterator typeMappingAnnotationNames(); - - /** - * Build a type annotation with the specified name. - * Throw an IllegalArgumentException if the specified name is unsupported. - * @see #typeAnnotationNames() - */ - Annotation buildTypeAnnotation( - JavaResourcePersistentType parent, Type type, String annotationName); - - /** - * Build a type annotation for the specified JDT annotation. - * Throw an IllegalArgumentException if the specified annotation is unsupported. - * @see #typeAnnotationNames() - */ - Annotation buildTypeAnnotation( - JavaResourcePersistentType parent, IAnnotation jdtAnnotation); - - /** - * Build a null type annotation with the specified name. - * Throw an IllegalArgumentException if the specified annotation is unsupported. - * @see #typeAnnotationNames() - */ - Annotation buildNullTypeAnnotation( - JavaResourcePersistentType parent, String annotationName); - - - // ********** attribute annotations ********** - - /** - * Return the names of the annotations that can appear on an attribute. - */ - Iterator attributeAnnotationNames(); - - /** - * Build an attribute annotation with the specified name. - * Throw an IllegalArgumentException if the specified name is unsupported. - * @see #attributeAnnotationNames() - */ - Annotation buildAttributeAnnotation( - JavaResourcePersistentAttribute parent, Attribute attribute, String annotationName); - - /** - * Build an attribute annotation for the specified JDT annotation. - * Throw an IllegalArgumentException if the specified annotation is unsupported. - * @see #attributeAnnotationNames() - */ - Annotation buildAttributeAnnotation( - JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation); - - /** - * Build a null attribute annotation with the specified name. - * Throw an IllegalArgumentException if the specified annotation is unsupported. - * @see #attributeAnnotationNames() - */ - Annotation buildNullAttributeAnnotation( - JavaResourcePersistentAttribute parent, String annotationName); - - - // ********** package annotations ********** - - /** - * Return the names of the annotations that can appear on a package. - */ - Iterator packageAnnotationNames(); - - /** - * Build an package annotation with the specified name. - * Throw an IllegalArgumentException if the specified name is unsupported. - * @see #packageAnnotationNames() - */ - Annotation buildPackageAnnotation( - JavaResourcePackage parent, AnnotatedPackage pack, String annotationName); - - /** - * Build a package annotation for the specified JDT annotation. - * Throw an IllegalArgumentException if the specified name is unsupported. - * @see #packageAnnotationNames() - */ - Annotation buildPackageAnnotation( - JavaResourcePackage parent, IAnnotation jdtAnnotation); - - /** - * Build a null package annotation with the specified name. - * Throw an IllegalArgumentException if the specified annotation is unsupported. - * @see #packageAnnotationNames() - */ - Annotation buildNullPackageAnnotation( - JavaResourcePackage parent, String annotationName); -} 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 47577aa1b0..dafa2c44ae 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,6 +12,9 @@ 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.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.JpaRootContextNode; import org.eclipse.jpt.jpa.core.context.MappingFile; import org.eclipse.jpt.jpa.core.context.PersistentType; @@ -21,6 +24,7 @@ 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.Accessor; 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.JavaAttributeMapping; @@ -86,8 +90,6 @@ import org.eclipse.jpt.jpa.core.resource.java.EmbeddableAnnotation; import org.eclipse.jpt.jpa.core.resource.java.EntityAnnotation; import org.eclipse.jpt.jpa.core.resource.java.EnumeratedAnnotation; import org.eclipse.jpt.jpa.core.resource.java.GeneratedValueAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; import org.eclipse.jpt.jpa.core.resource.java.LobAnnotation; import org.eclipse.jpt.jpa.core.resource.java.MappedSuperclassAnnotation; @@ -176,7 +178,7 @@ public interface JpaFactory // ********** Java Context Model ********** - JavaPersistentType buildJavaPersistentType(PersistentType.Owner owner, JavaResourcePersistentType jrpt); + JavaPersistentType buildJavaPersistentType(PersistentType.Owner owner, JavaResourceType jrt); JavaEntity buildJavaEntity(JavaPersistentType parent, EntityAnnotation entityAnnotation); @@ -185,8 +187,12 @@ public interface JpaFactory JavaEmbeddable buildJavaEmbeddable(JavaPersistentType parent, EmbeddableAnnotation embeddableAnnotation); JavaTypeMapping buildJavaNullTypeMapping(JavaPersistentType parent); + + JavaPersistentAttribute buildJavaPersistentAttribute(PersistentType parent, Accessor accessor); + + JavaPersistentAttribute buildJavaPersistentField(PersistentType parent, JavaResourceField resourceField); - JavaPersistentAttribute buildJavaPersistentAttribute(PersistentType parent, JavaResourcePersistentAttribute jrpa); + JavaPersistentAttribute buildJavaPersistentProperty(PersistentType parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter); JavaBasicMapping buildJavaBasicMapping(JavaPersistentAttribute parent); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaPlatform.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaPlatform.java index 31e90ffb19..6eae60b1d3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaPlatform.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaPlatform.java @@ -11,6 +11,7 @@ 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.AnnotationProvider; import org.eclipse.jpt.common.core.JptResourceType; import org.eclipse.jpt.common.core.utility.jdt.AnnotationEditFormatter; import org.eclipse.jpt.jpa.core.context.java.DefaultJavaAttributeMappingDefinition; @@ -88,7 +89,7 @@ public interface JpaPlatform * Return an annotation provider responsible for determining what Java * annotations are supported and constructing java resource model objects. */ - JpaAnnotationProvider getAnnotationProvider(); + AnnotationProvider getAnnotationProvider(); /** * Return a formatter that can clean up the Java annotations added to source diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaProject.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaProject.java index 642b10598d..31fa055d62 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaProject.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/JpaProject.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,15 +17,15 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceCompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackage; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; +import org.eclipse.jpt.common.core.resource.java.JavaResourceTypeCache; import org.eclipse.jpt.common.utility.CommandExecutor; import org.eclipse.jpt.common.utility.synchronizers.CallbackSynchronizer; import org.eclipse.jpt.common.utility.synchronizers.Synchronizer; import org.eclipse.jpt.jpa.core.context.JpaRootContextNode; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceCompilationUnit; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePackage; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePackageFragmentRoot; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentTypeCache; import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; import org.eclipse.jpt.jpa.db.Catalog; import org.eclipse.jpt.jpa.db.ConnectionProfile; @@ -140,9 +140,9 @@ public interface JpaProject // ********** external Java resource persistent types ********** /** - * Return the JPA project's external Java resource persistent type cache. + * Return the JPA project's external Java resource type cache. */ - JavaResourcePersistentTypeCache getExternalJavaResourcePersistentTypeCache(); + JavaResourceTypeCache getExternalJavaResourceTypeCache(); // ********** XML resources ********** @@ -191,11 +191,19 @@ public interface JpaProject */ Iterable getMappedJavaSourceClassNames(); + Iterable getTypeMappingAnnotations(); + /** - * Return the Java resource persistent type for the specified type. + * Return the Java resource type for the specified type. * Return null if invalid or absent. */ - JavaResourcePersistentType getJavaResourcePersistentType(String typeName); + JavaResourceAbstractType getJavaResourceType(String typeName); + + /** + * Return the {@link JavaResourceAbstractType} with the specified type name and kind. + * Return null if invalid or absent or if the kind does not match. + */ + JavaResourceAbstractType getJavaResourceType(String typeName, JavaResourceAbstractType.Kind kind); /** * Return the Java resource package for the specified package. 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 d65ffc57bf..3c14ddb3c5 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Association override container. @@ -41,12 +41,12 @@ public interface AssociationOverrideContainer ReadOnlyRelationship resolveOverriddenRelationship(String attributeName); // covariant overrides - ListIterator overrides(); + ListIterable getOverrides(); ReadOnlyAssociationOverride getOverrideNamed(String name); - ListIterator specifiedOverrides(); + ListIterable getSpecifiedOverrides(); AssociationOverride getSpecifiedOverride(int index); AssociationOverride getSpecifiedOverrideNamed(String name); - ListIterator virtualOverrides(); + ListIterable getVirtualOverrides(); VirtualAssociationOverride convertOverrideToVirtual(Override_ specifiedOverride); AssociationOverride convertOverrideToSpecified(VirtualOverride virtualOverride); 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 e3a51dad74..d45a10d633 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Attribute override container. @@ -36,12 +36,12 @@ public interface AttributeOverrideContainer ReadOnlyColumn resolveOverriddenColumn(String attributeName); // covariant overrides - ListIterator overrides(); + ListIterable getOverrides(); ReadOnlyAttributeOverride getOverrideNamed(String name); - ListIterator specifiedOverrides(); + ListIterable getSpecifiedOverrides(); AttributeOverride getSpecifiedOverride(int index); AttributeOverride getSpecifiedOverrideNamed(String name); - ListIterator virtualOverrides(); + ListIterable getVirtualOverrides(); VirtualAttributeOverride convertOverrideToVirtual(Override_ specifiedOverride); AttributeOverride convertOverrideToSpecified(VirtualOverride virtualOverride); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java index ed494b6929..b376d9e03c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.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,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * entity @@ -82,24 +82,24 @@ public interface Entity /** * Return the secondary tables whether specified or default. */ - ListIterator secondaryTables(); + ListIterable getSecondaryTables(); /** * Return the number of secondary tables, both specified and default. */ - int secondaryTablesSize(); + int getSecondaryTablesSize(); /** * Return a list iterator of the specified secondary tables. * This will not be null. */ - ListIterator specifiedSecondaryTables(); + ListIterable getSpecifiedSecondaryTables(); String SPECIFIED_SECONDARY_TABLES_LIST = "specifiedSecondaryTables"; //$NON-NLS-1$ /** * Return the number of specified secondary tables. */ - int specifiedSecondaryTablesSize(); + int getSpecifiedSecondaryTablesSize(); /** * Add a specified secondary table to the entity return the object @@ -211,14 +211,14 @@ public interface Entity // ********** primary key join columns ********** - ListIterator primaryKeyJoinColumns(); + ListIterable getPrimaryKeyJoinColumns(); - int primaryKeyJoinColumnsSize(); + int getPrimaryKeyJoinColumnsSize(); - ListIterator specifiedPrimaryKeyJoinColumns(); + ListIterable getSpecifiedPrimaryKeyJoinColumns(); String SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST = "specifiedPrimaryKeyJoinColumns"; //$NON-NLS-1$ - int specifiedPrimaryKeyJoinColumnsSize(); + int getSpecifiedPrimaryKeyJoinColumnsSize(); PrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumnRelationshipStrategy.java index a6338dfce5..e796fa3791 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumnRelationshipStrategy.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/JoinColumnRelationshipStrategy.java @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Join column relationship strategy. @@ -37,12 +37,12 @@ public interface JoinColumnRelationshipStrategy // ********** join columns ********** - ListIterator joinColumns(); + ListIterable getJoinColumns(); // ********** specified join columns ********** - ListIterator specifiedJoinColumns(); + ListIterable getSpecifiedJoinColumns(); JoinColumn getSpecifiedJoinColumn(int index); /** 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 1fbeba8c73..f5169be42b 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Used by many-to-many and one-to-many mappings. @@ -41,9 +41,9 @@ public interface JoinTable */ void convertDefaultInverseJoinColumnToSpecified(); - ListIterator inverseJoinColumns(); + ListIterable getInverseJoinColumns(); - ListIterator specifiedInverseJoinColumns(); + ListIterable getSpecifiedInverseJoinColumns(); JoinColumn getSpecifiedInverseJoinColumn(int index); 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 eb032de7c6..3f582e9b33 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 @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.core.context; import java.util.Iterator; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; 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; @@ -93,13 +93,12 @@ public interface OverrideContainer /** * Return the overrides, both specified and virtual. */ - // TODO bjv change to an iterable - ListIterator overrides(); + ListIterable getOverrides(); /** * Return the number of overrides, both specified and virtual. */ - int overridesSize(); + int getOverridesSize(); /** * Return the override with the specified name, @@ -121,13 +120,13 @@ public interface OverrideContainer * Specified overrides can be remvoed via * {@link Override_#convertToVirtual()}. */ - ListIterator specifiedOverrides(); + ListIterable getSpecifiedOverrides(); String SPECIFIED_OVERRIDES_LIST = "specifiedOverrides"; //$NON-NLS-1$ /** * Return the number of specified overrides. */ - int specifiedOverridesSize(); + int getSpecifiedOverridesSize(); /** * Return the specified override at the specified index. @@ -157,14 +156,14 @@ public interface OverrideContainer /** * Return the virtual overrides (i.e. those not specified). */ - // TODO change to a collection? - ListIterator virtualOverrides(); + // TODO change to a Iterable instead of ListIterable? + ListIterable getVirtualOverrides(); String VIRTUAL_OVERRIDES_LIST = "virtualOverrides"; //$NON-NLS-1$ /** * Return the number of virtual overrides. */ - int virtualOverridesSize(); + int getVirtualOverridesSize(); /** * Convert the specified virtual override to specified. diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PersistentType.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PersistentType.java index 56d56f6943..adeb788f4c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PersistentType.java @@ -11,9 +11,9 @@ package org.eclipse.jpt.jpa.core.context; import java.util.Iterator; import java.util.List; -import java.util.ListIterator; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -72,29 +72,29 @@ public interface PersistentType /** * Return the persistent type's persistent attributes. */ - ListIterator attributes(); + ListIterable getAttributes(); /** * Return the number of the persistent type's persistent attributes. */ - int attributesSize(); + int getAttributesSize(); /** * Return the names of the persistent type's persistent attributes. */ - Iterator attributeNames(); + Iterable getAttributeNames(); /** * Return all the persistent attributes in the persistent type's * inheritance hierarchy. */ - Iterator allAttributes(); + Iterable getAllAttributes(); /** * Return the names of all the persistent attributes in the * persistent type's hierarchy. */ - Iterator allAttributeNames(); + Iterable getAllAttributeNames(); /** * Return the persistent attribute with the specified name, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PrimaryKeyJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PrimaryKeyJoinColumnRelationshipStrategy.java index 0fe8328ec8..3d450d4dfd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PrimaryKeyJoinColumnRelationshipStrategy.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/PrimaryKeyJoinColumnRelationshipStrategy.java @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Primary key join column relationship strategy. @@ -37,16 +37,16 @@ public interface PrimaryKeyJoinColumnRelationshipStrategy /** * Return the strategy's primary key join columns. */ - ListIterator primaryKeyJoinColumns(); + ListIterable getPrimaryKeyJoinColumns(); /** * Return the number of primary key join columns. */ - int primaryKeyJoinColumnsSize(); + int getPrimaryKeyJoinColumnsSize(); /** * Return whether the relationship has any primary key join columns. - * (Equivalent to {@link #primaryKeyJoinColumnsSize()} == 0.) + * (Equivalent to {@link #getPrimaryKeyJoinColumnsSize()} == 0.) */ boolean hasPrimaryKeyJoinColumns(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Query.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Query.java index 80633bcb55..c6829d95c3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Query.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Query.java @@ -63,7 +63,7 @@ public interface Query /** * Return the query's hints. */ - ListIterable getHints(); + ListIterable getHints(); /** * Return the number of hints. diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/QueryContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/QueryContainer.java index 681b93fa9c..46ff9ddbc5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/QueryContainer.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/QueryContainer.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,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Container for named queries and/or named native queries. @@ -33,14 +33,14 @@ public interface QueryContainer /** * Return the container's named queries. */ - ListIterator namedQueries(); + ListIterable getNamedQueries(); String NAMED_QUERIES_LIST = "namedQueries"; //$NON-NLS-1$ /** * Return the number of named queries. */ - int namedQueriesSize(); + int getNamedQueriesSize(); /** * Add a new named query to the container and return it. @@ -74,14 +74,14 @@ public interface QueryContainer /** * Return the container's named native queries. */ - ListIterator namedNativeQueries(); + ListIterable getNamedNativeQueries(); String NAMED_NATIVE_QUERIES_LIST = "namedNativeQueries"; //$NON-NLS-1$ /** * Return the number of named native queries. */ - int namedNativeQueriesSize(); + int getNamedNativeQueriesSize(); /** * Add a new named native query to the container and return it. 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 d880764b28..b3e0a990aa 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 @@ -74,6 +74,6 @@ public interface ReadOnlyBaseJoinColumn * Return the number of join columns in the owner's list the join * column belongs to. */ - int joinColumnsSize(); + int getJoinColumnsSize(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumnRelationshipStrategy.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumnRelationshipStrategy.java index 287e821fab..c29e1f8e7f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumnRelationshipStrategy.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinColumnRelationshipStrategy.java @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** @@ -56,12 +56,12 @@ public interface ReadOnlyJoinColumnRelationshipStrategy /** * Return the join columns whether specified or default. */ - ListIterator joinColumns(); + ListIterable getJoinColumns(); /** * Return the number of join columns, whether specified and default. */ - int joinColumnsSize(); + int getJoinColumnsSize(); // ********** specified join columns ********** @@ -74,16 +74,16 @@ public interface ReadOnlyJoinColumnRelationshipStrategy /** * Return the specified join columns. */ - ListIterator specifiedJoinColumns(); + ListIterable getSpecifiedJoinColumns(); /** * Return the number of specified join columns. */ - int specifiedJoinColumnsSize(); + int getSpecifiedJoinColumnsSize(); /** * Return whether the strategy has any specified join columns. - * (Equivalent to {@link #specifiedJoinColumnsSize()} != 0.) + * (Equivalent to {@link #getSpecifiedJoinColumnsSize()} != 0.) */ boolean hasSpecifiedJoinColumns(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTable.java index 838d16c904..b356f98499 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyJoinTable.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,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Used by association overrides. @@ -33,23 +33,23 @@ public interface ReadOnlyJoinTable /** * Return the join table's inverse join columns, whether specified or default. */ - ListIterator inverseJoinColumns(); + ListIterable getInverseJoinColumns(); /** * Return the number of inverse join columns, whether specified or default. */ - int inverseJoinColumnsSize(); + int getInverseJoinColumnsSize(); /** * Return the specified inverse join columns. */ - ListIterator specifiedInverseJoinColumns(); + ListIterable getSpecifiedInverseJoinColumns(); String SPECIFIED_INVERSE_JOIN_COLUMNS_LIST = "specifiedInverseJoinColumns"; //$NON-NLS-1$ /** * Return the number of specified inverse join columns. */ - int specifiedInverseJoinColumnsSize(); + int getSpecifiedInverseJoinColumnsSize(); /** * Return whether the join table has specified inverse join columns. diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyReferenceTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyReferenceTable.java index ed2fba7080..23e0917bb2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyReferenceTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlyReferenceTable.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,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Read-only reference table (i.e. a table that joins with one other table, @@ -35,23 +35,23 @@ public interface ReadOnlyReferenceTable /** * Return the reference table's join columns, whether specified or default. */ - ListIterator joinColumns(); + ListIterable getJoinColumns(); /** * Return the number of join columns, whether specified or default. */ - int joinColumnsSize(); + int getJoinColumnsSize(); /** * Return the reference table's specified join columns. */ - ListIterator specifiedJoinColumns(); + ListIterable getSpecifiedJoinColumns(); String SPECIFIED_JOIN_COLUMNS_LIST = "specifiedJoinColumns"; //$NON-NLS-1$ /** * Return the number of specified join columns. */ - int specifiedJoinColumnsSize(); + int getSpecifiedJoinColumnsSize(); /** * Return whether the reference table has specified join columns. diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlySecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlySecondaryTable.java index 90cd0ada13..b491f4ac37 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlySecondaryTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/ReadOnlySecondaryTable.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,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Read-only entity secondary table @@ -39,13 +39,13 @@ public interface ReadOnlySecondaryTable * Return the secondary table's primary key join columns, * whether specified or default. */ - ListIterator primaryKeyJoinColumns(); + ListIterable getPrimaryKeyJoinColumns(); /** * Return the number of primary key join columns, * whether specified or default. */ - int primaryKeyJoinColumnsSize(); + int getPrimaryKeyJoinColumnsSize(); // ********** specified primary key join columns ********** @@ -53,13 +53,13 @@ public interface ReadOnlySecondaryTable /** * Return the specified primary key join columns. */ - ListIterator specifiedPrimaryKeyJoinColumns(); + ListIterable getSpecifiedPrimaryKeyJoinColumns(); String SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST = "specifiedPrimaryKeyJoinColumns"; //$NON-NLS-1$ /** * Return the number of specified primary key join columns. */ - int specifiedPrimaryKeyJoinColumnsSize(); + int getSpecifiedPrimaryKeyJoinColumnsSize(); // ********** default primary key join columns ********** 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 6820ddbdd0..43a793961a 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; 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; @@ -101,9 +101,9 @@ public interface ReadOnlyTable // ********** unique constraints ********** - ListIterator uniqueConstraints(); + ListIterable getUniqueConstraints(); String UNIQUE_CONSTRAINTS_LIST = "uniqueConstraints"; //$NON-NLS-1$ - int uniqueConstraintsSize(); + int getUniqueConstraintsSize(); ReadOnlyUniqueConstraint getUniqueConstraint(int index); 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 fa5b2f781b..ebda45d015 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * Reference table (i.e. a table that joins with one other table, @@ -36,9 +36,9 @@ public interface ReferenceTable */ void convertDefaultJoinColumnToSpecified(); - ListIterator joinColumns(); + ListIterable getJoinColumns(); - ListIterator specifiedJoinColumns(); + ListIterable getSpecifiedJoinColumns(); JoinColumn getSpecifiedJoinColumn(int index); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/SecondaryTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/SecondaryTable.java index bdcdac8846..9c91492b04 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/SecondaryTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/SecondaryTable.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,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** * entity secondary table @@ -26,8 +26,8 @@ import java.util.ListIterator; public interface SecondaryTable extends Table, ReadOnlySecondaryTable { - ListIterator primaryKeyJoinColumns(); - ListIterator specifiedPrimaryKeyJoinColumns(); + ListIterable getPrimaryKeyJoinColumns(); + ListIterable getSpecifiedPrimaryKeyJoinColumns(); PrimaryKeyJoinColumn getDefaultPrimaryKeyJoinColumn(); /** 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 4561781a39..f25f804419 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 @@ -9,7 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.context; -import java.util.ListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; /** *

*/ protected AccessType buildDefaultAccess() { - AccessType accessType = AccessType.fromJavaResourceModel(JavaResourcePersistentType.Tools.buildAccess(this.resourcePersistentType)); + AccessType accessType = buildAccess(this.resourceType); if (accessType != null) { return accessType; } @@ -286,7 +291,6 @@ public abstract class AbstractJavaPersistentType return AccessType.FIELD; } - // ********** mapping ********** public JavaTypeMapping getMapping() { @@ -306,11 +310,11 @@ public abstract class AbstractJavaPersistentType protected JavaTypeMapping buildMapping(String key) { for (JavaTypeMappingDefinition definition : this.getMappingDefinitions()) { if (Tools.valuesAreEqual(definition.getKey(), key)) { - Annotation annotation = this.resourcePersistentType.setPrimaryAnnotation(definition.getAnnotationName(), definition.getSupportingAnnotationNames()); + Annotation annotation = this.resourceType.setPrimaryAnnotation(definition.getAnnotationName(), definition.getSupportingAnnotationNames()); return definition.buildMapping(this, annotation, this.getJpaFactory()); } } - this.resourcePersistentType.setPrimaryAnnotation(null, EmptyIterable.instance()); + this.resourceType.setPrimaryAnnotation(null, EmptyIterable.instance()); return this.buildNullMapping(); } @@ -326,7 +330,7 @@ public abstract class AbstractJavaPersistentType protected JavaTypeMapping buildMapping() { for (JavaTypeMappingDefinition definition : this.getMappingDefinitions()) { - Annotation annotation = this.resourcePersistentType.getAnnotation(definition.getAnnotationName()); + Annotation annotation = this.resourceType.getAnnotation(definition.getAnnotationName()); if (annotation != null) { return definition.buildMapping(this, annotation, this.getJpaFactory()); } @@ -339,7 +343,7 @@ public abstract class AbstractJavaPersistentType Annotation annotation = null; for (Iterator stream = this.mappingDefinitions(); stream.hasNext(); ) { definition = stream.next(); - annotation = this.resourcePersistentType.getAnnotation(definition.getAnnotationName()); + annotation = this.resourceType.getAnnotation(definition.getAnnotationName()); if (annotation != null) { break; } @@ -377,23 +381,15 @@ public abstract class AbstractJavaPersistentType // ********** attributes ********** - public ListIterator attributes() { - return this.getAttributes().iterator(); - } - - protected ListIterable getAttributes() { + public ListIterable getAttributes() { return new LiveCloneListIterable(this.attributes); } - public int attributesSize() { + public int getAttributesSize() { return this.attributes.size(); } - public Iterator attributeNames() { - return this.getAttributeNames().iterator(); - } - - protected Iterable getAttributeNames() { + public Iterable getAttributeNames() { return this.convertToNames(this.getAttributes()); } @@ -402,35 +398,27 @@ public abstract class AbstractJavaPersistentType return stream.hasNext() ? stream.next() : null; } - public JavaPersistentAttribute getAttributeFor(JavaResourcePersistentAttribute javaResourceAttribute) { + public JavaPersistentAttribute getAttributeFor(JavaResourceAttribute javaResourceAttribute) { for (JavaPersistentAttribute javaAttribute : this.getAttributes()) { - if (javaAttribute.getResourcePersistentAttribute() == javaResourceAttribute) { + if (javaAttribute.getResourceAttribute() == javaResourceAttribute) { return javaAttribute; } } return null; } - public Iterator allAttributes() { - return this.getAllAttributes().iterator(); - } - - protected Iterable getAllAttributes() { + public Iterable getAllAttributes() { return new CompositeIterable( new TransformationIterable>(this.getInheritanceHierarchy()) { @Override protected Iterable transform(PersistentType pt) { - return new SnapshotCloneIterable(pt.attributes()); + return new SuperListIterableWrapper(pt.getAttributes()); } } ); } - public Iterator allAttributeNames() { - return this.getAllAttributeNames().iterator(); - } - - protected Iterable getAllAttributeNames() { + public Iterable getAllAttributeNames() { return this.convertToNames(this.getAllAttributes()); } @@ -463,26 +451,100 @@ public abstract class AbstractJavaPersistentType }; } - protected Iterator resourceAttributes() { - if (this.specifiedAccess != null) { - return this.resourcePersistentType.persistableAttributes(AccessType.toJavaResourceModel(this.specifiedAccess)); + protected JavaPersistentAttribute buildField(JavaResourceField resourceField) { + return getJpaFactory().buildJavaPersistentField(this, resourceField); + } + + protected JavaPersistentAttribute buildProperty(JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) { + return getJpaFactory().buildJavaPersistentProperty(this, resourceGetter, resourceSetter); + } + + public boolean hasAnyAnnotatedAttributes() { + return this.resourceType.hasAnyAnnotatedFields() || this.resourceType.hasAnyAnnotatedMethods(); + } + + protected void moveAttribute(int index, JavaPersistentAttribute attribute) { + this.moveItemInList(index, attribute, this.attributes, ATTRIBUTES_LIST); + } + + protected void addAttribute(int index, JavaPersistentAttribute persistentAttribute) { + this.addItemToList(index, persistentAttribute, this.attributes, ATTRIBUTES_LIST); + } + + protected void removeAttribute(JavaPersistentAttribute attribute) { + this.removeItemFromList(attribute, this.attributes, ATTRIBUTES_LIST); + } + + protected void initializeAttributes() { + if (getAccess() == AccessType.FIELD) { + this.intializeFieldAccessAttributes(); + } + else if (getAccess() == AccessType.PROPERTY) { + this.intializePropertyAccessAttributes(); } + } - return (this.getAccess() == AccessType.PROPERTY) ? - this.resourcePersistentType.persistableProperties() : - this.resourcePersistentType.persistableFields(); + /** + * Initialize the attributes for AccessType.FIELD + * 1. all non-transient, non-static fields + * 2. all annotated methods (getters/setters) + */ + private void intializeFieldAccessAttributes() { + this.initializeFieldAttributes(buildNonTransientNonStaticResourceFieldsFilter()); + this.initializeAnnotatedPropertyAttributes(); } - protected Iterable getResourceAttributes() { - return CollectionTools.iterable(this.resourceAttributes()); + private void initializeFieldAttributes(Filter filter) { + for (JavaResourceField resourceField : this.getResourceFields(filter)) { + this.attributes.add(this.buildField(resourceField)); + } } - protected JavaPersistentAttribute buildAttribute(JavaResourcePersistentAttribute resourceAttribute) { - return this.getJpaFactory().buildJavaPersistentAttribute(this, resourceAttribute); + /** + * Initialize the attributes for XmlAccessType.PROPERTY + * 1. all getter/setter javabeans pairs + * 2. all annotated fields + * 3. all annotated methods getters/setters that don't have a matching pair + */ + private void intializePropertyAccessAttributes() { + this.initializeFieldAttributes(ANNOTATED_RESOURCE_FIELDS_FILTER); + + Collection resourceMethods = CollectionTools.collection(this.getResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getResourceMethods(this.buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = getValidSiblingSetMethod(getterMethod, resourceMethods); + if (methodsArePersistableProperties(getterMethod, setterMethod)) { + this.attributes.add(this.buildProperty(getterMethod, setterMethod)); + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.initializeRemainingResourceMethodAttributes(resourceMethods); } - public boolean hasAnyAnnotatedAttributes() { - return this.resourcePersistentType.hasAnyAnnotatedAttributes(); + private void initializeAnnotatedPropertyAttributes() { + Collection resourceMethods = CollectionTools.collection(this.getResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getResourceMethods(buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = getValidSiblingSetMethod(getterMethod, resourceMethods); + if (getterMethod.isAnnotated() || (setterMethod != null && setterMethod.isAnnotated())) { + this.attributes.add(this.buildProperty(getterMethod, setterMethod)); + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.initializeRemainingResourceMethodAttributes(resourceMethods); + } + + private void initializeRemainingResourceMethodAttributes(Collection resourceMethods) { + //iterate through remaining resource methods and search for those that are annotated. + //all getter methods will already be used. + for (JavaResourceMethod resourceMethod : resourceMethods) { + if (resourceMethod.isAnnotated()) { + //annotated setter(or other random method) with no corresponding getter, bring into context model for validation purposes + this.attributes.add(this.buildProperty(null, resourceMethod)); + } + } } /** @@ -491,45 +553,319 @@ public abstract class AbstractJavaPersistentType * which can be controlled in a number of different places.... */ protected void updateAttributes() { - ContextContainerTools.update(this.attributeContainerAdapter); + if (getAccess() == AccessType.FIELD) { + this.syncFieldAccessAttributes(); + } + else if (getAccess() == AccessType.PROPERTY) { + this.syncPropertyAccessAttributes(); + } } - protected void moveAttribute(int index, JavaPersistentAttribute attribute) { - this.moveItemInList(index, attribute, this.attributes, ATTRIBUTES_LIST); + /** + * Initialize the attributes for AccessType.FIELD + * 1. all non-transient, non-static fields + * 2. all annotated methods(getters/setters) + */ + private void syncFieldAccessAttributes() { + HashSet contextAttributes = CollectionTools.set(this.getAttributes()); + + this.syncFieldAttributes(contextAttributes, this.buildNonTransientNonStaticResourceFieldsFilter()); + this.syncAnnotatedPropertyAttributes(contextAttributes); } - protected void addAttribute(int index, JavaResourcePersistentAttribute resourceAttribute) { - this.addItemToList(index, this.buildAttribute(resourceAttribute), this.attributes, ATTRIBUTES_LIST); + /** + * Initialize the attributes for XmlAccessType.PROPERTY + * 1. all getter/setter javabeans pairs + * 2. all annotated fields + * 3. all annotated methods getters/setters that don't have a matching pair + */ + private void syncPropertyAccessAttributes() { + HashSet contextAttributes = CollectionTools.set(this.getAttributes()); + + this.syncFieldAttributes(contextAttributes, ANNOTATED_RESOURCE_FIELDS_FILTER); + + Collection resourceMethods = CollectionTools.collection(this.getResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getResourceMethods(this.buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = getValidSiblingSetMethod(getterMethod, resourceMethods); + if (methodsArePersistableProperties(getterMethod, setterMethod)) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + JavaPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(getterMethod, setterMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addAttribute(getAttributesSize(), this.buildProperty(getterMethod, setterMethod)); + } + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.syncRemainingResourceMethods(contextAttributes, resourceMethods); + } + + private void syncAnnotatedPropertyAttributes(HashSet contextAttributes) { + Collection resourceMethods = CollectionTools.collection(this.getResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getResourceMethods(buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = getValidSiblingSetMethod(getterMethod, resourceMethods); + if (getterMethod.isAnnotated() || (setterMethod != null && setterMethod.isAnnotated())) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + JavaPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(getterMethod, setterMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addAttribute(getAttributesSize(), this.buildProperty(getterMethod, setterMethod)); + } + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.syncRemainingResourceMethods(contextAttributes, resourceMethods); + } + + private void syncFieldAttributes(HashSet contextAttributes, Filter filter) { + for (JavaResourceField resourceField : this.getResourceFields(filter)) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext(); ) { + JavaPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(resourceField)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + // added elements are sync'ed during construction or will be + // updated during the next "update" (which is triggered by + // their addition to the model) + this.addAttribute(this.getAttributesSize(), this.buildField(resourceField)); + } + } } - protected void removeAttribute(JavaPersistentAttribute attribute) { - this.removeItemFromList(attribute, this.attributes, ATTRIBUTES_LIST); + private void syncRemainingResourceMethods(HashSet contextAttributes, Collection resourceMethods) { + //iterate through remaining resource methods and search for those that are annotated. + //all getter methods will already be used. + for (JavaResourceMethod resourceMethod : resourceMethods) { + if (resourceMethod.isAnnotated()) { + boolean match = false; + //annotated setter(or other random method) with no corresponding getter, bring into context model for validation purposes + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + JavaPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(null, resourceMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addAttribute(getAttributesSize(), this.buildProperty(null, resourceMethod)); + } + } + } + + // remove any leftover context attributes + for (JavaPersistentAttribute contextAttribute : contextAttributes) { + this.removeAttribute(contextAttribute); + } + } + + + protected Iterable getResourceFields() { + return this.resourceType.getFields(); + } + + protected Iterable getResourceMethods() { + return this.resourceType.getMethods(); + } + + protected Iterable getResourceFields(Filter filter) { + return new FilteringIterable(getResourceFields(), filter); + } + + protected Iterable getResourceMethods(Filter filter) { + return new FilteringIterable(getResourceMethods(), filter); + } + + public static Filter buildNonTransientNonStaticResourceFieldsFilter() { + return new Filter() { + public boolean accept(JavaResourceField resourceField) { + return memberIsNonTransientNonStatic(resourceField) || resourceField.isAnnotated(); + } + }; + } + + protected static boolean memberIsNonTransientNonStatic(JavaResourceMember resourceMember) { + return !resourceMember.isTransient() && !resourceMember.isStatic(); + } + + public static Filter ANNOTATED_RESOURCE_FIELDS_FILTER = + new Filter() { + public boolean accept(JavaResourceField resourceField) { + return resourceField.isAnnotated(); + } + }; + + protected Filter buildPersistablePropertyGetterMethodsFilter() { + return new Filter() { + public boolean accept(JavaResourceMethod resourceMethod) { + return methodIsPersistablePropertyGetter(resourceMethod, getResourceMethods()); + } + }; } /** - * attribute container adapter + * Return whether the specified method is a "getter" method that + * represents a property that may be "persisted". */ - protected class AttributeContainerAdapter - implements ContextContainerTools.Adapter - { - public Iterable getContextElements() { - return AbstractJavaPersistentType.this.getAttributes(); + public static boolean methodIsPersistablePropertyGetter(JavaResourceMethod resourceMethod, Iterable allMethods) { + if (methodHasInvalidModifiers(resourceMethod)) { + return false; } - public Iterable getResourceElements() { - return AbstractJavaPersistentType.this.getResourceAttributes(); + if (resourceMethod.isConstructor()) { + return false; } - public JavaResourcePersistentAttribute getResourceElement(JavaPersistentAttribute contextElement) { - return contextElement.getResourcePersistentAttribute(); + + String returnTypeName = resourceMethod.getTypeName(); + if (returnTypeName == null) { + return false; // DOM method bindings can have a null name } - public void moveContextElement(int index, JavaPersistentAttribute element) { - AbstractJavaPersistentType.this.moveAttribute(index, element); + if (returnTypeName.equals("void")) { //$NON-NLS-1$ + return false; } - public void addContextElement(int index, JavaResourcePersistentAttribute resourceElement) { - AbstractJavaPersistentType.this.addAttribute(index, resourceElement); + if (methodHasParameters(resourceMethod)) { + return false; } - public void removeContextElement(JavaPersistentAttribute element) { - AbstractJavaPersistentType.this.removeAttribute(element); + + boolean booleanGetter = methodIsBooleanGetter(resourceMethod); + + // if the type has both methods: + // boolean isProperty() + // boolean getProperty() + // then #isProperty() takes precedence and we ignore #getProperty(); + // but only having #getProperty() is OK too + // (see the JavaBeans spec 1.01) + if (booleanGetter && methodHasValidSiblingIsMethod(resourceMethod, allMethods)) { + return false; // since the type also defines #isProperty(), ignore #getProperty() } + return true; + } + + private static boolean methodIsBooleanGetter(JavaResourceMethod resourceMethod) { + String returnTypeName = resourceMethod.getTypeName(); + String name = resourceMethod.getMethodName(); + boolean booleanGetter = false; + if (name.startsWith("is")) { //$NON-NLS-1$ + if (returnTypeName.equals("boolean")) { //$NON-NLS-1$ + } else { + return false; + } + } else if (name.startsWith("get")) { //$NON-NLS-1$ + if (returnTypeName.equals("boolean")) { //$NON-NLS-1$ + booleanGetter = true; + } + } else { + return false; + } + return booleanGetter; + } + + /** + * Return whether the method's modifiers prevent it + * from being a getter or setter for a "persistent" property. + */ + private static boolean methodHasInvalidModifiers(JavaResourceMethod resourceMethod) { + int modifiers = resourceMethod.getModifiers(); + if (Modifier.isStatic(modifiers)) { + return true; + } + return false; + } + + private static boolean methodHasParameters(JavaResourceMethod resourceMethod) { + return resourceMethod.getParametersSize() != 0; + } + + /** + * Return whether the method has a sibling "is" method for the specified + * property and that method is valid for a "persistable" property. + * Pre-condition: the method is a "boolean getter" (e.g. 'public boolean getProperty()'); + * this prevents us from returning true when the method itself is an + * "is" method. + */ + private static boolean methodHasValidSiblingIsMethod(JavaResourceMethod getMethod, Iterable resourceMethods) { + String capitalizedAttributeName = StringTools.capitalize(getMethod.getName()); + for (JavaResourceMethod sibling : resourceMethods) { + if ((sibling.getParametersSize() == 0) + && sibling.getMethodName().equals("is" + capitalizedAttributeName)) { //$NON-NLS-1$ + return methodIsValidSibling(sibling, "boolean"); //$NON-NLS-1$ + } + } + return false; + } + + /** + * Return whether the method has a sibling "set" method + * and that method is valid for a "persistable" property. + */ + public static JavaResourceMethod getValidSiblingSetMethod(JavaResourceMethod getMethod, Iterable resourceMethods) { + String capitalizedAttributeName = StringTools.capitalize(getMethod.getName()); + String parameterTypeErasureName = getMethod.getTypeName(); + for (JavaResourceMethod sibling : resourceMethods) { + ListIterable siblingParmTypeNames = sibling.getParameterTypeNames(); + if ((sibling.getParametersSize() == 1) + && sibling.getMethodName().equals("set" + capitalizedAttributeName) //$NON-NLS-1$ + && siblingParmTypeNames.iterator().next().equals(parameterTypeErasureName)) { + return methodIsValidSibling(sibling, "void") ? sibling : null; //$NON-NLS-1$ + } + } + return null; + } + + /** + * Return whether the specified method is a valid sibling with the + * specified return type. + */ + private static boolean methodIsValidSibling(JavaResourceMethod resourceMethod, String returnTypeName) { + if (resourceMethod == null) { + return false; + } + if (methodHasInvalidModifiers(resourceMethod)) { + return false; + } + if (resourceMethod.isConstructor()) { + return false; + } + String rtName = resourceMethod.getTypeName(); + if (rtName == null) { + return false; // DOM method bindings can have a null name + } + return rtName.equals(returnTypeName); + } + + public static boolean methodsArePersistableProperties(JavaResourceMethod getterMethod, JavaResourceMethod setterMethod) { + if (setterMethod != null) { + return true; + } + else if (getterMethod.isAnnotated()) { + //annotated getter with no corresponding setter, bring into context model for validation purposes + return true; + } + return false; } @@ -585,7 +921,7 @@ public abstract class AbstractJavaPersistentType } protected boolean contains(int offset, CompilationUnit astRoot) { - TextRange fullTextRange = this.resourcePersistentType.getTextRange(astRoot); + TextRange fullTextRange = this.resourceType.getTextRange(astRoot); // 'fullTextRange' will be null if the type no longer exists in the java; // the context model can be out of synch with the resource model // when a selection event occurs before the context model has a @@ -598,7 +934,7 @@ public abstract class AbstractJavaPersistentType } protected TextRange getSelectionTextRange(CompilationUnit astRoot) { - return this.resourcePersistentType.getNameTextRange(astRoot); + return this.resourceType.getNameTextRange(astRoot); } public void dispose() { @@ -654,12 +990,12 @@ public abstract class AbstractJavaPersistentType // TODO temporary hack since we don't know yet where to put // any messages for types in another project (e.g. referenced by // persistence.xml) - IFile file = this.resourcePersistentType.getFile(); + IFile file = this.resourceType.getFile(); // 'file' will be null if the type is "external" and binary; // the file will be in a different project if the type is "external" and source; // the type will be binary if it is in a JAR in the current project if ((file != null) && file.getProject().equals(this.getJpaProject().getProject()) && - (this.resourcePersistentType instanceof SourceNode)) { + (this.resourceType instanceof SourceNode)) { // build the AST root here to pass down this.validate(messages, reporter, this.buildASTRoot()); } @@ -712,11 +1048,11 @@ public abstract class AbstractJavaPersistentType @Override public IResource getResource() { - return this.resourcePersistentType.getFile(); + return this.resourceType.getFile(); } - public JavaResourcePersistentType getResourcePersistentType() { - return this.resourcePersistentType; + public JavaResourceType getJavaResourceType() { + return this.resourceType; } public AccessType getOwnerOverrideAccess() { @@ -728,11 +1064,11 @@ public abstract class AbstractJavaPersistentType } protected CompilationUnit buildASTRoot() { - return this.resourcePersistentType.getJavaResourceCompilationUnit().buildASTRoot(); + return this.resourceType.getJavaResourceCompilationUnit().buildASTRoot(); } protected JpaFile getJpaFile() { - return this.getJpaFile(this.resourcePersistentType.getFile()); + return this.getJpaFile(this.resourceType.getFile()); } public boolean isFor(String typeName) { @@ -744,11 +1080,45 @@ public abstract class AbstractJavaPersistentType } protected String getPackageName() { - return this.getResourcePersistentType().getPackageName(); + return this.getJavaResourceType().getPackageName(); } @Override public void toString(StringBuilder sb) { sb.append(this.name); } + + + // ********** Access type ********** + + /** + * Return the access type currently implied by the specified Java source + * code or class file:
    + *
  • if any fields are annotated => + * {@link AccessType#FIELD FIELD} + *
  • if only properties are annotated => + * {@link AccessType#PROPERTY PROPERTY} + *
  • if neither are annotated => + * null + * + *
+ */ + public static AccessType buildAccess(JavaResourceType jrType) { + for (JavaResourceField field : jrType.getFields()) { + if (field.isAnnotated()) { + // any field is annotated => FIELD + return AccessType.FIELD; + } + } + + for (JavaResourceMethod method : jrType.getMethods()) { + if (method.isAnnotated()) { + // none of the fields are annotated and any method is annotated => PROPERTY + return AccessType.PROPERTY; + } + } + + // nothing is annotated + return null; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaQuery.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaQuery.java index 47fbf2d288..d1d20d4e7e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaQuery.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaQuery.java @@ -9,21 +9,16 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.java; -import java.util.Iterator; import java.util.List; -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.StringTools; 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.Query; import org.eclipse.jpt.jpa.core.context.QueryHint; import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.jpa.core.context.java.JavaQuery; import org.eclipse.jpt.jpa.core.context.java.JavaQueryHint; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.MappingTools; import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; @@ -45,8 +40,7 @@ public abstract class AbstractJavaQuery
protected String query; - protected final Vector hints = new Vector(); - protected final HintContainerAdapter hintContainerAdapter = new HintContainerAdapter(); + protected final ContextListContainer queryHintContainer; protected AbstractJavaQuery(JavaJpaContextNode parent, A queryAnnotation) { @@ -54,7 +48,7 @@ public abstract class AbstractJavaQuery this.queryAnnotation = queryAnnotation; this.name = queryAnnotation.getName(); this.query = queryAnnotation.getQuery(); - this.initializeHints(); + this.queryHintContainer = this.buildHintContainer(); } @@ -114,44 +108,34 @@ public abstract class AbstractJavaQuery // ********** hints ********** public ListIterable getHints() { - return new LiveCloneListIterable(this.hints); + return this.queryHintContainer.getContextElements(); } public int getHintsSize() { - return this.hints.size(); + return this.queryHintContainer.getContextElementsSize(); } public JavaQueryHint addHint() { - return this.addHint(this.hints.size()); + return this.addHint(this.getHintsSize()); } public JavaQueryHint addHint(int index) { QueryHintAnnotation annotation = this.queryAnnotation.addHint(index); - return this.addHint_(index, annotation); + return this.queryHintContainer.addContextElement(index, annotation); } public void removeHint(QueryHint hint) { - this.removeHint(this.hints.indexOf(hint)); + this.removeHint(this.queryHintContainer.indexOfContextElement((JavaQueryHint) hint)); } public void removeHint(int index) { this.queryAnnotation.removeHint(index); - this.removeHint_(index); - } - - protected void removeHint_(int index) { - this.removeItemFromList(index, this.hints, HINTS_LIST); + this.queryHintContainer.removeContextElement(index); } public void moveHint(int targetIndex, int sourceIndex) { this.queryAnnotation.moveHint(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.hints, HINTS_LIST); - } - - protected void initializeHints() { - for (Iterator stream = this.queryAnnotation.hints(); stream.hasNext(); ) { - this.hints.add(this.buildHint(stream.next())); - } + this.queryHintContainer.moveContextElement(targetIndex, sourceIndex); } protected JavaQueryHint buildHint(QueryHintAnnotation hintAnnotation) { @@ -159,51 +143,43 @@ public abstract class AbstractJavaQuery } protected void syncHints() { - ContextContainerTools.synchronizeWithResourceModel(this.hintContainerAdapter); + this.queryHintContainer.synchronizeWithResourceModel(); } - protected Iterable getHintAnnotations() { - return CollectionTools.iterable(this.queryAnnotation.hints()); + protected void updateHints() { + this.queryHintContainer.update(); } - protected void moveHint_(int index, JavaQueryHint hint) { - this.moveItemInList(index, hint, this.hints, HINTS_LIST); + protected ListIterable getHintAnnotations() { + return this.queryAnnotation.getHints(); } - protected JavaQueryHint addHint_(int index, QueryHintAnnotation hintAnnotation) { - JavaQueryHint hint = this.buildHint(hintAnnotation); - this.addItemToList(index, hint, this.hints, HINTS_LIST); - return hint; - } - - protected void removeHint_(JavaQueryHint hint) { - this.removeHint_(this.hints.indexOf(hint)); + protected ContextListContainer buildHintContainer() { + return new HintContainer(); } /** - * hint container adapter + * query hint container */ - protected class HintContainerAdapter - implements ContextContainerTools.Adapter + protected class HintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractJavaQuery.this.getHints(); + @Override + protected String getContextElementsPropertyName() { + return HINTS_LIST; + } + @Override + protected JavaQueryHint buildContextElement(QueryHintAnnotation resourceElement) { + return AbstractJavaQuery.this.buildHint(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractJavaQuery.this.getHintAnnotations(); } - public QueryHintAnnotation getResourceElement(JavaQueryHint contextElement) { + @Override + protected QueryHintAnnotation getResourceElement(JavaQueryHint contextElement) { return contextElement.getQueryHintAnnotation(); } - public void moveContextElement(int index, JavaQueryHint element) { - AbstractJavaQuery.this.moveHint_(index, element); - } - public void addContextElement(int index, QueryHintAnnotation resourceElement) { - AbstractJavaQuery.this.addHint_(index, resourceElement); - } - public void removeContextElement(JavaQueryHint element) { - AbstractJavaQuery.this.removeHint_(element); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaRelationshipMapping.java index 77afa0ebf6..19d80b6abb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaRelationshipMapping.java @@ -14,7 +14,6 @@ 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.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; @@ -238,7 +237,7 @@ public abstract class AbstractJavaRelationshipMapping protected String specifiedCatalog; protected String defaultCatalog; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final ContextListContainer uniqueConstraintContainer; protected AbstractJavaTable(JavaJpaContextNode parent, Owner owner) { @@ -84,7 +78,7 @@ public abstract class AbstractJavaTable this.specifiedName = this.buildSpecifiedName(); this.specifiedSchema = this.buildSpecifiedSchema(); this.specifiedCatalog = this.buildSpecifiedCatalog(); - this.initializeUniqueConstraints(); + this.uniqueConstraintContainer = this.buildUniqueConstraintContainer(); } @@ -264,107 +258,83 @@ public abstract class AbstractJavaTable // ********** unique constraints ********** - - public ListIterator uniqueConstraints() { - return this.getUniqueConstraints().iterator(); - } - - protected ListIterable getUniqueConstraints() { - return new LiveCloneListIterable(this.uniqueConstraints); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); + public int getUniqueConstraintsSize() { + return this.uniqueConstraintContainer.getContextElementsSize(); } public JavaUniqueConstraint getUniqueConstraint(int index) { - return this.uniqueConstraints.get(index); + return this.uniqueConstraintContainer.getContextElement(index); } public JavaUniqueConstraint addUniqueConstraint() { - return this.addUniqueConstraint(this.uniqueConstraints.size()); + return this.addUniqueConstraint(this.getUniqueConstraintsSize()); } public JavaUniqueConstraint addUniqueConstraint(int index) { UniqueConstraintAnnotation annotation = this.getTableAnnotation().addUniqueConstraint(index); - return this.addUniqueConstraint_(index, annotation); - } - - public void removeUniqueConstraint(UniqueConstraint constraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(constraint)); + return this.uniqueConstraintContainer.addContextElement(index, annotation); } public void removeUniqueConstraint(int index) { this.getTableAnnotation().removeUniqueConstraint(index); - this.removeTableAnnotationIfUnset(); - this.removeUniqueConstraint_(index); + this.uniqueConstraintContainer.removeContextElement(index); } - protected void removeUniqueConstraint_(int index) { - this.removeItemFromList(index, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { + this.removeUniqueConstraint(this.uniqueConstraintContainer.indexOfContextElement((JavaUniqueConstraint) uniqueConstraint)); } public void moveUniqueConstraint(int targetIndex, int sourceIndex) { this.getTableAnnotation().moveUniqueConstraint(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - protected void initializeUniqueConstraints() { - for (Iterator stream = this.getTableAnnotation().uniqueConstraints(); stream.hasNext(); ) { - this.uniqueConstraints.add(this.buildUniqueConstraint(stream.next())); - } - } - - protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation constraintAnnotation) { - return this.getJpaFactory().buildJavaUniqueConstraint(this, this, constraintAnnotation); + this.uniqueConstraintContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncUniqueConstraints() { - ContextContainerTools.synchronizeWithResourceModel(this.uniqueConstraintContainerAdapter); + this.uniqueConstraintContainer.synchronizeWithResourceModel(); } - protected Iterable getUniqueConstraintAnnotations() { - return CollectionTools.iterable(this.getTableAnnotation().uniqueConstraints()); + protected void updateUniqueConstraints() { + this.uniqueConstraintContainer.update(); } - protected void moveUniqueConstraint_(int index, JavaUniqueConstraint constraint) { - this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation constraintAnnotation) { + return this.getJpaFactory().buildJavaUniqueConstraint(this, this, constraintAnnotation); } - protected JavaUniqueConstraint addUniqueConstraint_(int index, UniqueConstraintAnnotation constraintAnnotation) { - JavaUniqueConstraint constraint = this.buildUniqueConstraint(constraintAnnotation); - this.addItemToList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return constraint; + protected ListIterable getUniqueConstraintAnnotations() { + return this.getTableAnnotation().getUniqueConstraints(); } - protected void removeUniqueConstraint_(JavaUniqueConstraint constraint) { - this.removeUniqueConstraint_(this.uniqueConstraints.indexOf(constraint)); + protected ContextListContainer buildUniqueConstraintContainer() { + return new UniqueConstraintContainer(); } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractJavaTable.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaUniqueConstraint buildContextElement(UniqueConstraintAnnotation resourceElement) { + return AbstractJavaTable.this.buildUniqueConstraint(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return AbstractJavaTable.this.getUniqueConstraintAnnotations(); } - public UniqueConstraintAnnotation getResourceElement(JavaUniqueConstraint contextElement) { + @Override + protected UniqueConstraintAnnotation getResourceElement(JavaUniqueConstraint contextElement) { return contextElement.getUniqueConstraintAnnotation(); } - public void moveContextElement(int index, JavaUniqueConstraint element) { - AbstractJavaTable.this.moveUniqueConstraint_(index, element); - } - public void addContextElement(int index, UniqueConstraintAnnotation resourceElement) { - AbstractJavaTable.this.addUniqueConstraint_(index, resourceElement); - } - public void removeContextElement(JavaUniqueConstraint element) { - AbstractJavaTable.this.removeUniqueConstraint_(element); - } } @@ -433,7 +403,7 @@ public abstract class AbstractJavaTable if (result != null) { return result; } - for (JavaUniqueConstraint constraint : CollectionTools.iterable(this.uniqueConstraints())) { + for (JavaUniqueConstraint constraint : this.getUniqueConstraints()) { result = constraint.javaCompletionProposals(pos, filter, astRoot); if (result != null) { return result; @@ -560,7 +530,7 @@ public abstract class AbstractJavaTable this.setSpecifiedName(oldTable.getSpecifiedName()); this.setSpecifiedCatalog(oldTable.getSpecifiedCatalog()); this.setSpecifiedSchema(oldTable.getSpecifiedSchema()); - for (ReadOnlyUniqueConstraint constraint : CollectionTools.iterable(oldTable.uniqueConstraints())) { + for (ReadOnlyUniqueConstraint constraint : oldTable.getUniqueConstraints()) { this.addUniqueConstraint().initializeFrom(constraint); } } @@ -578,4 +548,7 @@ public abstract class AbstractJavaTable protected String buildQualifiedName() { return NameTools.buildQualifiedDatabaseObjectName(this.getCatalog(), this.getSchema(), this.getName()); } + + + } 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 10d2ba19a0..e50ca4a733 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 @@ -12,6 +12,8 @@ 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.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.NotNullFilter; @@ -36,8 +38,6 @@ import org.eclipse.jpt.jpa.core.internal.context.JptValidator; import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTextRangeResolver; import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools; import org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericTypeMappingValidator; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.db.Schema; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -70,8 +70,8 @@ public abstract class AbstractJavaTypeMapping return this.getParent(); } - public JavaResourcePersistentType getResourcePersistentType() { - return this.getPersistentType().getResourcePersistentType(); + public JavaResourceType getJavaResourceType() { + return this.getPersistentType().getJavaResourceType(); } public String getName() { @@ -165,7 +165,7 @@ public abstract class AbstractJavaTypeMapping // ********** attribute mappings ********** public Iterator attributeMappings() { - return new TransformationIterator(this.getPersistentType().attributes()) { + return new TransformationIterator(this.getPersistentType().getAttributes()) { @Override protected JavaAttributeMapping transform(JavaPersistentAttribute attribute) { return attribute.getMapping(); @@ -279,7 +279,7 @@ public abstract class AbstractJavaTypeMapping } protected JptValidator buildTypeMappingValidator(CompilationUnit astRoot) { - return new GenericTypeMappingValidator(this, this.getResourcePersistentType(), buildTextRangeResolver(astRoot)); + return new GenericTypeMappingValidator(this, this.getJavaResourceType(), buildTextRangeResolver(astRoot)); } protected TypeMappingTextRangeResolver buildTextRangeResolver(CompilationUnit astRoot) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java index 062b3dc591..0ca7807a09 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaVersionMapping.java @@ -12,6 +12,8 @@ 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.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.ArrayTools; import org.eclipse.jpt.common.utility.internal.Association; @@ -35,9 +37,7 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.NamedColumnValidator; import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.NullJavaConverter; 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.Annotation; import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.VersionAnnotation; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -130,7 +130,7 @@ public abstract class AbstractJavaVersionMapping * null, remove all the converter annotations. */ protected void retainConverterAnnotation(JavaConverter.Adapter converterAdapter) { - JavaResourcePersistentAttribute resourceAttribute = this.getResourcePersistentAttribute(); + JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { if (adapter != converterAdapter) { adapter.removeConverterAnnotation(resourceAttribute); @@ -172,7 +172,7 @@ public abstract class AbstractJavaVersionMapping * adapter. Return null if there are no converter annotations. */ protected Association getConverterAnnotation() { - JavaResourcePersistentAttribute resourceAttribute = this.getResourcePersistentAttribute(); + JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { Annotation annotation = adapter.getConverterAnnotation(resourceAttribute); if (annotation != null) { @@ -221,11 +221,11 @@ public abstract class AbstractJavaVersionMapping // ********** JavaColumn.Owner implementation ********** public ColumnAnnotation getColumnAnnotation() { - return (ColumnAnnotation) this.getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); + return (ColumnAnnotation) this.getResourceAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); } public void removeColumnAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(ColumnAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(ColumnAnnotation.ANNOTATION_NAME); } public String getDefaultColumnName() { 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 a5396070c7..f351c8be5c 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 @@ -10,21 +10,18 @@ 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.common.utility.internal.iterables.SuperListIterableWrapper; +import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn; 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; @@ -32,15 +29,15 @@ public abstract class AbstractJavaVirtualReferenceTable implements VirtualReferenceTable { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner; protected JavaVirtualJoinColumn defaultJoinColumn; - protected AbstractJavaVirtualReferenceTable(JavaJpaContextNode parent, Owner owner) { - super(parent, owner); + protected AbstractJavaVirtualReferenceTable(JavaJpaContextNode parent, Owner owner, T overridenTable) { + super(parent, owner, overridenTable); + this.specifiedJoinColumnContainer = this.buildSpecifiedJoinColumnContainer(); this.joinColumnOwner = this.buildJoinColumnOwner(); } @@ -57,87 +54,79 @@ public abstract class AbstractJavaVirtualReferenceTable joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public JavaVirtualJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedJoinColumns() { - ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter); + this.specifiedJoinColumnContainer.update(); } - protected Iterable getOverriddenJoinColumns() { - return CollectionTools.iterable(this.getOverriddenTable().specifiedJoinColumns()); + protected ListIterable getOverriddenJoinColumns() { + return new SuperListIterableWrapper(this.getOverriddenTable().getSpecifiedJoinColumns()); } protected void moveSpecifiedJoinColumn(int index, JavaVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.moveContextElement(index, 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; + protected JavaVirtualJoinColumn addSpecifiedJoinColumn(int index, JoinColumn joinColumn) { + return this.specifiedJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedJoinColumn(JavaVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.removeContextElement(joinColumn); + } + + protected ContextListContainer buildSpecifiedJoinColumnContainer() { + return new SpecifiedJoinColumnContainer(); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractJavaVirtualReferenceTable.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; + } + @Override + protected JavaVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return AbstractJavaVirtualReferenceTable.this.buildJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractJavaVirtualReferenceTable.this.getOverriddenJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, JavaVirtualJoinColumn element) { - AbstractJavaVirtualReferenceTable.this.moveSpecifiedJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn element) { - AbstractJavaVirtualReferenceTable.this.addSpecifiedJoinColumn(index, element); - } - public void removeContextElement(JavaVirtualJoinColumn element) { - AbstractJavaVirtualReferenceTable.this.removeSpecifiedJoinColumn(element); - } } 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 ad603db012..3adde36a20 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 @@ -10,21 +10,17 @@ 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.core.utility.TextRange; -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.common.utility.internal.iterables.SuperListIterableWrapper; 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; @@ -39,6 +35,8 @@ public abstract class AbstractJavaVirtualTable { protected final Owner owner; + protected final T overriddenTable; + protected String specifiedName; protected String defaultName; @@ -48,13 +46,14 @@ public abstract class AbstractJavaVirtualTable protected String specifiedCatalog; protected String defaultCatalog; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final ContextListContainer uniqueConstraintContainer; - protected AbstractJavaVirtualTable(JavaJpaContextNode parent, Owner owner) { + protected AbstractJavaVirtualTable(JavaJpaContextNode parent, Owner owner, T overridenTable) { super(parent); this.owner = owner; + this.overriddenTable = overridenTable; + this.uniqueConstraintContainer = this.buildUniqueConstraintContainer(); } @@ -82,7 +81,9 @@ public abstract class AbstractJavaVirtualTable /** * This should never return null. */ - public abstract T getOverriddenTable(); + public T getOverriddenTable() { + return this.overriddenTable; + } // ********** name ********** @@ -186,38 +187,32 @@ public abstract class AbstractJavaVirtualTable // ********** unique constraints ********** - public ListIterator uniqueConstraints() { - return this.getUniqueConstraints().iterator(); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } - protected ListIterable getUniqueConstraints() { - return new LiveCloneListIterable(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); + public int getUniqueConstraintsSize() { + return this.uniqueConstraintContainer.getContextElementsSize(); } public JavaVirtualUniqueConstraint getUniqueConstraint(int index) { - return this.uniqueConstraints.get(index); + return this.uniqueConstraintContainer.getContextElement(index); } protected void updateUniqueConstraints() { - ContextContainerTools.update(this.uniqueConstraintContainerAdapter); + this.uniqueConstraintContainer.update(); } - protected Iterable getOverriddenUniqueConstraints() { - return CollectionTools.iterable(this.getOverriddenTable().uniqueConstraints()); + protected ListIterable getOverriddenUniqueConstraints() { + return new SuperListIterableWrapper(this.getOverriddenTable().getUniqueConstraints()); } protected void moveUniqueConstraint(int index, JavaVirtualUniqueConstraint constraint) { - this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.moveContextElement(index, constraint); } protected JavaVirtualUniqueConstraint addUniqueConstraint(int index, ReadOnlyUniqueConstraint uniqueConstraint) { - JavaVirtualUniqueConstraint virtualConstraint = this.buildUniqueConstraint(uniqueConstraint); - this.addItemToList(index, virtualConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return virtualConstraint; + return this.uniqueConstraintContainer.addContextElement(index, uniqueConstraint); } protected JavaVirtualUniqueConstraint buildUniqueConstraint(ReadOnlyUniqueConstraint uniqueConstraint) { @@ -225,33 +220,35 @@ public abstract class AbstractJavaVirtualTable } protected void removeUniqueConstraint(JavaVirtualUniqueConstraint constraint) { - this.removeItemFromList(constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.removeContextElement(constraint); + } + + protected ContextListContainer buildUniqueConstraintContainer() { + return new UniqueConstraintContainer(); } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractJavaVirtualTable.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; + } + @Override + protected JavaVirtualUniqueConstraint buildContextElement(ReadOnlyUniqueConstraint resourceElement) { + return AbstractJavaVirtualTable.this.buildUniqueConstraint(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractJavaVirtualTable.this.getOverriddenUniqueConstraints(); } - public ReadOnlyUniqueConstraint getResourceElement(JavaVirtualUniqueConstraint contextElement) { + @Override + protected ReadOnlyUniqueConstraint getResourceElement(JavaVirtualUniqueConstraint contextElement) { return contextElement.getOverriddenUniqueConstraint(); } - public void moveContextElement(int index, JavaVirtualUniqueConstraint element) { - AbstractJavaVirtualTable.this.moveUniqueConstraint(index, element); - } - public void addContextElement(int index, ReadOnlyUniqueConstraint resourceElement) { - AbstractJavaVirtualTable.this.addUniqueConstraint(index, resourceElement); - } - public void removeContextElement(JavaVirtualUniqueConstraint element) { - AbstractJavaVirtualTable.this.removeUniqueConstraint(element); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/FieldAccessor.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/FieldAccessor.java new file mode 100644 index 0000000000..cfaffc8afd --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/FieldAccessor.java @@ -0,0 +1,108 @@ +/******************************************************************************* + * 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.internal.context.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.jpa.core.context.AccessType; +import org.eclipse.jpt.jpa.core.context.PersistentAttribute; +import org.eclipse.jpt.jpa.core.context.PersistentType; +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; +import org.eclipse.jpt.jpa.core.internal.jpa1.context.PersistentFieldValidator; + +public class FieldAccessor + extends AbstractAccessor +{ + private final JavaResourceField resourceField; + + public FieldAccessor(ReadOnlyPersistentAttribute parent, JavaResourceField resourceField) { + super(parent); + this.resourceField = resourceField; + } + + public JavaResourceAttribute getResourceAttribute() { + return this.getField(); + } + + public JavaResourceField getField() { + return this.resourceField; + } + + public boolean isFor(JavaResourceField resourceField) { + return this.resourceField == resourceField; + } + + public boolean isFor(JavaResourceMethod getterMethod, JavaResourceMethod setterMethod) { + return false; + } + + public AccessType getDefaultAccess() { + return AccessType.FIELD; + } + + public boolean isPublic() { + return this.resourceField.isPublic(); + } + + public boolean isFinal() { + return this.resourceField.isFinal(); + } + + public JptValidator buildAttributeValidator(PersistentAttribute persistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) { + return new PersistentFieldValidator(persistentAttribute, this, textRangeResolver); + } + + public TextRange getValidationTextRange(CompilationUnit astRoot) { + return this.getResourceAttribute().getNameTextRange(astRoot); + } + + public JavaPersistentAttribute buildUnannotatedJavaAttribute(PersistentType parent) { + return this.buildJavaAttribute(parent, this.buildUnannotatedJavaResourceField()); + } + + /** + * Build a Java resource field that wraps the original Java resource + * field and behaves as though it has no annotations. This will cause + * all the settings in the Java context attribute to default. + */ + protected JavaResourceField buildUnannotatedJavaResourceField() { + return new UnannotatedJavaResourceField(this.getField()); + } + + protected JavaPersistentAttribute buildJavaAttribute(PersistentType parent, JavaResourceField resourceField) { + return this.getJpaFactory().buildJavaPersistentField(parent, resourceField); + } + + + // ********** unannotated Java resource field ********** + + /** + * Wrap another Java resource field and suppress all its annotations. + */ + protected class UnannotatedJavaResourceField + extends UnannotatedJavaResourceAttribute + implements JavaResourceField + { + protected UnannotatedJavaResourceField(JavaResourceField field){ + super(field); + } + + public Kind getKind() { + return Kind.FIELD; + } + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaIdClassReference.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaIdClassReference.java index 840e0bc0dd..2e00357467 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaIdClassReference.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/GenericJavaIdClassReference.java @@ -10,8 +10,9 @@ 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.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.Kind; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.context.AccessType; import org.eclipse.jpt.jpa.core.context.java.JavaIdClassReference; @@ -20,7 +21,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaTypeMapping; 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.IdClassAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -107,7 +107,7 @@ public class GenericJavaIdClassReference * Return null if the annotation does not exists. */ protected IdClassAnnotation getIdClassAnnotation() { - return (IdClassAnnotation) this.getResourcePersistentType().getAnnotation(this.getIdClassAnnotationName()); + return (IdClassAnnotation) this.getJavaResourceType().getAnnotation(this.getIdClassAnnotationName()); } /** @@ -119,7 +119,7 @@ public class GenericJavaIdClassReference } protected IdClassAnnotation buildIdClassAnnotation() { - return (IdClassAnnotation) this.getResourcePersistentType().addAnnotation(this.getIdClassAnnotationName()); + return (IdClassAnnotation) this.getJavaResourceType().addAnnotation(this.getIdClassAnnotationName()); } protected void removeIdClassAnnotationIfUnset() { @@ -129,7 +129,7 @@ public class GenericJavaIdClassReference } protected void removeIdClassAnnotation() { - this.getResourcePersistentType().removeAnnotation(this.getIdClassAnnotationName()); + this.getJavaResourceType().removeAnnotation(this.getIdClassAnnotationName()); } protected String getIdClassAnnotationName() { @@ -168,7 +168,7 @@ public class GenericJavaIdClassReference } protected void updateIdClass() { - JavaResourcePersistentType resourceIdClass = this.resolveResourceIdClass(); + JavaResourceType resourceIdClass = this.resolveResourceIdClass(); if (resourceIdClass == null) { if (this.idClass != null) { this.idClass.dispose(); @@ -178,7 +178,7 @@ public class GenericJavaIdClassReference if (this.idClass == null) { this.setIdClass(this.buildIdClass(resourceIdClass)); } else { - if (this.idClass.getResourcePersistentType() == resourceIdClass) { + if (this.idClass.getJavaResourceType() == resourceIdClass) { this.idClass.update(); } else { this.idClass.dispose(); @@ -188,15 +188,18 @@ public class GenericJavaIdClassReference } } - protected JavaResourcePersistentType resolveResourceIdClass() { + protected JavaResourceType resolveResourceIdClass() { if (this.fullyQualifiedIdClassName == null) { return null; } - JavaResourcePersistentType jrpt = this.getJpaProject().getJavaResourcePersistentType(this.fullyQualifiedIdClassName); - return (jrpt == null) ? null : (jrpt.isMapped() ? null : jrpt); + JavaResourceType jrt = this.getIdClassJavaResourceType(); + return (jrt == null) ? null : (jrt.isAnnotatedWith(getJpaProject().getTypeMappingAnnotations()) ? null : jrt); } - protected JavaPersistentType buildIdClass(JavaResourcePersistentType resourceClass) { + protected JavaResourceType getIdClassJavaResourceType() { + return (JavaResourceType) this.getJpaProject().getJavaResourceType(this.fullyQualifiedIdClassName, Kind.TYPE); + } + protected JavaPersistentType buildIdClass(JavaResourceType resourceClass) { return this.getJpaFactory().buildJavaPersistentType(this, resourceClass); } @@ -220,8 +223,8 @@ public class GenericJavaIdClassReference return this.getTypeMapping().getPersistentType(); } - protected JavaResourcePersistentType getResourcePersistentType() { - return this.getPersistentType().getResourcePersistentType(); + protected JavaResourceType getJavaResourceType() { + return this.getPersistentType().getJavaResourceType(); } @@ -247,13 +250,13 @@ public class GenericJavaIdClassReference protected void validateIdClass(List messages, IReporter reporter, CompilationUnit astRoot) { if (this.isSpecified()) { - JavaResourcePersistentType jrpt = this.getJpaProject().getJavaResourcePersistentType(this.getFullyQualifiedIdClassName()); - if ((jrpt != null) && (jrpt.isMapped())) { + JavaResourceType jrt = this.getIdClassJavaResourceType(); + if ((jrt != null) && (jrt.isAnnotatedWith(getJpaProject().getTypeMappingAnnotations()))) { messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.HIGH_SEVERITY, JpaValidationMessages.TYPE_MAPPING_ID_CLASS_NOT_VALID, - new String[] {jrpt.getName()}, + new String[] {jrt.getName()}, this, this.getValidationTextRange(astRoot) ) 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 4000558efe..87b9567cb8 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 @@ -11,9 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.context.java; import java.util.Iterator; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; 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.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.SubListIterableWrapper; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn; @@ -33,11 +35,7 @@ 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; -import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NestableJoinColumnAnnotation; import org.eclipse.jpt.jpa.db.Table; public class GenericJavaMappingJoinColumnRelationshipStrategy @@ -63,43 +61,39 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy // ********** join column annotations ********** @Override - protected Iterator joinColumnAnnotations() { - return new SuperIteratorWrapper(this.nestableJoinColumnAnnotations()); + protected ListIterable getJoinColumnAnnotations() { + return new SubListIterableWrapper(this.getNestableJoinColumnAnnotations()); } - protected Iterator nestableJoinColumnAnnotations() { - return new SubIteratorWrapper(this.nestableJoinColumnAnnotations_()); - } - - protected Iterator nestableJoinColumnAnnotations_() { - return this.getResourcePersistentAttribute().annotations(JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); + protected ListIterable getNestableJoinColumnAnnotations() { + return this.getResourceAttribute().getAnnotations(JoinColumnAnnotation.ANNOTATION_NAME); } @Override protected JoinColumnAnnotation addJoinColumnAnnotation(int index) { - return (JoinColumnAnnotation) this.getResourcePersistentAttribute().addAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); + return (JoinColumnAnnotation) this.getResourceAttribute().addAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME); } @Override protected void removeJoinColumnAnnotation(int index) { - this.getResourcePersistentAttribute().removeAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME, JoinColumnsAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(index, JoinColumnAnnotation.ANNOTATION_NAME); } @Override protected void moveJoinColumnAnnotation(int targetIndex, int sourceIndex) { - this.getResourcePersistentAttribute().moveAnnotation(targetIndex, sourceIndex, JoinColumnsAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().moveAnnotation(targetIndex, sourceIndex, JoinColumnAnnotation.ANNOTATION_NAME); } @Override protected JoinColumnAnnotation buildNullJoinColumnAnnotation() { - return new NullJoinColumnAnnotation(this.getResourcePersistentAttribute()); + return new NullJoinColumnAnnotation(this.getResourceAttribute()); } // ********** misc ********** - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getRelationship().getMapping().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getRelationship().getMapping().getResourceAttribute(); } @Override @@ -215,8 +209,8 @@ public class GenericJavaMappingJoinColumnRelationshipStrategy return GenericJavaMappingJoinColumnRelationshipStrategy.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericJavaMappingJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaMappingJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange(CompilationUnit astRoot) { 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 2d53030855..f714d20f49 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 @@ -202,7 +202,7 @@ public class GenericJavaOneToOneRelationship public boolean mayHaveDefaultJoinColumn() { return (this.mappedByStrategy.getMappedByAttribute() == null) && - (this.primaryKeyJoinColumnStrategy.primaryKeyJoinColumnsSize() == 0) && + (this.primaryKeyJoinColumnStrategy.getPrimaryKeyJoinColumnsSize() == 0) && (this.joinTableStrategy.getJoinTable() == null); } 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 79543b74ed..4b794b9329 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 @@ -10,9 +10,9 @@ package org.eclipse.jpt.jpa.core.internal.context.java; 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.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn; @@ -41,8 +41,8 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy // ********** join column annotations ********** @Override - protected ListIterator joinColumnAnnotations() { - return this.getOverrideAnnotation().joinColumns(); + protected ListIterable getJoinColumnAnnotations() { + return this.getOverrideAnnotation().getJoinColumns(); } @Override @@ -218,8 +218,8 @@ public class GenericJavaOverrideJoinColumnRelationshipStrategy return false; } - public int joinColumnsSize() { - return GenericJavaOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaOverrideJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange(CompilationUnit astRoot) { 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 cab786efa2..0f0e3c6e0e 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 @@ -11,16 +11,13 @@ 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.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; 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.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.common.utility.internal.iterables.SubListIterableWrapper; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn; @@ -33,18 +30,13 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPrimaryKeyJoinColumnRelationshi 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; 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; import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnsAnnotation; 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; @@ -53,16 +45,14 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy extends AbstractJavaJpaContextNode implements JavaMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 { - protected final Vector primaryKeyJoinColumns = new Vector(); - protected final PrimaryKeyJoinColumnContainerAdapter primaryKeyJoinColumnContainerAdapter; + protected final ContextListContainer primaryKeyJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner primaryKeyJoinColumnOwner; public GenericJavaPrimaryKeyJoinColumnRelationshipStrategy(JavaPrimaryKeyJoinColumnRelationship parent) { super(parent); - this.primaryKeyJoinColumnContainerAdapter = this.buildPrimaryKeyJoinColumnContainerAdapter(); + this.primaryKeyJoinColumnContainer = this.buildPrimaryKeyJoinColumnContainer(); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); - this.initializePrimaryKeyJoinColumns(); } @@ -77,115 +67,85 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy @Override public void update() { super.update(); - this.updateNodes(this.getPrimaryKeyJoinColumns()); + this.updatePrimaryKeyJoinColumns(); } // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); - } - public ListIterable getPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.primaryKeyJoinColumns); + return this.primaryKeyJoinColumnContainer.getContextElements(); } - public int primaryKeyJoinColumnsSize() { - return this.primaryKeyJoinColumns.size(); + public int getPrimaryKeyJoinColumnsSize() { + return this.primaryKeyJoinColumnContainer.getContextElementsSize(); } public boolean hasPrimaryKeyJoinColumns() { - return this.primaryKeyJoinColumns.size() != 0; + return this.getPrimaryKeyJoinColumnsSize() != 0; } public JavaPrimaryKeyJoinColumn getPrimaryKeyJoinColumn(int index) { - return this.primaryKeyJoinColumns.get(index); + return this.primaryKeyJoinColumnContainer.getContextElement(index); } public JavaPrimaryKeyJoinColumn addPrimaryKeyJoinColumn() { - return this.addPrimaryKeyJoinColumn(this.primaryKeyJoinColumns.size()); + return this.addPrimaryKeyJoinColumn(this.getPrimaryKeyJoinColumnsSize()); } public JavaPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(int index) { PrimaryKeyJoinColumnAnnotation annotation = this.addPrimaryKeyJoinColumnAnnotation(index); - return this.addPrimaryKeyJoinColumn_(index, annotation); + return this.primaryKeyJoinColumnContainer.addContextElement(index, annotation); } public void removePrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { - this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumns.indexOf(joinColumn)); + this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumnContainer.indexOfContextElement((JavaPrimaryKeyJoinColumn) joinColumn)); } public void removePrimaryKeyJoinColumn(int index) { this.removePrimaryKeyJoinColumnAnnotation(index); - this.removePrimaryKeyJoinColumn_(index); - } - - protected void removePrimaryKeyJoinColumn_(int index) { - this.removeItemFromList(index, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.primaryKeyJoinColumnContainer.removeContextElement(index); } public void movePrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { this.movePrimaryKeyJoinColumnAnnotation(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void initializePrimaryKeyJoinColumns() { - for (PrimaryKeyJoinColumnAnnotation annotation : this.getPrimaryKeyJoinColumnAnnotations()) { - this.primaryKeyJoinColumns.add(this.buildPrimaryKeyJoinColumn(annotation)); - } + this.primaryKeyJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncPrimaryKeyJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.primaryKeyJoinColumnContainerAdapter); + this.primaryKeyJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getPrimaryKeyJoinColumnAnnotations() { - return CollectionTools.iterable(this.primaryKeyJoinColumnAnnotations()); + protected void updatePrimaryKeyJoinColumns() { + this.primaryKeyJoinColumnContainer.update(); } - protected void movePrimaryKeyJoinColumn_(int index, JavaPrimaryKeyJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected JavaPrimaryKeyJoinColumn addPrimaryKeyJoinColumn_(int index, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation) { - JavaPrimaryKeyJoinColumn joinColumn = this.buildPrimaryKeyJoinColumn(pkJoinColumnAnnotation); - this.addItemToList(index, joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removePrimaryKeyJoinColumn_(JavaPrimaryKeyJoinColumn joinColumn) { - this.removePrimaryKeyJoinColumn_(this.primaryKeyJoinColumns.indexOf(joinColumn)); - } - - protected PrimaryKeyJoinColumnContainerAdapter buildPrimaryKeyJoinColumnContainerAdapter() { - return new PrimaryKeyJoinColumnContainerAdapter(); + protected ContextListContainer buildPrimaryKeyJoinColumnContainer() { + return new PrimaryKeyJoinColumnContainer(); } /** - * primary key join column container adapter + * primary key join column container */ - protected class PrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class PrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.getPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return PRIMARY_KEY_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaPrimaryKeyJoinColumn buildContextElement(PrimaryKeyJoinColumnAnnotation resourceElement) { + return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.buildPrimaryKeyJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.getPrimaryKeyJoinColumnAnnotations(); } - public PrimaryKeyJoinColumnAnnotation getResourceElement(JavaPrimaryKeyJoinColumn contextElement) { + @Override + protected PrimaryKeyJoinColumnAnnotation getResourceElement(JavaPrimaryKeyJoinColumn contextElement) { return contextElement.getColumnAnnotation(); } - public void moveContextElement(int index, JavaPrimaryKeyJoinColumn element) { - GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.movePrimaryKeyJoinColumn_(index, element); - } - public void addContextElement(int index, PrimaryKeyJoinColumnAnnotation resourceElement) { - GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.addPrimaryKeyJoinColumn_(index, resourceElement); - } - public void removeContextElement(JavaPrimaryKeyJoinColumn element) { - GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.removePrimaryKeyJoinColumn_(element); - } } protected JavaReadOnlyJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() { @@ -199,28 +159,24 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy // ********** primary key join column annotations ********** - protected Iterator primaryKeyJoinColumnAnnotations() { - return new SuperIteratorWrapper(this.nestablePrimaryKeyJoinColumnAnnotations()); - } - - protected Iterator nestablePrimaryKeyJoinColumnAnnotations() { - return new SubIteratorWrapper(this.nestablePrimaryKeyJoinColumnAnnotations_()); + protected ListIterable getPrimaryKeyJoinColumnAnnotations() { + return new SubListIterableWrapper(this.getNestablePrimaryKeyJoinColumnAnnotations()); } - protected Iterator nestablePrimaryKeyJoinColumnAnnotations_() { - return this.getResourcePersistentAttribute().annotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME); + protected ListIterable getNestablePrimaryKeyJoinColumnAnnotations() { + return this.getResourceAttribute().getAnnotations(PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME); } protected PrimaryKeyJoinColumnAnnotation addPrimaryKeyJoinColumnAnnotation(int index) { - return (PrimaryKeyJoinColumnAnnotation) this.getResourcePersistentAttribute().addAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME); + return (PrimaryKeyJoinColumnAnnotation) this.getResourceAttribute().addAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME); } protected void removePrimaryKeyJoinColumnAnnotation(int index) { - this.getResourcePersistentAttribute().removeAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(index, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME); } protected void movePrimaryKeyJoinColumnAnnotation(int targetIndex, int sourceIndex) { - this.getResourcePersistentAttribute().moveAnnotation(targetIndex, sourceIndex, PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().moveAnnotation(targetIndex, sourceIndex, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME); } @@ -239,8 +195,8 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy return this.getRelationship().getMapping(); } - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getRelationship().getMapping().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getRelationship().getMapping().getResourceAttribute(); } public String getTableName() { @@ -272,13 +228,13 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy } public void addStrategy() { - if (this.primaryKeyJoinColumns.size() == 0) { + if (this.getPrimaryKeyJoinColumnsSize() == 0) { this.addPrimaryKeyJoinColumn(); } } public void removeStrategy() { - for (int i = this.primaryKeyJoinColumns.size(); i-- > 0; ) { + for (int i = this.getPrimaryKeyJoinColumnsSize(); i-- > 0; ) { this.removePrimaryKeyJoinColumn(i); } } @@ -381,8 +337,8 @@ public class GenericJavaPrimaryKeyJoinColumnRelationshipStrategy return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.getValidationTextRange(astRoot); } - public int joinColumnsSize() { - return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaPrimaryKeyJoinColumnRelationshipStrategy.this.getPrimaryKeyJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { 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 283cee058d..e7d23ce94a 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 @@ -11,16 +11,13 @@ 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.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; @@ -35,7 +32,6 @@ 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; @@ -50,19 +46,17 @@ public class GenericJavaVirtualJoinTable extends AbstractJavaVirtualReferenceTable implements JavaVirtualJoinTable { - protected final ReadOnlyJoinTable overriddenTable; - protected final Vector specifiedInverseJoinColumns = new Vector(); - protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedInverseJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner inverseJoinColumnOwner; protected JavaVirtualJoinColumn defaultInverseJoinColumn; public GenericJavaVirtualJoinTable(JavaVirtualJoinTableRelationshipStrategy parent, Owner owner, ReadOnlyJoinTable overriddenTable) { - super(parent, owner); - this.overriddenTable = overriddenTable; + super(parent, owner, overriddenTable); this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner(); + this.specifiedInverseJoinColumnContainer = this.buildSpecifiedInverseJoinColumnContainer(); } @@ -76,97 +70,81 @@ public class GenericJavaVirtualJoinTable } - // ********** table ********** - - @Override - public ReadOnlyJoinTable getOverriddenTable() { - return this.overriddenTable; - } - - // ********** inverse join columns ********** - public ListIterator inverseJoinColumns() { - return this.getInverseJoinColumns().iterator(); - } - - protected ListIterable getInverseJoinColumns() { + public ListIterable getInverseJoinColumns() { return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumns() : this.getDefaultInverseJoinColumns(); } - public int inverseJoinColumnsSize() { - return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); + public int getInverseJoinColumnsSize() { + return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); } // ********** inverse specified join columns ********** - public ListIterator specifiedInverseJoinColumns() { - return this.getSpecifiedInverseJoinColumns().iterator(); + public ListIterable getSpecifiedInverseJoinColumns() { + return this.specifiedInverseJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedInverseJoinColumns() { - return new LiveCloneListIterable(this.specifiedInverseJoinColumns); - } - - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); + public int getSpecifiedInverseJoinColumnsSize() { + return this.specifiedInverseJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedInverseJoinColumns() { - return this.specifiedInverseJoinColumns.size() != 0; + return this.getSpecifiedInverseJoinColumnsSize() != 0; } public JavaVirtualJoinColumn getSpecifiedInverseJoinColumn(int index) { - return this.specifiedInverseJoinColumns.get(index); + return this.specifiedInverseJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedInverseJoinColumns() { - ContextContainerTools.update(this.specifiedInverseJoinColumnContainerAdapter); + this.specifiedInverseJoinColumnContainer.update(); } - protected Iterable getOverriddenInverseJoinColumns() { - return CollectionTools.iterable(this.getOverriddenTable().specifiedInverseJoinColumns()); + protected ListIterable getOverriddenInverseJoinColumns() { + return new SuperListIterableWrapper(this.getOverriddenTable().getSpecifiedInverseJoinColumns()); } protected void moveSpecifiedInverseJoinColumn(int index, JavaVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.moveContextElement(index, 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; + return this.specifiedInverseJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedInverseJoinColumn(JavaVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.removeContextElement(joinColumn); + } + + protected ContextListContainer buildSpecifiedInverseJoinColumnContainer() { + return new SpecifiedInverseJoinColumnContainer(); } /** - * specified inverse join column container adapter + * specified join column container */ - protected class SpecifiedInverseJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedInverseJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaVirtualJoinTable.this.getSpecifiedInverseJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_INVERSE_JOIN_COLUMNS_LIST; + } + @Override + protected JavaVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return GenericJavaVirtualJoinTable.this.buildInverseJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return GenericJavaVirtualJoinTable.this.getOverriddenInverseJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, JavaVirtualJoinColumn element) { - GenericJavaVirtualJoinTable.this.moveSpecifiedInverseJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn element) { - GenericJavaVirtualJoinTable.this.addSpecifiedInverseJoinColumn(index, element); - } - public void removeContextElement(JavaVirtualJoinColumn element) { - GenericJavaVirtualJoinTable.this.removeSpecifiedInverseJoinColumn(element); - } } @@ -349,8 +327,8 @@ public class GenericJavaVirtualJoinTable return GenericJavaVirtualJoinTable.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericJavaVirtualJoinTable.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaVirtualJoinTable.this.getJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { @@ -389,8 +367,8 @@ public class GenericJavaVirtualJoinTable return GenericJavaVirtualJoinTable.this.defaultInverseJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericJavaVirtualJoinTable.this.inverseJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaVirtualJoinTable.this.getInverseJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBasicMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBasicMappingDefinition.java index 123325a218..a858697319 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBasicMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaBasicMappingDefinition.java @@ -51,7 +51,7 @@ public class JavaBasicMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddableDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddableDefinition.java index db5e442034..15b9f51048 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddableDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddableDefinition.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,13 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.java; +import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.jpa.core.JpaFactory; import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddable; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.java.JavaTypeMappingDefinition; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; import org.eclipse.jpt.jpa.core.resource.java.EmbeddableAnnotation; public class JavaEmbeddableDefinition diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedIdMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedIdMappingDefinition.java index 86d3c1100d..27d7523752 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedIdMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedIdMappingDefinition.java @@ -16,8 +16,8 @@ import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; 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.EmbeddedIdAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; public class JavaEmbeddedIdMappingDefinition implements JavaAttributeMappingDefinition @@ -49,7 +49,7 @@ public class JavaEmbeddedIdMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -58,7 +58,7 @@ public class JavaEmbeddedIdMappingDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedMappingDefinition.java index 3a91dc7e71..5d4a57193a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEmbeddedMappingDefinition.java @@ -16,8 +16,8 @@ import org.eclipse.jpt.jpa.core.context.java.DefaultJavaAttributeMappingDefiniti import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; 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.EmbeddedAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; public class JavaEmbeddedMappingDefinition implements DefaultJavaAttributeMappingDefinition @@ -49,7 +49,7 @@ public class JavaEmbeddedMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -58,7 +58,7 @@ public class JavaEmbeddedMappingDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEntityDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEntityDefinition.java index 3d604b334f..264faad066 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEntityDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaEntityDefinition.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,31 +9,25 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.java; +import org.eclipse.jpt.common.core.resource.java.Annotation; 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.java.JavaEntity; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.java.JavaTypeMappingDefinition; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; 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.AttributeOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.AttributeOverridesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.DiscriminatorColumnAnnotation; 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.IdClassAnnotation; import org.eclipse.jpt.jpa.core.resource.java.InheritanceAnnotation; import org.eclipse.jpt.jpa.core.resource.java.JPA; -import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueriesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueriesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.NamedQueryAnnotation; import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnsAnnotation; import org.eclipse.jpt.jpa.core.resource.java.SecondaryTableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.SecondaryTablesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.SequenceGeneratorAnnotation; import org.eclipse.jpt.jpa.core.resource.java.TableAnnotation; import org.eclipse.jpt.jpa.core.resource.java.TableGeneratorAnnotation; @@ -74,9 +68,9 @@ public class JavaEntityDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { TableAnnotation.ANNOTATION_NAME, SecondaryTableAnnotation.ANNOTATION_NAME, - SecondaryTablesAnnotation.ANNOTATION_NAME, + JPA.SECONDARY_TABLES, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, - PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME, + JPA.PRIMARY_KEY_JOIN_COLUMNS, IdClassAnnotation.ANNOTATION_NAME, InheritanceAnnotation.ANNOTATION_NAME, DiscriminatorValueAnnotation.ANNOTATION_NAME, @@ -84,9 +78,9 @@ public class JavaEntityDefinition SequenceGeneratorAnnotation.ANNOTATION_NAME, TableGeneratorAnnotation.ANNOTATION_NAME, NamedQueryAnnotation.ANNOTATION_NAME, - NamedQueriesAnnotation.ANNOTATION_NAME, + JPA.NAMED_QUERIES, NamedNativeQueryAnnotation.ANNOTATION_NAME, - NamedNativeQueriesAnnotation.ANNOTATION_NAME, + JPA.NAMED_NATIVE_QUERIES, JPA.SQL_RESULT_SET_MAPPING, JPA.EXCLUDE_DEFAULT_LISTENERS, JPA.EXCLUDE_SUPERCLASS_LISTENERS, @@ -99,9 +93,9 @@ public class JavaEntityDefinition JPA.POST_UPDATE, JPA.POST_LOAD, AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, AssociationOverrideAnnotation.ANNOTATION_NAME, - AssociationOverridesAnnotation.ANNOTATION_NAME + JPA.ASSOCIATION_OVERRIDES }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaIdMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaIdMappingDefinition.java index 6ba589476b..24c22ab227 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaIdMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaIdMappingDefinition.java @@ -52,7 +52,7 @@ public class JavaIdMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToManyMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToManyMappingDefinition.java index 12655a9a88..e430c5f21b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToManyMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToManyMappingDefinition.java @@ -50,7 +50,7 @@ public class JavaManyToManyMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToOneMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToOneMappingDefinition.java index f4c48d6b44..316e2747e5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToOneMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaManyToOneMappingDefinition.java @@ -15,8 +15,8 @@ import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.jpa.core.resource.java.JPA; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; import org.eclipse.jpt.jpa.core.resource.java.ManyToOneAnnotation; @@ -50,7 +50,7 @@ public class JavaManyToOneMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -60,7 +60,7 @@ public class JavaManyToOneMappingDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { JoinTableAnnotation.ANNOTATION_NAME, JoinColumnAnnotation.ANNOTATION_NAME, - JoinColumnsAnnotation.ANNOTATION_NAME + JPA.JOIN_COLUMNS }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaMappedSuperclassDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaMappedSuperclassDefinition.java index 33ba199c08..fc00d7bedd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaMappedSuperclassDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaMappedSuperclassDefinition.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,13 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.java; +import org.eclipse.jpt.common.core.resource.java.Annotation; 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.java.JavaMappedSuperclass; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.java.JavaTypeMappingDefinition; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; import org.eclipse.jpt.jpa.core.resource.java.IdClassAnnotation; import org.eclipse.jpt.jpa.core.resource.java.JPA; import org.eclipse.jpt.jpa.core.resource.java.MappedSuperclassAnnotation; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNullTypeMapping.java index b48a3deef0..b6f1f6cfc6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNullTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaNullTypeMapping.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,14 +10,13 @@ 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.resource.java.Annotation; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; 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.Annotation; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToManyMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToManyMappingDefinition.java index 4af1e38043..e5562683b5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToManyMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToManyMappingDefinition.java @@ -15,8 +15,8 @@ import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.jpa.core.resource.java.JPA; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation; import org.eclipse.jpt.jpa.core.resource.java.OneToManyAnnotation; @@ -52,7 +52,7 @@ public class JavaOneToManyMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -64,7 +64,7 @@ public class JavaOneToManyMappingDefinition MapKeyAnnotation.ANNOTATION_NAME, OrderByAnnotation.ANNOTATION_NAME, JoinColumnAnnotation.ANNOTATION_NAME, - JoinColumnsAnnotation.ANNOTATION_NAME + JPA.JOIN_COLUMNS }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToOneMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToOneMappingDefinition.java index 727a1f3470..849d052ba5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToOneMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaOneToOneMappingDefinition.java @@ -15,12 +15,11 @@ import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.jpa.core.resource.java.JPA; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; import org.eclipse.jpt.jpa.core.resource.java.OneToOneAnnotation; import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.PrimaryKeyJoinColumnsAnnotation; public class JavaOneToOneMappingDefinition implements JavaAttributeMappingDefinition @@ -52,7 +51,7 @@ public class JavaOneToOneMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -62,9 +61,9 @@ public class JavaOneToOneMappingDefinition private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { JoinTableAnnotation.ANNOTATION_NAME, JoinColumnAnnotation.ANNOTATION_NAME, - JoinColumnsAnnotation.ANNOTATION_NAME, + JPA.JOIN_COLUMNS, PrimaryKeyJoinColumnAnnotation.ANNOTATION_NAME, - PrimaryKeyJoinColumnsAnnotation.ANNOTATION_NAME + JPA.PRIMARY_KEY_JOIN_COLUMNS }; private static final Iterable SUPPORTING_ANNOTATION_NAMES = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTransientMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTransientMappingDefinition.java index 4618a9ec32..ca1fcc602d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTransientMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaTransientMappingDefinition.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. @@ -47,7 +47,7 @@ public class JavaTransientMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaVersionMappingDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaVersionMappingDefinition.java index 826bc5763a..fde7b35990 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaVersionMappingDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/JavaVersionMappingDefinition.java @@ -49,7 +49,7 @@ public class JavaVersionMappingDefinition } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/PropertyAccessor.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/PropertyAccessor.java new file mode 100644 index 0000000000..b8b58c3ffb --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/PropertyAccessor.java @@ -0,0 +1,139 @@ +/******************************************************************************* + * 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.internal.context.java; + +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.utility.MethodSignature; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.jpa.core.context.AccessType; +import org.eclipse.jpt.jpa.core.context.PersistentAttribute; +import org.eclipse.jpt.jpa.core.context.PersistentType; +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; +import org.eclipse.jpt.jpa.core.internal.jpa1.context.PersistentPropertyValidator; + +public class PropertyAccessor + extends AbstractAccessor +{ + private final JavaResourceMethod resourceGetter; + + private final JavaResourceMethod resourceSetter; + + public PropertyAccessor(ReadOnlyPersistentAttribute parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) { + super(parent); + this.resourceGetter = resourceGetter; + this.resourceSetter = resourceSetter; + } + + public JavaResourceAttribute getResourceAttribute() { + return this.resourceGetter; + } + + public boolean isFor(JavaResourceField resourceField) { + return false; + } + + public boolean isFor(JavaResourceMethod getterMethod, JavaResourceMethod setterMethod) { + return (this.resourceGetter == getterMethod) && (this.resourceSetter == setterMethod); + } + + public AccessType getDefaultAccess() { + return AccessType.PROPERTY; + } + + public JavaResourceMethod getResourceGetter() { + return this.resourceGetter; + } + + public JavaResourceMethod getResourceSetter() { + return this.resourceSetter; + } + + public JavaPersistentAttribute buildUnannotatedJavaAttribute(PersistentType parent) { + return this.buildJavaAttribute(parent, this.buildUnannotatedJavaResourceGetter(), this.buildUnannotatedJavaResourceSetter()); + } + + /** + * Build a Java resource method that wraps the original Java resource + * getter method and behaves as though it has no annotations. This will cause + * all the settings in the Java context attribute to default. + */ + protected JavaResourceMethod buildUnannotatedJavaResourceGetter() { + return new UnannotatedJavaResourceMethod(this.getResourceGetter()); + } + + /** + * Build a Java resource method that wraps the original Java resource + * setter method and behaves as though it has no annotations. This will cause + * all the settings in the Java context attribute to default. + */ + protected JavaResourceMethod buildUnannotatedJavaResourceSetter() { + return new UnannotatedJavaResourceMethod(this.getResourceSetter()); + } + + protected JavaPersistentAttribute buildJavaAttribute(PersistentType parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) { + return this.getJpaFactory().buildJavaPersistentProperty(parent, resourceGetter, resourceSetter); + } + + + public JptValidator buildAttributeValidator(PersistentAttribute persistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) { + return new PersistentPropertyValidator(persistentAttribute, this, textRangeResolver); + } + + public TextRange getValidationTextRange(CompilationUnit astRoot) { + return this.getResourceAttribute().getNameTextRange(astRoot); + } + + + // ********** unannotated Java resource method ********** + + /** + * Wrap another Java resource method and suppress all its annotations. + */ + protected class UnannotatedJavaResourceMethod + extends UnannotatedJavaResourceAttribute + implements JavaResourceMethod + { + protected UnannotatedJavaResourceMethod(JavaResourceMethod method){ + super(method); + } + + public Kind getKind() { + return Kind.METHOD; + } + + public String getMethodName() { + return this.member.getMethodName(); + } + + public boolean isFor(MethodSignature methodSignature, int occurrence) { + return this.member.isFor(methodSignature, occurrence); + } + + public ListIterable getParameterTypeNames() { + return this.member.getParameterTypeNames(); + } + + public int getParametersSize() { + return 0; + } + + public boolean isConstructor() { + return this.member.isConstructor(); + } + } + +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java index 655dffc7a2..e9837e6ba5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractEntityMappings.java @@ -15,6 +15,7 @@ import java.util.Vector; import org.eclipse.core.runtime.content.IContentType; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.Tools; @@ -43,7 +44,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmXml; import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; 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.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlEntityMappings; import org.eclipse.jpt.jpa.core.resource.orm.XmlSequenceGenerator; @@ -86,11 +86,9 @@ public abstract class AbstractEntityMappings protected final Vector persistentTypes = new Vector(); protected final PersistentTypeContainerAdapter persistentTypeContainerAdapter = new PersistentTypeContainerAdapter(); - protected final Vector sequenceGenerators = new Vector(); - protected final SequenceGeneratorContainerAdapter sequenceGeneratorContainerAdapter = new SequenceGeneratorContainerAdapter(); + protected final ContextListContainer sequenceGeneratorContainer; - protected final Vector tableGenerators = new Vector(); - protected final TableGeneratorContainerAdapter tableGeneratorContainerAdapter = new TableGeneratorContainerAdapter(); + protected final ContextListContainer tableGeneratorContainer; protected final OrmQueryContainer queryContainer; @@ -109,8 +107,8 @@ public abstract class AbstractEntityMappings this.persistenceUnitMetadata = this.buildPersistenceUnitMetadata(); this.initializePersistentTypes(); - this.initializeSequenceGenerators(); - this.initializeTableGenerators(); + this.sequenceGeneratorContainer = this.buildSequenceGeneratorContainer(); + this.tableGeneratorContainer = this.buildTableGeneratorContainer(); this.queryContainer = this.buildQueryContainer(); } @@ -471,14 +469,14 @@ public abstract class AbstractEntityMappings } public PersistentType resolvePersistentType(String className) { - return (PersistentType) this.resolvePersistentType(PERSISTENT_TYPE_LOOKUP_ADAPTER, className); + return (PersistentType) this.resolveType(PERSISTENT_TYPE_LOOKUP_ADAPTER, className); } - public JavaResourcePersistentType resolveJavaResourcePersistentType(String className) { - return (JavaResourcePersistentType) this.resolvePersistentType(RESOURCE_PERSISTENT_TYPE_LOOKUP_ADAPTER, className); + public JavaResourceAbstractType resolveJavaResourceType(String className) { + return (JavaResourceAbstractType) this.resolveType(RESOURCE_TYPE_LOOKUP_ADAPTER, className); } - protected Object resolvePersistentType(PersistentTypeLookupAdapter adapter, String className) { + protected Object resolveType(TypeLookupAdapter adapter, String className) { if (className == null) { return null; } @@ -487,33 +485,33 @@ public abstract class AbstractEntityMappings className = className.replace('$', '.'); // first try to resolve using only the locally specified name... - Object persistentType = adapter.resolvePersistentType(this, className); - if (persistentType != null) { - return persistentType; + Object type = adapter.resolveType(this, className); + if (type != null) { + return type; } // ...then try to resolve by prepending the global package name if (this.getPackage() == null) { return null; } - return adapter.resolvePersistentType(this, this.getPackage() + '.' + className); + return adapter.resolveType(this, this.getPackage() + '.' + className); } - protected interface PersistentTypeLookupAdapter { - Object resolvePersistentType(EntityMappings entityMappings, String className); + protected interface TypeLookupAdapter { + Object resolveType(EntityMappings entityMappings, String className); } - protected static final PersistentTypeLookupAdapter PERSISTENT_TYPE_LOOKUP_ADAPTER = - new PersistentTypeLookupAdapter() { - public Object resolvePersistentType(EntityMappings entityMappings, String className) { + protected static final TypeLookupAdapter PERSISTENT_TYPE_LOOKUP_ADAPTER = + new TypeLookupAdapter() { + public Object resolveType(EntityMappings entityMappings, String className) { return entityMappings.getPersistenceUnit().getPersistentType(className); } }; - protected static final PersistentTypeLookupAdapter RESOURCE_PERSISTENT_TYPE_LOOKUP_ADAPTER = - new PersistentTypeLookupAdapter() { - public Object resolvePersistentType(EntityMappings entityMappings, String className) { - return entityMappings.getJpaProject().getJavaResourcePersistentType(className); + protected static final TypeLookupAdapter RESOURCE_TYPE_LOOKUP_ADAPTER = + new TypeLookupAdapter() { + public Object resolveType(EntityMappings entityMappings, String className) { + return entityMappings.getJpaProject().getJavaResourceType(className); } }; @@ -647,20 +645,20 @@ public abstract class AbstractEntityMappings // ********** sequence generators ********** public ListIterable getSequenceGenerators() { - return new LiveCloneListIterable(this.sequenceGenerators); + return this.sequenceGeneratorContainer.getContextElements(); } public int getSequenceGeneratorsSize() { - return this.sequenceGenerators.size(); + return this.sequenceGeneratorContainer.getContextElementsSize(); } public OrmSequenceGenerator addSequenceGenerator() { - return this.addSequenceGenerator(this.sequenceGenerators.size()); + return this.addSequenceGenerator(this.getSequenceGeneratorsSize()); } public OrmSequenceGenerator addSequenceGenerator(int index) { XmlSequenceGenerator xmlGenerator = this.buildXmlSequenceGenerator(); - OrmSequenceGenerator sequenceGenerator = this.addSequenceGenerator_(index, xmlGenerator); + OrmSequenceGenerator sequenceGenerator = this.sequenceGeneratorContainer.addContextElement(index, xmlGenerator); this.xmlEntityMappings.getSequenceGenerators().add(index, xmlGenerator); return sequenceGenerator; } @@ -674,96 +672,74 @@ public abstract class AbstractEntityMappings } public void removeSequenceGenerator(OrmSequenceGenerator sequenceGenerator) { - this.removeSequenceGenerator(this.sequenceGenerators.indexOf(sequenceGenerator)); + this.removeSequenceGenerator(this.sequenceGeneratorContainer.indexOfContextElement(sequenceGenerator)); } public void removeSequenceGenerator(int index) { - this.removeSequenceGenerator_(index); + this.sequenceGeneratorContainer.removeContextElement(index); this.xmlEntityMappings.getSequenceGenerators().remove(index); } - protected void removeSequenceGenerator_(int index) { - this.removeItemFromList(index, this.sequenceGenerators, SEQUENCE_GENERATORS_LIST); - } - public void moveSequenceGenerator(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.sequenceGenerators, SEQUENCE_GENERATORS_LIST); + this.sequenceGeneratorContainer.moveContextElement(targetIndex, sourceIndex); this.xmlEntityMappings.getSequenceGenerators().move(targetIndex, sourceIndex); } - protected void initializeSequenceGenerators() { - for (XmlSequenceGenerator sequenceGenerator : this.getXmlSequenceGenerators()) { - this.sequenceGenerators.add(this.buildSequenceGenerator(sequenceGenerator)); - } - } - protected void syncSequenceGenerators() { - ContextContainerTools.synchronizeWithResourceModel(this.sequenceGeneratorContainerAdapter); + this.sequenceGeneratorContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlSequenceGenerators() { + protected ListIterable getXmlSequenceGenerators() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlEntityMappings.getSequenceGenerators()); - } - - protected void moveSequenceGenerator_(int index, OrmSequenceGenerator sequenceGenerator) { - this.moveItemInList(index, sequenceGenerator, this.sequenceGenerators, SEQUENCE_GENERATORS_LIST); + return new LiveCloneListIterable(this.xmlEntityMappings.getSequenceGenerators()); } - protected OrmSequenceGenerator addSequenceGenerator_(int index, XmlSequenceGenerator xmlSequenceGenerator) { - OrmSequenceGenerator sequenceGenerator = this.buildSequenceGenerator(xmlSequenceGenerator); - this.addItemToList(index, sequenceGenerator, this.sequenceGenerators, SEQUENCE_GENERATORS_LIST); - return sequenceGenerator; - } - - protected void removeSequenceGenerator_(OrmSequenceGenerator sequenceGenerator) { - this.removeSequenceGenerator_(this.sequenceGenerators.indexOf(sequenceGenerator)); + protected ContextListContainer buildSequenceGeneratorContainer() { + return new SequenceGeneratorContainer(); } /** - * sequence generator container adapter + * sequence generator container */ - protected class SequenceGeneratorContainerAdapter - implements ContextContainerTools.Adapter + protected class SequenceGeneratorContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractEntityMappings.this.getSequenceGenerators(); + @Override + protected String getContextElementsPropertyName() { + return SEQUENCE_GENERATORS_LIST; + } + @Override + protected OrmSequenceGenerator buildContextElement(XmlSequenceGenerator resourceElement) { + return AbstractEntityMappings.this.buildSequenceGenerator(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractEntityMappings.this.getXmlSequenceGenerators(); } - public XmlSequenceGenerator getResourceElement(OrmSequenceGenerator contextElement) { + @Override + protected XmlSequenceGenerator getResourceElement(OrmSequenceGenerator contextElement) { return contextElement.getXmlGenerator(); } - public void moveContextElement(int index, OrmSequenceGenerator element) { - AbstractEntityMappings.this.moveSequenceGenerator_(index, element); - } - public void addContextElement(int index, XmlSequenceGenerator resourceElement) { - AbstractEntityMappings.this.addSequenceGenerator_(index, resourceElement); - } - public void removeContextElement(OrmSequenceGenerator element) { - AbstractEntityMappings.this.removeSequenceGenerator_(element); - } } // ********** table generators ********** public ListIterable getTableGenerators() { - return new LiveCloneListIterable(this.tableGenerators); + return this.tableGeneratorContainer.getContextElements(); } public int getTableGeneratorsSize() { - return this.tableGenerators.size(); + return this.tableGeneratorContainer.getContextElementsSize(); } public OrmTableGenerator addTableGenerator() { - return this.addTableGenerator(this.tableGenerators.size()); + return this.addTableGenerator(this.getTableGeneratorsSize()); } public OrmTableGenerator addTableGenerator(int index) { XmlTableGenerator xmlTableGenerator = this.buildXmlTableGenerator(); - OrmTableGenerator tableGenerator = this.addTableGenerator_(index, xmlTableGenerator); + OrmTableGenerator tableGenerator = this.tableGeneratorContainer.addContextElement(index, xmlTableGenerator); this.xmlEntityMappings.getTableGenerators().add(index, xmlTableGenerator); return tableGenerator; } @@ -777,76 +753,54 @@ public abstract class AbstractEntityMappings } public void removeTableGenerator(OrmTableGenerator tableGenerator) { - this.removeTableGenerator(this.tableGenerators.indexOf(tableGenerator)); + this.removeTableGenerator(this.tableGeneratorContainer.indexOfContextElement(tableGenerator)); } public void removeTableGenerator(int index) { - this.removeTableGenerator_(index); + this.tableGeneratorContainer.removeContextElement(index); this.xmlEntityMappings.getTableGenerators().remove(index); } - protected void removeTableGenerator_(int index) { - this.removeItemFromList(index, this.tableGenerators, TABLE_GENERATORS_LIST); - } - public void moveTableGenerator(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.tableGenerators, TABLE_GENERATORS_LIST); + this.tableGeneratorContainer.moveContextElement(targetIndex, sourceIndex); this.xmlEntityMappings.getTableGenerators().move(targetIndex, sourceIndex); } - protected void initializeTableGenerators() { - for (XmlTableGenerator tableGenerator : this.getXmlTableGenerators()) { - this.tableGenerators.add(this.buildTableGenerator(tableGenerator)); - } - } - protected void syncTableGenerators() { - ContextContainerTools.synchronizeWithResourceModel(this.tableGeneratorContainerAdapter); + this.tableGeneratorContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlTableGenerators() { + protected ListIterable getXmlTableGenerators() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlEntityMappings.getTableGenerators()); - } - - protected void moveTableGenerator_(int index, OrmTableGenerator tableGenerator) { - this.moveItemInList(index, tableGenerator, this.tableGenerators, TABLE_GENERATORS_LIST); + return new LiveCloneListIterable(this.xmlEntityMappings.getTableGenerators()); } - protected OrmTableGenerator addTableGenerator_(int index, XmlTableGenerator xmlTableGenerator) { - OrmTableGenerator tableGenerator = this.buildTableGenerator(xmlTableGenerator); - this.addItemToList(index, tableGenerator, this.tableGenerators, TABLE_GENERATORS_LIST); - return tableGenerator; - } - - protected void removeTableGenerator_(OrmTableGenerator tableGenerator) { - this.removeTableGenerator_(this.tableGenerators.indexOf(tableGenerator)); + protected ContextListContainer buildTableGeneratorContainer() { + return new TableGeneratorContainer(); } /** - * table generator container adapter + * table generator container */ - protected class TableGeneratorContainerAdapter - implements ContextContainerTools.Adapter + protected class TableGeneratorContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractEntityMappings.this.getTableGenerators(); + @Override + protected String getContextElementsPropertyName() { + return TABLE_GENERATORS_LIST; + } + @Override + protected OrmTableGenerator buildContextElement(XmlTableGenerator resourceElement) { + return AbstractEntityMappings.this.buildTableGenerator(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractEntityMappings.this.getXmlTableGenerators(); } - public XmlTableGenerator getResourceElement(OrmTableGenerator contextElement) { + @Override + protected XmlTableGenerator getResourceElement(OrmTableGenerator contextElement) { return contextElement.getXmlGenerator(); } - public void moveContextElement(int index, OrmTableGenerator element) { - AbstractEntityMappings.this.moveTableGenerator_(index, element); - } - public void addContextElement(int index, XmlTableGenerator resourceElement) { - AbstractEntityMappings.this.addTableGenerator_(index, resourceElement); - } - public void removeContextElement(OrmTableGenerator element) { - AbstractEntityMappings.this.removeTableGenerator_(element); - } } 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 6db18c8d9f..d6a318600d 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,16 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.orm; -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.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.ClassName; import org.eclipse.jpt.common.utility.internal.CollectionTools; @@ -26,14 +23,12 @@ import org.eclipse.jpt.common.utility.internal.NotNullFilter; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.Tools; 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.EmptyListIterable; 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.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.SuperListIterableWrapper; 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; @@ -125,7 +120,6 @@ 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.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; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride; @@ -161,15 +155,11 @@ public abstract class AbstractOrmEntity protected boolean tableIsUndefined; protected final ReadOnlyTable.Owner secondaryTableOwner; - protected final Vector specifiedSecondaryTables = new Vector(); - protected final SpecifiedSecondaryTableContainerAdapter specifiedSecondaryTableContainerAdapter = new SpecifiedSecondaryTableContainerAdapter(); - - protected final Vector virtualSecondaryTables = new Vector(); - protected final VirtualSecondaryTableContainerAdapter virtualSecondaryTableContainerAdapter = new VirtualSecondaryTableContainerAdapter(); + protected final ContextListContainer specifiedSecondaryTableContainer; + protected final ContextListContainer virtualSecondaryTableContainer; protected final PrimaryKeyJoinColumnOwner primaryKeyJoinColumnOwner; - protected final Vector specifiedPrimaryKeyJoinColumns = new Vector(); - protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedPrimaryKeyJoinColumnContainer; // this is the default if there are Java columns protected final Vector virtualPrimaryKeyJoinColumns = new Vector(); @@ -205,9 +195,10 @@ public abstract class AbstractOrmEntity this.idClassReference = this.buildIdClassReference(); this.table = this.buildTable(); this.secondaryTableOwner = this.buildSecondaryTableOwner(); - this.initializeSpecifiedSecondaryTables(); + this.specifiedSecondaryTableContainer = this.buildSpecifiedSecondaryTableContainer(); + this.virtualSecondaryTableContainer = this.buildVirtualSecondaryTableContainer(); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); - this.initializeSpecifiedPrimaryKeyJoinColumns(); + this.specifiedPrimaryKeyJoinColumnContainer = this.buildSpecifiedPrimaryKeyJoinColumnContainer(); this.specifiedInheritanceStrategy = this.buildSpecifiedInheritanceStrategy(); this.specifiedDiscriminatorValue = xmlEntity.getDiscriminatorValue(); this.discriminatorColumn = this.buildDiscriminatorColumn(); @@ -505,50 +496,42 @@ public abstract class AbstractOrmEntity // ********** secondary tables ********** - public ListIterator secondaryTables() { - return this.getSecondaryTables().iterator(); - } - - protected ListIterable getSecondaryTables() { - return this.specifiedSecondaryTables.isEmpty() ? + public ListIterable getSecondaryTables() { + return this.getSpecifiedSecondaryTablesSize() == 0 ? this.getReadOnlyVirtualSecondaryTables() : this.getReadOnlySpecifiedSecondaryTables(); } - public int secondaryTablesSize() { - return this.specifiedSecondaryTables.isEmpty() ? - this.virtualSecondaryTables.size() : - this.specifiedSecondaryTables.size(); + public int getSecondaryTablesSize() { + return this.getSpecifiedSecondaryTablesSize() == 0 ? + this.getVirtualSecondaryTablesSize() : + this.getSpecifiedSecondaryTablesSize(); } // ********** specified secondary tables ********** - public ListIterator specifiedSecondaryTables() { - return this.getSpecifiedSecondaryTables().iterator(); - } - - protected ListIterable getSpecifiedSecondaryTables() { - return new LiveCloneListIterable(this.specifiedSecondaryTables); + public ListIterable getSpecifiedSecondaryTables() { + return this.specifiedSecondaryTableContainer.getContextElements(); } protected ListIterable getReadOnlySpecifiedSecondaryTables() { - return new LiveCloneListIterable(this.specifiedSecondaryTables); + return new SuperListIterableWrapper(this.getSpecifiedSecondaryTables()); } - public int specifiedSecondaryTablesSize() { - return this.specifiedSecondaryTables.size(); + public int getSpecifiedSecondaryTablesSize() { + return this.specifiedSecondaryTableContainer.getContextElementsSize(); } public OrmSecondaryTable addSpecifiedSecondaryTable() { - return this.addSpecifiedSecondaryTable(this.specifiedSecondaryTables.size()); + return this.addSpecifiedSecondaryTable(this.getSpecifiedSecondaryTablesSize()); } /** * no state check */ protected OrmSecondaryTable addSpecifiedSecondaryTable_() { - return this.addSpecifiedSecondaryTable_(this.specifiedSecondaryTables.size()); + return this.addSpecifiedSecondaryTable_(this.getSpecifiedSecondaryTablesSize()); } /** @@ -566,7 +549,7 @@ public abstract class AbstractOrmEntity */ protected OrmSecondaryTable addSpecifiedSecondaryTable_(int index) { XmlSecondaryTable xmlSecondaryTable = this.buildXmlSecondaryTable(); - OrmSecondaryTable secondaryTable = this.addSpecifiedSecondaryTable_(index, xmlSecondaryTable); + OrmSecondaryTable secondaryTable = this.specifiedSecondaryTableContainer.addContextElement(index, xmlSecondaryTable); this.xmlTypeMapping.getSecondaryTables().add(index, xmlSecondaryTable); return secondaryTable; } @@ -576,108 +559,82 @@ public abstract class AbstractOrmEntity } public void removeSpecifiedSecondaryTable(SecondaryTable secondaryTable) { - this.removeSpecifiedSecondaryTable(this.specifiedSecondaryTables.indexOf(secondaryTable)); + this.removeSpecifiedSecondaryTable(this.specifiedSecondaryTableContainer.indexOfContextElement((OrmSecondaryTable) secondaryTable)); } public void removeSpecifiedSecondaryTable(int index) { - this.removeSpecifiedSecondaryTable_(index); + this.specifiedSecondaryTableContainer.removeContextElement(index); this.xmlTypeMapping.getSecondaryTables().remove(index); } - protected void removeSpecifiedSecondaryTable_(int index) { - this.removeItemFromList(index, this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST); - } - public void moveSpecifiedSecondaryTable(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST); + this.specifiedSecondaryTableContainer.moveContextElement(targetIndex, sourceIndex); this.xmlTypeMapping.getSecondaryTables().move(targetIndex, sourceIndex); } - protected void initializeSpecifiedSecondaryTables() { - for (XmlSecondaryTable xmlTable : this.getXmlSecondaryTables()) { - this.specifiedSecondaryTables.add(this.buildSpecifiedSecondaryTable(xmlTable)); - } - } - protected OrmSecondaryTable buildSpecifiedSecondaryTable(XmlSecondaryTable xmlSecondaryTable) { return this.getContextNodeFactory().buildOrmSecondaryTable(this, this.secondaryTableOwner, xmlSecondaryTable); } protected void clearSpecifiedSecondaryTables() { - this.clearList(this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST); + this.specifiedSecondaryTableContainer.clearContextList(); this.xmlTypeMapping.getSecondaryTables().clear(); } protected void syncSpecifiedSecondaryTables() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedSecondaryTableContainerAdapter); + this.specifiedSecondaryTableContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlSecondaryTables() { + protected ListIterable getXmlSecondaryTables() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlTypeMapping.getSecondaryTables()); - } - - protected void moveSpecifiedSecondaryTable_(int index, OrmSecondaryTable secondaryTable) { - this.moveItemInList(index, secondaryTable, this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST); - } - - protected OrmSecondaryTable addSpecifiedSecondaryTable_(int index, XmlSecondaryTable xmlSecondaryTable) { - OrmSecondaryTable secondaryTable = this.buildSpecifiedSecondaryTable(xmlSecondaryTable); - this.addItemToList(index, secondaryTable, this.specifiedSecondaryTables, SPECIFIED_SECONDARY_TABLES_LIST); - return secondaryTable; + return new LiveCloneListIterable(this.xmlTypeMapping.getSecondaryTables()); } - protected void removeSpecifiedSecondaryTable_(OrmSecondaryTable secondaryTable) { - this.removeSpecifiedSecondaryTable_(this.specifiedSecondaryTables.indexOf(secondaryTable)); + protected ContextListContainer buildSpecifiedSecondaryTableContainer() { + return new SpecifiedSecondaryTableContainer(); } /** - * specified secondary table container adapter + * specified secondary table container */ - protected class SpecifiedSecondaryTableContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedSecondaryTableContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmEntity.this.getSpecifiedSecondaryTables(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_SECONDARY_TABLES_LIST; + } + @Override + protected OrmSecondaryTable buildContextElement(XmlSecondaryTable resourceElement) { + return AbstractOrmEntity.this.buildSpecifiedSecondaryTable(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmEntity.this.getXmlSecondaryTables(); } - public XmlSecondaryTable getResourceElement(OrmSecondaryTable contextElement) { + @Override + protected XmlSecondaryTable getResourceElement(OrmSecondaryTable contextElement) { return contextElement.getXmlTable(); } - public void moveContextElement(int index, OrmSecondaryTable element) { - AbstractOrmEntity.this.moveSpecifiedSecondaryTable_(index, element); - } - public void addContextElement(int index, XmlSecondaryTable resourceElement) { - AbstractOrmEntity.this.addSpecifiedSecondaryTable_(index, resourceElement); - } - public void removeContextElement(OrmSecondaryTable element) { - AbstractOrmEntity.this.removeSpecifiedSecondaryTable_(element); - } } // ********** virtual secondary tables ********** - public ListIterator virtualSecondaryTables() { - return this.getVirtualSecondaryTables().iterator(); - } - - protected ListIterable getVirtualSecondaryTables() { - return new LiveCloneListIterable(this.virtualSecondaryTables); + public ListIterable getVirtualSecondaryTables() { + return this.virtualSecondaryTableContainer.getContextElements(); } protected ListIterable getReadOnlyVirtualSecondaryTables() { - return new LiveCloneListIterable(this.virtualSecondaryTables); + return new SuperListIterableWrapper(this.getVirtualSecondaryTables()); } - public int virtualSecondaryTablesSize() { - return this.virtualSecondaryTables.size(); + public int getVirtualSecondaryTablesSize() { + return this.virtualSecondaryTableContainer.getContextElementsSize(); } protected void clearVirtualSecondaryTables() { - this.clearList(this.virtualSecondaryTables, VIRTUAL_SECONDARY_TABLES_LIST); + this.virtualSecondaryTableContainer.clearContextList(); } /** @@ -688,27 +645,25 @@ public abstract class AbstractOrmEntity * @see #getJavaSecondaryTablesForVirtuals() */ protected void updateVirtualSecondaryTables() { - ContextContainerTools.update(this.virtualSecondaryTableContainerAdapter); + this.virtualSecondaryTableContainer.update(); } - protected Iterable getJavaSecondaryTablesForVirtuals() { - if (this.specifiedSecondaryTables.size() > 0) { - return EmptyIterable.instance(); + protected ListIterable getJavaSecondaryTablesForVirtuals() { + if (this.getSpecifiedSecondaryTablesSize() > 0) { + return EmptyListIterable.instance(); } JavaEntity javaEntity = this.getJavaTypeMappingForDefaults(); return (javaEntity == null) ? - EmptyIterable.instance() : - CollectionTools.iterable(javaEntity.secondaryTables()); + EmptyListIterable.instance() : + javaEntity.getSecondaryTables(); } protected void moveVirtualSecondaryTable(int index, OrmVirtualSecondaryTable secondaryTable) { - this.moveItemInList(index, secondaryTable, this.virtualSecondaryTables, VIRTUAL_SECONDARY_TABLES_LIST); + this.virtualSecondaryTableContainer.moveContextElement(index, secondaryTable); } protected OrmVirtualSecondaryTable addVirtualSecondaryTable(int index, JavaSecondaryTable javaSecondaryTable) { - OrmVirtualSecondaryTable secondaryTable = this.buildVirtualSecondaryTable(javaSecondaryTable); - this.addItemToList(index, secondaryTable, this.virtualSecondaryTables, VIRTUAL_SECONDARY_TABLES_LIST); - return secondaryTable; + return this.virtualSecondaryTableContainer.addContextElement(index, javaSecondaryTable); } protected OrmVirtualSecondaryTable buildVirtualSecondaryTable(JavaSecondaryTable javaSecondaryTable) { @@ -716,33 +671,35 @@ public abstract class AbstractOrmEntity } protected void removeVirtualSecondaryTable(OrmVirtualSecondaryTable secondaryTable) { - this.removeItemFromList(secondaryTable, this.virtualSecondaryTables, VIRTUAL_SECONDARY_TABLES_LIST); + this.virtualSecondaryTableContainer.removeContextElement(secondaryTable); + } + + protected ContextListContainer buildVirtualSecondaryTableContainer() { + return new VirtualSecondaryTableContainer(); } /** - * virtual secondary table container adapter + * virtual secondary table container */ - protected class VirtualSecondaryTableContainerAdapter - implements ContextContainerTools.Adapter + protected class VirtualSecondaryTableContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmEntity.this.getVirtualSecondaryTables(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_SECONDARY_TABLES_LIST; + } + @Override + protected OrmVirtualSecondaryTable buildContextElement(JavaSecondaryTable resourceElement) { + return AbstractOrmEntity.this.buildVirtualSecondaryTable(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmEntity.this.getJavaSecondaryTablesForVirtuals(); } - public JavaSecondaryTable getResourceElement(OrmVirtualSecondaryTable contextElement) { + @Override + protected JavaSecondaryTable getResourceElement(OrmVirtualSecondaryTable contextElement) { return contextElement.getOverriddenTable(); } - public void moveContextElement(int index, OrmVirtualSecondaryTable element) { - AbstractOrmEntity.this.moveVirtualSecondaryTable(index, element); - } - public void addContextElement(int index, JavaSecondaryTable resourceElement) { - AbstractOrmEntity.this.addVirtualSecondaryTable(index, resourceElement); - } - public void removeContextElement(OrmVirtualSecondaryTable element) { - AbstractOrmEntity.this.removeVirtualSecondaryTable(element); - } } @@ -754,7 +711,7 @@ public abstract class AbstractOrmEntity * all (implying they are defined in XML). */ public boolean secondaryTablesAreDefinedInXml() { - return this.virtualSecondaryTables.isEmpty(); + return this.getVirtualSecondaryTablesSize() == 0; } public void setSecondaryTablesAreDefinedInXml(boolean defineInXml) { @@ -777,8 +734,7 @@ public abstract class AbstractOrmEntity * before calling {@link #addSpecifiedSecondaryTable()}. */ protected void specifySecondaryTablesInXml() { - Iterable oldVirtualSecondaryTables = new SnapshotCloneIterable(this.virtualSecondaryTables); - for (OrmVirtualSecondaryTable oldVirtualSecondaryTable : oldVirtualSecondaryTables) { + for (OrmVirtualSecondaryTable oldVirtualSecondaryTable : getVirtualSecondaryTables()) { this.addSpecifiedSecondaryTable_().initializeFrom(oldVirtualSecondaryTable); } // the virtual secondary tables will be cleared during the update @@ -804,20 +760,16 @@ public abstract class AbstractOrmEntity // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getPrimaryKeyJoinColumns() { - return this.specifiedPrimaryKeyJoinColumns.isEmpty() ? + public ListIterable getPrimaryKeyJoinColumns() { + return this.getSpecifiedPrimaryKeyJoinColumnsSize() == 0 ? this.getDefaultPrimaryKeyJoinColumns() : this.getReadOnlySpecifiedPrimaryKeyJoinColumns(); } - public int primaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.isEmpty() ? - this.defaultPrimaryKeyJoinColumnsSize() : - this.specifiedPrimaryKeyJoinColumnsSize(); + public int getPrimaryKeyJoinColumnsSize() { + return this.getSpecifiedPrimaryKeyJoinColumnsSize() == 0 ? + this.getDefaultPrimaryKeyJoinColumnsSize() : + this.getSpecifiedPrimaryKeyJoinColumnsSize(); } protected OrmPrimaryKeyJoinColumn buildPrimaryKeyJoinColumn(XmlPrimaryKeyJoinColumn xmlPkJoinColumn) { @@ -827,31 +779,27 @@ public abstract class AbstractOrmEntity // ********** specified primary key join columns ********** - public ListIterator specifiedPrimaryKeyJoinColumns() { - return this.getSpecifiedPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getSpecifiedPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.specifiedPrimaryKeyJoinColumns); + public ListIterable getSpecifiedPrimaryKeyJoinColumns() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElements(); } protected ListIterable getReadOnlySpecifiedPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.specifiedPrimaryKeyJoinColumns); + return new SuperListIterableWrapper(this.getSpecifiedPrimaryKeyJoinColumns()); } - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); + public int getSpecifiedPrimaryKeyJoinColumnsSize() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElementsSize(); } public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn() { - return this.addSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.size()); + return this.addSpecifiedPrimaryKeyJoinColumn(this.getSpecifiedPrimaryKeyJoinColumnsSize()); } public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { this.clearDefaultPrimaryKeyJoinColumns(); // could leave for update? XmlPrimaryKeyJoinColumn xmlPkJoinColumn = this.buildXmlPrimaryKeyJoinColumn(); - OrmPrimaryKeyJoinColumn pkJoinColumn = this.addSpecifiedPrimaryKeyJoinColumn_(index, xmlPkJoinColumn); + OrmPrimaryKeyJoinColumn pkJoinColumn = this.specifiedPrimaryKeyJoinColumnContainer.addContextElement(index, xmlPkJoinColumn); this.xmlTypeMapping.getPrimaryKeyJoinColumns().add(index, xmlPkJoinColumn); return pkJoinColumn; } @@ -861,20 +809,16 @@ public abstract class AbstractOrmEntity } public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn primaryKeyJoinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(primaryKeyJoinColumn)); + this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumnContainer.indexOfContextElement((OrmPrimaryKeyJoinColumn) primaryKeyJoinColumn)); } public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - this.removeSpecifiedPrimaryKeyJoinColumn_(index); + this.specifiedPrimaryKeyJoinColumnContainer.removeContextElement(index); this.xmlTypeMapping.getPrimaryKeyJoinColumns().remove(index); } - protected void removeSpecifiedPrimaryKeyJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.specifiedPrimaryKeyJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); this.xmlTypeMapping.getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); } @@ -882,76 +826,54 @@ public abstract class AbstractOrmEntity return new PrimaryKeyJoinColumnOwner(); } - protected void initializeSpecifiedPrimaryKeyJoinColumns() { - for (XmlPrimaryKeyJoinColumn xmlPkJoinColumn : this.getXmlPrimaryKeyJoinColumns()) { - this.specifiedPrimaryKeyJoinColumns.add(this.buildPrimaryKeyJoinColumn(xmlPkJoinColumn)); - } - } - protected void syncSpecifiedPrimaryKeyJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedPrimaryKeyJoinColumnContainerAdapter); + this.specifiedPrimaryKeyJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlPrimaryKeyJoinColumns() { + protected ListIterable getXmlPrimaryKeyJoinColumns() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlTypeMapping.getPrimaryKeyJoinColumns()); + return new LiveCloneListIterable(this.xmlTypeMapping.getPrimaryKeyJoinColumns()); } - protected void moveSpecifiedPrimaryKeyJoinColumn_(int index, OrmPrimaryKeyJoinColumn pkJoinColumn) { - this.moveItemInList(index, pkJoinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn_(int index, XmlPrimaryKeyJoinColumn xmlPkJoinColumn) { - OrmPrimaryKeyJoinColumn pkJoinColumn = this.buildPrimaryKeyJoinColumn(xmlPkJoinColumn); - this.addItemToList(index, pkJoinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - return pkJoinColumn; - } - - protected void removeSpecifiedPrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn pkJoinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn_(this.specifiedPrimaryKeyJoinColumns.indexOf(pkJoinColumn)); + protected ContextListContainer buildSpecifiedPrimaryKeyJoinColumnContainer() { + return new SpecifiedPrimaryKeyJoinColumnContainer(); } /** - * specified primary key join column container adapter + * specified primary key join column container */ - protected class SpecifiedPrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedPrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmEntity.this.getSpecifiedPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST; + } + @Override + protected OrmPrimaryKeyJoinColumn buildContextElement(XmlPrimaryKeyJoinColumn resourceElement) { + return AbstractOrmEntity.this.buildPrimaryKeyJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmEntity.this.getXmlPrimaryKeyJoinColumns(); } - public XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { + @Override + protected XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmPrimaryKeyJoinColumn element) { - AbstractOrmEntity.this.moveSpecifiedPrimaryKeyJoinColumn_(index, element); - } - public void addContextElement(int index, XmlPrimaryKeyJoinColumn resourceElement) { - AbstractOrmEntity.this.addSpecifiedPrimaryKeyJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmPrimaryKeyJoinColumn element) { - AbstractOrmEntity.this.removeSpecifiedPrimaryKeyJoinColumn_(element); - } } // ********** default primary key join columns ********** - public ListIterator defaultPrimaryKeyJoinColumns() { - return this.getDefaultPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getDefaultPrimaryKeyJoinColumns() { + public ListIterable getDefaultPrimaryKeyJoinColumns() { int virtualSize = this.virtualPrimaryKeyJoinColumns.size(); return (virtualSize != 0) ? this.getReadOnlyVirtualPrimaryKeyJoinColumns() : this.getReadOnlyDefaultPrimaryKeyJoinColumns(); } - public int defaultPrimaryKeyJoinColumnsSize() { + public int getDefaultPrimaryKeyJoinColumnsSize() { int virtualSize = this.virtualPrimaryKeyJoinColumns.size(); return (virtualSize != 0) ? virtualSize : @@ -982,12 +904,12 @@ public abstract class AbstractOrmEntity * Otherwise, there is a single, spec-defined, default pk join column. */ protected void updateDefaultPrimaryKeyJoinColumns() { - if (this.specifiedPrimaryKeyJoinColumns.size() > 0) { + if (this.getSpecifiedPrimaryKeyJoinColumnsSize() > 0) { // specified/java/default => specified this.clearDefaultPrimaryKeyJoinColumns(); } else { // specified - if (this.defaultPrimaryKeyJoinColumnsSize() == 0) { + if (this.getDefaultPrimaryKeyJoinColumnsSize() == 0) { if (this.javaPrimaryKeyJoinColumnsWillBeDefaults()) { // specified => java this.initializeVirtualPrimaryKeyJoinColumns(); @@ -1030,7 +952,7 @@ public abstract class AbstractOrmEntity */ protected boolean javaPrimaryKeyJoinColumnsWillBeDefaults() { JavaEntity javaEntity = this.getJavaTypeMappingForDefaults(); - return (javaEntity != null) && (javaEntity.primaryKeyJoinColumnsSize() > 0); + return (javaEntity != null) && (javaEntity.getPrimaryKeyJoinColumnsSize() > 0); } @@ -1067,7 +989,7 @@ public abstract class AbstractOrmEntity * @see #javaPrimaryKeyJoinColumnsWillBeDefaults() */ protected Iterable getJavaPrimaryKeyJoinColumnsForVirtuals() { - return CollectionTools.iterable(this.getJavaTypeMappingForDefaults().primaryKeyJoinColumns()); + return this.getJavaTypeMappingForDefaults().getPrimaryKeyJoinColumns(); } protected void moveVirtualPrimaryKeyJoinColumn(int index, OrmVirtualPrimaryKeyJoinColumn pkJoinColumn) { @@ -1716,32 +1638,32 @@ public abstract class AbstractOrmEntity * Return whether the type is abstract; false if no java type exists. */ protected boolean isAbstract() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - return (jrpt != null) && jrpt.isAbstract(); + JavaResourceType jrt = this.getJavaResourceType(); + return (jrt != null) && jrt.isAbstract(); } /** * Return whether the entity's type is abstract. */ protected boolean isFinal() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - return (jrpt != null) && jrpt.isFinal(); + JavaResourceType jrt = this.getJavaResourceType(); + return (jrt != null) && jrt.isFinal(); } /** * Return whether the entity's type is a member of another type. */ protected boolean isMember() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - return (jrpt != null) && jrpt.isMemberType(); + JavaResourceType jrt = this.getJavaResourceType(); + return (jrt != null) && jrt.isMemberType(); } /** * Return whether the entity's type is static. */ protected boolean isStatic() { - JavaResourcePersistentType jrpt = this.getJavaResourcePersistentType(); - return (jrpt != null) && jrpt.isStatic(); + JavaResourceType jrt = this.getJavaResourceType(); + return (jrt != null) && jrt.isStatic(); } @@ -2180,16 +2102,16 @@ public abstract class AbstractOrmEntity return (parentEntity == null) ? null : parentEntity.getPrimaryDbTable(); } - public int joinColumnsSize() { - return AbstractOrmEntity.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return AbstractOrmEntity.this.getPrimaryKeyJoinColumnsSize(); } public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) { - return CollectionTools.contains(AbstractOrmEntity.this.defaultPrimaryKeyJoinColumns(), joinColumn); + return CollectionTools.contains(AbstractOrmEntity.this.getDefaultPrimaryKeyJoinColumns(), joinColumn); } public String getDefaultColumnName() { - if (this.joinColumnsSize() != 1) { + if (this.getJoinColumnsSize() != 1) { return null; } Entity parentEntity = AbstractOrmEntity.this.getParentEntity(); 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 64532a0496..50adca2b83 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 @@ -11,12 +11,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.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.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.iterators.EmptyIterator; @@ -29,7 +25,6 @@ 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; import org.eclipse.jpt.jpa.core.resource.orm.XmlJoinColumnContainer; @@ -41,8 +36,7 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy extends AbstractOrmXmlContextNode implements OrmJoinColumnRelationshipStrategy { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter; + protected final ContextListContainer specifiedJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner; protected OrmJoinColumn defaultJoinColumn; @@ -50,9 +44,8 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy protected AbstractOrmJoinColumnRelationshipStrategy(OrmJoinColumnRelationship parent) { super(parent); - this.specifiedJoinColumnContainerAdapter = this.buildSpecifiedJoinColumnContainerAdapter(); + this.specifiedJoinColumnContainer = this.buildSpecifiedJoinColumnContainer(); this.joinColumnOwner = this.buildJoinColumnOwner(); - this.initializeSpecifiedJoinColumns(); } @@ -67,7 +60,7 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy @Override public void update() { super.update(); - this.updateNodes(this.getSpecifiedJoinColumns()); + this.updateNodes(getSpecifiedJoinColumns()); this.updateDefaultJoinColumn(); } @@ -81,48 +74,40 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy // ********** join columns ********** - public ListIterator joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public OrmJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } public OrmJoinColumn addSpecifiedJoinColumn() { - return this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size()); + return this.addSpecifiedJoinColumn(this.getSpecifiedJoinColumnsSize()); } public OrmJoinColumn addSpecifiedJoinColumn(int index) { XmlJoinColumn xmlJoinColumn = this.buildXmlJoinColumn(); - OrmJoinColumn joinColumn = this.addSpecifiedJoinColumn_(index, xmlJoinColumn); + OrmJoinColumn joinColumn = this.specifiedJoinColumnContainer.addContextElement(index, xmlJoinColumn); this.getXmlJoinColumnContainer().getJoinColumns().add(index, xmlJoinColumn); return joinColumn; } @@ -132,80 +117,54 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy } public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedJoinColumn(this.specifiedJoinColumnContainer.indexOfContextElement((OrmJoinColumn) joinColumn)); } public void removeSpecifiedJoinColumn(int index) { - this.removeSpecifiedJoinColumn_(index); + this.specifiedJoinColumnContainer.removeContextElement(index); this.getXmlJoinColumnContainer().getJoinColumns().remove(index); } - protected void removeSpecifiedJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); this.getXmlJoinColumnContainer().getJoinColumns().move(targetIndex, sourceIndex); } - protected void initializeSpecifiedJoinColumns() { - for (XmlJoinColumn xmlJoinColumn : this.getXmlJoinColumns()) { - this.specifiedJoinColumns.add(this.buildJoinColumn(xmlJoinColumn)); - } - } - protected void syncSpecifiedJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedJoinColumnContainerAdapter); + this.specifiedJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlJoinColumns() { + protected ListIterable getXmlJoinColumns() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.getXmlJoinColumnContainer().getJoinColumns()); - } - - protected void moveSpecifiedJoinColumn_(int index, OrmJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected OrmJoinColumn addSpecifiedJoinColumn_(int index, XmlJoinColumn xmlJoinColumn) { - OrmJoinColumn joinColumn = this.buildJoinColumn(xmlJoinColumn); - this.addItemToList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removeSpecifiedJoinColumn_(OrmJoinColumn joinColumn) { - this.removeSpecifiedJoinColumn_(this.specifiedJoinColumns.indexOf(joinColumn)); + return new LiveCloneListIterable(this.getXmlJoinColumnContainer().getJoinColumns()); } - protected SpecifiedJoinColumnContainerAdapter buildSpecifiedJoinColumnContainerAdapter() { - return new SpecifiedJoinColumnContainerAdapter(); + protected ContextListContainer buildSpecifiedJoinColumnContainer() { + return new SpecifiedJoinColumnContainer(); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmJoinColumnRelationshipStrategy.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; + } + @Override + protected OrmJoinColumn buildContextElement(XmlJoinColumn resourceElement) { + return AbstractOrmJoinColumnRelationshipStrategy.this.buildJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmJoinColumnRelationshipStrategy.this.getXmlJoinColumns(); } - public XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { + @Override + protected XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmJoinColumn element) { - AbstractOrmJoinColumnRelationshipStrategy.this.moveSpecifiedJoinColumn_(index, element); - } - public void addContextElement(int index, XmlJoinColumn resourceElement) { - AbstractOrmJoinColumnRelationshipStrategy.this.addSpecifiedJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmJoinColumn element) { - AbstractOrmJoinColumnRelationshipStrategy.this.removeSpecifiedJoinColumn_(element); - } } protected abstract OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner(); @@ -267,13 +226,13 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy } public void initializeFrom(ReadOnlyJoinColumnRelationshipStrategy oldStrategy) { - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(oldStrategy.specifiedJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : oldStrategy.getSpecifiedJoinColumns()) { this.addSpecifiedJoinColumn().initializeFrom(joinColumn); } } public void initializeFromVirtual(ReadOnlyJoinColumnRelationshipStrategy virtualStrategy) { - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(virtualStrategy.joinColumns())) { + for (ReadOnlyJoinColumn joinColumn : virtualStrategy.getJoinColumns()) { this.addSpecifiedJoinColumn().initializeFromVirtual(joinColumn); } } @@ -309,13 +268,13 @@ public abstract class AbstractOrmJoinColumnRelationshipStrategy } public void addStrategy() { - if (this.specifiedJoinColumnsSize() == 0) { + if (this.getSpecifiedJoinColumnsSize() == 0) { this.addSpecifiedJoinColumn(); } } public void removeStrategy() { - for (int i = this.specifiedJoinColumns.size(); i-- > 0; ) { + for (int i = this.getSpecifiedJoinColumnsSize(); i-- > 0; ) { this.removeSpecifiedJoinColumn(i); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmQuery.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmQuery.java index ca77373f5a..958060d508 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmQuery.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmQuery.java @@ -10,18 +10,15 @@ package org.eclipse.jpt.jpa.core.internal.context.orm; import java.util.List; -import java.util.Vector; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.StringTools; 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.Query; import org.eclipse.jpt.jpa.core.context.QueryHint; import org.eclipse.jpt.jpa.core.context.XmlContextNode; import org.eclipse.jpt.jpa.core.context.orm.OrmQuery; import org.eclipse.jpt.jpa.core.context.orm.OrmQueryHint; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.MappingTools; import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; @@ -45,8 +42,7 @@ public abstract class AbstractOrmQuery protected String query; - protected final Vector hints = new Vector(); - protected final HintContainerAdapter hintContainerAdapter = new HintContainerAdapter(); + protected final ContextListContainer queryHintContainer; protected AbstractOrmQuery(XmlContextNode parent, X xmlQuery) { @@ -54,7 +50,7 @@ public abstract class AbstractOrmQuery this.xmlQuery = xmlQuery; this.name = xmlQuery.getName(); this.query = this.getUnescapedQuery(); - this.initializeHints(); + this.queryHintContainer = this.buildHintContainer(); } // ********** synchronize/update ********** @@ -129,20 +125,20 @@ public abstract class AbstractOrmQuery // ********** hints ********** public ListIterable getHints() { - return new LiveCloneListIterable(this.hints); + return this.queryHintContainer.getContextElements(); } public int getHintsSize() { - return this.hints.size(); + return this.queryHintContainer.getContextElementsSize(); } public OrmQueryHint addHint() { - return this.addHint(this.hints.size()); + return this.addHint(this.getHintsSize()); } public OrmQueryHint addHint(int index) { XmlQueryHint xmlHint = this.buildXmlQueryHint(); - OrmQueryHint hint = this.addHint_(index, xmlHint); + OrmQueryHint hint = this.queryHintContainer.addContextElement(index, xmlHint); this.xmlQuery.getHints().add(index, xmlHint); return hint; } @@ -152,80 +148,58 @@ public abstract class AbstractOrmQuery } public void removeHint(QueryHint hint) { - this.removeHint(this.hints.indexOf(hint)); + this.removeHint(this.queryHintContainer.indexOfContextElement((OrmQueryHint) hint)); } public void removeHint(int index) { - this.removeHint_(index); + this.queryHintContainer.removeContextElement(index); this.xmlQuery.getHints().remove(index); } - protected void removeHint_(int index) { - this.removeItemFromList(index, this.hints, HINTS_LIST); - } - public void moveHint(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.hints, HINTS_LIST); + this.queryHintContainer.moveContextElement(targetIndex, sourceIndex); this.xmlQuery.getHints().move(targetIndex, sourceIndex); } - protected void initializeHints() { - for (XmlQueryHint xmlHint : this.getXmlHints()) { - this.hints.add(this.buildHint(xmlHint)); - } - } - protected OrmQueryHint buildHint(XmlQueryHint xmlHint) { return this.getContextNodeFactory().buildOrmQueryHint(this, xmlHint); } protected void syncHints() { - ContextContainerTools.synchronizeWithResourceModel(this.hintContainerAdapter); + this.queryHintContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlHints() { + protected ListIterable getXmlHints() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlQuery.getHints()); - } - - protected void moveHint_(int index, OrmQueryHint hint) { - this.moveItemInList(index, hint, this.hints, HINTS_LIST); + return new LiveCloneListIterable(this.xmlQuery.getHints()); } - protected OrmQueryHint addHint_(int index, XmlQueryHint xmlHint) { - OrmQueryHint hint = this.buildHint(xmlHint); - this.addItemToList(index, hint, this.hints, HINTS_LIST); - return hint; - } - - protected void removeHint_(OrmQueryHint hint) { - this.removeHint_(this.hints.indexOf(hint)); + protected ContextListContainer buildHintContainer() { + return new HintContainer(); } /** - * hint container adapter + * query hint container */ - protected class HintContainerAdapter - implements ContextContainerTools.Adapter + protected class HintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmQuery.this.getHints(); + @Override + protected String getContextElementsPropertyName() { + return HINTS_LIST; + } + @Override + protected OrmQueryHint buildContextElement(XmlQueryHint resourceElement) { + return AbstractOrmQuery.this.buildHint(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmQuery.this.getXmlHints(); } - public XmlQueryHint getResourceElement(OrmQueryHint contextElement) { + @Override + protected XmlQueryHint getResourceElement(OrmQueryHint contextElement) { return contextElement.getXmlQueryHint(); } - public void moveContextElement(int index, OrmQueryHint element) { - AbstractOrmQuery.this.moveHint_(index, element); - } - public void addContextElement(int index, XmlQueryHint resourceElement) { - AbstractOrmQuery.this.addHint_(index, resourceElement); - } - public void removeContextElement(OrmQueryHint element) { - AbstractOrmQuery.this.removeHint_(element); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java index f400b4e027..796208c1c7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmRelationshipMapping.java @@ -14,7 +14,6 @@ import java.util.List; 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.CollectionTools; 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; @@ -229,7 +228,7 @@ public abstract class AbstractOrmRelationshipMapping protected String specifiedCatalog; protected String defaultCatalog; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final UniqueConstraintContainer uniqueConstraintContainer; // ********** constructor/initialization ********** @@ -82,7 +76,7 @@ public abstract class AbstractOrmTable this.specifiedName = this.buildSpecifiedName(); this.specifiedSchema = this.buildSpecifiedSchema(); this.specifiedCatalog = this.buildSpecifiedCatalog(); - this.initializeUniqueContraints(); + this.uniqueConstraintContainer = new UniqueConstraintContainer(); } @@ -277,30 +271,26 @@ public abstract class AbstractOrmTable // ********** unique constraints ********** - public ListIterator uniqueConstraints() { - return this.getUniqueConstraints().iterator(); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } - protected ListIterable getUniqueConstraints() { - return new LiveCloneListIterable(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); + public int getUniqueConstraintsSize() { + return this.uniqueConstraintContainer.getContextElementsSize(); } public OrmUniqueConstraint getUniqueConstraint(int index) { - return this.uniqueConstraints.get(index); + return this.uniqueConstraintContainer.getContextElement(index); } public OrmUniqueConstraint addUniqueConstraint() { - return this.addUniqueConstraint(this.uniqueConstraints.size()); + return this.addUniqueConstraint(this.getUniqueConstraintsSize()); } public OrmUniqueConstraint addUniqueConstraint(int index) { X xmlTable = this.getXmlTableForUpdate(); XmlUniqueConstraint xmlConstraint = this.buildXmlUniqueConstraint(); - OrmUniqueConstraint constraint = this.addUniqueConstraint_(index, xmlConstraint); + OrmUniqueConstraint constraint = this.uniqueConstraintContainer.addContextElement(index, xmlConstraint); xmlTable.getUniqueConstraints().add(index, xmlConstraint); return constraint; } @@ -309,85 +299,58 @@ public abstract class AbstractOrmTable return OrmFactory.eINSTANCE.createXmlUniqueConstraint(); } - public void removeUniqueConstraint(UniqueConstraint constraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(constraint)); + public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { + this.removeUniqueConstraint(this.uniqueConstraintContainer.indexOfContextElement((OrmUniqueConstraint) uniqueConstraint)); } public void removeUniqueConstraint(int index) { - this.removeUniqueConstraint_(index); + this.uniqueConstraintContainer.removeContextElement(index); this.getXmlTable().getUniqueConstraints().remove(index); this.removeXmlTableIfUnset(); } - protected void removeUniqueConstraint_(int index) { - this.removeItemFromList(index, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.moveContextElement(targetIndex, sourceIndex); this.getXmlTable().getUniqueConstraints().move(targetIndex, sourceIndex); } - protected void initializeUniqueContraints() { - for (XmlUniqueConstraint xmlConstraint : this.getXmlUniqueConstraints()) { - this.uniqueConstraints.add(this.buildUniqueConstraint(xmlConstraint)); - } - } - protected OrmUniqueConstraint buildUniqueConstraint(XmlUniqueConstraint xmlConstraint) { return this.getContextNodeFactory().buildOrmUniqueConstraint(this, this, xmlConstraint); } protected void syncUniqueConstraints() { - ContextContainerTools.synchronizeWithResourceModel(this.uniqueConstraintContainerAdapter); + this.uniqueConstraintContainer.synchronizeWithResourceModel(); } - - protected Iterable getXmlUniqueConstraints() { + protected ListIterable getXmlUniqueConstraints() { X xmlTable = this.getXmlTable(); return (xmlTable == null) ? - EmptyIterable.instance() : + EmptyListIterable.instance() : // clone to reduce chance of concurrency problems - new LiveCloneIterable(xmlTable.getUniqueConstraints()); - } - - protected void moveUniqueConstraint_(int index, OrmUniqueConstraint constraint) { - this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - protected OrmUniqueConstraint addUniqueConstraint_(int index, XmlUniqueConstraint xmlConstraint) { - OrmUniqueConstraint constraint = this.buildUniqueConstraint(xmlConstraint); - this.addItemToList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return constraint; - } - - protected void removeUniqueConstraint_(OrmUniqueConstraint constraint) { - this.removeUniqueConstraint_(this.uniqueConstraints.indexOf(constraint)); + new LiveCloneListIterable(xmlTable.getUniqueConstraints()); } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmTable.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmUniqueConstraint buildContextElement(XmlUniqueConstraint resourceElement) { + return AbstractOrmTable.this.buildUniqueConstraint(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return AbstractOrmTable.this.getXmlUniqueConstraints(); } - public XmlUniqueConstraint getResourceElement(OrmUniqueConstraint contextElement) { + @Override + protected XmlUniqueConstraint getResourceElement(OrmUniqueConstraint contextElement) { return contextElement.getXmlUniqueConstraint(); } - public void moveContextElement(int index, OrmUniqueConstraint element) { - AbstractOrmTable.this.moveUniqueConstraint_(index, element); - } - public void addContextElement(int index, XmlUniqueConstraint resourceElement) { - AbstractOrmTable.this.addUniqueConstraint_(index, resourceElement); - } - public void removeContextElement(OrmUniqueConstraint element) { - AbstractOrmTable.this.removeUniqueConstraint_(element); - } } @@ -516,7 +479,7 @@ public abstract class AbstractOrmTable this.setSpecifiedName(oldTable.getSpecifiedName()); this.setSpecifiedCatalog(oldTable.getSpecifiedCatalog()); this.setSpecifiedSchema(oldTable.getSpecifiedSchema()); - for (ReadOnlyUniqueConstraint constraint : CollectionTools.iterable(oldTable.uniqueConstraints())) { + for (ReadOnlyUniqueConstraint constraint : oldTable.getUniqueConstraints()) { this.addUniqueConstraint().initializeFrom(constraint); } } 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 de5b1394d1..f0931efcdf 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 @@ -13,6 +13,7 @@ import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.StringTools; @@ -40,7 +41,6 @@ import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTools; import org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericTypeMappingValidator; 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.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.orm.XmlTypeMapping; import org.eclipse.jpt.jpa.db.Schema; import org.eclipse.jpt.jpa.db.Table; @@ -186,9 +186,9 @@ public abstract class AbstractOrmTypeMapping return this.getPersistentType().getJavaPersistentType(); } - protected JavaResourcePersistentType getJavaResourcePersistentType() { + protected JavaResourceType getJavaResourceType() { JavaPersistentType javaType = this.getJavaPersistentType(); - return (javaType == null) ? null : javaType.getResourcePersistentType(); + return (javaType == null) ? null : javaType.getJavaResourceType(); } public boolean isMapped() { @@ -245,7 +245,7 @@ public abstract class AbstractOrmTypeMapping } public Iterator attributeMappings() { - return new TransformationIterator(this.getPersistentType().attributes()) { + return new TransformationIterator(this.getPersistentType().getAttributes()) { @Override protected AttributeMapping transform(OrmReadOnlyPersistentAttribute attribute) { return attribute.getMapping(); @@ -467,7 +467,7 @@ public abstract class AbstractOrmTypeMapping } protected JptValidator buildTypeMappingValidator() { - return new GenericTypeMappingValidator(this, this.getJavaResourcePersistentType(), this.buildTextRangeResolver()); + return new GenericTypeMappingValidator(this, this.getJavaResourceType(), this.buildTextRangeResolver()); } protected TypeMappingTextRangeResolver buildTextRangeResolver() { 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 52387a012a..54bb896f70 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 @@ -10,20 +10,16 @@ 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; 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.iterables.SuperListIterableWrapper; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn; 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; @@ -31,16 +27,16 @@ public abstract class AbstractOrmVirtualReferenceTable implements VirtualReferenceTable { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner; protected OrmVirtualJoinColumn defaultJoinColumn; - protected AbstractOrmVirtualReferenceTable(XmlContextNode parent, Owner owner) { - super(parent, owner); + protected AbstractOrmVirtualReferenceTable(XmlContextNode parent, Owner owner, T overridenTable) { + super(parent, owner, overridenTable); this.joinColumnOwner = this.buildJoinColumnOwner(); + this.specifiedJoinColumnContainer = this.buildSpecifiedJoinColumnContainer(); } @@ -56,87 +52,79 @@ public abstract class AbstractOrmVirtualReferenceTable joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public OrmVirtualJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedJoinColumns() { - ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter); + this.specifiedJoinColumnContainer.update(); } - protected Iterable getOverriddenJoinColumns() { - return CollectionTools.iterable(this.getOverriddenTable().specifiedJoinColumns()); + protected ListIterable getOverriddenJoinColumns() { + return new SuperListIterableWrapper(this.getOverriddenTable().getSpecifiedJoinColumns()); } protected void moveSpecifiedJoinColumn(int index, OrmVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.moveContextElement(index, 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; + return this.specifiedJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedJoinColumn(OrmVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.removeContextElement(joinColumn); + } + + protected ContextListContainer buildSpecifiedJoinColumnContainer() { + return new SpecifiedJoinColumnContainer(); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmVirtualReferenceTable.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; + } + @Override + protected OrmVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return AbstractOrmVirtualReferenceTable.this.buildJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmVirtualReferenceTable.this.getOverriddenJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, OrmVirtualJoinColumn element) { - AbstractOrmVirtualReferenceTable.this.moveSpecifiedJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn element) { - AbstractOrmVirtualReferenceTable.this.addSpecifiedJoinColumn(index, element); - } - public void removeContextElement(OrmVirtualJoinColumn element) { - AbstractOrmVirtualReferenceTable.this.removeSpecifiedJoinColumn(element); - } } 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 451233658e..6024883875 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 @@ -10,20 +10,16 @@ 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.NameTools; 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.SuperListIterableWrapper; 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; @@ -38,6 +34,8 @@ public abstract class AbstractOrmVirtualTable { protected final Owner owner; + protected final T overriddenTable; + protected String specifiedName; protected String defaultName; @@ -47,13 +45,14 @@ public abstract class AbstractOrmVirtualTable protected String specifiedCatalog; protected String defaultCatalog; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final ContextListContainer uniqueConstraintContainer; - protected AbstractOrmVirtualTable(XmlContextNode parent, Owner owner) { + protected AbstractOrmVirtualTable(XmlContextNode parent, Owner owner, T overridenTable) { super(parent); this.owner = owner; + this.overriddenTable = overridenTable; + this.uniqueConstraintContainer = this.buildUniqueConstraintContainer(); } @@ -81,7 +80,9 @@ public abstract class AbstractOrmVirtualTable /** * This should never return null. */ - public abstract T getOverriddenTable(); + public T getOverriddenTable() { + return this.overriddenTable; + } // ********** name ********** @@ -185,38 +186,32 @@ public abstract class AbstractOrmVirtualTable // ********** unique constraints ********** - public ListIterator uniqueConstraints() { - return this.getUniqueConstraints().iterator(); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } - protected ListIterable getUniqueConstraints() { - return new LiveCloneListIterable(this.uniqueConstraints); - } - - public int uniqueConstraintsSize() { - return this.uniqueConstraints.size(); + public int getUniqueConstraintsSize() { + return this.uniqueConstraintContainer.getContextElementsSize(); } public OrmVirtualUniqueConstraint getUniqueConstraint(int index) { - return this.uniqueConstraints.get(index); + return this.uniqueConstraintContainer.getContextElement(index); } protected void updateUniqueConstraints() { - ContextContainerTools.update(this.uniqueConstraintContainerAdapter); + this.uniqueConstraintContainer.update(); } - protected Iterable getOverriddenUniqueConstraints() { - return CollectionTools.iterable(this.getOverriddenTable().uniqueConstraints()); + protected ListIterable getOverriddenUniqueConstraints() { + return new SuperListIterableWrapper(this.getOverriddenTable().getUniqueConstraints()); } protected void moveUniqueConstraint(int index, OrmVirtualUniqueConstraint constraint) { - this.moveItemInList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.moveContextElement(index, constraint); } protected OrmVirtualUniqueConstraint addUniqueConstraint(int index, ReadOnlyUniqueConstraint uniqueConstraint) { - OrmVirtualUniqueConstraint virtualConstraint = this.buildUniqueConstraint(uniqueConstraint); - this.addItemToList(index, virtualConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return virtualConstraint; + return this.uniqueConstraintContainer.addContextElement(index, uniqueConstraint); } protected OrmVirtualUniqueConstraint buildUniqueConstraint(ReadOnlyUniqueConstraint uniqueConstraint) { @@ -224,33 +219,35 @@ public abstract class AbstractOrmVirtualTable } protected void removeUniqueConstraint(OrmVirtualUniqueConstraint constraint) { - this.removeItemFromList(constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.removeContextElement(constraint); + } + + protected ContextListContainer buildUniqueConstraintContainer() { + return new UniqueConstraintContainer(); } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractOrmVirtualTable.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; + } + @Override + protected OrmVirtualUniqueConstraint buildContextElement(ReadOnlyUniqueConstraint resourceElement) { + return AbstractOrmVirtualTable.this.buildUniqueConstraint(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractOrmVirtualTable.this.getOverriddenUniqueConstraints(); } - public ReadOnlyUniqueConstraint getResourceElement(OrmVirtualUniqueConstraint contextElement) { + @Override + protected ReadOnlyUniqueConstraint getResourceElement(OrmVirtualUniqueConstraint contextElement) { return contextElement.getOverriddenUniqueConstraint(); } - public void moveContextElement(int index, OrmVirtualUniqueConstraint element) { - AbstractOrmVirtualTable.this.moveUniqueConstraint(index, element); - } - public void addContextElement(int index, ReadOnlyUniqueConstraint resourceElement) { - AbstractOrmVirtualTable.this.addUniqueConstraint(index, resourceElement); - } - public void removeContextElement(OrmVirtualUniqueConstraint element) { - AbstractOrmVirtualTable.this.removeUniqueConstraint(element); - } } 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 6281f21c9b..7f2099dbe4 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,6 +9,8 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.orm; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable; import org.eclipse.jpt.jpa.core.context.ReadOnlyTable; @@ -129,7 +131,6 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmVirtualOverr import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmVirtualPrimaryKeyJoinColumn; import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmVirtualUniqueConstraint; import org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.UnsupportedOrmAttributeMapping; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.orm.XmlAssociationOverride; import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeMapping; import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeOverride; @@ -197,10 +198,14 @@ public abstract class AbstractOrmXmlContextNodeFactory return new GenericOrmPersistentAttribute(parent, xmlMapping); } - public OrmReadOnlyPersistentAttribute buildVirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourcePersistentAttribute javaResourcePersistentAttribute) { - return new VirtualOrmPersistentAttribute(parent, javaResourcePersistentAttribute); + public OrmReadOnlyPersistentAttribute buildVirtualOrmPersistentField(OrmPersistentType parent, JavaResourceField javaResourceField) { + return new VirtualOrmPersistentAttribute(parent, javaResourceField); } - + + public OrmReadOnlyPersistentAttribute buildVirtualOrmPersistentProperty(OrmPersistentType parent, JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return new VirtualOrmPersistentAttribute(parent, javaResourceGetter, javaResourceSetter); + } + public OrmTable buildOrmTable(OrmEntity parent, Table.Owner owner) { return new GenericOrmTable(parent, owner); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java index c42c4892dc..e0e6b9c98b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/GenericOrmIdClassReference.java @@ -10,11 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.context.orm; import java.util.List; - import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; import org.eclipse.jpt.common.core.internal.utility.JDTTools; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.Kind; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; @@ -29,7 +31,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.jpa.core.internal.context.AbstractXmlContextNode; 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.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlClassReference; import org.eclipse.jpt.jpa.core.resource.orm.XmlIdClassContainer; @@ -203,7 +204,7 @@ public class GenericOrmIdClassReference * @see #syncIdClass() */ protected void updateIdClass() { - JavaResourcePersistentType resourceIdClass = this.resolveJavaResourceIdClass(); + JavaResourceType resourceIdClass = this.resolveJavaResourceIdClass(); if (resourceIdClass == null) { if (this.idClass != null) { this.idClass.dispose(); @@ -213,7 +214,7 @@ public class GenericOrmIdClassReference if (this.idClass == null) { this.setIdClass(this.buildIdClass(resourceIdClass)); } else { - if (this.idClass.getResourcePersistentType() == resourceIdClass) { + if (this.idClass.getJavaResourceType() == resourceIdClass) { this.idClass.update(); } else { this.idClass.dispose(); @@ -225,16 +226,20 @@ public class GenericOrmIdClassReference // TODO I'm not sure we should be go to the entity mappings to resolve // our name if it is taken from the Java ID class reference... - protected JavaResourcePersistentType resolveJavaResourceIdClass() { + protected JavaResourceType resolveJavaResourceIdClass() { String idClassName = this.getIdClassName(); if (idClassName == null) { return null; } - JavaResourcePersistentType jrpt = this.getEntityMappings().resolveJavaResourcePersistentType(idClassName); - return (jrpt == null) ? null : (jrpt.isMapped() ? null : jrpt); + JavaResourceAbstractType jrat = this.getEntityMappings().resolveJavaResourceType(idClassName); + if (jrat == null || jrat.getKind() != Kind.TYPE) { + return null; + } + JavaResourceType jrt = (JavaResourceType) jrat; + return jrt.isAnnotatedWith(getJpaProject().getTypeMappingAnnotations()) ? null : jrt; } - protected JavaPersistentType buildIdClass(JavaResourcePersistentType resourceIdClass) { + protected JavaPersistentType buildIdClass(JavaResourceType resourceIdClass) { return this.getJpaFactory().buildJavaPersistentType(this, resourceIdClass); } @@ -328,13 +333,13 @@ public class GenericOrmIdClassReference protected void validateIdClass(List messages, IReporter reporter) { IJavaProject javaProject = getJpaProject().getJavaProject(); if (this.isSpecified()) { - JavaResourcePersistentType jrpt = getJpaProject().getJavaResourcePersistentType(this.getIdClassName()); - if ((jrpt != null) && (jrpt.isMapped())) { + JavaResourceType jrt = (JavaResourceType) getJpaProject().getJavaResourceType(this.getIdClassName(), Kind.TYPE); + if ((jrt != null) && (jrt.isAnnotatedWith(getJpaProject().getTypeMappingAnnotations()))) { messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.HIGH_SEVERITY, JpaValidationMessages.TYPE_MAPPING_ID_CLASS_NOT_VALID, - new String[] {jrpt.getName()}, + new String[] {jrt.getName()}, this, this.getValidationTextRange() ) 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 b686e08619..d05d1c81fb 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 @@ -156,8 +156,8 @@ public class GenericOrmMappingJoinColumnRelationshipStrategy return GenericOrmMappingJoinColumnRelationshipStrategy.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericOrmMappingJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmMappingJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange() { 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 3863f7e8f3..d01a46ca29 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 @@ -197,7 +197,7 @@ public class GenericOrmOneToOneRelationship public boolean mayHaveDefaultJoinColumn() { return (this.mappedByStrategy.getMappedByAttribute() == null) && - (this.primaryKeyJoinColumnStrategy.primaryKeyJoinColumnsSize() == 0) && + (this.primaryKeyJoinColumnStrategy.getPrimaryKeyJoinColumnsSize() == 0) && (this.joinTableStrategy.getJoinTable() == null); } 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 937fbcb0b0..00be65dc16 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 @@ -175,8 +175,8 @@ public class GenericOrmOverrideJoinColumnRelationshipStrategy return false; } - public int joinColumnsSize() { - return GenericOrmOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmOverrideJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange() { 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 62b5d863f7..8112e55410 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 @@ -11,11 +11,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; 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.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; @@ -29,7 +26,6 @@ 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.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; @@ -47,16 +43,14 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy extends AbstractOrmXmlContextNode implements OrmMappingPrimaryKeyJoinColumnRelationshipStrategy2_0 { - protected final Vector primaryKeyJoinColumns = new Vector(); - protected final PrimaryKeyJoinColumnContainerAdapter primaryKeyJoinColumnContainerAdapter; + protected final PrimaryKeyJoinColumnContainer primaryKeyJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner primaryKeyJoinColumnOwner; public GenericOrmPrimaryKeyJoinColumnRelationshipStrategy(OrmPrimaryKeyJoinColumnRelationship parent) { super(parent); - this.primaryKeyJoinColumnContainerAdapter = this.buildPrimaryKeyJoinColumnContainerAdapter(); + this.primaryKeyJoinColumnContainer = new PrimaryKeyJoinColumnContainer(); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); - this.initializePrimaryKeyJoinColumns(); } @@ -77,33 +71,29 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); + public ListIterable getPrimaryKeyJoinColumns() { + return this.primaryKeyJoinColumnContainer.getContextElements(); } - protected ListIterable getPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.primaryKeyJoinColumns); - } - - public int primaryKeyJoinColumnsSize() { - return this.primaryKeyJoinColumns.size(); + public int getPrimaryKeyJoinColumnsSize() { + return this.primaryKeyJoinColumnContainer.getContextElementsSize(); } public boolean hasPrimaryKeyJoinColumns() { - return this.primaryKeyJoinColumns.size() != 0; + return this.getPrimaryKeyJoinColumnsSize() != 0; } public OrmPrimaryKeyJoinColumn getPrimaryKeyJoinColumn(int index) { - return this.primaryKeyJoinColumns.get(index); + return this.primaryKeyJoinColumnContainer.getContextElement(index); } public OrmPrimaryKeyJoinColumn addPrimaryKeyJoinColumn() { - return this.addPrimaryKeyJoinColumn(this.primaryKeyJoinColumns.size()); + return this.addPrimaryKeyJoinColumn(this.getPrimaryKeyJoinColumnsSize()); } public OrmPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(int index) { XmlPrimaryKeyJoinColumn xmlJoinColumn = this.buildXmlPrimaryKeyJoinColumn(); - OrmPrimaryKeyJoinColumn joinColumn = this.addPrimaryKeyJoinColumn_(index, xmlJoinColumn); + OrmPrimaryKeyJoinColumn joinColumn = this.primaryKeyJoinColumnContainer.addContextElement(index, xmlJoinColumn); this.getXmlPrimaryKeyJoinColumnContainer().getPrimaryKeyJoinColumns().add(index, xmlJoinColumn); return joinColumn; } @@ -113,80 +103,51 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy } public void removePrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { - this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumns.indexOf(joinColumn)); + this.removePrimaryKeyJoinColumn(this.primaryKeyJoinColumnContainer.indexOfContextElement((OrmPrimaryKeyJoinColumn) joinColumn)); } public void removePrimaryKeyJoinColumn(int index) { - this.removePrimaryKeyJoinColumn_(index); + this.primaryKeyJoinColumnContainer.removeContextElement(index); this.getXmlPrimaryKeyJoinColumnContainer().getPrimaryKeyJoinColumns().remove(index); } - protected void removePrimaryKeyJoinColumn_(int index) { - this.removeItemFromList(index, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - public void movePrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.primaryKeyJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); this.getXmlPrimaryKeyJoinColumnContainer().getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); } - protected void initializePrimaryKeyJoinColumns() { - for (XmlPrimaryKeyJoinColumn xmlJoinColumn : this.getXmlPrimaryKeyJoinColumns()) { - this.primaryKeyJoinColumns.add(this.buildPrimaryKeyJoinColumn(xmlJoinColumn)); - } - } protected void syncPrimaryKeyJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.primaryKeyJoinColumnContainerAdapter); + this.primaryKeyJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlPrimaryKeyJoinColumns() { + protected ListIterable getXmlPrimaryKeyJoinColumns() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.getXmlPrimaryKeyJoinColumnContainer().getPrimaryKeyJoinColumns()); - } - - protected void movePrimaryKeyJoinColumn_(int index, OrmPrimaryKeyJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected OrmPrimaryKeyJoinColumn addPrimaryKeyJoinColumn_(int index, XmlPrimaryKeyJoinColumn xmlJoinColumn) { - OrmPrimaryKeyJoinColumn joinColumn = this.buildPrimaryKeyJoinColumn(xmlJoinColumn); - this.addItemToList(index, joinColumn, this.primaryKeyJoinColumns, PRIMARY_KEY_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removePrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn joinColumn) { - this.removePrimaryKeyJoinColumn_(this.primaryKeyJoinColumns.indexOf(joinColumn)); - } - - protected PrimaryKeyJoinColumnContainerAdapter buildPrimaryKeyJoinColumnContainerAdapter() { - return new PrimaryKeyJoinColumnContainerAdapter(); + return new LiveCloneListIterable(this.getXmlPrimaryKeyJoinColumnContainer().getPrimaryKeyJoinColumns()); } /** - * primary key join column container adapter + * primary key join column container */ - protected class PrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class PrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.getPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return PRIMARY_KEY_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmPrimaryKeyJoinColumn buildContextElement(XmlPrimaryKeyJoinColumn resourceElement) { + return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.buildPrimaryKeyJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.getXmlPrimaryKeyJoinColumns(); } - public XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { + @Override + protected XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmPrimaryKeyJoinColumn element) { - GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.movePrimaryKeyJoinColumn_(index, element); - } - public void addContextElement(int index, XmlPrimaryKeyJoinColumn resourceElement) { - GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.addPrimaryKeyJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmPrimaryKeyJoinColumn element) { - GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.removePrimaryKeyJoinColumn_(element); - } } protected OrmReadOnlyJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() { @@ -242,13 +203,13 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy } public void addStrategy() { - if (this.primaryKeyJoinColumns.size() == 0) { + if (this.getPrimaryKeyJoinColumnsSize() == 0) { this.addPrimaryKeyJoinColumn(); } } public void removeStrategy() { - for (int i = this.primaryKeyJoinColumns.size(); i-- > 0; ) { + for (int i = this.getPrimaryKeyJoinColumnsSize(); i-- > 0; ) { this.removePrimaryKeyJoinColumn(i); } } @@ -330,8 +291,8 @@ public class GenericOrmPrimaryKeyJoinColumnRelationshipStrategy return null; } - public int joinColumnsSize() { - return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmPrimaryKeyJoinColumnRelationshipStrategy.this.getPrimaryKeyJoinColumnsSize(); } public TextRange getValidationTextRange() { 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 d4bcbdaca6..ebc7ca07dc 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 @@ -11,15 +11,12 @@ 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.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; @@ -34,7 +31,6 @@ 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; @@ -49,18 +45,16 @@ public class GenericOrmVirtualJoinTable extends AbstractOrmVirtualReferenceTable implements OrmVirtualJoinTable { - protected final ReadOnlyJoinTable overriddenTable; - protected final Vector specifiedInverseJoinColumns = new Vector(); - protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedInverseJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner inverseJoinColumnOwner; protected OrmVirtualJoinColumn defaultInverseJoinColumn; public GenericOrmVirtualJoinTable(OrmVirtualJoinTableRelationshipStrategy parent, Owner owner, ReadOnlyJoinTable overriddenTable) { - super(parent, owner); - this.overriddenTable = overriddenTable; + super(parent, owner, overriddenTable); + this.specifiedInverseJoinColumnContainer = this.buildSpecifiedInverseJoinColumnContainer(); this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner(); } @@ -75,97 +69,81 @@ public class GenericOrmVirtualJoinTable } - // ********** table ********** - - @Override - public ReadOnlyJoinTable getOverriddenTable() { - return this.overriddenTable; - } - - // ********** inverse join columns ********** - public ListIterator inverseJoinColumns() { - return this.getInverseJoinColumns().iterator(); - } - - protected ListIterable getInverseJoinColumns() { + public ListIterable getInverseJoinColumns() { return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumns() : this.getDefaultInverseJoinColumns(); } - public int inverseJoinColumnsSize() { - return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); + public int getInverseJoinColumnsSize() { + return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); } // ********** specified inverse join columns ********** - public ListIterator specifiedInverseJoinColumns() { - return this.getSpecifiedInverseJoinColumns().iterator(); + public ListIterable getSpecifiedInverseJoinColumns() { + return this.specifiedInverseJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedInverseJoinColumns() { - return new LiveCloneListIterable(this.specifiedInverseJoinColumns); - } - - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); + public int getSpecifiedInverseJoinColumnsSize() { + return this.specifiedInverseJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedInverseJoinColumns() { - return this.specifiedInverseJoinColumns.size() != 0; + return this.getSpecifiedInverseJoinColumnsSize() != 0; } public OrmVirtualJoinColumn getSpecifiedInverseJoinColumn(int index) { - return this.specifiedInverseJoinColumns.get(index); + return this.specifiedInverseJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedInverseJoinColumns() { - ContextContainerTools.update(this.specifiedInverseJoinColumnContainerAdapter); + this.specifiedInverseJoinColumnContainer.update(); } - protected Iterable getOverriddenInverseJoinColumns() { - return CollectionTools.iterable(this.getOverriddenTable().specifiedInverseJoinColumns()); + protected ListIterable getOverriddenInverseJoinColumns() { + return new SuperListIterableWrapper(this.getOverriddenTable().getSpecifiedInverseJoinColumns()); } protected void moveSpecifiedInverseJoinColumn(int index, OrmVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.moveContextElement(index, 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; + return this.specifiedInverseJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedInverseJoinColumn(OrmVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.removeContextElement(joinColumn); + } + + protected ContextListContainer buildSpecifiedInverseJoinColumnContainer() { + return new SpecifiedInverseJoinColumnContainer(); } /** - * specified inverse join column container adapter + * specified inverse join column container */ - protected class SpecifiedInverseJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedInverseJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmVirtualJoinTable.this.getSpecifiedInverseJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_INVERSE_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return GenericOrmVirtualJoinTable.this.buildInverseJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmVirtualJoinTable.this.getOverriddenInverseJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, OrmVirtualJoinColumn element) { - GenericOrmVirtualJoinTable.this.moveSpecifiedInverseJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn element) { - GenericOrmVirtualJoinTable.this.addSpecifiedInverseJoinColumn(index, element); - } - public void removeContextElement(OrmVirtualJoinColumn element) { - GenericOrmVirtualJoinTable.this.removeSpecifiedInverseJoinColumn(element); - } } @@ -358,8 +336,8 @@ public class GenericOrmVirtualJoinTable return GenericOrmVirtualJoinTable.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericOrmVirtualJoinTable.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmVirtualJoinTable.this.getJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { @@ -408,8 +386,8 @@ public class GenericOrmVirtualJoinTable return GenericOrmVirtualJoinTable.this.defaultInverseJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericOrmVirtualJoinTable.this.inverseJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmVirtualJoinTable.this.getInverseJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver 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 17cabbf8c3..5a190d553b 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 @@ -11,15 +11,11 @@ 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.iterables.EmptyIterable; 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.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn; @@ -36,7 +32,6 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmVirtualJoinColumn; 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; @@ -47,8 +42,7 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy extends AbstractOrmXmlContextNode implements OrmVirtualJoinColumnRelationshipStrategy { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter; + protected final ContextListContainer specifiedJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner; protected OrmVirtualJoinColumn defaultJoinColumn; @@ -56,8 +50,8 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy public GenericOrmVirtualOverrideJoinColumnRelationshipStrategy(OrmVirtualOverrideRelationship parent) { super(parent); - this.specifiedJoinColumnContainerAdapter = this.buildSpecifiedJoinColumnContainerAdapter(); this.joinColumnOwner = this.buildJoinColumnOwner(); + this.specifiedJoinColumnContainer = this.buildSpecifiedJoinColumnContainer(); } @@ -73,94 +67,82 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy // ********** join columns ********** - public ListIterator joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); - } - - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public OrmVirtualJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedJoinColumns() { - ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter); + this.specifiedJoinColumnContainer.update(); } - protected Iterable getOverriddenSpecifiedJoinColumns() { + protected ListIterable getOverriddenSpecifiedJoinColumns() { ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy(); return (overriddenStrategy == null) ? - EmptyIterable.instance() : - CollectionTools.iterable(overriddenStrategy.specifiedJoinColumns()); + EmptyListIterable.instance() : + new SuperListIterableWrapper(overriddenStrategy.getSpecifiedJoinColumns()); } protected void moveSpecifiedJoinColumn(int index, OrmVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.moveContextElement(index, 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; + return this.specifiedJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedJoinColumn(OrmVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.removeContextElement(joinColumn); } - protected SpecifiedJoinColumnContainerAdapter buildSpecifiedJoinColumnContainerAdapter() { - return new SpecifiedJoinColumnContainerAdapter(); + protected ContextListContainer buildSpecifiedJoinColumnContainer() { + return new SpecifiedJoinColumnContainer(); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.buildJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getOverriddenSpecifiedJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(OrmVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, OrmVirtualJoinColumn element) { - GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.moveSpecifiedJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn resourceElement) { - GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.addSpecifiedJoinColumn(index, resourceElement); - } - public void removeContextElement(OrmVirtualJoinColumn element) { - GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.removeSpecifiedJoinColumn(element); - } } protected OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner() { @@ -393,8 +375,8 @@ public class GenericOrmVirtualOverrideJoinColumnRelationshipStrategy return false; } - public int joinColumnsSize() { - return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmVirtualOverrideJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange() { 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 57b6634afd..40963fec84 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 @@ -10,13 +10,9 @@ 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; -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; @@ -29,7 +25,6 @@ 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; @@ -44,19 +39,17 @@ public class GenericOrmVirtualSecondaryTable extends AbstractOrmVirtualTable implements OrmVirtualSecondaryTable { - protected final JavaSecondaryTable overriddenTable; - protected final Vector specifiedPrimaryKeyJoinColumns = new Vector(); - protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedPrimaryKeyJoinColumnContainer; protected final OrmReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner; protected OrmVirtualPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; public GenericOrmVirtualSecondaryTable(OrmEntity parent, Owner owner, JavaSecondaryTable overriddenTable) { - super(parent, owner); - this.overriddenTable = overriddenTable; + super(parent, owner, overriddenTable); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); + this.specifiedPrimaryKeyJoinColumnContainer = this.buildSpecifiedPrimaryKeyJoinColumnContainer(); } @@ -70,97 +63,81 @@ public class GenericOrmVirtualSecondaryTable } - // ********** table ********** - - @Override - public JavaSecondaryTable getOverriddenTable() { - return this.overriddenTable; - } - - // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getPrimaryKeyJoinColumns() { + public ListIterable getPrimaryKeyJoinColumns() { return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumns() : this.getDefaultPrimaryKeyJoinColumns(); } - public int primaryKeyJoinColumnsSize() { - return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); + public int getPrimaryKeyJoinColumnsSize() { + return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); } // ********** specified primary key join columns ********** - public ListIterator specifiedPrimaryKeyJoinColumns() { - return this.getSpecifiedPrimaryKeyJoinColumns().iterator(); + public ListIterable getSpecifiedPrimaryKeyJoinColumns() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.specifiedPrimaryKeyJoinColumns); - } - - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); + public int getSpecifiedPrimaryKeyJoinColumnsSize() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedPrimaryKeyJoinColumns() { - return this.specifiedPrimaryKeyJoinColumns.size() != 0; + return this.getSpecifiedPrimaryKeyJoinColumnsSize() != 0; } public OrmVirtualPrimaryKeyJoinColumn getSpecifiedPrimaryKeyJoinColumn(int index) { - return this.specifiedPrimaryKeyJoinColumns.get(index); + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedPrimaryKeyJoinColumns() { - ContextContainerTools.update(this.specifiedPrimaryKeyJoinColumnContainerAdapter); + this.specifiedPrimaryKeyJoinColumnContainer.update(); } - protected Iterable getOverriddenPrimaryKeyJoinColumns() { - return CollectionTools.iterable(this.getOverriddenTable().specifiedPrimaryKeyJoinColumns()); + protected ListIterable getOverriddenPrimaryKeyJoinColumns() { + return this.getOverriddenTable().getSpecifiedPrimaryKeyJoinColumns(); } protected void moveSpecifiedPrimaryKeyJoinColumn(int index, OrmVirtualPrimaryKeyJoinColumn pkJoinColumn) { - this.moveItemInList(index, pkJoinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.specifiedPrimaryKeyJoinColumnContainer.moveContextElement(index, pkJoinColumn); } protected OrmVirtualPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index, JavaPrimaryKeyJoinColumn javaColumn) { - OrmVirtualPrimaryKeyJoinColumn virtualColumn = this.buildPrimaryKeyJoinColumn(javaColumn); - this.addItemToList(index, virtualColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - return virtualColumn; + return this.specifiedPrimaryKeyJoinColumnContainer.addContextElement(index, javaColumn); } protected void removeSpecifiedPrimaryKeyJoinColumn(OrmVirtualPrimaryKeyJoinColumn pkJoinColumn) { - this.removeItemFromList(pkJoinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.specifiedPrimaryKeyJoinColumnContainer.removeContextElement(pkJoinColumn); + } + + protected ContextListContainer buildSpecifiedPrimaryKeyJoinColumnContainer() { + return new SpecifiedPrimaryKeyJoinColumnContainer(); } /** - * specified primary key join column container adapter + * specified primary key join column container */ - protected class SpecifiedPrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedPrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmVirtualSecondaryTable.this.getSpecifiedPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST; + } + @Override + protected OrmVirtualPrimaryKeyJoinColumn buildContextElement(JavaPrimaryKeyJoinColumn resourceElement) { + return GenericOrmVirtualSecondaryTable.this.buildPrimaryKeyJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return GenericOrmVirtualSecondaryTable.this.getOverriddenPrimaryKeyJoinColumns(); } - public JavaPrimaryKeyJoinColumn getResourceElement(OrmVirtualPrimaryKeyJoinColumn contextElement) { + @Override + protected JavaPrimaryKeyJoinColumn getResourceElement(OrmVirtualPrimaryKeyJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, OrmVirtualPrimaryKeyJoinColumn element) { - GenericOrmVirtualSecondaryTable.this.moveSpecifiedPrimaryKeyJoinColumn(index, element); - } - public void addContextElement(int index, JavaPrimaryKeyJoinColumn element) { - GenericOrmVirtualSecondaryTable.this.addSpecifiedPrimaryKeyJoinColumn(index, element); - } - public void removeContextElement(OrmVirtualPrimaryKeyJoinColumn element) { - GenericOrmVirtualSecondaryTable.this.removeSpecifiedPrimaryKeyJoinColumn(element); - } } @@ -282,7 +259,7 @@ public class GenericOrmVirtualSecondaryTable } public String getDefaultColumnName() { - if (this.joinColumnsSize() != 1) { + if (this.getJoinColumnsSize() != 1) { return null; } Entity parentEntity = this.getEntity().getParentEntity(); @@ -295,8 +272,8 @@ public class GenericOrmVirtualSecondaryTable return GenericOrmVirtualSecondaryTable.this.getDbTable(); } - public int joinColumnsSize() { - return GenericOrmVirtualSecondaryTable.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmVirtualSecondaryTable.this.getPrimaryKeyJoinColumnsSize(); } public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/SpecifiedOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/SpecifiedOrmPersistentAttribute.java index 3f1fd262d0..6d23dc71b6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/SpecifiedOrmPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/SpecifiedOrmPersistentAttribute.java @@ -12,8 +12,14 @@ package org.eclipse.jpt.jpa.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.core.resource.java.JavaResourceAnnotatedElement.Kind; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.Filter; +import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.core.context.AccessType; import org.eclipse.jpt.jpa.core.context.CollectionMapping; @@ -29,13 +35,12 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmStructureNodes; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.jpa.core.internal.context.JptValidator; import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver; +import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; 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.MetamodelField; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0; import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmPersistentAttribute2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.orm.XmlAccessHolder; import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeMapping; import org.eclipse.text.edits.ReplaceEdit; @@ -173,6 +178,18 @@ public abstract class SpecifiedOrmPersistentAttribute return this.getJavaPersistentAttribute(); } + public JavaResourceAttribute getJavaResourceAttribute() { + return this.javaPersistentAttribute == null ? null : this.javaPersistentAttribute.getResourceAttribute(); + } + + public boolean isFor(JavaResourceField javaResourceField) { + return getJavaPersistentAttribute() == null ? false : getJavaPersistentAttribute().isFor(javaResourceField); + } + + public boolean isFor(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return getJavaPersistentAttribute() == null ? false : getJavaPersistentAttribute().isFor(javaResourceGetter, javaResourceSetter); + } + protected void setJavaPersistentAttribute(JavaPersistentAttribute javaPersistentAttribute) { JavaPersistentAttribute old = this.javaPersistentAttribute; this.javaPersistentAttribute = javaPersistentAttribute; @@ -206,16 +223,32 @@ public abstract class SpecifiedOrmPersistentAttribute } protected JavaPersistentAttribute getCachedJavaAttribute() { - JavaResourcePersistentType javaResourceType = this.getOwningPersistentTypeJavaType().getResourcePersistentType(); - JavaResourcePersistentAttribute javaResourceAttribute = this.getJavaResourceAttribute(javaResourceType); - if (javaResourceAttribute == null) { - // nothing in the resource inheritance hierarchy matches our name *and* access type - this.cachedJavaPersistentAttribute = null; - } else { - if ((this.cachedJavaPersistentAttribute == null) || - (this.cachedJavaPersistentAttribute.getResourcePersistentAttribute() != javaResourceAttribute)) { - // cache is stale - this.cachedJavaPersistentAttribute = this.buildJavaPersistentAttribute(javaResourceAttribute); + JavaResourceType javaResourceType = this.getOwningPersistentTypeJavaType().getJavaResourceType(); + if (getAccess() == AccessType.FIELD) { + JavaResourceField javaResourceField = this.getJavaResourceField(javaResourceType); + if (javaResourceField == null) { + // nothing in the resource inheritance hierarchy matches our name *and* access type + this.cachedJavaPersistentAttribute = null; + } else { + if ((this.cachedJavaPersistentAttribute == null) || + !(this.cachedJavaPersistentAttribute.isFor(javaResourceField))) { + // cache is stale + this.cachedJavaPersistentAttribute = this.buildJavaPersistentField(javaResourceField); + } + } + } + if (getAccess() == AccessType.PROPERTY) { + JavaResourceMethod javaResourceGetter = this.getJavaResourceGetter(javaResourceType); + JavaResourceMethod javaResourceSetter = AbstractJavaPersistentType.getValidSiblingSetMethod(javaResourceGetter, javaResourceType.getMethods()); + if (javaResourceGetter == null && javaResourceSetter == null) { + // nothing in the resource inheritance hierarchy matches our name *and* access type + this.cachedJavaPersistentAttribute = null; + } else { + if ((this.cachedJavaPersistentAttribute == null) || + !(this.cachedJavaPersistentAttribute.isFor(javaResourceGetter, javaResourceSetter))) { + // cache is stale + this.cachedJavaPersistentAttribute = this.buildJavaPersistentProperty(javaResourceGetter, javaResourceSetter); + } } } return this.cachedJavaPersistentAttribute; @@ -228,10 +261,10 @@ public abstract class SpecifiedOrmPersistentAttribute * type does not have a corresponding attribute, search up its inheritance * hierarchy. */ - protected JavaResourcePersistentAttribute getJavaResourceAttribute(JavaResourcePersistentType javaResourceType) { - for (JavaResourcePersistentAttribute javaResourceAttribute : this.getJavaResourceAttributes(javaResourceType)) { - if (javaResourceAttribute.getName().equals(this.getName())) { - return javaResourceAttribute; + protected JavaResourceField getJavaResourceField(JavaResourceType javaResourceType) { + for (JavaResourceField javaResourceField : this.getJavaResourceFields(javaResourceType)) { + if (javaResourceField.getName().equals(this.getName())) { + return javaResourceField; } } // climb up inheritance hierarchy @@ -239,28 +272,74 @@ public abstract class SpecifiedOrmPersistentAttribute if (superclassName == null) { return null; } - JavaResourcePersistentType superclass = this.getJpaProject().getJavaResourcePersistentType(superclassName); + JavaResourceType superclass = (JavaResourceType) this.getJpaProject().getJavaResourceType(superclassName, Kind.TYPE); if (superclass == null) { return null; } // recurse - return this.getJavaResourceAttribute(superclass); + return this.getJavaResourceField(superclass); } /** * Return the resource attributes with compatible access types. */ - protected Iterable getJavaResourceAttributes(JavaResourcePersistentType javaResourceType) { - return CollectionTools.iterable(javaResourceType.persistableAttributes(this.getAccess().getJavaAccessType())); + protected Iterable getJavaResourceFields(JavaResourceType javaResourceType) { + return javaResourceType.getFields(); } - protected JavaPersistentAttribute buildJavaPersistentAttribute(JavaResourcePersistentAttribute javaResourceAttribute) { + /** + * Search the specified Java resource type for the resource attribute + * corresponding to this orm.xml attribute (i.e. the Java + * resource attribute with the same name). If the specified Java resource + * type does not have a corresponding attribute, search up its inheritance + * hierarchy. + */ + protected JavaResourceMethod getJavaResourceGetter(JavaResourceType javaResourceType) { + for (JavaResourceMethod javaResourceGetter : this.getJavaResourceGetters(javaResourceType)) { + if (javaResourceGetter.getName().equals(this.getName())) { + return javaResourceGetter; + } + } + // climb up inheritance hierarchy + String superclassName = javaResourceType.getSuperclassQualifiedName(); + if (superclassName == null) { + return null; + } + JavaResourceType superclass = (JavaResourceType) this.getJpaProject().getJavaResourceType(superclassName, Kind.TYPE); + if (superclass == null) { + return null; + } + // recurse + return this.getJavaResourceGetter(superclass); + } + + protected Iterable getResourceMethods(final JavaResourceType javaResourceType, Filter filter) { + return new FilteringIterable(javaResourceType.getMethods(), filter); + } + + protected Filter buildPersistablePropertyGetterMethodsFilter(final JavaResourceType javaResourceType) { + return new Filter() { + public boolean accept(JavaResourceMethod resourceMethod) { + return AbstractJavaPersistentType.methodIsPersistablePropertyGetter(resourceMethod, javaResourceType.getMethods()); + } + }; + } + + /** + * Return the resource attributes with compatible access types. + */ + protected Iterable getJavaResourceGetters(JavaResourceType javaResourceType) { + return getResourceMethods(javaResourceType, buildPersistablePropertyGetterMethodsFilter(javaResourceType)); + } + + protected JavaPersistentAttribute buildJavaPersistentField(JavaResourceField javaResourceField) { // pass in our parent orm persistent type as the parent to the cached Java attribute... - return this.getJpaFactory().buildJavaPersistentAttribute(this.getOwningPersistentType(), javaResourceAttribute); + return this.getJpaFactory().buildJavaPersistentField(this.getOwningPersistentType(), javaResourceField); } - public JavaResourcePersistentAttribute getJavaResourcePersistentAttribute() { - return (this.javaPersistentAttribute == null) ? null : this.javaPersistentAttribute.getResourcePersistentAttribute(); + protected JavaPersistentAttribute buildJavaPersistentProperty(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + // pass in our parent orm persistent type as the parent to the cached Java attribute... + return this.getJpaFactory().buildJavaPersistentProperty(this.getOwningPersistentType(), javaResourceGetter, javaResourceSetter); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java index e2d1c95a4f..a8adf954b3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/VirtualOrmPersistentAttribute.java @@ -9,18 +9,16 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.orm; -import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.ListIterator; -import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.MethodSignature; -import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.common.utility.model.event.StateChangeEvent; import org.eclipse.jpt.common.utility.model.listener.StateChangeListener; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.core.context.AccessType; +import org.eclipse.jpt.jpa.core.context.java.Accessor; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; @@ -29,14 +27,10 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentType; import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyPersistentAttribute; import org.eclipse.jpt.jpa.core.context.orm.OrmStructureNodes; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNode; +import org.eclipse.jpt.jpa.core.internal.context.java.FieldAccessor; +import org.eclipse.jpt.jpa.core.internal.context.java.PropertyAccessor; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0; import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmReadOnlyPersistentAttribute2_0; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; -import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -47,7 +41,7 @@ public class VirtualOrmPersistentAttribute extends AbstractOrmXmlContextNode implements OrmReadOnlyPersistentAttribute2_0 { - protected final JavaResourcePersistentAttribute javaResourceAttribute; + protected final Accessor javaAccessor; /** * This is an "annotated" Java persistent attribute whose state is @@ -89,9 +83,23 @@ public class VirtualOrmPersistentAttribute protected JavaAttributeMapping mapping; // never null - public VirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourcePersistentAttribute javaResourceAttribute) { + public VirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourceField resourceField) { super(parent); - this.javaResourceAttribute = javaResourceAttribute; + this.javaAccessor = new FieldAccessor(this, resourceField); + this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute(); + this.mapping = this.buildMapping(); + } + + public VirtualOrmPersistentAttribute(OrmPersistentType parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) { + super(parent); + this.javaAccessor = new PropertyAccessor(this, resourceGetter, resourceSetter); + this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute(); + this.mapping = this.buildMapping(); + } + + public VirtualOrmPersistentAttribute(OrmPersistentType parent, Accessor javaAccessor) { + super(parent); + this.javaAccessor = javaAccessor; this.annotatedJavaAttribute = this.buildAnnotatedJavaAttribute(); this.mapping = this.buildMapping(); } @@ -157,7 +165,7 @@ public class VirtualOrmPersistentAttribute public JavaPersistentAttribute resolveJavaPersistentAttribute() { JavaPersistentType javaType = this.getOwningPersistentType().getJavaPersistentType(); - return (javaType == null) ? null : javaType.getAttributeFor(this.javaResourceAttribute); + return (javaType == null) ? null : javaType.getAttributeFor(this.getJavaResourceAttribute()); } protected JavaPersistentAttribute2_0 getJavaPersistentAttribute2_0() { @@ -165,7 +173,7 @@ public class VirtualOrmPersistentAttribute } protected JavaPersistentAttribute buildAnnotatedJavaAttribute() { - return this.buildJavaAttribute(this.javaResourceAttribute); + return buildJavaAttribute(this.javaAccessor); } protected JavaPersistentAttribute getUnannotatedJavaAttribute() { @@ -176,21 +184,13 @@ public class VirtualOrmPersistentAttribute } protected JavaPersistentAttribute buildUnannotatedJavaAttribute() { - return this.buildJavaAttribute(this.buildUnannotatedJavaResourceAttribute()); - } - - /** - * Build a Java resource attribute that wraps the original Java resource - * attribute and behaves as though it has no annotations. This will cause - * all the settings in the Java context attribute to default. - */ - protected JavaResourcePersistentAttribute buildUnannotatedJavaResourceAttribute() { - return new UnannotatedJavaResourcePersistentAttribute(this.javaResourceAttribute); + // pass in the orm persistent type as the parent... + return this.javaAccessor.buildUnannotatedJavaAttribute(this.getOwningPersistentType()); } - protected JavaPersistentAttribute buildJavaAttribute(JavaResourcePersistentAttribute jrpa) { + protected JavaPersistentAttribute buildJavaAttribute(Accessor accessor) { // pass in the orm persistent type as the parent... - return this.getJpaFactory().buildJavaPersistentAttribute(this.getOwningPersistentType(), jrpa); + return this.getJpaFactory().buildJavaPersistentAttribute(this.getOwningPersistentType(), accessor); } protected void syncLocalJavaAttributes() { @@ -207,10 +207,21 @@ public class VirtualOrmPersistentAttribute } } - public JavaResourcePersistentAttribute getJavaResourcePersistentAttribute() { - return this.javaResourceAttribute; + public Accessor getJavaAccessor() { + return this.javaAccessor; } + public JavaResourceAttribute getJavaResourceAttribute() { + return this.javaAccessor.getResourceAttribute(); + } + + public boolean isFor(JavaResourceField javaResourceField) { + return this.javaAccessor.isFor(javaResourceField); + } + + public boolean isFor(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return this.javaAccessor.isFor(javaResourceGetter, javaResourceSetter); + } // ********** original Java persistent attribute ********** @@ -367,235 +378,4 @@ public class VirtualOrmPersistentAttribute public void toString(StringBuilder sb) { sb.append(this.getName()); } - - - // ********** unannotated Java resource persistent member ********** - - /** - * Wrap another Java resource member and suppress all its annotations. - */ - protected abstract class UnannotatedJavaResourcePersistentMember - extends SourceNode - implements JavaResourcePersistentMember - { - protected final M member; - - /** - * these are built as needed - */ - protected final HashMap nullAnnotationsCache = new HashMap(); - - - protected UnannotatedJavaResourcePersistentMember(M member) { - super(member.getParent()); - this.member = member; - } - - public void initialize(CompilationUnit astRoot) { - // NOP - } - - public void synchronizeWith(CompilationUnit astRoot) { - // NOP - } - - - // ********** annotations ********** - - public Iterator annotations() { - return EmptyIterator.instance(); - } - - public int annotationsSize() { - return 0; - } - - public Annotation getAnnotation(String annotationName) { - return null; - } - - public synchronized Annotation getNonNullAnnotation(String annotationName) { - Annotation annotation = this.nullAnnotationsCache.get(annotationName); - if (annotation == null) { - annotation = this.buildNullAnnotation(annotationName); - this.nullAnnotationsCache.put(annotationName, annotation); - } - return annotation; - } - - protected abstract Annotation buildNullAnnotation(String annotationName); - - public Iterator annotations(String nestableAnnotationName, String containerAnnotationName) { - return EmptyIterator.instance(); - } - - public Annotation addAnnotation(String annotationName) { - throw new UnsupportedOperationException(); - } - - public NestableAnnotation addAnnotation(int index, String nestableAnnotationName, String containerAnnotationName) { - throw new UnsupportedOperationException(); - } - - public void moveAnnotation(int targetIndex, int sourceIndex, String containerAnnotationName) { - throw new UnsupportedOperationException(); - } - - public void removeAnnotation(String annotationName) { - throw new UnsupportedOperationException(); - } - - public void removeAnnotation(int index, String nestableAnnotationName, String containerAnnotationName) { - throw new UnsupportedOperationException(); - } - - public Annotation setPrimaryAnnotation(String primaryAnnotationName, Iterable supportingAnnotationNames) { - throw new UnsupportedOperationException(); - } - - public void addStandAloneAnnotation(NestableAnnotation standAloneAnnotation) { - throw new UnsupportedOperationException(); - } - - - // ********** persistable ********** - - public boolean isPersistable() { - return this.member.isPersistable(); - } - - - // ********** misc ********** - - public boolean isAnnotated() { - return false; - } - - public boolean isFinal() { - return this.member.isFinal(); - } - - public boolean isFor(String memberName, int occurrence) { - return this.member.isFor(memberName, occurrence); - } - - public TextRange getTextRange(CompilationUnit astRoot) { - // should never be null - return this.member.getTextRange(astRoot); - } - - public TextRange getNameTextRange(CompilationUnit astRoot) { - // should never be null - return this.member.getNameTextRange(astRoot); - } - - public void resolveTypes(CompilationUnit astRoot) { - // NOP - } - } - - - // ********** unannotated Java resource persistent member ********** - - protected class UnannotatedJavaResourcePersistentAttribute - extends UnannotatedJavaResourcePersistentMember - implements JavaResourcePersistentAttribute - { - protected UnannotatedJavaResourcePersistentAttribute(JavaResourcePersistentAttribute attribute){ - super(attribute); - } - - - // ********** annotations ********** - - @Override - public Annotation buildNullAnnotation(String annotationName) { - return (annotationName == null) ? null : this.buildNullAnnotation_(annotationName); - } - - private Annotation buildNullAnnotation_(String annotationName) { - return this.getAnnotationProvider().buildNullAttributeAnnotation(this, annotationName); - } - - - // ********** delegated behavior ********** - - @Override - public JavaResourcePersistentType getParent() { - return this.member.getParent(); - } - - public JavaResourcePersistentType getResourcePersistentType() { - return this.member.getResourcePersistentType(); - } - - public String getName() { - return this.member.getName(); - } - - public boolean isFor(MethodSignature signature, int occurrence) { - return this.member.isFor(signature, occurrence); - } - - public boolean isField() { - return this.member.isField(); - } - - public boolean isProperty() { - return this.member.isProperty(); - } - - public org.eclipse.jpt.jpa.core.resource.java.AccessType getSpecifiedAccess() { - return null; - } - - public boolean typeIsSubTypeOf(String tn) { - return this.member.typeIsSubTypeOf(tn); - } - - public boolean typeIsVariablePrimitive() { - return this.member.typeIsVariablePrimitive(); - } - - public int getModifiers() { - return this.member.getModifiers(); - } - - public String getTypeName() { - return this.member.getTypeName(); - } - - public boolean typeIsInterface() { - return this.member.typeIsInterface(); - } - - public boolean typeIsEnum() { - return this.member.typeIsEnum(); - } - - public ListIterator typeSuperclassNames() { - return this.member.typeSuperclassNames(); - } - - public Iterator typeInterfaceNames() { - return this.member.typeInterfaceNames(); - } - - public ListIterator typeTypeArgumentNames() { - return this.member.typeTypeArgumentNames(); - } - - public int typeTypeArgumentNamesSize() { - return this.member.typeTypeArgumentNamesSize(); - } - - public String getTypeTypeArgumentName(int index) { - return this.member.getTypeTypeArgumentName(index); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getName()); - } - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractJarFileRef.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractJarFileRef.java index 51180c17a1..d38f369ce3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractJarFileRef.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractJarFileRef.java @@ -10,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.context.persistence; import java.util.List; - import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; @@ -31,7 +31,6 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceStructureNodes; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; 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.JavaResourcePackageFragmentRoot; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; import org.eclipse.text.edits.ReplaceEdit; import org.eclipse.wst.common.componentcore.ComponentCore; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java index 9dac1cf5ab..5613b13932 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java @@ -16,11 +16,9 @@ import java.util.HashMap; 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.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.runtime.CoreException; @@ -28,6 +26,7 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; import org.eclipse.jpt.common.core.utility.BodySourceWriter; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.CollectionTools; @@ -38,15 +37,13 @@ import org.eclipse.jpt.common.utility.internal.Tools; import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.common.utility.internal.iterables.CompositeListIterable; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; 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.LiveCloneIterable; 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.EmptyListIterator; -import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; @@ -83,7 +80,6 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitProperties; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; import org.eclipse.jpt.jpa.core.context.persistence.PersistentTypeContainer; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; 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.JpaFactory2_0; @@ -94,8 +90,6 @@ import org.eclipse.jpt.jpa.core.jpa2.context.PersistentType2_0; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.ValidationMode; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.JavaResourcePersistentType2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.persistence.PersistenceFactory; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJavaClassRef; @@ -133,21 +127,16 @@ public abstract class AbstractPersistenceUnit protected String jtaDataSource; protected String nonJtaDataSource; - protected final Vector specifiedMappingFileRefs = new Vector(); - protected final SpecifiedMappingFileRefContainerAdapter specifiedMappingFileRefContainerAdapter = new SpecifiedMappingFileRefContainerAdapter(); + protected final ContextListContainer specifiedMappingFileRefContainer; protected MappingFileRef impliedMappingFileRef; - protected final Vector jarFileRefs = new Vector(); - protected final JarFileRefContainerAdapter jarFileRefContainerAdapter = new JarFileRefContainerAdapter(); + protected final ContextListContainer jarFileRefContainer; - protected final Vector specifiedClassRefs = new Vector(); - protected final SpecifiedClassRefContainerAdapter specifiedClassRefContainerAdapter = new SpecifiedClassRefContainerAdapter(); + protected final ContextListContainer specifiedClassRefContainer; - protected final Set impliedClassRefs = Collections.synchronizedSet(new HashSet()); - protected final ImpliedClassRefContainerAdapter impliedClassRefContainerAdapter = new ImpliedClassRefContainerAdapter(); + protected final ContextCollectionContainer impliedClassRefContainer; - protected final Vector properties = new Vector(); - protected final PropertyContainerAdapter propertyContainerAdapter = new PropertyContainerAdapter(); + protected final ContextListContainer propertyContainer; /* global generator definitions, defined elsewhere in model */ protected final Vector generators = new Vector(); @@ -193,11 +182,13 @@ public abstract class AbstractPersistenceUnit this.nonJtaDataSource = xmlPersistenceUnit.getNonJtaDataSource(); // initialize the properties early because other things will need them...(?) + this.propertyContainer = this.buildPropertyContainer(); this.initializeProperties(); - this.initializeSpecifiedMappingFileRefs(); - this.initializeJarFileRefs(); - this.initializeSpecifiedClassRefs(); + this.specifiedMappingFileRefContainer = this.buildSpecifiedMappingFileRefContainer(); + this.jarFileRefContainer = this.buildJarFileRefContainer(); + this.specifiedClassRefContainer = this.buildSpecifiedClassRefContainer(); + this.impliedClassRefContainer = this.buildImpliedClassRefContainer(); this.specifiedSharedCacheMode = this.buildSpecifiedSharedCacheMode(); this.specifiedValidationMode = this.buildSpecifiedValidationMode(); @@ -243,18 +234,18 @@ public abstract class AbstractPersistenceUnit // update specified class refs before mapping file refs because of // JpaFile root structure nodes - we want the mapping file to "win", // as it would in a JPA runtime implementation - this.updateNodes(this.getSpecifiedClassRefs()); + this.updateSpecifiedClassRefs(); - this.updateNodes(this.getSpecifiedMappingFileRefs()); + this.updateSpecifiedMappingFileRefs(); this.updateImpliedMappingFileRef(); - this.updateNodes(this.getJarFileRefs()); + this.updateJarFileRefs(); // update the implied class refs after all the other types, both // specified here and specified in the mapping files, are in place this.updateImpliedClassRefs(); - this.updateNodes(this.getProperties()); + this.updateProperties(); this.updatePersistenceUnitMetadata(); @@ -444,12 +435,8 @@ public abstract class AbstractPersistenceUnit // ********** mapping file refs ********** - public ListIterator mappingFileRefs() { - return this.getMappingFileRefs().iterator(); - } - - protected Iterator mappingFileRefNames() { - return new TransformationIterator(this.mappingFileRefs()) { + protected Iterable getMappingFileRefNames() { + return new TransformationIterable(this.getMappingFileRefs()) { @Override protected String transform(MappingFileRef mappingFileRef) { return mappingFileRef.getFileName(); @@ -457,16 +444,12 @@ public abstract class AbstractPersistenceUnit }; } - protected ListIterable getMappingFileRefs() { + public ListIterable getMappingFileRefs() { return (this.impliedMappingFileRef == null) ? this.getSpecifiedMappingFileRefs() : this.getCombinedMappingFileRefs(); } - protected ListIterator combinedMappingFileRefs() { - return this.getCombinedMappingFileRefs().iterator(); - } - protected ListIterable getCombinedMappingFileRefs() { return new CompositeListIterable( this.getSpecifiedMappingFileRefs(), @@ -474,18 +457,18 @@ public abstract class AbstractPersistenceUnit ); } - public int mappingFileRefsSize() { + public int getMappingFileRefsSize() { return (this.impliedMappingFileRef == null) ? - this.specifiedMappingFileRefsSize() : - this.combinedMappingFileRefsSize(); + this.getSpecifiedMappingFileRefsSize() : + this.getCombinedMappingFileRefsSize(); } - protected int combinedMappingFileRefsSize() { - return this.specifiedMappingFileRefsSize() + 1; + protected int getCombinedMappingFileRefsSize() { + return this.getSpecifiedMappingFileRefsSize() + 1; } - public Iterator mappingFileRefsContaining(final String typeName) { - return new FilteringIterator (this.mappingFileRefs()) { + public Iterable getMappingFileRefsContaining(final String typeName) { + return new FilteringIterable (this.getMappingFileRefs()) { @Override protected boolean accept(MappingFileRef mappingFileRef) { return mappingFileRef.getPersistentType(typeName) != null; @@ -496,25 +479,21 @@ public abstract class AbstractPersistenceUnit // ********** specified mapping file refs ********** - public ListIterator specifiedMappingFileRefs() { - return this.getSpecifiedMappingFileRefs().iterator(); + public ListIterable getSpecifiedMappingFileRefs() { + return this.specifiedMappingFileRefContainer.getContextElements(); } - protected ListIterable getSpecifiedMappingFileRefs() { - return new LiveCloneListIterable(this.specifiedMappingFileRefs); - } - - public int specifiedMappingFileRefsSize() { - return this.specifiedMappingFileRefs.size(); + public int getSpecifiedMappingFileRefsSize() { + return this.specifiedMappingFileRefContainer.getContextElementsSize(); } public MappingFileRef addSpecifiedMappingFileRef(String fileName) { - return this.addSpecifiedMappingFileRef(this.specifiedMappingFileRefs.size(), fileName); + return this.addSpecifiedMappingFileRef(this.getSpecifiedMappingFileRefsSize(), fileName); } public MappingFileRef addSpecifiedMappingFileRef(int index, String fileName) { XmlMappingFileRef xmlMappingFileRef = this.buildXmlMappingFileRef(fileName); - MappingFileRef mappingFileRef = this.addSpecifiedMappingFileRef_(index, xmlMappingFileRef); + MappingFileRef mappingFileRef = this.specifiedMappingFileRefContainer.addContextElement(index, xmlMappingFileRef); this.xmlPersistenceUnit.getMappingFiles().add(index, xmlMappingFileRef); return mappingFileRef; } @@ -530,7 +509,7 @@ public abstract class AbstractPersistenceUnit } public void removeSpecifiedMappingFileRef(MappingFileRef mappingFileRef) { - this.removeSpecifiedMappingFileRef(this.specifiedMappingFileRefs.indexOf(mappingFileRef)); + this.removeSpecifiedMappingFileRef(this.specifiedMappingFileRefContainer.indexOfContextElement(mappingFileRef)); } public void removeSpecifiedMappingFileRef(int index) { @@ -542,62 +521,48 @@ public abstract class AbstractPersistenceUnit * dispose the mapping file ref */ protected void removeSpecifiedMappingFileRef_(int index) { - this.removeItemFromList(index, this.specifiedMappingFileRefs, SPECIFIED_MAPPING_FILE_REFS_LIST).dispose(); - } - - protected void initializeSpecifiedMappingFileRefs() { - for (XmlMappingFileRef xmlMappingFileRef : this.getXmlMappingFileRefs()) { - this.specifiedMappingFileRefs.add(this.buildSpecifiedMappingFileRef(xmlMappingFileRef)); - } + this.specifiedMappingFileRefContainer.removeContextElement(index).dispose(); } protected void syncSpecifiedMappingFileRefs() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedMappingFileRefContainerAdapter); + this.specifiedMappingFileRefContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlMappingFileRefs() { - // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlPersistenceUnit.getMappingFiles()); + protected void updateSpecifiedMappingFileRefs() { + this.specifiedMappingFileRefContainer.update(); } - protected void moveSpecifiedMappingFileRef_(int index, MappingFileRef mappingFileRef) { - this.moveItemInList(index, mappingFileRef, this.specifiedMappingFileRefs, SPECIFIED_MAPPING_FILE_REFS_LIST); - } - - protected MappingFileRef addSpecifiedMappingFileRef_(int index, XmlMappingFileRef xmlMappingFileRef) { - MappingFileRef mappingFileRef = this.buildSpecifiedMappingFileRef(xmlMappingFileRef); - this.addItemToList(index, mappingFileRef, this.specifiedMappingFileRefs, SPECIFIED_MAPPING_FILE_REFS_LIST); - return mappingFileRef; + protected ListIterable getXmlMappingFileRefs() { + // clone to reduce chance of concurrency problems + return new LiveCloneListIterable(this.xmlPersistenceUnit.getMappingFiles()); } - protected void removeSpecifiedMappingFileRef_(MappingFileRef mappingFileRef) { - this.removeSpecifiedMappingFileRef_(this.specifiedMappingFileRefs.indexOf(mappingFileRef)); + protected ContextListContainer buildSpecifiedMappingFileRefContainer() { + return new SpecifiedMappingFileRefContainer(); } /** - * specified mapping file ref container adapter + * specified mapping file ref container */ - protected class SpecifiedMappingFileRefContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedMappingFileRefContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractPersistenceUnit.this.getSpecifiedMappingFileRefs(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_MAPPING_FILE_REFS_LIST; + } + @Override + protected MappingFileRef buildContextElement(XmlMappingFileRef resourceElement) { + return AbstractPersistenceUnit.this.buildSpecifiedMappingFileRef(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractPersistenceUnit.this.getXmlMappingFileRefs(); } - public XmlMappingFileRef getResourceElement(MappingFileRef contextElement) { + @Override + protected XmlMappingFileRef getResourceElement(MappingFileRef contextElement) { return contextElement.getXmlMappingFileRef(); } - public void moveContextElement(int index, MappingFileRef element) { - AbstractPersistenceUnit.this.moveSpecifiedMappingFileRef_(index, element); - } - public void addContextElement(int index, XmlMappingFileRef resourceElement) { - AbstractPersistenceUnit.this.addSpecifiedMappingFileRef_(index, resourceElement); - } - public void removeContextElement(MappingFileRef element) { - AbstractPersistenceUnit.this.removeSpecifiedMappingFileRef_(element); - } } @@ -678,16 +643,12 @@ public abstract class AbstractPersistenceUnit // ********** JAR file refs ********** - public ListIterator jarFileRefs() { - return this.getJarFileRefs().iterator(); - } - - protected ListIterable getJarFileRefs() { - return new LiveCloneListIterable(this.jarFileRefs); + public ListIterable getJarFileRefs() { + return this.jarFileRefContainer.getContextElements(); } - public int jarFileRefsSize() { - return this.jarFileRefs.size(); + public int getJarFileRefsSize() { + return this.jarFileRefContainer.getContextElementsSize(); } protected Iterable getJarFileNames() { @@ -700,12 +661,12 @@ public abstract class AbstractPersistenceUnit } public JarFileRef addJarFileRef(String fileName) { - return this.addJarFileRef(this.jarFileRefs.size(), fileName); + return this.addJarFileRef(this.getJarFileRefsSize(), fileName); } public JarFileRef addJarFileRef(int index, String fileName) { XmlJarFileRef xmlJarFileRef = this.buildXmlJarFileRef(fileName); - JarFileRef jarFileRef = this.addJarFileRef_(index, xmlJarFileRef); + JarFileRef jarFileRef = this.jarFileRefContainer.addContextElement(index, xmlJarFileRef); this.xmlPersistenceUnit.getJarFiles().add(index, xmlJarFileRef); return jarFileRef; } @@ -721,7 +682,7 @@ public abstract class AbstractPersistenceUnit } public void removeJarFileRef(JarFileRef jarFileRef) { - this.removeJarFileRef(this.jarFileRefs.indexOf(jarFileRef)); + this.removeJarFileRef(this.jarFileRefContainer.indexOfContextElement(jarFileRef)); } public void removeJarFileRef(int index) { @@ -733,81 +694,62 @@ public abstract class AbstractPersistenceUnit * dispose the JAR file ref */ protected void removeJarFileRef_(int index) { - this.removeItemFromList(index, this.jarFileRefs, JAR_FILE_REFS_LIST).dispose(); - } - - protected void initializeJarFileRefs() { - for (XmlJarFileRef xmlJarFileRef : this.getXmlJarFileRefs()) { - this.jarFileRefs.add(this.buildJarFileRef(xmlJarFileRef)); - } + this.jarFileRefContainer.removeContextElement(index).dispose(); } protected void syncJarFileRefs() { - ContextContainerTools.synchronizeWithResourceModel(this.jarFileRefContainerAdapter); - } - - protected Iterable getXmlJarFileRefs() { - // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlPersistenceUnit.getJarFiles()); + this.jarFileRefContainer.synchronizeWithResourceModel(); } - protected void moveJarFileRef_(int index, JarFileRef jarFileRef) { - this.moveItemInList(index, jarFileRef, this.jarFileRefs, JAR_FILE_REFS_LIST); + protected void updateJarFileRefs() { + this.jarFileRefContainer.update(); } - protected JarFileRef addJarFileRef_(int index, XmlJarFileRef xmlJarFileRef) { - JarFileRef jarFileRef = this.buildJarFileRef(xmlJarFileRef); - this.addItemToList(index, jarFileRef, this.jarFileRefs, JAR_FILE_REFS_LIST); - return jarFileRef; + protected ListIterable getXmlJarFileRefs() { + // clone to reduce chance of concurrency problems + return new LiveCloneListIterable(this.xmlPersistenceUnit.getJarFiles()); } - protected void removeJarFileRef_(JarFileRef jarFileRef) { - this.removeJarFileRef_(this.jarFileRefs.indexOf(jarFileRef)); + protected ContextListContainer buildJarFileRefContainer() { + return new JarFileRefContainer(); } /** - * JAR file ref container adapter + * JAR file ref container */ - protected class JarFileRefContainerAdapter - implements ContextContainerTools.Adapter + protected class JarFileRefContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractPersistenceUnit.this.getJarFileRefs(); + @Override + protected String getContextElementsPropertyName() { + return JAR_FILE_REFS_LIST; + } + @Override + protected JarFileRef buildContextElement(XmlJarFileRef resourceElement) { + return AbstractPersistenceUnit.this.buildJarFileRef(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractPersistenceUnit.this.getXmlJarFileRefs(); } - public XmlJarFileRef getResourceElement(JarFileRef contextElement) { + @Override + protected XmlJarFileRef getResourceElement(JarFileRef contextElement) { return contextElement.getXmlJarFileRef(); } - public void moveContextElement(int index, JarFileRef element) { - AbstractPersistenceUnit.this.moveJarFileRef_(index, element); - } - public void addContextElement(int index, XmlJarFileRef resourceElement) { - AbstractPersistenceUnit.this.addJarFileRef_(index, resourceElement); - } - public void removeContextElement(JarFileRef element) { - AbstractPersistenceUnit.this.removeJarFileRef_(element); - } } - // ********** class refs ********** - public Iterator classRefs() { - return this.getClassRefs().iterator(); - } - @SuppressWarnings("unchecked") - protected Iterable getClassRefs() { + public Iterable getClassRefs() { return new CompositeIterable( this.getSpecifiedClassRefs(), this.getImpliedClassRefs() ); } - public int classRefsSize() { - return this.specifiedClassRefs.size() + this.impliedClassRefs.size(); + public int getClassRefsSize() { + return this.getSpecifiedClassRefsSize() + this.getImpliedClassRefsSize(); } /** @@ -825,25 +767,21 @@ public abstract class AbstractPersistenceUnit // ********** specified class refs ********** - public ListIterator specifiedClassRefs() { - return this.getSpecifiedClassRefs().iterator(); - } - - protected ListIterable getSpecifiedClassRefs() { - return new LiveCloneListIterable(this.specifiedClassRefs); + public ListIterable getSpecifiedClassRefs() { + return this.specifiedClassRefContainer.getContextElements(); } - public int specifiedClassRefsSize() { - return this.specifiedClassRefs.size(); + public int getSpecifiedClassRefsSize() { + return this.specifiedClassRefContainer.getContextElementsSize(); } public ClassRef addSpecifiedClassRef(String className) { - return this.addSpecifiedClassRef(this.specifiedClassRefs.size(), className); + return this.addSpecifiedClassRef(this.getSpecifiedClassRefsSize(), className); } public ClassRef addSpecifiedClassRef(int index, String className) { XmlJavaClassRef xmlClassRef = this.buildXmlJavaClassRef(className); - ClassRef classRef = this.addSpecifiedClassRef_(index, xmlClassRef); + ClassRef classRef = this.specifiedClassRefContainer.addContextElement(index, xmlClassRef); this.xmlPersistenceUnit.getClasses().add(index, xmlClassRef); return classRef; } @@ -859,7 +797,7 @@ public abstract class AbstractPersistenceUnit } public void removeSpecifiedClassRef(ClassRef classRef) { - this.removeSpecifiedClassRef(this.specifiedClassRefs.indexOf(classRef)); + this.removeSpecifiedClassRef(this.specifiedClassRefContainer.indexOfContextElement(classRef)); } public void removeSpecifiedClassRef(int index) { @@ -871,97 +809,71 @@ public abstract class AbstractPersistenceUnit * dispose the class ref */ protected void removeSpecifiedClassRef_(int index) { - this.removeItemFromList(index, this.specifiedClassRefs, SPECIFIED_CLASS_REFS_LIST).dispose(); - } - - protected void initializeSpecifiedClassRefs() { - for (XmlJavaClassRef xmlJavaClassRef : this.getXmlClassRefs()) { - this.specifiedClassRefs.add(this.buildClassRef(xmlJavaClassRef)); - } + this.specifiedClassRefContainer.removeContextElement(index).dispose(); } protected void syncSpecifiedClassRefs() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedClassRefContainerAdapter); - } - - protected Iterable getXmlClassRefs() { - // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlPersistenceUnit.getClasses()); + this.specifiedClassRefContainer.synchronizeWithResourceModel(); } - protected void moveSpecifiedClassRef_(int index, ClassRef classRef) { - this.moveItemInList(index, classRef, this.specifiedClassRefs, SPECIFIED_CLASS_REFS_LIST); + protected void updateSpecifiedClassRefs() { + this.specifiedClassRefContainer.update(); } - protected ClassRef addSpecifiedClassRef_(int index, XmlJavaClassRef xmlClassRef) { - ClassRef classRef = this.buildClassRef(xmlClassRef); - this.addItemToList(index, classRef, this.specifiedClassRefs, SPECIFIED_CLASS_REFS_LIST); - return classRef; + protected ListIterable getXmlClassRefs() { + // clone to reduce chance of concurrency problems + return new LiveCloneListIterable(this.xmlPersistenceUnit.getClasses()); } - protected void removeSpecifiedClassRef_(ClassRef classRef) { - this.removeSpecifiedClassRef_(this.specifiedClassRefs.indexOf(classRef)); + protected ContextListContainer buildSpecifiedClassRefContainer() { + return new SpecifiedClassRefContainer(); } /** - * specified class ref container adapter + * specified class ref container */ - protected class SpecifiedClassRefContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedClassRefContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractPersistenceUnit.this.getSpecifiedClassRefs(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_CLASS_REFS_LIST; + } + @Override + protected ClassRef buildContextElement(XmlJavaClassRef resourceElement) { + return AbstractPersistenceUnit.this.buildClassRef(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractPersistenceUnit.this.getXmlClassRefs(); } - public XmlJavaClassRef getResourceElement(ClassRef contextElement) { + @Override + protected XmlJavaClassRef getResourceElement(ClassRef contextElement) { return contextElement.getXmlClassRef(); } - public void moveContextElement(int index, ClassRef element) { - AbstractPersistenceUnit.this.moveSpecifiedClassRef_(index, element); - } - public void addContextElement(int index, XmlJavaClassRef resourceElement) { - AbstractPersistenceUnit.this.addSpecifiedClassRef_(index, resourceElement); - } - public void removeContextElement(ClassRef element) { - AbstractPersistenceUnit.this.removeSpecifiedClassRef_(element); - } } // ********** virtual class refs ********** - public Iterator impliedClassRefs() { - return this.getImpliedClassRefs().iterator(); - } - - protected Iterable getImpliedClassRefs() { - return new LiveCloneIterable(this.impliedClassRefs); + public Iterable getImpliedClassRefs() { + return this.impliedClassRefContainer.getContextElements(); } - public int impliedClassRefsSize() { - return this.impliedClassRefs.size(); + public int getImpliedClassRefsSize() { + return this.impliedClassRefContainer.getContextElementsSize(); } protected ClassRef addImpliedClassRef(String className) { - ClassRef classRef = this.buildClassRef(className); - this.addItemToCollection(classRef, this.impliedClassRefs, IMPLIED_CLASS_REFS_COLLECTION); - return classRef; + return this.impliedClassRefContainer.addContextElement(getImpliedClassRefsSize(), className); } protected ClassRef buildClassRef(String className) { return this.getContextNodeFactory().buildClassRef(this, className); } - protected void removeImpliedClassRef(ClassRef classRef) { - this.impliedClassRefs.remove(classRef); - classRef.dispose(); - this.fireItemRemoved(IMPLIED_CLASS_REFS_COLLECTION, classRef); - } - protected void updateImpliedClassRefs() { - ContextContainerTools.update(this.impliedClassRefContainerAdapter); + this.impliedClassRefContainer.update(); } protected Iterable getImpliedClassNames() { @@ -984,6 +896,10 @@ public abstract class AbstractPersistenceUnit }; } + protected ContextCollectionContainer buildImpliedClassRefContainer() { + return new ImpliedClassRefContainer(); + } + /** * Virtual class ref container adapter. *

@@ -1008,27 +924,29 @@ public abstract class AbstractPersistenceUnit * setting whether the persistence unit excludes unlisted classes); o the * collection must also be synchronized during update. */ - protected class ImpliedClassRefContainerAdapter - implements ContextContainerTools.Adapter + protected class ImpliedClassRefContainer + extends ContextCollectionContainer { - public Iterable getContextElements() { - return AbstractPersistenceUnit.this.getImpliedClassRefs(); + @Override + protected String getContextElementsPropertyName() { + return IMPLIED_CLASS_REFS_COLLECTION; } - public Iterable getResourceElements() { + @Override + protected ClassRef buildContextElement(String resourceElement) { + return AbstractPersistenceUnit.this.buildClassRef(resourceElement); + } + @Override + protected Iterable getResourceElements() { return AbstractPersistenceUnit.this.getImpliedClassNames(); } - public String getResourceElement(ClassRef contextElement) { + @Override + protected String getResourceElement(ClassRef contextElement) { return contextElement.getClassName(); } - public void moveContextElement(int index, ClassRef element) { - // ignore moves - we don't care about the order of the implied class refs - } - public void addContextElement(int index, String resourceElement) { - // ignore the index - we don't care about the order of the implied class refs - AbstractPersistenceUnit.this.addImpliedClassRef(resourceElement); - } + @Override public void removeContextElement(ClassRef element) { - AbstractPersistenceUnit.this.removeImpliedClassRef(element); + super.removeContextElement(element); + element.dispose(); } } @@ -1061,16 +979,12 @@ public abstract class AbstractPersistenceUnit // ********** properties ********** - public ListIterator properties() { - return this.getProperties().iterator(); - } - - protected ListIterable getProperties() { - return new LiveCloneListIterable(this.properties); + public ListIterable getProperties() { + return this.propertyContainer.getContextElements(); } - public int propertiesSize() { - return this.properties.size(); + public int getPropertiesSize() { + return this.propertyContainer.getContextElementsSize(); } public Property getProperty(String propertyName) { @@ -1097,11 +1011,11 @@ public abstract class AbstractPersistenceUnit }; } - public Iterator propertiesWithNamePrefix(final String propertyNamePrefix) { + public Iterable getPropertiesWithNamePrefix(final String propertyNamePrefix) { if (propertyNamePrefix == null) { throw new NullPointerException(); } - return new FilteringIterator(this.properties()) { + return new FilteringIterable(this.getProperties()) { @Override protected boolean accept(Property property) { String pName = property.getName(); @@ -1111,7 +1025,7 @@ public abstract class AbstractPersistenceUnit } public Property addProperty() { - return this.addProperty(this.properties.size()); + return this.addProperty(this.getPropertiesSize()); } public Property addProperty(int index) { @@ -1177,17 +1091,16 @@ public abstract class AbstractPersistenceUnit } public void removeProperty(Property property) { - this.removeProperty(this.properties.indexOf(property)); + this.removeProperty(this.propertyContainer.indexOfContextElement(property)); } public void removeProperty(String propertyName) { if (propertyName == null) { throw new NullPointerException(); } - for (ListIterator stream = this.properties.listIterator(); stream.hasNext(); ) { - Property property = stream.next(); + for (Property property : this.getProperties()) { if (propertyName.equals(property.getName())) { - this.removeProperty(stream.previousIndex()); + this.removeProperty(property); return; } } @@ -1198,10 +1111,9 @@ public abstract class AbstractPersistenceUnit if ((propertyName == null) || (value == null)) { throw new NullPointerException(); } - for (ListIterator stream = this.properties.listIterator(); stream.hasNext(); ) { - Property property = stream.next(); + for (Property property : this.getProperties()) { if (propertyName.equals(property.getName()) && value.equals(property.getValue())) { - this.removeProperty(stream.previousIndex()); + this.removeProperty(property); return; } } @@ -1209,14 +1121,13 @@ public abstract class AbstractPersistenceUnit } protected void removeProperty(int index) { - Property removedProperty = this.properties.remove(index); + Property removedProperty = this.propertyContainer.removeContextElement(index); this.xmlPersistenceUnit.getProperties().getProperties().remove(index); if (this.xmlPersistenceUnit.getProperties().getProperties().isEmpty()) { this.xmlPersistenceUnit.setProperties(null); } - this.fireItemRemoved(PROPERTIES_LIST, index, removedProperty); if (removedProperty.getName() != null) { this.propertyRemoved(removedProperty.getName()); } @@ -1250,32 +1161,28 @@ public abstract class AbstractPersistenceUnit } protected void initializeProperties() { - for (XmlProperty xmlProperty : this.getXmlProperties()) { - this.properties.add(this.buildProperty(xmlProperty)); - } this.connection = this.getContextNodeFactory().buildConnection(this); this.options = this.getContextNodeFactory().buildOptions(this); } protected void syncProperties() { - ContextContainerTools.synchronizeWithResourceModel(this.propertyContainerAdapter); + this.propertyContainer.synchronizeWithResourceModel(); + } + + protected void updateProperties() { + this.propertyContainer.update(); } - protected Iterable getXmlProperties() { + protected ListIterable getXmlProperties() { XmlProperties xmlProperties = this.xmlPersistenceUnit.getProperties(); // clone to reduce chance of concurrency problems return (xmlProperties == null) ? - EmptyIterable.instance() : - new LiveCloneIterable(xmlProperties.getProperties()); - } - - protected void moveProperty_(int index, Property property) { - this.moveItemInList(index, this.properties.indexOf(property), this.properties, PROPERTIES_LIST); + EmptyListIterable.instance() : + new LiveCloneListIterable(xmlProperties.getProperties()); } protected Property addProperty_(int index, XmlProperty xmlProperty) { - Property property = this.buildProperty(xmlProperty); - this.addItemToList(index, property, this.properties, PROPERTIES_LIST); + Property property = this.propertyContainer.addContextElement(index, xmlProperty); if (property.getName() != null) { this.propertyAdded(property.getName(), property.getValue()); } @@ -1283,39 +1190,40 @@ public abstract class AbstractPersistenceUnit } protected void removeProperty_(Property property) { - this.removeItemFromList(property, this.properties, PROPERTIES_LIST); + this.propertyContainer.removeContextElement(property); if (property.getName() != null) { this.propertyRemoved(property.getName()); } } + protected ContextListContainer buildPropertyContainer() { + return new PropertyContainer(); + } + /** - * property container adapter + * property container */ - protected class PropertyContainerAdapter - implements ContextContainerTools.Adapter + protected class PropertyContainer + extends ContextListContainer { - public Iterable getContextElements() { - return AbstractPersistenceUnit.this.getProperties(); + @Override + protected String getContextElementsPropertyName() { + return PROPERTIES_LIST; + } + @Override + protected Property buildContextElement(XmlProperty resourceElement) { + return AbstractPersistenceUnit.this.buildProperty(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return AbstractPersistenceUnit.this.getXmlProperties(); } - public XmlProperty getResourceElement(Property contextElement) { + @Override + protected XmlProperty getResourceElement(Property contextElement) { return contextElement.getXmlProperty(); } - public void moveContextElement(int index, Property element) { - AbstractPersistenceUnit.this.moveProperty_(index, element); - } - public void addContextElement(int index, XmlProperty resourceElement) { - AbstractPersistenceUnit.this.addProperty_(index, resourceElement); - } - public void removeContextElement(Property element) { - AbstractPersistenceUnit.this.removeProperty_(element); - } } - // ********** mapping file (orm.xml) persistence unit metadata & defaults ********** public boolean isXmlMappingMetadataComplete() { @@ -1536,22 +1444,14 @@ public abstract class AbstractPersistenceUnit // ********** generators ********** - public Iterator generators() { - return this.getGenerators().iterator(); - } - - protected Iterable getGenerators() { + public Iterable getGenerators() { return new LiveCloneIterable(this.generators); } - public int generatorsSize() { + public int getGeneratorsSize() { return this.generators.size(); } - public void addGenerator(Generator generator) { - this.generators.add(generator); - } - public Iterable getUniqueGeneratorNames() { HashSet names = new HashSet(this.generators.size()); this.addNonEmptyGeneratorNamesTo(names); @@ -1636,7 +1536,7 @@ public abstract class AbstractPersistenceUnit if (typeMapping instanceof Entity) { this.addGeneratorsTo(((Entity) typeMapping).getGeneratorContainer(), generatorList); } - for (ReadOnlyPersistentAttribute persistentAttribute : CollectionTools.iterable(persistentType.attributes())) { + for (ReadOnlyPersistentAttribute persistentAttribute : persistentType.getAttributes()) { AttributeMapping attributeMapping = persistentAttribute.getMapping(); if (attributeMapping instanceof IdMapping) { this.addGeneratorsTo(((IdMapping) attributeMapping).getGeneratorContainer(), generatorList); @@ -1673,15 +1573,11 @@ public abstract class AbstractPersistenceUnit // ********** queries ********** - public Iterator queries() { - return this.getQueries().iterator(); - } - - protected Iterable getQueries() { + public Iterable getQueries() { return new LiveCloneIterable(this.queries); } - public int queriesSize() { + public int getQueriesSize() { return this.queries.size(); } @@ -1776,8 +1672,8 @@ public abstract class AbstractPersistenceUnit } protected void addQueriesTo(QueryContainer queryContainer, ArrayList queryList) { - CollectionTools.addAll(queryList, queryContainer.namedQueries()); - CollectionTools.addAll(queryList, queryContainer.namedNativeQueries()); + CollectionTools.addAll(queryList, queryContainer.getNamedQueries()); + CollectionTools.addAll(queryList, queryContainer.getNamedNativeQueries()); } protected HashMap> mapQueriesByName(Iterable queryList) { @@ -2245,7 +2141,7 @@ public abstract class AbstractPersistenceUnit } protected void checkForDuplicateMappingFiles(List messages) { - HashBag fileNames = CollectionTools.bag(this.mappingFileRefNames()); + HashBag fileNames = CollectionTools.bag(this.getMappingFileRefNames()); for (MappingFileRef mappingFileRef : this.getMappingFileRefs()) { String fileName = mappingFileRef.getFileName(); if (fileNames.count(fileName) > 1) { @@ -2652,15 +2548,15 @@ public abstract class AbstractPersistenceUnit } protected Iterable getGeneratedMetamodelFiles() { - return new TransformationIterable(this.getGeneratedMetamodelTopLevelTypes()) { + return new TransformationIterable(this.getGeneratedMetamodelTopLevelTypes()) { @Override - protected IFile transform(JavaResourcePersistentType2_0 jrpt) { + protected IFile transform(JavaResourceAbstractType jrpt) { return jrpt.getFile(); } }; } - protected Iterable getGeneratedMetamodelTopLevelTypes() { + protected Iterable getGeneratedMetamodelTopLevelTypes() { return ((JpaProject2_0) this.getJpaProject()).getGeneratedMetamodelTopLevelTypes(); } @@ -2707,9 +2603,9 @@ public abstract class AbstractPersistenceUnit break; // stop - this will be processed in the outer 'for' loop } // check for a Java resource persistent type - JavaResourcePersistentType jrpt = this.getJpaProject().getJavaResourcePersistentType(memberTypeName); - if (jrpt != null) { - declaringTypeName = jrpt.getDeclaringTypeName(); + JavaResourceAbstractType jrat = this.getJpaProject().getJavaResourceType(memberTypeName); + if (jrat != null) { + declaringTypeName = jrat.getDeclaringTypeName(); } else { // check for a JDT type IType jdtType = this.findJdtType(memberTypeName); @@ -2855,8 +2751,8 @@ public abstract class AbstractPersistenceUnit return null; } - public ListIterator attributes() { - return EmptyListIterator.instance(); + public ListIterable getAttributes() { + return EmptyListIterable.instance(); } public IFile getMetamodelFile() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceXmlContextNodeFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceXmlContextNodeFactory.java index d0f241c83e..46e333c58d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceXmlContextNodeFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceXmlContextNodeFactory.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,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.context.persistence; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.core.context.java.JarFile; import org.eclipse.jpt.jpa.core.context.persistence.ClassRef; @@ -26,7 +27,6 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence.GenericPersist import org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence.GenericPersistenceUnit; import org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence.GenericPersistenceUnitProperty; import org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence.ImpliedMappingFileRef; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePackageFragmentRoot; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJarFileRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJavaClassRef; import org.eclipse.jpt.jpa.core.resource.persistence.XmlMappingFileRef; 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 b3f6f76fbb..3cf01eabc4 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 @@ -12,7 +12,6 @@ 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.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; import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; @@ -24,19 +23,15 @@ public abstract class AbstractPersistentAttributeValidator { protected ReadOnlyPersistentAttribute persistentAttribute; - protected JavaPersistentAttribute javaPersistentAttribute; - protected PersistentAttributeTextRangeResolver textRangeResolver; protected AbstractPersistentAttributeValidator( - ReadOnlyPersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) { + ReadOnlyPersistentAttribute persistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) { this.persistentAttribute = persistentAttribute; - this.javaPersistentAttribute = javaPersistentAttribute; this.textRangeResolver = textRangeResolver; } - public final boolean validate(List messages, IReporter reporter) { if (this.persistentAttribute.getMappingKey() != MappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) { this.validateMappedAttribute(messages); 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 093825f005..e2dfa83259 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 @@ -171,7 +171,7 @@ public abstract class AbstractPrimaryKeyValidator } for (JavaPersistentAttribute idClassAttribute : new SubIterableWrapper( - CollectionTools.iterable(idClass.allAttributes()))) { + idClass.getAllAttributes())) { boolean foundMatch = false; for (AttributeMapping attributeMapping : getAttributeMappings(typeMapping())) { if (idClassAttribute.getName().equals(attributeMapping.getName())) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTypeMappingValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTypeMappingValidator.java index 88498168b8..c38baf9152 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTypeMappingValidator.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/AbstractTypeMappingValidator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. + * 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 @@ -11,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context; import java.util.List; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.TypeMapping; import org.eclipse.jpt.jpa.core.internal.context.JptValidator; import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTextRangeResolver; import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -24,15 +24,15 @@ public abstract class AbstractTypeMappingValidator { protected T typeMapping; - protected JavaResourcePersistentType jrpt; + protected JavaResourceType jrt; protected TypeMappingTextRangeResolver textRangeResolver; protected AbstractTypeMappingValidator( - T typeMapping, JavaResourcePersistentType jrpt, TypeMappingTextRangeResolver textRangeResolver) { + T typeMapping, JavaResourceType jrt, TypeMappingTextRangeResolver textRangeResolver) { this.typeMapping = typeMapping; - this.jrpt = jrpt; + this.jrt = jrt; this.textRangeResolver = textRangeResolver; } @@ -45,38 +45,38 @@ public abstract class AbstractTypeMappingValidator protected abstract void validateType(List messages); protected boolean isMemberType() { - if (this.jrpt == null) { + if (this.jrt == null) { return false; } - return this.jrpt.isMemberType(); + return this.jrt.isMemberType(); } protected boolean isStaticType() { - if (this.jrpt == null) { + if (this.jrt == null) { return false; } - return this.jrpt.isStatic(); + return this.jrt.isStatic(); } protected boolean isFinalType() { - if (this.jrpt == null) { + if (this.jrt == null) { return false; } - return this.jrpt.isFinal(); + return this.jrt.isFinal(); } protected boolean hasPrivateNoArgConstructor() { - if (this.jrpt == null) { + if (this.jrt == null) { return false; } - return this.jrpt.hasPrivateNoArgConstructor(); + return this.jrt.hasPrivateNoArgConstructor(); } protected boolean hasNoArgConstructor() { - if (this.jrpt == null) { + if (this.jrt == null) { return false; } - return this.jrpt.hasNoArgConstructor(); + return this.jrt.hasNoArgConstructor(); } protected IMessage buildTypeMessage(String msgID) { 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 67f9c1b414..5bab03af96 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 @@ -49,7 +49,7 @@ public abstract class BaseJoinColumnValidator messages) { - if ((this.column.getSpecifiedName() == null) && (this.joinColumnOwner.joinColumnsSize() > 1)) { + if ((this.column.getSpecifiedName() == null) && (this.joinColumnOwner.getJoinColumnsSize() > 1)) { messages.add(this.buildUnspecifiedNameMultipleJoinColumnsMessage()); } else if (this.column.getName() != null){ @@ -62,7 +62,7 @@ public abstract class BaseJoinColumnValidator messages) { - if ((this.column.getSpecifiedReferencedColumnName() == null) && (this.joinColumnOwner.joinColumnsSize() > 1)) { + if ((this.column.getSpecifiedReferencedColumnName() == null) && (this.joinColumnOwner.getJoinColumnsSize() > 1)) { messages.add(this.buildUnspecifiedReferencedColumnNameMultipleJoinColumnsMessage()); } //bug 315292 is the reason we are only validating if there is a specified referenced column name 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 deleted file mode 100644 index 1838129d29..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericPersistentAttributeValidator.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * 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.List; -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; -import org.eclipse.wst.validation.internal.provisional.core.IMessage; - -public class GenericPersistentAttributeValidator - extends AbstractPersistentAttributeValidator -{ - public GenericPersistentAttributeValidator( - ReadOnlyPersistentAttribute persistentAttribute, JavaPersistentAttribute javaPersistentAttribute, PersistentAttributeTextRangeResolver textRangeResolver) - { - super(persistentAttribute, javaPersistentAttribute, textRangeResolver); - } - - @Override - protected void validateMappedAttribute(List messages) { - if (this.javaPersistentAttribute.isField()) { - this.validateMappedField(messages); - } else { - this.validateMappedProperty(messages); - } - } - - protected void validateMappedField(List messages) { - if (this.javaPersistentAttribute.isFinal()) { - messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_FIELD)); - } - if (this.javaPersistentAttribute.isPublic()) { - messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_PUBLIC_FIELD)); - } - } - - protected void validateMappedProperty(List messages) { - //TODO need to check both the getter and the setter - if (this.javaPersistentAttribute.isFinal()) { - messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_GETTER)); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericRootContextNode.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericRootContextNode.java index e40692f8e2..1a6866663e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericRootContextNode.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericRootContextNode.java @@ -14,6 +14,8 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.jpt.common.core.JptResourceType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceCompilationUnit; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.HashBag; import org.eclipse.jpt.jpa.core.JpaProject; @@ -27,8 +29,6 @@ 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.JpaRootContextNode2_0; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceXml2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceCompilationUnit; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.xml.JpaXmlResource; import org.eclipse.jst.j2ee.model.internal.validation.ValidationCancelledException; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -267,11 +267,11 @@ public class GenericRootContextNode if (persistence == null) { return; // handled with other validation } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return; // the context model currently only supports 1 persistence unit } - PersistenceUnit persistenceUnit = persistence.persistenceUnits().next(); + PersistenceUnit persistenceUnit = persistence.getPersistenceUnits().iterator().next(); HashBag annotatedClassNames = CollectionTools.bag(this.jpaProject.getAnnotatedJavaSourceClassNames()); HashBag orphans = annotatedClassNames.clone(); for (String annotatedClassName : annotatedClassNames) { @@ -286,16 +286,16 @@ public class GenericRootContextNode // with jrpt.getMappingAnnotation().getTextRange() // (new method #getTextRange() ?) for (String orphan : orphans) { - JavaResourcePersistentType jrpt = this.jpaProject.getJavaResourcePersistentType(orphan); - JavaResourceCompilationUnit jrcu = jrpt.getJavaResourceCompilationUnit(); - if (jrpt.isMapped()) { + JavaResourceAbstractType jrt = this.jpaProject.getJavaResourceType(orphan); + JavaResourceCompilationUnit jrcu = jrt.getJavaResourceCompilationUnit(); + if (jrt.isAnnotatedWith(this.jpaProject.getTypeMappingAnnotations())) { messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.HIGH_SEVERITY, JpaValidationMessages.PERSISTENT_TYPE_MAPPED_BUT_NOT_INCLUDED_IN_PERSISTENCE_UNIT, - new String[] {jrpt.getQualifiedName()}, - jrpt.getFile(), - jrpt.getNameTextRange(jrcu.buildASTRoot()) + new String[] {jrt.getQualifiedName()}, + jrt.getFile(), + jrt.getNameTextRange(jrcu.buildASTRoot()) ) ); } @@ -304,9 +304,9 @@ public class GenericRootContextNode DefaultJpaValidationMessages.buildMessage( IMessage.NORMAL_SEVERITY, JpaValidationMessages.PERSISTENT_TYPE_ANNOTATED_BUT_NOT_INCLUDED_IN_PERSISTENCE_UNIT, - new String[] {jrpt.getName()}, - jrpt.getFile(), - jrpt.getNameTextRange(jrcu.buildASTRoot()) + new String[] {jrt.getName()}, + jrt.getFile(), + jrt.getNameTextRange(jrcu.buildASTRoot()) ) ); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericTypeMappingValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericTypeMappingValidator.java index 6a2ab46d5d..21e505ec43 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericTypeMappingValidator.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/GenericTypeMappingValidator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. + * 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 @@ -11,17 +11,17 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context; import java.util.List; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.TypeMapping; import org.eclipse.jpt.jpa.core.internal.context.TypeMappingTextRangeResolver; import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.wst.validation.internal.provisional.core.IMessage; public class GenericTypeMappingValidator extends AbstractTypeMappingValidator { - public GenericTypeMappingValidator(TypeMapping typeMapping, JavaResourcePersistentType jrpt, TypeMappingTextRangeResolver textRangeResolver) { - super(typeMapping, jrpt, textRangeResolver); + public GenericTypeMappingValidator(TypeMapping typeMapping, JavaResourceType jrt, TypeMappingTextRangeResolver textRangeResolver) { + super(typeMapping, jrt, textRangeResolver); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentFieldValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentFieldValidator.java new file mode 100644 index 0000000000..6d06448154 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentFieldValidator.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * 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.List; +import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute; +import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver; +import org.eclipse.jpt.jpa.core.internal.context.java.FieldAccessor; +import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; + +public class PersistentFieldValidator + extends AbstractPersistentAttributeValidator +{ + + protected FieldAccessor fieldAccessor; + + public PersistentFieldValidator( + ReadOnlyPersistentAttribute persistentAttribute, FieldAccessor fieldAccessor, PersistentAttributeTextRangeResolver textRangeResolver) + { + super(persistentAttribute, textRangeResolver); + this.fieldAccessor = fieldAccessor; + } + + @Override + protected void validateMappedAttribute(List messages) { + if (this.fieldAccessor.isFinal()) { + messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_FIELD)); + } + if (this.fieldAccessor.isPublic()) { + messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_PUBLIC_FIELD)); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentPropertyValidator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentPropertyValidator.java new file mode 100644 index 0000000000..b4444380b2 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/PersistentPropertyValidator.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * 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.List; +import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute; +import org.eclipse.jpt.jpa.core.internal.context.PersistentAttributeTextRangeResolver; +import org.eclipse.jpt.jpa.core.internal.context.java.PropertyAccessor; +import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages; +import org.eclipse.wst.validation.internal.provisional.core.IMessage; + +public class PersistentPropertyValidator + extends AbstractPersistentAttributeValidator +{ + + protected PropertyAccessor propertyAccessor; + + public PersistentPropertyValidator( + ReadOnlyPersistentAttribute persistentAttribute, PropertyAccessor propertyAccessor, PersistentAttributeTextRangeResolver textRangeResolver) + { + super(persistentAttribute, textRangeResolver); + this.propertyAccessor = propertyAccessor; + } + + @Override + //TODO validation for null getter or null setter - would apply to EclipseLink too + //TODO validation for annotated setter? - would apply to EclipseLink too + protected void validateMappedAttribute(List messages) { + if (this.propertyAccessor.getResourceGetter() != null && this.propertyAccessor.getResourceGetter().isFinal()) { + messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_GETTER)); + } + if (this.propertyAccessor.getResourceSetter() != null && this.propertyAccessor.getResourceSetter().isFinal()) { + messages.add(this.buildAttributeMessage(JpaValidationMessages.PERSISTENT_ATTRIBUTE_FINAL_SETTER)); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaConverter.java index 95be875fb6..3d3b4d36c5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaConverter.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/AbstractJavaConverter.java @@ -10,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaConverter; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; public abstract class AbstractJavaConverter extends AbstractJavaJpaContextNode @@ -37,12 +37,12 @@ public abstract class AbstractJavaConverter return this.getParent(); } - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getAttributeMapping().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getAttributeMapping().getResourceAttribute(); } public Annotation getConverterAnnotation() { - return this.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()); + return this.getResourceAttribute().getAnnotation(this.getAnnotationName()); } protected abstract String getAnnotationName(); 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 7ed3dce4d3..e9de36ba5b 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 @@ -11,14 +11,17 @@ 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; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMember; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; 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.EmptyIterable; 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; @@ -42,9 +45,6 @@ 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; 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; @@ -115,16 +115,12 @@ public abstract class AbstractJavaOverrideContainer< // ********** overrides ********** - public ListIterator overrides() { - return this.getOverrides().iterator(); - } - @SuppressWarnings("unchecked") - protected ListIterable getOverrides() { + public ListIterable getOverrides() { return new CompositeListIterable(this.getReadOnlySpecifiedOverrides(), this.getReadOnlyVirtualOverrides()); } - public int overridesSize() { + public int getOverridesSize() { return this.specifiedOverrides.size() + this.virtualOverrides.size(); } @@ -220,11 +216,7 @@ public abstract class AbstractJavaOverrideContainer< // ********** specified overrides ********** - public ListIterator specifiedOverrides() { - return this.getSpecifiedOverrides().iterator(); - } - - protected ListIterable getSpecifiedOverrides() { + public ListIterable getSpecifiedOverrides() { return new LiveCloneListIterable(this.specifiedOverrides); } @@ -235,7 +227,7 @@ public abstract class AbstractJavaOverrideContainer< return (ListIterable) this.getSpecifiedOverrides(); } - public int specifiedOverridesSize() { + public int getSpecifiedOverridesSize() { return this.specifiedOverrides.size(); } @@ -264,7 +256,7 @@ public abstract class AbstractJavaOverrideContainer< @SuppressWarnings("unchecked") protected A buildOverrideAnnotation(int index) { int annotationIndex = this.calculateNewAnnotationIndex(index); - return (A) this.getResourcePersistentMember().addAnnotation(annotationIndex, this.getOverrideAnnotationName(), this.getOverrideContainerAnnotationName()); + return (A) this.getResourceMember().addAnnotation(annotationIndex, this.getOverrideAnnotationName()); } protected int calculateNewAnnotationIndex(int index) { @@ -295,8 +287,6 @@ public abstract class AbstractJavaOverrideContainer< protected abstract String getOverrideAnnotationName(); - protected abstract String getOverrideContainerAnnotationName(); - protected void removeSpecifiedOverride(S override) { this.removeSpecifiedOverride(this.specifiedOverrides.indexOf(override)); } @@ -308,7 +298,7 @@ public abstract class AbstractJavaOverrideContainer< protected void removeOverrideAnnotation(int index) { int annotationIndex = this.translateToAnnotationIndex(index); - this.getResourcePersistentMember().removeAnnotation(annotationIndex, this.getOverrideAnnotationName(), this.getOverrideContainerAnnotationName()); + this.getResourceMember().removeAnnotation(annotationIndex, this.getOverrideAnnotationName()); } protected void removeSpecifiedOverride_(int index) { @@ -323,7 +313,7 @@ public abstract class AbstractJavaOverrideContainer< protected void moveOverrideAnnotation(int targetIndex, int sourceIndex) { int targetAnnotationIndex = this.translateToAnnotationIndex(targetIndex); int sourceAnnotationIndex = this.translateToAnnotationIndex(sourceIndex); - this.getResourcePersistentMember().moveAnnotation(targetAnnotationIndex, sourceAnnotationIndex, this.getOverrideContainerAnnotationName()); + this.getResourceMember().moveAnnotation(targetAnnotationIndex, sourceAnnotationIndex, this.getOverrideAnnotationName()); } protected abstract S buildSpecifiedOverride(A overrideAnnotation); @@ -346,20 +336,18 @@ public abstract class AbstractJavaOverrideContainer< } protected Iterable getOverrideAnnotations() { - return new SubIterableWrapper( - CollectionTools.iterable(this.overrideAnnotations()) - ); + return new SubIterableWrapper((this.overrideAnnotations())); } - protected Iterator overrideAnnotations() { - return (this.owner == null) ? EmptyIterator.instance() : this.overrideAnnotations_(); + protected Iterable overrideAnnotations() { + return (this.owner == null) ? EmptyIterable.instance() : this.overrideAnnotations_(); } /** * pre-condition: {@link #owner} is not null */ - protected Iterator overrideAnnotations_() { - return this.getResourcePersistentMember().annotations(this.getOverrideAnnotationName(), this.getOverrideContainerAnnotationName()); + protected Iterable overrideAnnotations_() { + return this.getResourceMember().getAnnotations(this.getOverrideAnnotationName()); } protected void moveSpecifiedOverride_(int index, S override) { @@ -406,15 +394,11 @@ public abstract class AbstractJavaOverrideContainer< // ********** virtual overrides ********** - public ListIterator virtualOverrides() { - return this.getVirtualOverrides().iterator(); - } - - protected ListIterable getVirtualOverrides() { + public ListIterable getVirtualOverrides() { return new LiveCloneListIterable(this.virtualOverrides); } - public int virtualOverridesSize() { + public int getVirtualOverridesSize() { return this.virtualOverrides.size(); } @@ -504,8 +488,8 @@ public abstract class AbstractJavaOverrideContainer< return this.owner.getTypeMapping(); } - protected JavaResourcePersistentMember getResourcePersistentMember() { - return this.owner.getResourcePersistentMember(); + protected JavaResourceMember getResourceMember() { + return this.owner.getResourceMember(); } public TypeMapping getOverridableTypeMapping() { @@ -604,8 +588,7 @@ public abstract class AbstractJavaOverrideContainer< } protected Annotation getValidationAnnotation() { - JavaResourcePersistentMember resourceMember = this.getResourcePersistentMember(); - Annotation annotation = resourceMember.getAnnotation(this.getOverrideContainerAnnotationName()); - return (annotation != null) ? annotation : resourceMember.getAnnotation(this.getOverrideAnnotationName()); + JavaResourceMember resourceMember = this.getResourceMember(); + return resourceMember.getAnnotation(this.getOverrideAnnotationName()); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJarFile.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJarFile.java index 16298f2d59..bc33548424 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJarFile.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJarFile.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,26 +9,25 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; -import java.util.Iterator; import java.util.List; -import java.util.Vector; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.jpt.common.core.JptCommonCorePlugin; import org.eclipse.jpt.common.core.JptResourceType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourcePackageFragmentRoot; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.Kind; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; +import org.eclipse.jpt.common.utility.internal.iterables.SubIterableWrapper; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.core.context.AccessType; import org.eclipse.jpt.jpa.core.context.PersistentType; import org.eclipse.jpt.jpa.core.context.java.JarFile; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.persistence.JarFileRef; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.persistence.AbstractPersistenceXmlContextNode; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePackageFragmentRoot; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -41,8 +40,7 @@ public class GenericJarFile { protected final JavaResourcePackageFragmentRoot jarResourcePackageFragmentRoot; - protected final Vector javaPersistentTypes = new Vector(); - protected final JavaPersistentTypeContainerAdapter javaPersistentTypeContainerAdapter = new JavaPersistentTypeContainerAdapter(); + protected final ContextCollectionContainer javaPersistentTypeContainer; // ********** constructor/initialization ********** @@ -50,7 +48,7 @@ public class GenericJarFile public GenericJarFile(JarFileRef parent, JavaResourcePackageFragmentRoot jarResourcePackageFragmentRoot) { super(parent); this.jarResourcePackageFragmentRoot = jarResourcePackageFragmentRoot; - this.initializeJavaPersistentTypes(); + this.javaPersistentTypeContainer = this.buildJavaPersistentTypeContainer(); } @@ -65,7 +63,7 @@ public class GenericJarFile @Override public void update() { super.update(); - this.updateNodes(this.getJavaPersistentTypes()); + this.updateJavaPersistentTypes(); } public JavaResourcePackageFragmentRoot getJarResourcePackageFragmentRoot() { @@ -111,80 +109,85 @@ public class GenericJarFile return null; } - public Iterator javaPersistentTypes() { - return this.getJavaPersistentTypes().iterator(); + public Iterable getJavaPersistentTypes() { + return this.javaPersistentTypeContainer.getContextElements(); } - protected Iterable getJavaPersistentTypes() { - return new LiveCloneIterable(this.javaPersistentTypes); + public int getJavaPersistentTypesSize() { + return this.javaPersistentTypeContainer.getContextElementsSize(); } - public int javaPersistentTypesSize() { - return this.javaPersistentTypes.size(); + protected void syncJavaPersistentTypes() { + this.javaPersistentTypeContainer.synchronizeWithResourceModel(); } - protected void initializeJavaPersistentTypes() { - for (JavaResourcePersistentType jrpt : this.getJavaResourcePersistentTypes()) { - this.javaPersistentTypes.add(this.buildJavaPersistentType(jrpt)); - } + protected void updateJavaPersistentTypes() { + this.javaPersistentTypeContainer.update(); } - protected void syncJavaPersistentTypes() { - ContextContainerTools.synchronizeWithResourceModel(this.javaPersistentTypeContainerAdapter); + protected void addJavaPersistentType(JavaResourceType jrt) { + this.javaPersistentTypeContainer.addContextElement(getJavaPersistentTypesSize(), jrt); } - protected void addJavaPersistentType(JavaResourcePersistentType jrpt) { - JavaPersistentType javaPersistentType = this.buildJavaPersistentType(jrpt); - this.addItemToCollection(javaPersistentType, this.javaPersistentTypes, JAVA_PERSISTENT_TYPES_COLLECTION); + protected void removeJavaPersistentType(JavaPersistentType javaPersistentType ) { + this.javaPersistentTypeContainer.removeContextElement(javaPersistentType); } - protected void removeJavaPersistentType(JavaPersistentType javaPersistentType ) { - this.removeItemFromCollection(javaPersistentType, this.javaPersistentTypes, JAVA_PERSISTENT_TYPES_COLLECTION); + //only accept types, enums aren't valid for JPA + protected Iterable getJavaResourceTypes() { + return new SubIterableWrapper( + new FilteringIterable(this.getJavaResourceAbstractTypes()) { + @Override + protected boolean accept(JavaResourceAbstractType o) { + return o.getKind() == Kind.TYPE; + } + }); } /** * the resource JAR holds only annotated types, so we can use them all for * building the context types */ - protected Iterable getJavaResourcePersistentTypes() { - return CollectionTools.iterable(this.jarResourcePackageFragmentRoot.persistentTypes()); + protected Iterable getJavaResourceAbstractTypes() { + return this.jarResourcePackageFragmentRoot.getTypes(); } - protected JavaPersistentType buildJavaPersistentType(JavaResourcePersistentType jrpt) { - return this.getJpaFactory().buildJavaPersistentType(this, jrpt); + protected JavaPersistentType buildJavaPersistentType(JavaResourceType jrt) { + return this.getJpaFactory().buildJavaPersistentType(this, jrt); + } + + protected ContextCollectionContainer buildJavaPersistentTypeContainer() { + return new JavaPersistentTypeContainer(); } /** - * Java persistent type container adapter + * Java persistent type container */ - protected class JavaPersistentTypeContainerAdapter - implements ContextContainerTools.Adapter + protected class JavaPersistentTypeContainer + extends ContextCollectionContainer { - public Iterable getContextElements() { - return GenericJarFile.this.getJavaPersistentTypes(); - } - public Iterable getResourceElements() { - return GenericJarFile.this.getJavaResourcePersistentTypes(); - } - public JavaResourcePersistentType getResourceElement(JavaPersistentType contextElement) { - return contextElement.getResourcePersistentType(); + @Override + protected String getContextElementsPropertyName() { + return JAVA_PERSISTENT_TYPES_COLLECTION; } - public void moveContextElement(int index, JavaPersistentType element) { - // ignore moves - we don't care about the order of the Java persistent types + @Override + protected JavaPersistentType buildContextElement(JavaResourceType resourceElement) { + return GenericJarFile.this.buildJavaPersistentType(resourceElement); } - public void addContextElement(int index, JavaResourcePersistentType resourceElement) { - // ignore the index - we don't care about the order of the Java persistent types - GenericJarFile.this.addJavaPersistentType(resourceElement); + @Override + protected Iterable getResourceElements() { + return GenericJarFile.this.getJavaResourceTypes(); } - public void removeContextElement(JavaPersistentType element) { - GenericJarFile.this.removeJavaPersistentType(element); + @Override + protected JavaResourceType getResourceElement(JavaPersistentType contextElement) { + return contextElement.getJavaResourceType(); } } // ********** PersistentTypeContainer implementation ********** - public Iterable getPersistentTypes() { + public Iterable getPersistentTypes() { return this.getJavaPersistentTypes(); } 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 5566657d9d..215fc57d2d 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 @@ -26,8 +26,6 @@ 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; /** * Java attribute override container @@ -38,7 +36,7 @@ public class GenericJavaAssociationOverrideContainer JavaReadOnlyAssociationOverride, JavaAssociationOverride, JavaVirtualAssociationOverride, - NestableAssociationOverrideAnnotation + AssociationOverrideAnnotation > implements JavaAssociationOverrideContainer2_0 { @@ -82,12 +80,7 @@ public class GenericJavaAssociationOverrideContainer } @Override - protected String getOverrideContainerAnnotationName() { - return AssociationOverridesAnnotation.ANNOTATION_NAME; - } - - @Override - protected JavaAssociationOverride buildSpecifiedOverride(NestableAssociationOverrideAnnotation overrideAnnotation) { + protected JavaAssociationOverride buildSpecifiedOverride(AssociationOverrideAnnotation overrideAnnotation) { return this.getJpaFactory().buildJavaAssociationOverride(this, overrideAnnotation); } 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 9d84836b8f..182d70f4aa 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 @@ -17,8 +17,6 @@ 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; /** * Java attribute override container @@ -29,7 +27,7 @@ public class GenericJavaAttributeOverrideContainer JavaReadOnlyAttributeOverride, JavaAttributeOverride, JavaVirtualAttributeOverride, - NestableAttributeOverrideAnnotation + AttributeOverrideAnnotation > implements JavaAttributeOverrideContainer2_0 { @@ -52,12 +50,7 @@ public class GenericJavaAttributeOverrideContainer } @Override - protected String getOverrideContainerAnnotationName() { - return AttributeOverridesAnnotation.ANNOTATION_NAME; - } - - @Override - protected JavaAttributeOverride buildSpecifiedOverride(NestableAttributeOverrideAnnotation overrideAnnotation) { + protected JavaAttributeOverride buildSpecifiedOverride(AttributeOverrideAnnotation overrideAnnotation) { return this.getJpaFactory().buildJavaAttributeOverride(this, overrideAnnotation); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaDiscriminatorColumn.java index a88cc6660c..5cf6eac93c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaDiscriminatorColumn.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaDiscriminatorColumn.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,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.DiscriminatorType; 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.JavaPersistentType; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaNamedColumn; import org.eclipse.jpt.jpa.core.resource.java.DiscriminatorColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * Java discriminator column @@ -59,12 +59,12 @@ public class GenericJavaDiscriminatorColumn @Override public DiscriminatorColumnAnnotation getColumnAnnotation() { - return (DiscriminatorColumnAnnotation) this.getResourcePersistentType().getNonNullAnnotation(DiscriminatorColumnAnnotation.ANNOTATION_NAME); + return (DiscriminatorColumnAnnotation) this.getJavaResourceType().getNonNullAnnotation(DiscriminatorColumnAnnotation.ANNOTATION_NAME); } @Override protected void removeColumnAnnotation() { - this.getResourcePersistentType().removeAnnotation(DiscriminatorColumnAnnotation.ANNOTATION_NAME); + this.getJavaResourceType().removeAnnotation(DiscriminatorColumnAnnotation.ANNOTATION_NAME); } @@ -169,8 +169,8 @@ public class GenericJavaDiscriminatorColumn return this.getEntity().getPersistentType(); } - protected JavaResourcePersistentType getResourcePersistentType() { - return this.getPersistentType().getResourcePersistentType(); + protected JavaResourceType getJavaResourceType() { + return this.getPersistentType().getJavaResourceType(); } 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 20a918f8b1..ff6de341bd 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 @@ -107,7 +107,7 @@ public class GenericJavaEmbeddedIdMapping // attribute overrides are in error // (in JPA 1.0, this will obviously never be reached) if (this.derived - && (this.attributeOverrideContainer.specifiedOverridesSize() > 0)) { + && (this.attributeOverrideContainer.getSpecifiedOverridesSize() > 0)) { messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.HIGH_SEVERITY, 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 5cb380e156..eefe8e76e2 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 @@ -12,6 +12,7 @@ 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.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.CollectionTools; @@ -51,7 +52,6 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionP 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; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -224,8 +224,8 @@ public class GenericJavaEmbeddedMapping protected class AssociationOverrideContainerOwner implements JavaAssociationOverrideContainer2_0.Owner { - public JavaResourcePersistentMember getResourcePersistentMember() { - return GenericJavaEmbeddedMapping.this.getResourcePersistentAttribute(); + public JavaResourceAttribute getResourceMember() { + return GenericJavaEmbeddedMapping.this.getResourceAttribute(); } public TypeMapping getTypeMapping() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaGeneratedValue.java index 2d793a6521..4ef75043af 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaGeneratedValue.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaGeneratedValue.java @@ -202,8 +202,8 @@ public class GenericJavaGeneratedValue return; } - for (Iterator stream = this.getPersistenceUnit().generators(); stream.hasNext(); ) { - if (generator.equals(stream.next().getName())) { + for (Generator next : this.getPersistenceUnit().getGenerators()) { + if (generator.equals(next.getName())) { return; } } 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 fa515cb0dd..7712a12b19 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 @@ -11,16 +11,12 @@ 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; 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.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; @@ -37,7 +33,6 @@ 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; import org.eclipse.jpt.jpa.core.internal.context.MappingTools; @@ -59,8 +54,7 @@ public class GenericJavaJoinTable extends GenericJavaReferenceTable implements JavaJoinTable { - protected final Vector specifiedInverseJoinColumns = new Vector(); - protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter(); + protected final SpecifiedInverseJoinColumnContainer specifiedInverseJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner inverseJoinColumnOwner; protected JavaJoinColumn defaultInverseJoinColumn; @@ -69,7 +63,7 @@ public class GenericJavaJoinTable public GenericJavaJoinTable(JavaJoinTableRelationshipStrategy parent, Owner owner) { super(parent, owner); this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner(); - this.initializeSpecifiedInverseJoinColumns(); + this.specifiedInverseJoinColumnContainer = new SpecifiedInverseJoinColumnContainer(); } @Override @@ -92,7 +86,7 @@ public class GenericJavaJoinTable @Override public void update() { super.update(); - this.updateNodes(this.getSpecifiedInverseJoinColumns()); + this.updateSpecifiedInverseJoinColumns(); this.updateDefaultInverseJoinColumn(); } @@ -112,16 +106,12 @@ public class GenericJavaJoinTable // ********** inverse join columns ********** - public ListIterator inverseJoinColumns() { - return this.getInverseJoinColumns().iterator(); - } - - protected ListIterable getInverseJoinColumns() { + public ListIterable getInverseJoinColumns() { return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumns() : this.getDefaultInverseJoinColumns(); } - public int inverseJoinColumnsSize() { - return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.defaultInverseJoinColumnsSize(); + public int getInverseJoinColumnsSize() { + return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumnsSize() : this.defaultInverseJoinColumnsSize(); } public void convertDefaultInverseJoinColumnToSpecified() { @@ -131,113 +121,87 @@ public class GenericJavaJoinTable // ********** specified inverse join columns ********** - public ListIterator specifiedInverseJoinColumns() { - return this.getSpecifiedInverseJoinColumns().iterator(); - } - public ListIterable getSpecifiedInverseJoinColumns() { - return new LiveCloneListIterable(this.specifiedInverseJoinColumns); + return this.specifiedInverseJoinColumnContainer.getContextElements(); } - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); + public int getSpecifiedInverseJoinColumnsSize() { + return this.specifiedInverseJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedInverseJoinColumns() { - return this.specifiedInverseJoinColumns.size() != 0; + return this.getSpecifiedInverseJoinColumnsSize() != 0; } public JavaJoinColumn getSpecifiedInverseJoinColumn(int index) { - return this.specifiedInverseJoinColumns.get(index); + return this.specifiedInverseJoinColumnContainer.getContextElement(index); } public JavaJoinColumn addSpecifiedInverseJoinColumn() { - return this.addSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.size()); + return this.addSpecifiedInverseJoinColumn(this.getSpecifiedInverseJoinColumnsSize()); } public JavaJoinColumn addSpecifiedInverseJoinColumn(int index) { JoinColumnAnnotation annotation = this.getTableAnnotation().addInverseJoinColumn(index); - return this.addSpecifiedInverseJoinColumn_(index, annotation); + return this.specifiedInverseJoinColumnContainer.addContextElement(index, annotation); } public void removeSpecifiedInverseJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumnContainer.indexOfContextElement((JavaJoinColumn) joinColumn)); } public void removeSpecifiedInverseJoinColumn(int index) { this.getTableAnnotation().removeInverseJoinColumn(index); this.removeTableAnnotationIfUnset(); - this.removeSpecifiedInverseJoinColumn_(index); - } - - protected void removeSpecifiedInverseJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.removeContextElement(index); } public void moveSpecifiedInverseJoinColumn(int targetIndex, int sourceIndex) { this.getTableAnnotation().moveInverseJoinColumn(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); } public void clearSpecifiedInverseJoinColumns() { // for now, we have to remove annotations one at a time... - for (int i = this.specifiedInverseJoinColumns.size(); i-- > 0; ) { + for (int i = this.getSpecifiedInverseJoinColumnsSize(); i-- > 0; ) { this.removeSpecifiedInverseJoinColumn(i); } } - protected void initializeSpecifiedInverseJoinColumns() { - for (JoinColumnAnnotation joinColumnAnnotation : this.getInverseJoinColumnAnnotations()) { - this.specifiedInverseJoinColumns.add(this.buildInverseJoinColumn(joinColumnAnnotation)); - } - } - protected void syncSpecifiedInverseJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedInverseJoinColumnContainerAdapter); + this.specifiedInverseJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getInverseJoinColumnAnnotations() { - return CollectionTools.iterable(this.getTableAnnotation().inverseJoinColumns()); + protected void updateSpecifiedInverseJoinColumns() { + this.specifiedInverseJoinColumnContainer.update(); } - protected void moveSpecifiedInverseJoinColumn_(int index, JavaJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - } - - protected JavaJoinColumn addSpecifiedInverseJoinColumn_(int index, JoinColumnAnnotation joinColumnAnnotation) { - JavaJoinColumn joinColumn = this.buildInverseJoinColumn(joinColumnAnnotation); - this.addItemToList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removeSpecifiedInverseJoinColumn_(JavaJoinColumn joinColumn) { - this.removeSpecifiedInverseJoinColumn_(this.specifiedInverseJoinColumns.indexOf(joinColumn)); + protected ListIterable getInverseJoinColumnAnnotations() { + return this.getTableAnnotation().getInverseJoinColumns(); } /** - * specified inverse join column container adapter + * inverse join column container */ - protected class SpecifiedInverseJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedInverseJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaJoinTable.this.getSpecifiedInverseJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_INVERSE_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaJoinColumn buildContextElement(JoinColumnAnnotation resourceElement) { + return GenericJavaJoinTable.this.buildInverseJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaJoinTable.this.getInverseJoinColumnAnnotations(); } - public JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { + @Override + protected JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { return contextElement.getColumnAnnotation(); } - public void moveContextElement(int index, JavaJoinColumn element) { - GenericJavaJoinTable.this.moveSpecifiedInverseJoinColumn_(index, element); - } - public void addContextElement(int index, JoinColumnAnnotation resourceElement) { - GenericJavaJoinTable.this.addSpecifiedInverseJoinColumn_(index, resourceElement); - } - public void removeContextElement(JavaJoinColumn element) { - GenericJavaJoinTable.this.removeSpecifiedInverseJoinColumn_(element); - } } protected JavaReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() { @@ -302,14 +266,14 @@ public class GenericJavaJoinTable public void initializeFrom(ReadOnlyJoinTable oldTable) { super.initializeFrom(oldTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(oldTable.specifiedInverseJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : oldTable.getSpecifiedInverseJoinColumns()) { this.addSpecifiedInverseJoinColumn().initializeFrom(joinColumn); } } public void initializeFromVirtual(ReadOnlyJoinTable virtualTable) { super.initializeFromVirtual(virtualTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(virtualTable.inverseJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : virtualTable.getInverseJoinColumns()) { this.addSpecifiedInverseJoinColumn().initializeFromVirtual(joinColumn); } } @@ -335,7 +299,7 @@ public class GenericJavaJoinTable if (result != null) { return result; } - for (JavaJoinColumn column : CollectionTools.iterable(this.inverseJoinColumns())) { + for (JavaJoinColumn column : this.getInverseJoinColumns()) { result = column.javaCompletionProposals(pos, filter, astRoot); if (result != null) { return result; @@ -451,8 +415,8 @@ public class GenericJavaJoinTable return GenericJavaJoinTable.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericJavaJoinTable.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaJoinTable.this.getJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { @@ -491,8 +455,8 @@ public class GenericJavaJoinTable return GenericJavaJoinTable.this.defaultInverseJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericJavaJoinTable.this.inverseJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaJoinTable.this.getInverseJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver 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 7664f5c9d2..d088cf32c9 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 @@ -10,6 +10,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.context.JoinTable; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; @@ -27,7 +28,6 @@ import org.eclipse.jpt.jpa.core.internal.jpa1.context.JoinTableTableDescriptionP 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 @@ -42,24 +42,24 @@ public class GenericJavaMappingJoinTableRelationshipStrategy // ********** join table annotation ********** public JoinTableAnnotation getJoinTableAnnotation() { - return (JoinTableAnnotation) this.getResourcePersistentAttribute().getNonNullAnnotation(JoinTableAnnotation.ANNOTATION_NAME); + return (JoinTableAnnotation) this.getResourceAttribute().getNonNullAnnotation(JoinTableAnnotation.ANNOTATION_NAME); } @Override protected JoinTableAnnotation addJoinTableAnnotation() { - return (JoinTableAnnotation) this.getResourcePersistentAttribute().addAnnotation(JoinTableAnnotation.ANNOTATION_NAME); + return (JoinTableAnnotation) this.getResourceAttribute().addAnnotation(JoinTableAnnotation.ANNOTATION_NAME); } @Override protected void removeJoinTableAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(JoinTableAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(JoinTableAnnotation.ANNOTATION_NAME); } // ********** misc ********** - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getRelationship().getMapping().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getRelationship().getMapping().getResourceAttribute(); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java index 864603a34e..46bc58368f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaNullAttributeMapping.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,11 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; +import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaAttributeMapping; import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelField; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; /** * null mapping used when an attribute's default mapping cannot be determined 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 a661cf6e5d..443be27767 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 @@ -12,6 +12,7 @@ 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.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn; @@ -30,7 +31,6 @@ import org.eclipse.jpt.jpa.core.jpa2.context.OrderColumn2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOrderColumn2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOrderable2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.OrderByAnnotation; import org.eclipse.jpt.jpa.db.Table; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -329,7 +329,7 @@ public class GenericJavaOrderable // ********** order by annotation ********** protected OrderByAnnotation getOrderByAnnotation() { - return (OrderByAnnotation) this.getResourcePersistentAttribute().getAnnotation(OrderByAnnotation.ANNOTATION_NAME); + return (OrderByAnnotation) this.getResourceAttribute().getAnnotation(OrderByAnnotation.ANNOTATION_NAME); } protected OrderByAnnotation getOrderByAnnotationForUpdate() { @@ -338,18 +338,18 @@ public class GenericJavaOrderable } protected OrderByAnnotation addOrderByAnnotation() { - return (OrderByAnnotation) this.getResourcePersistentAttribute().addAnnotation(OrderByAnnotation.ANNOTATION_NAME); + return (OrderByAnnotation) this.getResourceAttribute().addAnnotation(OrderByAnnotation.ANNOTATION_NAME); } protected void removeOrderByAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(OrderByAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(OrderByAnnotation.ANNOTATION_NAME); } // ********** order column annotation ********** protected OrderColumn2_0Annotation getOrderColumnAnnotation() { - return (OrderColumn2_0Annotation) this.getResourcePersistentAttribute().getAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); + return (OrderColumn2_0Annotation) this.getResourceAttribute().getAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); } /** @@ -360,7 +360,7 @@ public class GenericJavaOrderable } protected OrderColumn2_0Annotation addOrderColumnAnnotation() { - return (OrderColumn2_0Annotation) this.getResourcePersistentAttribute().addAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); + return (OrderColumn2_0Annotation) this.getResourceAttribute().addAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); } protected void removeOrderColumnAnnotation() { @@ -370,7 +370,7 @@ public class GenericJavaOrderable } protected void removeOrderColumnAnnotation_() { - this.getResourcePersistentAttribute().removeAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); } @@ -389,8 +389,8 @@ public class GenericJavaOrderable return this.getAttributeMapping().getPersistentAttribute(); } - public JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getPersistentAttribute().getResourcePersistentAttribute(); + public JavaResourceAttribute getResourceAttribute() { + return this.getPersistentAttribute().getResourceAttribute(); } // JPA 2.0 only diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentAttribute.java index 612a619cc6..a1c781c011 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentAttribute.java @@ -10,11 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; import org.eclipse.jpt.jpa.core.context.PersistentType; +import org.eclipse.jpt.jpa.core.context.java.Accessor; import org.eclipse.jpt.jpa.core.internal.context.JptValidator; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentAttribute; -import org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericPersistentAttributeValidator; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * Generic Java persistent attribute @@ -23,14 +24,22 @@ public class GenericJavaPersistentAttribute extends AbstractJavaPersistentAttribute { - public GenericJavaPersistentAttribute(PersistentType parent, JavaResourcePersistentAttribute jrpa) { - super(parent, jrpa); + public GenericJavaPersistentAttribute(PersistentType parent, JavaResourceField resourceField) { + super(parent, resourceField); + } + + public GenericJavaPersistentAttribute(PersistentType parent, JavaResourceMethod resourceGetter, JavaResourceMethod resourceSetter) { + super(parent, resourceGetter, resourceSetter); + } + + public GenericJavaPersistentAttribute(PersistentType parent, Accessor accessor) { + super(parent, accessor); } // ********** validation ********** @Override - protected JptValidator buildAttibuteValidator(CompilationUnit astRoot) { - return new GenericPersistentAttributeValidator(this, this, this.buildTextRangeResolver(astRoot)); + protected JptValidator buildAttributeValidator(CompilationUnit astRoot) { + return getAccessor().buildAttributeValidator(this, this.buildTextRangeResolver(astRoot)); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java index bf74484e4e..ccd859882e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaPersistentType.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,10 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.AccessType; import org.eclipse.jpt.jpa.core.context.PersistentType; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * JPA 1.0 Java persistent type. @@ -21,8 +21,8 @@ import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; public class GenericJavaPersistentType extends AbstractJavaPersistentType { - public GenericJavaPersistentType(PersistentType.Owner parent, JavaResourcePersistentType jrpt) { - super(parent, jrpt); + public GenericJavaPersistentType(PersistentType.Owner parent, JavaResourceType jrt) { + super(parent, jrt); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaQueryContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaQueryContainer.java index d64590cffe..32fa2370d7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaQueryContainer.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaQueryContainer.java @@ -9,32 +9,21 @@ ******************************************************************************/ 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; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.internal.CollectionTools; 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.common.utility.internal.iterables.SubListIterableWrapper; import org.eclipse.jpt.jpa.core.context.NamedNativeQuery; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.jpa.core.context.java.JavaNamedNativeQuery; import org.eclipse.jpt.jpa.core.context.java.JavaNamedQuery; import org.eclipse.jpt.jpa.core.context.java.JavaQueryContainer; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode; -import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueriesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueriesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.NamedQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NestableNamedNativeQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.NestableNamedQueryAnnotation; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -47,18 +36,15 @@ public class GenericJavaQueryContainer { protected final Owner owner; - protected final Vector namedQueries = new Vector(); - protected NamedQueryContainerAdapter namedQueryContainerAdapter = new NamedQueryContainerAdapter(); - - protected final Vector namedNativeQueries = new Vector(); - protected NamedNativeQueryContainerAdapter namedNativeQueryContainerAdapter = new NamedNativeQueryContainerAdapter(); + protected final ContextListContainer namedQueryContainer; + protected final ContextListContainer namedNativeQueryContainer; public GenericJavaQueryContainer(JavaJpaContextNode parent, Owner owner) { super(parent); this.owner = owner; - this.initializeNamedQueries(); - this.initializeNamedNativeQueries(); + this.namedQueryContainer = this.buildNamedQueryContainer(); + this.namedNativeQueryContainer = this.buildNamedNativeQueryContainer(); } @@ -74,60 +60,47 @@ public class GenericJavaQueryContainer @Override public void update() { super.update(); - this.updateNodes(this.getNamedQueries()); - this.updateNodes(this.getNamedNativeQueries()); + this.updateNamedQueries(); + this.updateNamedNativeQueries(); } // ********** named queries ********** - public ListIterator namedQueries() { - return this.getNamedQueries().iterator(); - } - protected ListIterable getNamedQueries() { - return new LiveCloneListIterable(this.namedQueries); + public ListIterable getNamedQueries() { + return this.namedQueryContainer.getContextElements(); } - public int namedQueriesSize() { - return this.namedQueries.size(); + public int getNamedQueriesSize() { + return this.namedQueryContainer.getContextElementsSize(); } public JavaNamedQuery addNamedQuery() { - return this.addNamedQuery(this.namedQueries.size()); + return this.addNamedQuery(this.getNamedQueriesSize()); } public JavaNamedQuery addNamedQuery(int index) { - NamedQueryAnnotation annotation = this.buildNamedQueryAnnotation(index); - return this.addNamedQuery_(index, annotation); + NamedQueryAnnotation annotation = this.addNamedQueryAnnotation(index); + return this.namedQueryContainer.addContextElement(index, annotation); } - protected NamedQueryAnnotation buildNamedQueryAnnotation(int index) { - return (NamedQueryAnnotation) this.owner.getResourceAnnotatedElement().addAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); + protected NamedQueryAnnotation addNamedQueryAnnotation(int index) { + return (NamedQueryAnnotation) this.owner.getResourceAnnotatedElement().addAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME); } public void removeNamedQuery(NamedQuery namedQuery) { - this.removeNamedQuery(this.namedQueries.indexOf(namedQuery)); + this.removeNamedQuery(this.namedQueryContainer.indexOfContextElement((JavaNamedQuery) namedQuery)); } public void removeNamedQuery(int index) { - this.owner.getResourceAnnotatedElement().removeAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); - this.removeNamedQuery_(index); - } - - protected void removeNamedQuery_(int index) { - this.removeItemFromList(index, this.namedQueries, NAMED_QUERIES_LIST); + this.owner.getResourceAnnotatedElement().removeAnnotation(index, NamedQueryAnnotation.ANNOTATION_NAME); + this.namedQueryContainer.removeContextElement(index); } public void moveNamedQuery(int targetIndex, int sourceIndex) { - this.owner.getResourceAnnotatedElement().moveAnnotation(targetIndex, sourceIndex, NamedQueriesAnnotation.ANNOTATION_NAME); - this.moveItemInList(targetIndex, sourceIndex, this.namedQueries, NAMED_QUERIES_LIST); - } - - protected void initializeNamedQueries() { - for (NamedQueryAnnotation annotation : this.getNamedQueryAnnotations()) { - this.namedQueries.add(this.buildNamedQuery(annotation)); - } + this.owner.getResourceAnnotatedElement().moveAnnotation(targetIndex, sourceIndex, NamedQueryAnnotation.ANNOTATION_NAME); + this.namedQueryContainer.moveContextElement(targetIndex, sourceIndex); } protected JavaNamedQuery buildNamedQuery(NamedQueryAnnotation namedQueryAnnotation) { @@ -135,115 +108,85 @@ public class GenericJavaQueryContainer } protected void syncNamedQueries() { - ContextContainerTools.synchronizeWithResourceModel(this.namedQueryContainerAdapter); - } - - protected Iterable getNamedQueryAnnotations() { - return CollectionTools.iterable(this.namedQueryAnnotations()); + this.namedQueryContainer.synchronizeWithResourceModel(); } - protected Iterator namedQueryAnnotations() { - return new SuperIteratorWrapper(this.nestableNamedQueryAnnotations()); + protected void updateNamedQueries() { + this.namedQueryContainer.update(); } - protected Iterator nestableNamedQueryAnnotations() { - return new SubIteratorWrapper(this.nestableNamedQueryAnnotations_()); + protected ListIterable getNamedQueryAnnotations() { + return new SubListIterableWrapper(this.getNestableNamedQueryAnnotations_()); } - protected Iterator nestableNamedQueryAnnotations_() { - return this.owner.getResourceAnnotatedElement().annotations(NamedQueryAnnotation.ANNOTATION_NAME, NamedQueriesAnnotation.ANNOTATION_NAME); + protected ListIterable getNestableNamedQueryAnnotations_() { + return this.owner.getResourceAnnotatedElement().getAnnotations(NamedQueryAnnotation.ANNOTATION_NAME); } - protected void moveNamedQuery_(int index, JavaNamedQuery namedQuery) { - this.moveItemInList(index, namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - protected JavaNamedQuery addNamedQuery_(int index, NamedQueryAnnotation namedQueryAnnotation) { - JavaNamedQuery query = this.buildNamedQuery(namedQueryAnnotation); - this.addItemToList(index, query, this.namedQueries, NAMED_QUERIES_LIST); - return query; - } - - protected void removeNamedQuery_(JavaNamedQuery namedQuery) { - this.removeNamedQuery_(this.namedQueries.indexOf(namedQuery)); + protected ContextListContainer buildNamedQueryContainer() { + return new NamedQueryContainer(); } /** - * named query container adapter + * named query container */ - protected class NamedQueryContainerAdapter - implements ContextContainerTools.Adapter + protected class NamedQueryContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaQueryContainer.this.getNamedQueries(); + @Override + protected String getContextElementsPropertyName() { + return NAMED_QUERIES_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaNamedQuery buildContextElement(NamedQueryAnnotation resourceElement) { + return GenericJavaQueryContainer.this.buildNamedQuery(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaQueryContainer.this.getNamedQueryAnnotations(); } - public NamedQueryAnnotation getResourceElement(JavaNamedQuery contextElement) { + @Override + protected NamedQueryAnnotation getResourceElement(JavaNamedQuery contextElement) { return contextElement.getQueryAnnotation(); } - public void moveContextElement(int index, JavaNamedQuery element) { - GenericJavaQueryContainer.this.moveNamedQuery_(index, element); - } - public void addContextElement(int index, NamedQueryAnnotation resourceElement) { - GenericJavaQueryContainer.this.addNamedQuery_(index, resourceElement); - } - public void removeContextElement(JavaNamedQuery element) { - GenericJavaQueryContainer.this.removeNamedQuery_(element); - } } // ********** named native queries ********** - public ListIterator namedNativeQueries() { - return this.getNamedNativeQueries().iterator(); + public ListIterable getNamedNativeQueries() { + return this.namedNativeQueryContainer.getContextElements(); } - protected ListIterable getNamedNativeQueries() { - return new LiveCloneListIterable(this.namedNativeQueries); - } - - public int namedNativeQueriesSize() { - return this.namedNativeQueries.size(); + public int getNamedNativeQueriesSize() { + return this.namedNativeQueryContainer.getContextElementsSize(); } public JavaNamedNativeQuery addNamedNativeQuery() { - return this.addNamedNativeQuery(this.namedNativeQueries.size()); + return this.addNamedNativeQuery(this.getNamedNativeQueriesSize()); } public JavaNamedNativeQuery addNamedNativeQuery(int index) { - NamedNativeQueryAnnotation annotation = this.buildNamedNativeQueryAnnotation(index); - return this.addNamedNativeQuery_(index, annotation); + NamedNativeQueryAnnotation annotation = this.addNamedNativeQueryAnnotation(index); + return this.namedNativeQueryContainer.addContextElement(index, annotation); } - protected NamedNativeQueryAnnotation buildNamedNativeQueryAnnotation(int index) { - return (NamedNativeQueryAnnotation) this.owner.getResourceAnnotatedElement().addAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); + protected NamedNativeQueryAnnotation addNamedNativeQueryAnnotation(int index) { + return (NamedNativeQueryAnnotation) this.owner.getResourceAnnotatedElement().addAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME); } public void removeNamedNativeQuery(NamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery(this.namedNativeQueries.indexOf(namedNativeQuery)); + this.removeNamedNativeQuery(this.namedNativeQueryContainer.indexOfContextElement((JavaNamedNativeQuery) namedNativeQuery)); } public void removeNamedNativeQuery(int index) { - this.owner.getResourceAnnotatedElement().removeAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - this.removeNamedNativeQuery_(index); - } - - protected void removeNamedNativeQuery_(int index) { - this.removeItemFromList(index, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); + this.owner.getResourceAnnotatedElement().removeAnnotation(index, NamedNativeQueryAnnotation.ANNOTATION_NAME); + this.namedNativeQueryContainer.removeContextElement(index); } public void moveNamedNativeQuery(int targetIndex, int sourceIndex) { - this.owner.getResourceAnnotatedElement().moveAnnotation(targetIndex, sourceIndex, NamedNativeQueriesAnnotation.ANNOTATION_NAME); - this.moveItemInList(targetIndex, sourceIndex, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - protected void initializeNamedNativeQueries() { - for (NamedNativeQueryAnnotation annotation : this.getNamedNativeQueryAnnotations()) { - this.namedNativeQueries.add(this.buildNamedNativeQuery(annotation)); - } + this.owner.getResourceAnnotatedElement().moveAnnotation(targetIndex, sourceIndex, NamedNativeQueryAnnotation.ANNOTATION_NAME); + this.namedNativeQueryContainer.moveContextElement(targetIndex, sourceIndex); } protected JavaNamedNativeQuery buildNamedNativeQuery(NamedNativeQueryAnnotation namedNativeQueryAnnotation) { @@ -251,63 +194,47 @@ public class GenericJavaQueryContainer } protected void syncNamedNativeQueries() { - ContextContainerTools.synchronizeWithResourceModel(this.namedNativeQueryContainerAdapter); - } - - protected Iterable getNamedNativeQueryAnnotations() { - return CollectionTools.iterable(this.namedNativeQueryAnnotations()); + this.namedNativeQueryContainer.synchronizeWithResourceModel(); } - protected Iterator namedNativeQueryAnnotations() { - return new SuperIteratorWrapper(this.nestableNamedNativeQueryAnnotations()); + protected void updateNamedNativeQueries() { + this.namedNativeQueryContainer.update(); } - protected Iterator nestableNamedNativeQueryAnnotations() { - return new SubIteratorWrapper(this.nestableNamedNativeQueryAnnotations_()); + protected ListIterable getNamedNativeQueryAnnotations() { + return new SubListIterableWrapper(this.getNestableNamedNativeQueryAnnotations_()); } - protected Iterator nestableNamedNativeQueryAnnotations_() { - return this.owner.getResourceAnnotatedElement().annotations(NamedNativeQueryAnnotation.ANNOTATION_NAME, NamedNativeQueriesAnnotation.ANNOTATION_NAME); + protected ListIterable getNestableNamedNativeQueryAnnotations_() { + return this.owner.getResourceAnnotatedElement().getAnnotations(NamedNativeQueryAnnotation.ANNOTATION_NAME); } - protected void moveNamedNativeQuery_(int index, JavaNamedNativeQuery namedNativeQuery) { - this.moveItemInList(index, namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - protected JavaNamedNativeQuery addNamedNativeQuery_(int index, NamedNativeQueryAnnotation namedNativeQueryAnnotation) { - JavaNamedNativeQuery query = this.buildNamedNativeQuery(namedNativeQueryAnnotation); - this.addItemToList(index, query, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - return query; - } - - protected void removeNamedNativeQuery_(JavaNamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery_(this.namedNativeQueries.indexOf(namedNativeQuery)); + protected ContextListContainer buildNamedNativeQueryContainer() { + return new NamedNativeQueryContainer(); } /** - * named native query container adapter + * named query container */ - protected class NamedNativeQueryContainerAdapter - implements ContextContainerTools.Adapter + protected class NamedNativeQueryContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaQueryContainer.this.getNamedNativeQueries(); + @Override + protected String getContextElementsPropertyName() { + return NAMED_NATIVE_QUERIES_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaNamedNativeQuery buildContextElement(NamedNativeQueryAnnotation resourceElement) { + return GenericJavaQueryContainer.this.buildNamedNativeQuery(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaQueryContainer.this.getNamedNativeQueryAnnotations(); } - public NamedNativeQueryAnnotation getResourceElement(JavaNamedNativeQuery contextElement) { + @Override + protected NamedNativeQueryAnnotation getResourceElement(JavaNamedNativeQuery contextElement) { return contextElement.getQueryAnnotation(); } - public void moveContextElement(int index, JavaNamedNativeQuery element) { - GenericJavaQueryContainer.this.moveNamedNativeQuery_(index, element); - } - public void addContextElement(int index, NamedNativeQueryAnnotation resourceElement) { - GenericJavaQueryContainer.this.addNamedNativeQuery_(index, resourceElement); - } - public void removeContextElement(JavaNamedNativeQuery element) { - GenericJavaQueryContainer.this.removeNamedNativeQuery_(element); - } } 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 5c71d1f567..52d5280d24 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 @@ -11,14 +11,10 @@ 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; import org.eclipse.jpt.common.utility.Filter; -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; @@ -27,7 +23,6 @@ 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; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaTable; import org.eclipse.jpt.jpa.core.internal.resource.java.NullJoinColumnAnnotation; @@ -43,8 +38,7 @@ public abstract class GenericJavaReferenceTable implements JavaReferenceTable { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter(); + protected final SpecifiedJoinColumnContainer specifiedJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner; protected JavaJoinColumn defaultJoinColumn; @@ -53,7 +47,7 @@ public abstract class GenericJavaReferenceTable joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } public void convertDefaultJoinColumnToSpecified() { @@ -94,106 +84,81 @@ public abstract class GenericJavaReferenceTable specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); - } - - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public JavaJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } public JavaJoinColumn addSpecifiedJoinColumn() { - return this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size()); + return this.addSpecifiedJoinColumn(this.getSpecifiedJoinColumnsSize()); } public JavaJoinColumn addSpecifiedJoinColumn(int index) { JoinColumnAnnotation annotation = this.getTableAnnotation().addJoinColumn(index); - return this.addSpecifiedJoinColumn_(index, annotation); + return this.specifiedJoinColumnContainer.addContextElement(index, annotation); } public void removeSpecifiedJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedJoinColumn(this.specifiedJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedJoinColumn(this.specifiedJoinColumnContainer.indexOfContextElement((JavaJoinColumn) joinColumn)); } public void removeSpecifiedJoinColumn(int index) { this.getTableAnnotation().removeJoinColumn(index); this.removeTableAnnotationIfUnset(); - this.removeSpecifiedJoinColumn_(index); - } - - protected void removeSpecifiedJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.removeContextElement(index); } public void moveSpecifiedJoinColumn(int targetIndex, int sourceIndex) { this.getTableAnnotation().moveJoinColumn(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected void initializeSpecifiedJoinColumns() { - for (JoinColumnAnnotation joinColumnAnnotation : this.getJoinColumnAnnotations()) { - this.specifiedJoinColumns.add(this.buildJoinColumn(joinColumnAnnotation)); - } + this.specifiedJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncSpecifiedJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedJoinColumnContainerAdapter); - } - - protected Iterable getJoinColumnAnnotations() { - return CollectionTools.iterable(this.getTableAnnotation().joinColumns()); + this.specifiedJoinColumnContainer.synchronizeWithResourceModel(); } - protected void moveSpecifiedJoinColumn_(int index, JavaJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + protected void updateSpecifiedJoinColumns() { + this.specifiedJoinColumnContainer.update(); } - protected JavaJoinColumn addSpecifiedJoinColumn_(int index, JoinColumnAnnotation joinColumnAnnotation) { - JavaJoinColumn joinColumn = this.buildJoinColumn(joinColumnAnnotation); - this.addItemToList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - return joinColumn; + protected ListIterable getJoinColumnAnnotations() { + return this.getTableAnnotation().getJoinColumns(); } - protected void removeSpecifiedJoinColumn_(JavaJoinColumn joinColumn) { - this.removeSpecifiedJoinColumn_(this.specifiedJoinColumns.indexOf(joinColumn)); - } /** - * specified join column container adapter + * join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaReferenceTable.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaJoinColumn buildContextElement(JoinColumnAnnotation resourceElement) { + return GenericJavaReferenceTable.this.buildJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaReferenceTable.this.getJoinColumnAnnotations(); } - public JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { + @Override + protected JoinColumnAnnotation getResourceElement(JavaJoinColumn contextElement) { return contextElement.getColumnAnnotation(); } - public void moveContextElement(int index, JavaJoinColumn element) { - GenericJavaReferenceTable.this.moveSpecifiedJoinColumn_(index, element); - } - public void addContextElement(int index, JoinColumnAnnotation resourceElement) { - GenericJavaReferenceTable.this.addSpecifiedJoinColumn_(index, resourceElement); - } - public void removeContextElement(JavaJoinColumn element) { - GenericJavaReferenceTable.this.removeSpecifiedJoinColumn_(element); - } } protected abstract JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner(); @@ -242,14 +207,14 @@ public abstract class GenericJavaReferenceTable specifiedPrimaryKeyJoinColumns = new Vector(); - protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter(); + protected final JavaPrimaryKeyJoinColumnContainer specifiedPrimaryKeyJoinColumnContainer; protected final JavaReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner; protected JavaPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; @@ -62,7 +56,7 @@ public class GenericJavaSecondaryTable public GenericJavaSecondaryTable(JavaEntity parent, Owner owner, SecondaryTableAnnotation tableAnnotation) { super(parent, owner, tableAnnotation); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); - this.initializeSpecifiedPrimaryKeyJoinColumns(); + this.specifiedPrimaryKeyJoinColumnContainer = new JavaPrimaryKeyJoinColumnContainer(); } @@ -77,7 +71,7 @@ public class GenericJavaSecondaryTable @Override public void update() { super.update(); - this.updateNodes(this.getSpecifiedPrimaryKeyJoinColumns()); + this.updateSpecifiedPrimaryKeyJoinColumns(); this.updateDefaultPrimaryKeyJoinColumn(); } @@ -111,117 +105,88 @@ public class GenericJavaSecondaryTable // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getPrimaryKeyJoinColumns() { + public ListIterable getPrimaryKeyJoinColumns() { return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumns() : this.getDefaultPrimaryKeyJoinColumns(); } - public int primaryKeyJoinColumnsSize() { - return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); + public int getPrimaryKeyJoinColumnsSize() { + return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); } // ********** specified primary key join columns ********** - public ListIterator specifiedPrimaryKeyJoinColumns() { - return this.getSpecifiedPrimaryKeyJoinColumns().iterator(); - } public ListIterable getSpecifiedPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.specifiedPrimaryKeyJoinColumns); + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElements(); } - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); + public int getSpecifiedPrimaryKeyJoinColumnsSize() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElementsSize(); } protected boolean hasSpecifiedPrimaryKeyJoinColumns() { - return this.specifiedPrimaryKeyJoinColumns.size() != 0; + return this.getSpecifiedPrimaryKeyJoinColumnsSize() != 0; } public JavaPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn() { - return this.addSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.size()); + return this.addSpecifiedPrimaryKeyJoinColumn(this.getSpecifiedPrimaryKeyJoinColumnsSize()); } public JavaPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { PrimaryKeyJoinColumnAnnotation annotation = this.tableAnnotation.addPkJoinColumn(index); - return this.addSpecifiedPrimaryKeyJoinColumn_(index, annotation); + return this.specifiedPrimaryKeyJoinColumnContainer.addContextElement(index, annotation); } public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumnContainer.indexOfContextElement((JavaPrimaryKeyJoinColumn) joinColumn)); } public void removeSpecifiedPrimaryKeyJoinColumn(int index) { this.tableAnnotation.removePkJoinColumn(index); this.removeTableAnnotationIfUnset(); - this.removeSpecifiedPrimaryKeyJoinColumn_(index); - } - - protected void removeSpecifiedPrimaryKeyJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.specifiedPrimaryKeyJoinColumnContainer.removeContextElement(index); } public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { this.tableAnnotation.movePkJoinColumn(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected void initializeSpecifiedPrimaryKeyJoinColumns() { - for (PrimaryKeyJoinColumnAnnotation annotation : this.getPrimaryKeyJoinColumnAnnotations()) { - this.specifiedPrimaryKeyJoinColumns.add(this.buildPrimaryKeyJoinColumn(annotation)); - } + this.specifiedPrimaryKeyJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncSpecifiedPrimaryKeyJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedPrimaryKeyJoinColumnContainerAdapter); + this.specifiedPrimaryKeyJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getPrimaryKeyJoinColumnAnnotations() { - return CollectionTools.iterable(this.tableAnnotation.pkJoinColumns()); + protected void updateSpecifiedPrimaryKeyJoinColumns() { + this.specifiedPrimaryKeyJoinColumnContainer.update(); } - protected void moveSpecifiedPrimaryKeyJoinColumn_(int index, JavaPrimaryKeyJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - - protected JavaPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn_(int index, PrimaryKeyJoinColumnAnnotation pkJoinColumnAnnotation) { - JavaPrimaryKeyJoinColumn joinColumn = this.buildPrimaryKeyJoinColumn(pkJoinColumnAnnotation); - this.addItemToList(index, joinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removeSpecifiedPrimaryKeyJoinColumn_(JavaPrimaryKeyJoinColumn joinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn_(this.specifiedPrimaryKeyJoinColumns.indexOf(joinColumn)); + protected ListIterable getPrimaryKeyJoinColumnAnnotations() { + return this.tableAnnotation.getPkJoinColumns(); } /** - * specified primary key join column container adapter + * specified primary key join column container */ - protected class SpecifiedPrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class JavaPrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaSecondaryTable.this.getSpecifiedPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected JavaPrimaryKeyJoinColumn buildContextElement(PrimaryKeyJoinColumnAnnotation resourceElement) { + return GenericJavaSecondaryTable.this.buildPrimaryKeyJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericJavaSecondaryTable.this.getPrimaryKeyJoinColumnAnnotations(); } - public PrimaryKeyJoinColumnAnnotation getResourceElement(JavaPrimaryKeyJoinColumn contextElement) { + @Override + protected PrimaryKeyJoinColumnAnnotation getResourceElement(JavaPrimaryKeyJoinColumn contextElement) { return contextElement.getColumnAnnotation(); } - public void moveContextElement(int index, JavaPrimaryKeyJoinColumn element) { - GenericJavaSecondaryTable.this.moveSpecifiedPrimaryKeyJoinColumn_(index, element); - } - public void addContextElement(int index, PrimaryKeyJoinColumnAnnotation resourceElement) { - GenericJavaSecondaryTable.this.addSpecifiedPrimaryKeyJoinColumn_(index, resourceElement); - } - public void removeContextElement(JavaPrimaryKeyJoinColumn element) { - GenericJavaSecondaryTable.this.removeSpecifiedPrimaryKeyJoinColumn_(element); - } } protected JavaReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() { @@ -317,7 +282,7 @@ public class GenericJavaSecondaryTable if (result != null) { return result; } - for (JavaPrimaryKeyJoinColumn column : CollectionTools.iterable(this.primaryKeyJoinColumns())) { + for (JavaPrimaryKeyJoinColumn column : this.getPrimaryKeyJoinColumns()) { result = column.javaCompletionProposals(pos, filter, astRoot); if (result != null) { return result; @@ -337,8 +302,8 @@ public class GenericJavaSecondaryTable //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 (Iterator stream = this.primaryKeyJoinColumns(); stream.hasNext(); ) { - stream.next().validate(messages, reporter, astRoot); + for (JavaPrimaryKeyJoinColumn pkJoinColumn : this.getPrimaryKeyJoinColumns()) { + pkJoinColumn.validate(messages, reporter, astRoot); } } } @@ -373,8 +338,8 @@ public class GenericJavaSecondaryTable return this.getTypeMapping().getPrimaryDbTable(); } - public int joinColumnsSize() { - return GenericJavaSecondaryTable.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaSecondaryTable.this.getPrimaryKeyJoinColumnsSize(); } public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) { @@ -382,7 +347,7 @@ public class GenericJavaSecondaryTable } public String getDefaultColumnName() { - if (this.joinColumnsSize() != 1) { + if (this.getJoinColumnsSize() != 1) { return null; } return this.getEntity().getPrimaryKeyColumnName(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTable.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTable.java index 5b2a3ab0a7..a0990dd1b9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTable.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTable.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,9 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaTable; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.java.TableAnnotation; /** @@ -30,20 +30,20 @@ public class GenericJavaTable @Override public TableAnnotation getTableAnnotation() { // TODO get the NullTableAnnotation from the resource model or build it here in the context model?? - return (TableAnnotation) this.getResourcePersistentType().getNonNullAnnotation(this.getAnnotationName()); + return (TableAnnotation) this.getJavaResourceType().getNonNullAnnotation(this.getAnnotationName()); } @Override protected void removeTableAnnotation() { - this.getResourcePersistentType().removeAnnotation(this.getAnnotationName()); + this.getJavaResourceType().removeAnnotation(this.getAnnotationName()); } protected String getAnnotationName() { return TableAnnotation.ANNOTATION_NAME; } - protected JavaResourcePersistentType getResourcePersistentType() { - return this.getEntity().getPersistentType().getResourcePersistentType(); + protected JavaResourceType getJavaResourceType() { + return this.getEntity().getPersistentType().getJavaResourceType(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTableGenerator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTableGenerator.java index 2bd6e5a3ab..db4131d47c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTableGenerator.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaTableGenerator.java @@ -10,20 +10,17 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import java.util.Iterator; -import java.util.Vector; 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.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.common.utility.internal.iterables.LiveCloneIterable; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.jpa.core.context.UniqueConstraint; import org.eclipse.jpt.jpa.core.context.java.JavaJpaContextNode; import org.eclipse.jpt.jpa.core.context.java.JavaTableGenerator; import org.eclipse.jpt.jpa.core.context.java.JavaUniqueConstraint; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaGenerator; import org.eclipse.jpt.jpa.core.resource.java.TableGeneratorAnnotation; import org.eclipse.jpt.jpa.core.resource.java.UniqueConstraintAnnotation; @@ -57,8 +54,7 @@ public class GenericJavaTableGenerator protected String specifiedPkColumnValue; protected String defaultPkColumnValue; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final UniqueConstraintContainer uniqueConstraintContainer; // ********** constructor ********** @@ -71,7 +67,7 @@ public class GenericJavaTableGenerator this.specifiedPkColumnName = generatorAnnotation.getPkColumnName(); this.specifiedValueColumnName = generatorAnnotation.getValueColumnName(); this.specifiedPkColumnValue = generatorAnnotation.getPkColumnValue(); - this.initializeUniqueConstraints(); + this.uniqueConstraintContainer = new UniqueConstraintContainer(); } @@ -334,98 +330,80 @@ public class GenericJavaTableGenerator // ********** unique constraints ********** - - public Iterable getUniqueConstraints() { - return new LiveCloneIterable(this.uniqueConstraints); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } public int getUniqueConstraintsSize() { - return this.uniqueConstraints.size(); + return this.uniqueConstraintContainer.getContextElementsSize(); } - public JavaUniqueConstraint addUniqueConstraint() { - return this.addUniqueConstraint(this.uniqueConstraints.size()); + public JavaUniqueConstraint getUniqueConstraint(int index) { + return this.uniqueConstraintContainer.getContextElement(index); } - public JavaUniqueConstraint addUniqueConstraint(int index) { - UniqueConstraintAnnotation constraintAnnotation = this.generatorAnnotation.addUniqueConstraint(index); - return this.addUniqueConstraint_(index, constraintAnnotation); + public JavaUniqueConstraint addUniqueConstraint() { + return this.addUniqueConstraint(this.getUniqueConstraintsSize()); } - public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); + public JavaUniqueConstraint addUniqueConstraint(int index) { + UniqueConstraintAnnotation annotation = this.getGeneratorAnnotation().addUniqueConstraint(index); + return this.uniqueConstraintContainer.addContextElement(index, annotation); } public void removeUniqueConstraint(int index) { - this.generatorAnnotation.removeUniqueConstraint(index); - this.removeUniqueConstraint_(index); + this.getGeneratorAnnotation().removeUniqueConstraint(index); + this.uniqueConstraintContainer.removeContextElement(index); } - protected void removeUniqueConstraint_(int index) { - this.removeItemFromList(index, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { + this.removeUniqueConstraint(this.uniqueConstraintContainer.indexOfContextElement((JavaUniqueConstraint) uniqueConstraint)); } public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - this.generatorAnnotation.moveUniqueConstraint(targetIndex, sourceIndex); - this.moveItemInList(targetIndex, sourceIndex, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - - protected void initializeUniqueConstraints() { - for (Iterator stream = this.generatorAnnotation.uniqueConstraints(); stream.hasNext(); ) { - this.uniqueConstraints.add(this.buildUniqueConstraint(stream.next())); - } - } - - protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation constraintAnnotation) { - return this.getJpaFactory().buildJavaUniqueConstraint(this, this, constraintAnnotation); + this.getGeneratorAnnotation().moveUniqueConstraint(targetIndex, sourceIndex); + this.uniqueConstraintContainer.moveContextElement(targetIndex, sourceIndex); } protected void syncUniqueConstraints() { - ContextContainerTools.synchronizeWithResourceModel(this.uniqueConstraintContainerAdapter); + this.uniqueConstraintContainer.synchronizeWithResourceModel(); } - protected Iterable getUniqueConstraintAnnotations() { - return CollectionTools.iterable(this.generatorAnnotation.uniqueConstraints()); + protected void updateUniqueConstraints() { + this.uniqueConstraintContainer.synchronizeWithResourceModel(); } - protected void moveUniqueConstraint_(int index, JavaUniqueConstraint uniqueConstraint) { - this.moveItemInList(index, uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + protected JavaUniqueConstraint buildUniqueConstraint(UniqueConstraintAnnotation constraintAnnotation) { + return this.getJpaFactory().buildJavaUniqueConstraint(this, this, constraintAnnotation); } - protected JavaUniqueConstraint addUniqueConstraint_(int index, UniqueConstraintAnnotation constraintAnnotation) { - JavaUniqueConstraint constraint = this.buildUniqueConstraint(constraintAnnotation); - this.addItemToList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return constraint; + protected ListIterable getUniqueConstraintAnnotations() { + return this.getGeneratorAnnotation().getUniqueConstraints(); } - protected void removeUniqueConstraint_(JavaUniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint_(this.uniqueConstraints.indexOf(uniqueConstraint)); - } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaTableGenerator.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; + } + @Override + protected JavaUniqueConstraint buildContextElement(UniqueConstraintAnnotation resourceElement) { + return GenericJavaTableGenerator.this.buildUniqueConstraint(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return GenericJavaTableGenerator.this.getUniqueConstraintAnnotations(); } - public UniqueConstraintAnnotation getResourceElement(JavaUniqueConstraint contextElement) { + @Override + protected UniqueConstraintAnnotation getResourceElement(JavaUniqueConstraint contextElement) { return contextElement.getUniqueConstraintAnnotation(); } - public void moveContextElement(int index, JavaUniqueConstraint element) { - GenericJavaTableGenerator.this.moveUniqueConstraint_(index, element); - } - public void addContextElement(int index, UniqueConstraintAnnotation resourceElement) { - GenericJavaTableGenerator.this.addUniqueConstraint_(index, resourceElement); - } - public void removeContextElement(JavaUniqueConstraint element) { - GenericJavaTableGenerator.this.removeUniqueConstraint_(element); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaUniqueConstraint.java index 5f86c553af..90e13c3b56 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaUniqueConstraint.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/GenericJavaUniqueConstraint.java @@ -13,7 +13,6 @@ import java.util.Iterator; 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.StringTools; import org.eclipse.jpt.common.utility.internal.iterators.FilteringIterator; import org.eclipse.jpt.jpa.core.context.ReadOnlyUniqueConstraint; @@ -73,14 +72,14 @@ public class GenericJavaUniqueConstraint } protected void initializeColumnNames() { - for (Iterator stream = this.uniqueConstraintAnnotation.columnNames(); stream.hasNext(); ) { - this.columnNames.add(stream.next()); + for (String columnName : this.getResourceColumnNames()) { + this.columnNames.add(columnName); } } @Override protected Iterable getResourceColumnNames() { - return CollectionTools.iterable(this.uniqueConstraintAnnotation.columnNames()); + return this.uniqueConstraintAnnotation.getColumnNames(); } // ********** Java completion proposals ********** 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 f4b1cd9e31..e91f4040e3 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 @@ -11,16 +11,12 @@ 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; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; 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.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseColumn; @@ -37,7 +33,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaVirtualJoinColumn; 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; @@ -49,8 +44,7 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy extends AbstractJavaJpaContextNode implements JavaVirtualJoinColumnRelationshipStrategy { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter; + protected final SpecifiedJoinColumnContainer specifiedJoinColumnContainer; protected final JavaReadOnlyJoinColumn.Owner joinColumnOwner; protected JavaVirtualJoinColumn defaultJoinColumn; @@ -58,7 +52,7 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy public GenericJavaVirtualOverrideJoinColumnRelationshipStrategy(JavaVirtualOverrideRelationship parent) { super(parent); - this.specifiedJoinColumnContainerAdapter = this.buildSpecifiedJoinColumnContainerAdapter(); + this.specifiedJoinColumnContainer = new SpecifiedJoinColumnContainer(); this.joinColumnOwner = this.buildJoinColumnOwner(); } @@ -75,94 +69,79 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy // ********** join columns ********** - public ListIterator joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); - } - - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public JavaVirtualJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } protected void updateSpecifiedJoinColumns() { - ContextContainerTools.update(this.specifiedJoinColumnContainerAdapter); + this.specifiedJoinColumnContainer.update(); } - protected Iterable getOverriddenSpecifiedJoinColumns() { + protected ListIterable getOverriddenSpecifiedJoinColumns() { ReadOnlyJoinColumnRelationshipStrategy overriddenStrategy = this.getOverriddenStrategy(); return (overriddenStrategy == null) ? - EmptyIterable.instance() : - CollectionTools.iterable(overriddenStrategy.specifiedJoinColumns()); + EmptyListIterable.instance() : + new SuperListIterableWrapper(overriddenStrategy.getSpecifiedJoinColumns()); } + protected void moveSpecifiedJoinColumn(int index, JavaVirtualJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); + this.specifiedJoinColumnContainer.moveContextElement(index, 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; + return this.specifiedJoinColumnContainer.addContextElement(index, joinColumn); } protected void removeSpecifiedJoinColumn(JavaVirtualJoinColumn joinColumn) { - this.removeItemFromList(joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected SpecifiedJoinColumnContainerAdapter buildSpecifiedJoinColumnContainerAdapter() { - return new SpecifiedJoinColumnContainerAdapter(); + this.specifiedJoinColumnContainer.removeContextElement(joinColumn); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; + } + @Override + protected JavaVirtualJoinColumn buildContextElement(ReadOnlyJoinColumn resourceElement) { + return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.buildJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getOverriddenSpecifiedJoinColumns(); } - public ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { + @Override + protected ReadOnlyJoinColumn getResourceElement(JavaVirtualJoinColumn contextElement) { return contextElement.getOverriddenColumn(); } - public void moveContextElement(int index, JavaVirtualJoinColumn element) { - GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.moveSpecifiedJoinColumn(index, element); - } - public void addContextElement(int index, ReadOnlyJoinColumn resourceElement) { - GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.addSpecifiedJoinColumn(index, resourceElement); - } - public void removeContextElement(JavaVirtualJoinColumn element) { - GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.removeSpecifiedJoinColumn(element); - } } protected JavaReadOnlyJoinColumn.Owner buildJoinColumnOwner() { @@ -395,8 +374,8 @@ public class GenericJavaVirtualOverrideJoinColumnRelationshipStrategy return false; } - public int joinColumnsSize() { - return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaVirtualOverrideJoinColumnRelationshipStrategy.this.getJoinColumnsSize(); } public TextRange getValidationTextRange(CompilationUnit astRoot) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaConverter.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaConverter.java index d962bed134..90d1ba4ff9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaConverter.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/java/NullJavaConverter.java @@ -10,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.Annotation; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.context.Converter; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping; import org.eclipse.jpt.jpa.core.context.java.JavaConverter; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; public class NullJavaConverter extends AbstractJavaJpaContextNode 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 9d58d77640..df7fd609dd 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 @@ -9,10 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.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.common.utility.internal.iterators.EmptyListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy; import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy; @@ -41,22 +41,22 @@ public class NullJavaJoinColumnRelationshipStrategy // ********** join columns ********** - public ListIterator joinColumns() { - return EmptyListIterator.instance(); + public ListIterable getJoinColumns() { + return EmptyListIterable.instance(); } - public int joinColumnsSize() { + public int getJoinColumnsSize() { return 0; } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return EmptyListIterator.instance(); + public ListIterable getSpecifiedJoinColumns() { + return EmptyListIterable.instance(); } - public int specifiedJoinColumnsSize() { + public int getSpecifiedJoinColumnsSize() { return 0; } 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 d219d5f05a..af65063f3b 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 @@ -11,7 +11,6 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.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; @@ -89,16 +88,12 @@ public abstract class AbstractOrmOverrideContainer< // ********** overrides ********** - public ListIterator overrides() { - return this.getOverrides().iterator(); - } - @SuppressWarnings("unchecked") - protected ListIterable getOverrides() { + public ListIterable getOverrides() { return new CompositeListIterable(this.getReadOnlySpecifiedOverrides(), this.getReadOnlyVirtualOverrides()); } - public int overridesSize() { + public int getOverridesSize() { return this.specifiedOverrides.size() + this.virtualOverrides.size(); } @@ -183,11 +178,7 @@ public abstract class AbstractOrmOverrideContainer< // ********** specified overrides ********** - public ListIterator specifiedOverrides() { - return this.getSpecifiedOverrides().iterator(); - } - - protected ListIterable getSpecifiedOverrides() { + public ListIterable getSpecifiedOverrides() { return new LiveCloneListIterable(this.specifiedOverrides); } @@ -198,7 +189,7 @@ public abstract class AbstractOrmOverrideContainer< return (ListIterable) this.getSpecifiedOverrides(); } - public int specifiedOverridesSize() { + public int getSpecifiedOverridesSize() { return this.specifiedOverrides.size(); } @@ -311,11 +302,7 @@ public abstract class AbstractOrmOverrideContainer< // ********** virtual overrides ********** - public ListIterator virtualOverrides() { - return this.getVirtualOverrides().iterator(); - } - - protected ListIterable getVirtualOverrides() { + public ListIterable getVirtualOverrides() { return new LiveCloneListIterable(this.virtualOverrides); } @@ -326,7 +313,7 @@ public abstract class AbstractOrmOverrideContainer< return (ListIterable) this.getVirtualOverrides(); } - public int virtualOverridesSize() { + public int getVirtualOverridesSize() { return this.virtualOverrides.size(); } 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 df648a19aa..6b56484f04 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 @@ -9,7 +9,6 @@ ******************************************************************************/ 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.ReadOnlyColumn; import org.eclipse.jpt.jpa.core.context.XmlContextNode; @@ -59,7 +58,7 @@ public class GenericOrmAttributeOverrideContainer } public void initializeFrom(OrmAttributeOverrideContainer oldContainer) { - for (OrmAttributeOverride oldOverride : CollectionTools.iterable(oldContainer.specifiedOverrides())) { + for (OrmAttributeOverride oldOverride : oldContainer.getSpecifiedOverrides()) { this.addSpecifiedOverride().initializeFrom(oldOverride); } } 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 ae4945043e..ea2deb17e8 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 @@ -119,7 +119,7 @@ public class GenericOrmEmbeddedIdMapping // attribute overrides are in error // (in JPA 1.0, this will obviously never be reached) if (this.derived - && (this.attributeOverrideContainer.specifiedOverridesSize() > 0)) { + && (this.attributeOverrideContainer.getSpecifiedOverridesSize() > 0)) { messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.HIGH_SEVERITY, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmGeneratedValue.java index 33c0c8fc93..b97f0016de 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmGeneratedValue.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmGeneratedValue.java @@ -9,7 +9,6 @@ ******************************************************************************/ 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.GenerationType; @@ -165,8 +164,8 @@ public class GenericOrmGeneratedValue return; } - for (Iterator stream = this.getPersistenceUnit().generators(); stream.hasNext(); ) { - if (generator.equals(stream.next().getName())) { + for (Generator next : this.getPersistenceUnit().getGenerators()) { + if (generator.equals(next.getName())) { return; } } 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 93a466dc13..454384b2d8 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 @@ -11,15 +11,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.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.EmptyIterable; 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.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.iterators.EmptyIterator; @@ -37,7 +32,6 @@ 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; import org.eclipse.jpt.jpa.core.internal.context.MappingTools; @@ -54,8 +48,7 @@ public class GenericOrmJoinTable extends GenericOrmReferenceTable implements OrmJoinTable { - protected final Vector specifiedInverseJoinColumns = new Vector(); - protected final SpecifiedInverseJoinColumnContainerAdapter specifiedInverseJoinColumnContainerAdapter = new SpecifiedInverseJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedInverseJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner inverseJoinColumnOwner; protected OrmJoinColumn defaultInverseJoinColumn; @@ -64,7 +57,7 @@ public class GenericOrmJoinTable public GenericOrmJoinTable(OrmJoinTableRelationshipStrategy parent, Owner owner) { super(parent, owner); this.inverseJoinColumnOwner = this.buildInverseJoinColumnOwner(); - this.initializeSpecifiedInverseJoinColumns(); + this.specifiedInverseJoinColumnContainer = this.buildSpecifiedInverseJoinColumnContainer(); } @Override @@ -112,16 +105,12 @@ public class GenericOrmJoinTable // ********** inverse join columns ********** - public ListIterator inverseJoinColumns() { - return this.getInverseJoinColumns().iterator(); - } - - protected ListIterable getInverseJoinColumns() { + public ListIterable getInverseJoinColumns() { return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumns() : this.getDefaultInverseJoinColumns(); } - public int inverseJoinColumnsSize() { - return this.hasSpecifiedInverseJoinColumns() ? this.specifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); + public int getInverseJoinColumnsSize() { + return this.hasSpecifiedInverseJoinColumns() ? this.getSpecifiedInverseJoinColumnsSize() : this.getDefaultInverseJoinColumnsSize(); } public void convertDefaultInverseJoinColumnToSpecified() { @@ -131,118 +120,92 @@ public class GenericOrmJoinTable // ********** specified inverse join columns ********** - public ListIterator specifiedInverseJoinColumns() { - return this.getSpecifiedInverseJoinColumns().iterator(); - } - public ListIterable getSpecifiedInverseJoinColumns() { - return new LiveCloneListIterable(this.specifiedInverseJoinColumns); + return this.specifiedInverseJoinColumnContainer.getContextElements(); } - public int specifiedInverseJoinColumnsSize() { - return this.specifiedInverseJoinColumns.size(); + public int getSpecifiedInverseJoinColumnsSize() { + return this.specifiedInverseJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedInverseJoinColumns() { - return this.specifiedInverseJoinColumns.size() != 0; + return this.getSpecifiedInverseJoinColumnsSize() != 0; } public OrmJoinColumn getSpecifiedInverseJoinColumn(int index) { - return this.specifiedInverseJoinColumns.get(index); + return this.specifiedInverseJoinColumnContainer.getContextElement(index); } public OrmJoinColumn addSpecifiedInverseJoinColumn() { - return this.addSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.size()); + return this.addSpecifiedInverseJoinColumn(this.getSpecifiedInverseJoinColumnsSize()); } public OrmJoinColumn addSpecifiedInverseJoinColumn(int index) { XmlJoinTable xmlTable = this.getXmlTableForUpdate(); XmlJoinColumn xmlJoinColumn = this.buildXmlJoinColumn(); - OrmJoinColumn joinColumn = this.addSpecifiedInverseJoinColumn_(index, xmlJoinColumn); + OrmJoinColumn joinColumn = this.specifiedInverseJoinColumnContainer.addContextElement(index, xmlJoinColumn); xmlTable.getInverseJoinColumns().add(index, xmlJoinColumn); return joinColumn; } public void removeSpecifiedInverseJoinColumn(JoinColumn joinColumn) { - this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedInverseJoinColumn(this.specifiedInverseJoinColumnContainer.indexOfContextElement((OrmJoinColumn) joinColumn)); } public void removeSpecifiedInverseJoinColumn(int index) { - this.removeSpecifiedInverseJoinColumn_(index); + this.specifiedInverseJoinColumnContainer.removeContextElement(index); this.getXmlTable().getInverseJoinColumns().remove(index); this.removeXmlTableIfUnset(); } - protected void removeSpecifiedInverseJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - } - public void moveSpecifiedInverseJoinColumn(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); this.getXmlTable().getInverseJoinColumns().move(targetIndex, sourceIndex); } public void clearSpecifiedInverseJoinColumns() { - this.clearCollection(this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + this.specifiedInverseJoinColumnContainer.clearContextList(); this.getXmlTable().getInverseJoinColumns().clear(); } - protected void initializeSpecifiedInverseJoinColumns() { - for (XmlJoinColumn xmlJoinColumn : this.getXmlInverseJoinColumns()) { - this.specifiedInverseJoinColumns.add(this.buildInverseJoinColumn(xmlJoinColumn)); - } - } - protected void syncSpecifiedInverseJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedInverseJoinColumnContainerAdapter); + this.specifiedInverseJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlInverseJoinColumns() { + protected ListIterable getXmlInverseJoinColumns() { XmlJoinTable xmlTable = this.getXmlTable(); return (xmlTable == null) ? - EmptyIterable.instance() : + EmptyListIterable.instance() : // clone to reduce chance of concurrency problems - new LiveCloneIterable(xmlTable.getInverseJoinColumns()); - } - - protected void moveSpecifiedInverseJoinColumn_(int index, OrmJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); + new LiveCloneListIterable(xmlTable.getInverseJoinColumns()); } - protected OrmJoinColumn addSpecifiedInverseJoinColumn_(int index, XmlJoinColumn xmlJoinColumn) { - OrmJoinColumn joinColumn = this.buildInverseJoinColumn(xmlJoinColumn); - this.addItemToList(index, joinColumn, this.specifiedInverseJoinColumns, SPECIFIED_INVERSE_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removeSpecifiedInverseJoinColumn_(OrmJoinColumn joinColumn) { - this.removeSpecifiedInverseJoinColumn_(this.specifiedInverseJoinColumns.indexOf(joinColumn)); + protected ContextListContainer buildSpecifiedInverseJoinColumnContainer() { + return new SpecifiedInverseJoinColumnContainer(); } /** - * specified inverse join column container adapter + * specified inverse join column container */ - protected class SpecifiedInverseJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedInverseJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmJoinTable.this.getSpecifiedInverseJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_INVERSE_JOIN_COLUMNS_LIST; + } + @Override + protected OrmJoinColumn buildContextElement(XmlJoinColumn resourceElement) { + return GenericOrmJoinTable.this.buildInverseJoinColumn(resourceElement); } - public Iterable getResourceElements() { + @Override + protected ListIterable getResourceElements() { return GenericOrmJoinTable.this.getXmlInverseJoinColumns(); } - public XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { + @Override + protected XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmJoinColumn element) { - GenericOrmJoinTable.this.moveSpecifiedInverseJoinColumn_(index, element); - } - public void addContextElement(int index, XmlJoinColumn resourceElement) { - GenericOrmJoinTable.this.addSpecifiedInverseJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmJoinColumn element) { - GenericOrmJoinTable.this.removeSpecifiedInverseJoinColumn_(element); - } } protected OrmReadOnlyJoinColumn.Owner buildInverseJoinColumnOwner() { @@ -307,14 +270,14 @@ public class GenericOrmJoinTable public void initializeFrom(ReadOnlyJoinTable oldTable) { super.initializeFrom(oldTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(oldTable.specifiedInverseJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : oldTable.getSpecifiedInverseJoinColumns()) { this.addSpecifiedInverseJoinColumn().initializeFrom(joinColumn); } } public void initializeFromVirtual(ReadOnlyJoinTable virtualTable) { super.initializeFromVirtual(virtualTable); - for (ReadOnlyJoinColumn joinColumn : CollectionTools.iterable(virtualTable.inverseJoinColumns())) { + for (ReadOnlyJoinColumn joinColumn : virtualTable.getInverseJoinColumns()) { this.addSpecifiedInverseJoinColumn().initializeFromVirtual(joinColumn); } } @@ -444,8 +407,8 @@ public class GenericOrmJoinTable return GenericOrmJoinTable.this.defaultJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericOrmJoinTable.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmJoinTable.this.getJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { @@ -494,8 +457,8 @@ public class GenericOrmJoinTable return GenericOrmJoinTable.this.defaultInverseJoinColumn == joinColumn; } - public int joinColumnsSize() { - return GenericOrmJoinTable.this.inverseJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmJoinTable.this.getInverseJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentAttribute.java index 6238761ba9..83ce2991a7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentAttribute.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. @@ -14,7 +14,6 @@ import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; 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.SpecifiedOrmPersistentAttribute; -import org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericPersistentAttributeValidator; 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.XmlAttributeMapping; @@ -58,6 +57,6 @@ public class GenericOrmPersistentAttribute @Override protected JptValidator buildAttibuteValidator() { - return new GenericPersistentAttributeValidator(this, getJavaPersistentAttribute(), buildTextRangeResolver()); + return this.getJavaPersistentAttribute().getAccessor().buildAttributeValidator(this, buildTextRangeResolver()); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentType.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentType.java index 97956a279d..8dffda9e17 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmPersistentType.java @@ -11,16 +11,22 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; import java.util.Collection; import java.util.Comparator; +import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.ListIterator; import java.util.Map; import java.util.Vector; import org.eclipse.core.resources.IFile; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.Kind; +import org.eclipse.jpt.common.core.resource.java.JavaResourceField; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMethod; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.BodySourceWriter; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.ClassName; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.StringTools; @@ -29,14 +35,13 @@ import org.eclipse.jpt.common.utility.internal.iterables.ChainIterable; import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.common.utility.internal.iterables.CompositeListIterable; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; 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.SingleElementIterable; -import org.eclipse.jpt.common.utility.internal.iterables.SnapshotCloneIterable; import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; -import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.core.context.AccessType; @@ -53,14 +58,14 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmStructureNodes; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; +import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; +import org.eclipse.jpt.jpa.core.internal.context.java.PropertyAccessor; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode; 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.MetamodelSourceType; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentType2_0; import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmPersistentType2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.orm.Attributes; import org.eclipse.jpt.jpa.core.resource.orm.OrmPackage; import org.eclipse.jpt.jpa.core.resource.orm.XmlAttributeMapping; @@ -95,7 +100,6 @@ public class GenericOrmPersistentType protected final SpecifiedAttributeContainerAdapter specifiedAttributeContainerAdapter = new SpecifiedAttributeContainerAdapter(); protected final Vector virtualAttributes = new Vector(); - protected final VirtualAttributeContainerAdapter virtualAttributeContainerAdapter = new VirtualAttributeContainerAdapter(); protected PersistentType superPersistentType; @@ -247,7 +251,7 @@ public class GenericOrmPersistentType * @see #syncJavaPersistentType() */ protected void updateJavaPersistentType() { - JavaResourcePersistentType resourceType = this.resolveJavaResourcePersistentType(); + JavaResourceAbstractType resourceType = this.resolveJavaResourceType(); if (resourceType == null) { if (this.javaPersistentType != null) { this.javaPersistentType.dispose(); @@ -257,7 +261,7 @@ public class GenericOrmPersistentType if (this.javaPersistentType == null) { this.setJavaPersistentType(this.buildJavaPersistentType(resourceType)); } else { - if (this.javaPersistentType.getResourcePersistentType() == resourceType) { + if (this.javaPersistentType.getJavaResourceType() == resourceType) { this.javaPersistentType.update(); } else { this.javaPersistentType.dispose(); @@ -268,17 +272,24 @@ public class GenericOrmPersistentType } /** - * Don't use getName() to resolve the java resource persistent type. + * Don't use getName() to resolve the java resource type. * getName() uses the JavaPersistentType for determining the name. * Changed this to fix bug 339560 * @see #updateJavaPersistentType() */ - protected JavaResourcePersistentType resolveJavaResourcePersistentType() { - return this.getEntityMappings().resolveJavaResourcePersistentType( + protected JavaResourceAbstractType resolveJavaResourceType() { + return this.getEntityMappings().resolveJavaResourceType( this.convertMappingClassName(this.mapping.getClass_())); } - protected JavaPersistentType buildJavaPersistentType(JavaResourcePersistentType jrpt) { + /** + * Return null it's an enum; don't build a JavaPersistentType + */ + protected JavaPersistentType buildJavaPersistentType(JavaResourceAbstractType jrat) { + return jrat.getKind() == Kind.TYPE ? this.buildJavaPersistentType((JavaResourceType) jrat) : null; + } + + protected JavaPersistentType buildJavaPersistentType(JavaResourceType jrpt) { return this.getJpaFactory().buildJavaPersistentType(this, jrpt); } @@ -352,21 +363,13 @@ public class GenericOrmPersistentType // ********** attributes ********** - public ListIterator attributes() { - return this.getAttributes().iterator(); - } - @SuppressWarnings("unchecked") public ListIterable getAttributes() { return new CompositeListIterable(this.getReadOnlySpecifiedAttributes(), this.getVirtualAttributes()); } - public int attributesSize() { - return this.specifiedAttributesSize() + this.virtualAttributesSize(); - } - - public Iterator attributeNames() { - return this.getAttributeNames().iterator(); + public int getAttributesSize() { + return this.getSpecifiedAttributesSize() + this.getVirtualAttributesSize(); } public Iterable getAttributeNames() { @@ -378,25 +381,17 @@ public class GenericOrmPersistentType return stream.hasNext() ? stream.next() : null; } - public Iterator allAttributes() { - return this.getAllAttributes().iterator(); - } - public Iterable getAllAttributes() { return new CompositeIterable( new TransformationIterable>(this.getInheritanceHierarchy()) { @Override protected Iterable transform(PersistentType pt) { - return new SnapshotCloneIterable(pt.attributes()); + return new SuperListIterableWrapper(pt.getAttributes()); } } ); } - public Iterator allAttributeNames() { - return this.getAllAttributeNames().iterator(); - } - public Iterable getAllAttributeNames() { return this.convertToNames(this.getAllAttributes()); } @@ -549,10 +544,24 @@ public class GenericOrmPersistentType // attribute we are converting since it may have come from a superclass; // instead, use its resource Java attribute (which will match both name and access type, // but we still need to check its parent type) - JavaResourcePersistentAttribute javaResourceAttribute = specifiedAttribute.getJavaResourcePersistentAttribute(); - if ((javaResourceAttribute != null) && this.javaResourceAttributeWillBeVirtual(javaResourceAttribute, specifiedAttribute)) { - virtualAttribute = this.buildVirtualAttribute(javaResourceAttribute); - this.virtualAttributes.add(virtualIndex, virtualAttribute); + if (specifiedAttribute.getJavaResourceAttribute() != null) { + if (specifiedAttribute.getJavaResourceAttribute().getKind() == Kind.FIELD) { + JavaResourceField javaResourceField = (JavaResourceField) specifiedAttribute.getJavaResourceAttribute(); + if (this.javaResourceFieldWillBeVirtual(javaResourceField, specifiedAttribute)) { + virtualAttribute = this.buildVirtualAttribute(javaResourceField); + this.virtualAttributes.add(virtualIndex, virtualAttribute); + } + } + else { + PropertyAccessor propertyAccessor = (PropertyAccessor) specifiedAttribute.getJavaPersistentAttribute().getAccessor(); + JavaResourceMethod resourceGetter = propertyAccessor.getResourceGetter(); + JavaResourceMethod resourceSetter = propertyAccessor.getResourceSetter(); + + if (this.javaResourcePropertyWillBeVirtual(resourceGetter, resourceSetter, specifiedAttribute)) { + virtualAttribute = this.buildVirtualAttribute(resourceGetter, resourceSetter); + this.virtualAttributes.add(virtualIndex, virtualAttribute); + } + } } this.removeSpecifiedAttribute(specifiedAttribute); // trigger update @@ -570,9 +579,22 @@ public class GenericOrmPersistentType * valid Java resource attributes and it must not correspond to any of the * remaining specified attributes. */ - protected boolean javaResourceAttributeWillBeVirtual(JavaResourcePersistentAttribute javaResourceAttribute, OrmPersistentAttribute specifiedAttributeToBeRemoved) { - return CollectionTools.contains(this.getJavaResourceAttributes(), javaResourceAttribute) && - (this.getSpecifiedAttributeFor(javaResourceAttribute, specifiedAttributeToBeRemoved) == null); + protected boolean javaResourceFieldWillBeVirtual(JavaResourceField javaResourceField, OrmPersistentAttribute specifiedAttributeToBeRemoved) { + return CollectionTools.contains(this.getJavaResourceFields(), javaResourceField) && + (this.getSpecifiedAttributeFor(javaResourceField, specifiedAttributeToBeRemoved) == null); + } + + /** + * Return whether the specified Java resource attribute will be a + * virtual attribute when the specified specified attribute is + * removed from the type. The Java resource attribute must be among the + * valid Java resource attributes and it must not correspond to any of the + * remaining specified attributes. + */ + protected boolean javaResourcePropertyWillBeVirtual(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter, OrmPersistentAttribute specifiedAttributeToBeRemoved) { + return CollectionTools.contains(this.getJavaResourceMethods(), javaResourceGetter) && + CollectionTools.contains(this.getJavaResourceMethods(), javaResourceSetter) && + (this.getSpecifiedAttributeFor(javaResourceGetter, javaResourceSetter, specifiedAttributeToBeRemoved) == null); } @@ -608,11 +630,7 @@ public class GenericOrmPersistentType // ********** specified attributes ********** - public ListIterator specifiedAttributes() { - return this.getSpecifiedAttributes().iterator(); - } - - protected ListIterable getSpecifiedAttributes() { + public ListIterable getSpecifiedAttributes() { return new LiveCloneListIterable(this.specifiedAttributes); } @@ -620,7 +638,7 @@ public class GenericOrmPersistentType return new SuperListIterableWrapper(this.getSpecifiedAttributes()); } - public int specifiedAttributesSize() { + public int getSpecifiedAttributesSize() { return this.specifiedAttributes.size(); } @@ -706,52 +724,216 @@ public class GenericOrmPersistentType // ********** virtual attributes ********** - public ListIterator virtualAttributes() { - return this.getVirtualAttributes().iterator(); - } - public ListIterable getVirtualAttributes() { return new LiveCloneListIterable(this.virtualAttributes); } - public int virtualAttributesSize() { + public int getVirtualAttributesSize() { return this.virtualAttributes.size(); } + /** + * The attributes are synchronized during the update because + * the list of resource attributes is determined by the access type + * which can be controlled in a number of different places.... + */ protected void updateVirtualAttributes() { - ContextContainerTools.update(this.virtualAttributeContainerAdapter); + if (getVirtualJavaAccess() == AccessType.FIELD) { + this.syncFieldAccessVirtualAttributes(); + } + else if (getVirtualJavaAccess() == AccessType.PROPERTY) { + this.syncPropertyAccessVirtualAttributes(); + } + } + + /** + * Initialize the attributes for AccessType.FIELD + * 1. all non-transient, non-static fields + * 2. all annotated methods(getters/setters) + */ + private void syncFieldAccessVirtualAttributes() { + HashSet contextAttributes = CollectionTools.set(this.getVirtualAttributes()); + + this.syncFieldVirtualAttributes(contextAttributes, buildNonTransientNonStaticResourceFieldsFilter()); + if (!getMapping().isMetadataComplete()) { + this.syncAnnotatedPropertyVirtualAttributes(contextAttributes); + } + + // remove any leftover context attributes + for (OrmReadOnlyPersistentAttribute contextAttribute : contextAttributes) { + this.removeVirtualAttribute(contextAttribute); + } + } + + /** + * Initialize the attributes for XmlAccessType.PROPERTY + * 1. all getter/setter javabeans pairs + * 2. all annotated fields + * 3. all annotated methods getters/setters that don't have a matching pair + */ + private void syncPropertyAccessVirtualAttributes() { + HashSet contextAttributes = CollectionTools.set(this.getVirtualAttributes()); + + if (!getMapping().isMetadataComplete()) { + this.syncFieldVirtualAttributes(contextAttributes, AbstractJavaPersistentType.ANNOTATED_RESOURCE_FIELDS_FILTER); + } + + Collection resourceMethods = CollectionTools.collection(this.getJavaResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getJavaResourceMethods(this.buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = AbstractJavaPersistentType.getValidSiblingSetMethod(getterMethod, resourceMethods); + if (javaResourcePropertyIsVirtual(getterMethod, setterMethod)) { + if (AbstractJavaPersistentType.methodsArePersistableProperties(getterMethod, setterMethod)) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + OrmReadOnlyPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(getterMethod, setterMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addVirtualAttribute(getVirtualAttributesSize(), this.buildVirtualAttribute(getterMethod, setterMethod)); + } + } + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.syncRemainingResourceVirtualMethods(contextAttributes, resourceMethods); + + // remove any leftover context attributes + for (OrmReadOnlyPersistentAttribute contextAttribute : contextAttributes) { + this.removeVirtualAttribute(contextAttribute); + } + } + + private void syncAnnotatedPropertyVirtualAttributes(HashSet contextAttributes) { + Collection resourceMethods = CollectionTools.collection(this.getJavaResourceMethods()); + //iterate through all resource methods searching for persistable getters + for (JavaResourceMethod getterMethod : this.getJavaResourceMethods(buildPersistablePropertyGetterMethodsFilter())) { + JavaResourceMethod setterMethod = AbstractJavaPersistentType.getValidSiblingSetMethod(getterMethod, resourceMethods); + if (javaResourcePropertyIsVirtual(getterMethod, setterMethod)) { + if (getterMethod.isAnnotated() || (setterMethod != null && setterMethod.isAnnotated())) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + OrmReadOnlyPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(getterMethod, setterMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addVirtualAttribute(getVirtualAttributesSize(), this.buildVirtualAttribute(getterMethod, setterMethod)); + } + } + } + resourceMethods.remove(getterMethod); + resourceMethods.remove(setterMethod); + } + this.syncRemainingResourceVirtualMethods(contextAttributes, resourceMethods); + } + + private void syncFieldVirtualAttributes(HashSet contextAttributes, Filter filter) { + for (JavaResourceField resourceField : this.getVirtualJavaResourceFields(filter)) { + boolean match = false; + for (Iterator stream = contextAttributes.iterator(); stream.hasNext(); ) { + OrmReadOnlyPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(resourceField)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + // added elements are sync'ed during construction or will be + // updated during the next "update" (which is triggered by + // their addition to the model) + this.addVirtualAttribute(this.getVirtualAttributesSize(), this.buildVirtualAttribute(resourceField)); + } + } + } + + private void syncRemainingResourceVirtualMethods(HashSet contextAttributes, Collection resourceMethods) { + //iterate through remaining resource methods and search for those that are annotated. + //all getter methods will already be used. + for (JavaResourceMethod resourceMethod : resourceMethods) { + if (resourceMethod.isAnnotated()) { + boolean match = false; + //annotated setter(or other random method) with no corresponding getter, bring into context model for validation purposes + for (Iterator stream = contextAttributes.iterator(); stream.hasNext();) { + OrmReadOnlyPersistentAttribute contextAttribute = stream.next(); + if (contextAttribute.isFor(null, resourceMethod)) { + match = true; + contextAttribute.update(); + stream.remove(); + break; + } + } + if (!match) { + this.addVirtualAttribute(getVirtualAttributesSize(), this.buildVirtualAttribute(null, resourceMethod)); + } + } + } } /** - * Return all the Java resource attributes that have the appropriate access - * and do not have a corresponding orm.xml mapping currently + * Return all the Java resource fields that do not have a + * corresponding orm.xml mapping currently * specified in the orm.xml persistent type. */ - protected Iterable getVirtualJavaResourceAttributes() { - return new FilteringIterable(this.getJavaResourceAttributes()) { + protected Iterable getVirtualJavaResourceFields() { + return new FilteringIterable(this.getJavaResourceFields()) { @Override - protected boolean accept(JavaResourcePersistentAttribute javaResourceAttribute) { - return GenericOrmPersistentType.this.javaResourceAttributeIsVirtual(javaResourceAttribute); + protected boolean accept(JavaResourceField javaResourceField) { + return GenericOrmPersistentType.this.javaResourceFieldIsVirtual(javaResourceField); } }; } - protected Iterable getJavaResourceAttributes() { - return CollectionTools.iterable(this.javaResourceAttributes()); + protected Iterable getJavaResourceFields() { + JavaResourceType javaResourceType = this.getJavaResourceType(); + if (javaResourceType == null) { + return EmptyListIterable.instance(); + } + return javaResourceType.getFields(); } - /** - * Return the Java resource attributes with the appropriate access type. - */ - protected Iterator javaResourceAttributes() { - JavaResourcePersistentType javaResourceType = this.getJavaResourceType(); - return (javaResourceType != null) ? - javaResourceType.persistableAttributes(this.getVirtualJavaAccess().getJavaAccessType()) : - EmptyListIterator.instance(); + protected Iterable getVirtualJavaResourceFields(Filter filter) { + return new FilteringIterable(getVirtualJavaResourceFields(), filter); + } + + protected Iterable getJavaResourceMethods(Filter filter) { + return new FilteringIterable(getJavaResourceMethods(), filter); + } + + protected Iterable getJavaResourceMethods() { + JavaResourceType javaResourceType = this.getJavaResourceType(); + if (javaResourceType == null) { + return EmptyListIterable.instance(); + } + return javaResourceType.getMethods(); } - protected JavaResourcePersistentType getJavaResourceType() { - return (this.javaPersistentType == null) ? null : this.javaPersistentType.getResourcePersistentType(); + public static Filter buildNonTransientNonStaticResourceFieldsFilter() { + return AbstractJavaPersistentType.buildNonTransientNonStaticResourceFieldsFilter(); + } + + protected Filter buildPersistablePropertyGetterMethodsFilter() { + return new Filter() { + public boolean accept(JavaResourceMethod resourceMethod) { + return AbstractJavaPersistentType.methodIsPersistablePropertyGetter(resourceMethod, getJavaResourceMethods()); + } + }; + } + + protected JavaResourceType getJavaResourceType() { + return (this.javaPersistentType == null) ? null : this.javaPersistentType.getJavaResourceType(); } /** @@ -765,30 +947,56 @@ public class GenericOrmPersistentType if (this.mapping.isMetadataComplete()) { return this.defaultAccess; } - AccessType javaAccess = this.javaPersistentType.getSpecifiedAccess(); + AccessType javaAccess = this.javaPersistentType == null ? null : this.javaPersistentType.getSpecifiedAccess(); return (javaAccess != null) ? javaAccess : this.defaultAccess; } - protected boolean javaResourceAttributeIsVirtual(JavaResourcePersistentAttribute javaResourceAttribute) { - return this.getSpecifiedAttributeFor(javaResourceAttribute) == null; + protected boolean javaResourceFieldIsVirtual(JavaResourceField javaResourceField) { + return this.getSpecifiedAttributeFor(javaResourceField) == null; } - protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourcePersistentAttribute javaResourceAttribute) { - return this.getSpecifiedAttributeFor(javaResourceAttribute, null); + protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourceField javaResourceField) { + return this.getSpecifiedAttributeFor(javaResourceField, null); } /** * Return the specified attribute corresponding to the specified Java - * resource attribute, ignoring the specified excluded attribute (since + * resource field, ignoring the specified excluded attribute (since * there can be more than one specified attribute per Java resource * attribute; albeit erroneously). */ - protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourcePersistentAttribute javaResourceAttribute, OrmPersistentAttribute exclude) { + protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourceField javaResourceField, OrmPersistentAttribute exclude) { for (OrmPersistentAttribute ormAttribute : this.getSpecifiedAttributes()) { if (ormAttribute == exclude) { continue; // skip } - if (ormAttribute.getJavaResourcePersistentAttribute() == javaResourceAttribute) { + if (ormAttribute.isFor(javaResourceField)) { + return ormAttribute; + } + } + return null; + } + + protected boolean javaResourcePropertyIsVirtual(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return this.getSpecifiedAttributeFor(javaResourceGetter, javaResourceSetter) == null; + } + + protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return this.getSpecifiedAttributeFor(javaResourceGetter, javaResourceSetter, null); + } + + /** + * Return the specified attribute corresponding to the specified Java + * resource field, ignoring the specified excluded attribute (since + * there can be more than one specified attribute per Java resource + * attribute; albeit erroneously). + */ + protected OrmPersistentAttribute getSpecifiedAttributeFor(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter, OrmPersistentAttribute exclude) { + for (OrmPersistentAttribute ormAttribute : this.getSpecifiedAttributes()) { + if (ormAttribute == exclude) { + continue; // skip + } + if (ormAttribute.isFor(javaResourceGetter, javaResourceSetter)) { return ormAttribute; } } @@ -799,13 +1007,16 @@ public class GenericOrmPersistentType this.moveItemInList(index, virtualAttribute, this.virtualAttributes, VIRTUAL_ATTRIBUTES_LIST); } - protected void addVirtualAttribute(int index, JavaResourcePersistentAttribute javaResourceAttribute) { - OrmReadOnlyPersistentAttribute virtualAttribute = this.buildVirtualAttribute(javaResourceAttribute); + protected void addVirtualAttribute(int index, OrmReadOnlyPersistentAttribute virtualAttribute) { this.addItemToList(index, virtualAttribute, this.virtualAttributes, VIRTUAL_ATTRIBUTES_LIST); } - protected OrmReadOnlyPersistentAttribute buildVirtualAttribute(JavaResourcePersistentAttribute javaResourceAttribute) { - return this.getContextNodeFactory().buildVirtualOrmPersistentAttribute(this, javaResourceAttribute); + protected OrmReadOnlyPersistentAttribute buildVirtualAttribute(JavaResourceField javaResourceField) { + return this.getContextNodeFactory().buildVirtualOrmPersistentField(this, javaResourceField); + } + + protected OrmReadOnlyPersistentAttribute buildVirtualAttribute(JavaResourceMethod javaResourceGetter, JavaResourceMethod javaResourceSetter) { + return this.getContextNodeFactory().buildVirtualOrmPersistentProperty(this, javaResourceGetter, javaResourceSetter); } protected void removeVirtualAttribute(OrmReadOnlyPersistentAttribute virtualAttribute) { @@ -813,32 +1024,6 @@ public class GenericOrmPersistentType this.removeItemFromList(virtualAttribute, this.virtualAttributes, VIRTUAL_ATTRIBUTES_LIST); } - /** - * virtual attribute container adapter - */ - protected class VirtualAttributeContainerAdapter - implements ContextContainerTools.Adapter - { - public Iterable getContextElements() { - return GenericOrmPersistentType.this.getVirtualAttributes(); - } - public Iterable getResourceElements() { - return GenericOrmPersistentType.this.getVirtualJavaResourceAttributes(); - } - public JavaResourcePersistentAttribute getResourceElement(OrmReadOnlyPersistentAttribute contextElement) { - return contextElement.getJavaResourcePersistentAttribute(); - } - public void moveContextElement(int index, OrmReadOnlyPersistentAttribute element) { - GenericOrmPersistentType.this.moveVirtualAttribute(index, element); - } - public void addContextElement(int index, JavaResourcePersistentAttribute resourceElement) { - GenericOrmPersistentType.this.addVirtualAttribute(index, resourceElement); - } - public void removeContextElement(OrmReadOnlyPersistentAttribute element) { - GenericOrmPersistentType.this.removeVirtualAttribute(element); - } - } - // ********** super persistent type ********** @@ -1123,8 +1308,8 @@ public class GenericOrmPersistentType } protected void validateAttributes(List messages, IReporter reporter) { - for (Iterator stream = this.attributes(); stream.hasNext(); ) { - this.validateAttribute(stream.next(), messages, reporter); + for (OrmReadOnlyPersistentAttribute attribute : this.getAttributes()) { + this.validateAttribute(attribute, messages, reporter); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmQueryContainer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmQueryContainer.java index c0d42a00ce..cc577649ac 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmQueryContainer.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmQueryContainer.java @@ -10,11 +10,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.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.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.NamedNativeQuery; import org.eclipse.jpt.jpa.core.context.NamedQuery; @@ -22,7 +19,6 @@ import org.eclipse.jpt.jpa.core.context.XmlContextNode; import org.eclipse.jpt.jpa.core.context.orm.OrmNamedNativeQuery; import org.eclipse.jpt.jpa.core.context.orm.OrmNamedQuery; import org.eclipse.jpt.jpa.core.context.orm.OrmQueryContainer; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmXmlContextNode; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlNamedNativeQuery; @@ -40,18 +36,15 @@ public class GenericOrmQueryContainer { protected final XmlQueryContainer xmlQueryContainer; - protected final Vector namedQueries = new Vector(); - protected NamedQueryContainerAdapter namedQueryContainerAdapter = new NamedQueryContainerAdapter(); - - protected final Vector namedNativeQueries = new Vector(); - protected NamedNativeQueryContainerAdapter namedNativeQueryContainerAdapter = new NamedNativeQueryContainerAdapter(); + protected final ContextListContainer namedQueryContainer; + protected final ContextListContainer namedNativeQueryContainer; public GenericOrmQueryContainer(XmlContextNode parent, XmlQueryContainer xmlQueryContainer) { super(parent); this.xmlQueryContainer = xmlQueryContainer; - this.initializeNamedQueries(); - this.initializeNamedNativeQueries(); + this.namedQueryContainer = this.buildNamedQueryContainer(); + this.namedNativeQueryContainer = this.buildNamedNativeQueryContainer(); } @@ -74,25 +67,21 @@ public class GenericOrmQueryContainer // ********** named queries ********** - public ListIterator namedQueries() { - return this.getNamedQueries().iterator(); - } - - protected ListIterable getNamedQueries() { - return new LiveCloneListIterable(this.namedQueries); + public ListIterable getNamedQueries() { + return this.namedQueryContainer.getContextElements(); } - public int namedQueriesSize() { - return this.namedQueries.size(); + public int getNamedQueriesSize() { + return this.namedQueryContainer.getContextElementsSize(); } public OrmNamedQuery addNamedQuery() { - return this.addNamedQuery(this.namedQueries.size()); + return this.addNamedQuery(this.getNamedQueriesSize()); } public OrmNamedQuery addNamedQuery(int index) { XmlNamedQuery xmlQuery = this.buildXmlNamedQuery(); - OrmNamedQuery query = this.addNamedQuery_(index, xmlQuery); + OrmNamedQuery query = this.namedQueryContainer.addContextElement(index, xmlQuery); this.xmlQueryContainer.getNamedQueries().add(index, xmlQuery); return query; } @@ -102,104 +91,77 @@ public class GenericOrmQueryContainer } public void removeNamedQuery(NamedQuery namedQuery) { - this.removeNamedQuery(this.namedQueries.indexOf(namedQuery)); + this.removeNamedQuery(this.namedQueryContainer.indexOfContextElement((OrmNamedQuery) namedQuery)); } public void removeNamedQuery(int index) { - this.removeNamedQuery_(index); + this.namedQueryContainer.removeContextElement(index); this.xmlQueryContainer.getNamedQueries().remove(index); } - protected void removeNamedQuery_(int index) { - this.removeItemFromList(index, this.namedQueries, NAMED_QUERIES_LIST); - } - public void moveNamedQuery(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.namedQueries, NAMED_QUERIES_LIST); + this.namedQueryContainer.moveContextElement(targetIndex, sourceIndex); this.xmlQueryContainer.getNamedQueries().move(targetIndex, sourceIndex); } - protected void initializeNamedQueries() { - for (XmlNamedQuery xmlQuery : this.getXmlNamedQueries()) { - this.namedQueries.add(this.buildNamedQuery(xmlQuery)); - } - } - protected OrmNamedQuery buildNamedQuery(XmlNamedQuery xmlNamedQuery) { return this.getContextNodeFactory().buildOrmNamedQuery(this, xmlNamedQuery); } protected void syncNamedQueries() { - ContextContainerTools.synchronizeWithResourceModel(this.namedQueryContainerAdapter); + this.namedQueryContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlNamedQueries() { + protected ListIterable getXmlNamedQueries() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlQueryContainer.getNamedQueries()); + return new LiveCloneListIterable(this.xmlQueryContainer.getNamedQueries()); } - protected void moveNamedQuery_(int index, OrmNamedQuery namedQuery) { - this.moveItemInList(index, namedQuery, this.namedQueries, NAMED_QUERIES_LIST); - } - - protected OrmNamedQuery addNamedQuery_(int index, XmlNamedQuery xmlNamedQuery) { - OrmNamedQuery query = this.buildNamedQuery(xmlNamedQuery); - this.addItemToList(index, query, this.namedQueries, NAMED_QUERIES_LIST); - return query; - } - - protected void removeNamedQuery_(OrmNamedQuery namedQuery) { - this.removeNamedQuery_(this.namedQueries.indexOf(namedQuery)); + protected ContextListContainer buildNamedQueryContainer() { + return new NamedQueryContainer(); } /** - * named query container adapter + * named query container */ - protected class NamedQueryContainerAdapter - implements ContextContainerTools.Adapter + protected class NamedQueryContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmQueryContainer.this.getNamedQueries(); + @Override + protected String getContextElementsPropertyName() { + return NAMED_QUERIES_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmNamedQuery buildContextElement(XmlNamedQuery resourceElement) { + return GenericOrmQueryContainer.this.buildNamedQuery(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmQueryContainer.this.getXmlNamedQueries(); } - public XmlNamedQuery getResourceElement(OrmNamedQuery contextElement) { + @Override + protected XmlNamedQuery getResourceElement(OrmNamedQuery contextElement) { return contextElement.getXmlQuery(); } - public void moveContextElement(int index, OrmNamedQuery element) { - GenericOrmQueryContainer.this.moveNamedQuery_(index, element); - } - public void addContextElement(int index, XmlNamedQuery resourceElement) { - GenericOrmQueryContainer.this.addNamedQuery_(index, resourceElement); - } - public void removeContextElement(OrmNamedQuery element) { - GenericOrmQueryContainer.this.removeNamedQuery_(element); - } } - // ********** named native queries ********** - public ListIterator namedNativeQueries() { - return this.getNamedNativeQueries().iterator(); - } - - protected ListIterable getNamedNativeQueries() { - return new LiveCloneListIterable(this.namedNativeQueries); + public ListIterable getNamedNativeQueries() { + return this.namedNativeQueryContainer.getContextElements(); } - public int namedNativeQueriesSize() { - return this.namedNativeQueries.size(); + public int getNamedNativeQueriesSize() { + return this.namedNativeQueryContainer.getContextElementsSize(); } public OrmNamedNativeQuery addNamedNativeQuery() { - return this.addNamedNativeQuery(this.namedNativeQueries.size()); + return this.addNamedNativeQuery(this.getNamedNativeQueriesSize()); } public OrmNamedNativeQuery addNamedNativeQuery(int index) { XmlNamedNativeQuery xmlQuery = this.buildXmlNamedNativeQuery(); - OrmNamedNativeQuery query = this.addNamedNativeQuery_(index, xmlQuery); + OrmNamedNativeQuery query = this.namedNativeQueryContainer.addContextElement(index, xmlQuery); this.xmlQueryContainer.getNamedNativeQueries().add(index, xmlQuery); return query; } @@ -209,80 +171,58 @@ public class GenericOrmQueryContainer } public void removeNamedNativeQuery(NamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery(this.namedNativeQueries.indexOf(namedNativeQuery)); + this.removeNamedNativeQuery(this.namedNativeQueryContainer.indexOfContextElement((OrmNamedNativeQuery) namedNativeQuery)); } public void removeNamedNativeQuery(int index) { - this.removeNamedNativeQuery_(index); + this.namedNativeQueryContainer.removeContextElement(index); this.xmlQueryContainer.getNamedNativeQueries().remove(index); } - protected void removeNamedNativeQuery_(int index) { - this.removeItemFromList(index, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - public void moveNamedNativeQuery(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); + this.namedNativeQueryContainer.moveContextElement(targetIndex, sourceIndex); this.xmlQueryContainer.getNamedNativeQueries().move(targetIndex, sourceIndex); } - protected void initializeNamedNativeQueries() { - for (XmlNamedNativeQuery xmlQuery : this.getXmlNamedNativeQueries()) { - this.namedNativeQueries.add(this.buildNamedNativeQuery(xmlQuery)); - } - } - protected OrmNamedNativeQuery buildNamedNativeQuery(XmlNamedNativeQuery xmlNamedNativeQuery) { return this.getContextNodeFactory().buildOrmNamedNativeQuery(this, xmlNamedNativeQuery); } protected void syncNamedNativeQueries() { - ContextContainerTools.synchronizeWithResourceModel(this.namedNativeQueryContainerAdapter); + this.namedNativeQueryContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlNamedNativeQueries() { + protected ListIterable getXmlNamedNativeQueries() { // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlQueryContainer.getNamedNativeQueries()); + return new LiveCloneListIterable(this.xmlQueryContainer.getNamedNativeQueries()); } - protected void moveNamedNativeQuery_(int index, OrmNamedNativeQuery namedNativeQuery) { - this.moveItemInList(index, namedNativeQuery, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - } - - protected OrmNamedNativeQuery addNamedNativeQuery_(int index, XmlNamedNativeQuery xmlNamedNativeQuery) { - OrmNamedNativeQuery query = this.buildNamedNativeQuery(xmlNamedNativeQuery); - this.addItemToList(index, query, this.namedNativeQueries, NAMED_NATIVE_QUERIES_LIST); - return query; - } - - protected void removeNamedNativeQuery_(OrmNamedNativeQuery namedNativeQuery) { - this.removeNamedNativeQuery_(this.namedNativeQueries.indexOf(namedNativeQuery)); + protected ContextListContainer buildNamedNativeQueryContainer() { + return new NamedNativeQueryContainer(); } /** - * named native query container adapter + * named query container */ - protected class NamedNativeQueryContainerAdapter - implements ContextContainerTools.Adapter + protected class NamedNativeQueryContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmQueryContainer.this.getNamedNativeQueries(); + @Override + protected String getContextElementsPropertyName() { + return NAMED_NATIVE_QUERIES_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmNamedNativeQuery buildContextElement(XmlNamedNativeQuery resourceElement) { + return GenericOrmQueryContainer.this.buildNamedNativeQuery(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmQueryContainer.this.getXmlNamedNativeQueries(); } - public XmlNamedNativeQuery getResourceElement(OrmNamedNativeQuery contextElement) { + @Override + protected XmlNamedNativeQuery getResourceElement(OrmNamedNativeQuery contextElement) { return contextElement.getXmlQuery(); } - public void moveContextElement(int index, OrmNamedNativeQuery element) { - GenericOrmQueryContainer.this.moveNamedNativeQuery_(index, element); - } - public void addContextElement(int index, XmlNamedNativeQuery resourceElement) { - GenericOrmQueryContainer.this.addNamedNativeQuery_(index, resourceElement); - } - public void removeContextElement(OrmNamedNativeQuery element) { - GenericOrmQueryContainer.this.removeNamedNativeQuery_(element); - } } 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 333a1a1e3c..500b4e751c 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 @@ -10,13 +10,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; import java.util.List; -import java.util.ListIterator; -import java.util.Vector; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; 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.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.JoinColumn; @@ -26,7 +21,6 @@ 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; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmTable; import org.eclipse.jpt.jpa.core.resource.orm.AbstractXmlReferenceTable; @@ -42,8 +36,7 @@ public abstract class GenericOrmReferenceTable implements OrmReferenceTable { - protected final Vector specifiedJoinColumns = new Vector(); - protected final SpecifiedJoinColumnContainerAdapter specifiedJoinColumnContainerAdapter = new SpecifiedJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedJoinColumnContainer; protected final OrmReadOnlyJoinColumn.Owner joinColumnOwner; protected OrmJoinColumn defaultJoinColumn; @@ -52,7 +45,7 @@ public abstract class GenericOrmReferenceTable joinColumns() { - return this.getJoinColumns().iterator(); - } - - protected ListIterable getJoinColumns() { + public ListIterable getJoinColumns() { return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumns() : this.getDefaultJoinColumns(); } - public int joinColumnsSize() { - return this.hasSpecifiedJoinColumns() ? this.specifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); + public int getJoinColumnsSize() { + return this.hasSpecifiedJoinColumns() ? this.getSpecifiedJoinColumnsSize() : this.getDefaultJoinColumnsSize(); } public void convertDefaultJoinColumnToSpecified() { @@ -93,34 +82,30 @@ public abstract class GenericOrmReferenceTable specifiedJoinColumns() { - return this.getSpecifiedJoinColumns().iterator(); + public ListIterable getSpecifiedJoinColumns() { + return this.specifiedJoinColumnContainer.getContextElements(); } - protected ListIterable getSpecifiedJoinColumns() { - return new LiveCloneListIterable(this.specifiedJoinColumns); - } - - public int specifiedJoinColumnsSize() { - return this.specifiedJoinColumns.size(); + public int getSpecifiedJoinColumnsSize() { + return this.specifiedJoinColumnContainer.getContextElementsSize(); } public boolean hasSpecifiedJoinColumns() { - return this.specifiedJoinColumns.size() != 0; + return this.getSpecifiedJoinColumnsSize() != 0; } public OrmJoinColumn getSpecifiedJoinColumn(int index) { - return this.specifiedJoinColumns.get(index); + return this.specifiedJoinColumnContainer.getContextElement(index); } public OrmJoinColumn addSpecifiedJoinColumn() { - return this.addSpecifiedJoinColumn(this.specifiedJoinColumns.size()); + return this.addSpecifiedJoinColumn(this.getSpecifiedJoinColumnsSize()); } public OrmJoinColumn addSpecifiedJoinColumn(int index) { X xmlTable = this.getXmlTableForUpdate(); XmlJoinColumn xmlJoinColumn = this.buildXmlJoinColumn(); - OrmJoinColumn joinColumn = this.addSpecifiedJoinColumn_(index, xmlJoinColumn); + OrmJoinColumn joinColumn = this.specifiedJoinColumnContainer.addContextElement(index, xmlJoinColumn); xmlTable.getJoinColumns().add(index, xmlJoinColumn); return joinColumn; } @@ -130,80 +115,58 @@ public abstract class GenericOrmReferenceTable getXmlJoinColumns() { + protected ListIterable getXmlJoinColumns() { X xmlTable = this.getXmlTable(); return (xmlTable == null) ? - EmptyIterable.instance() : + EmptyListIterable.instance() : // clone to reduce chance of concurrency problems - new LiveCloneIterable(xmlTable.getJoinColumns()); + new LiveCloneListIterable(xmlTable.getJoinColumns()); } - protected void moveSpecifiedJoinColumn_(int index, OrmJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - } - - protected OrmJoinColumn addSpecifiedJoinColumn_(int index, XmlJoinColumn xmlJoinColumn) { - OrmJoinColumn joinColumn = this.buildJoinColumn(xmlJoinColumn); - this.addItemToList(index, joinColumn, this.specifiedJoinColumns, SPECIFIED_JOIN_COLUMNS_LIST); - return joinColumn; - } - - protected void removeSpecifiedJoinColumn_(OrmJoinColumn joinColumn) { - this.removeSpecifiedJoinColumn_(this.specifiedJoinColumns.indexOf(joinColumn)); + protected ContextListContainer buildSpecifiedJoinColumnContainer() { + return new SpecifiedJoinColumnContainer(); } /** - * specified join column container adapter + * specified join column container */ - protected class SpecifiedJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmReferenceTable.this.getSpecifiedJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmJoinColumn buildContextElement(XmlJoinColumn resourceElement) { + return GenericOrmReferenceTable.this.buildJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmReferenceTable.this.getXmlJoinColumns(); } - public XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { + @Override + protected XmlJoinColumn getResourceElement(OrmJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmJoinColumn element) { - GenericOrmReferenceTable.this.moveSpecifiedJoinColumn_(index, element); - } - public void addContextElement(int index, XmlJoinColumn resourceElement) { - GenericOrmReferenceTable.this.addSpecifiedJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmJoinColumn element) { - GenericOrmReferenceTable.this.removeSpecifiedJoinColumn_(element); - } } protected abstract OrmReadOnlyJoinColumn.Owner buildJoinColumnOwner(); @@ -252,14 +215,14 @@ public abstract class GenericOrmReferenceTable specifiedPrimaryKeyJoinColumns = new Vector(); - protected final SpecifiedPrimaryKeyJoinColumnContainerAdapter specifiedPrimaryKeyJoinColumnContainerAdapter = new SpecifiedPrimaryKeyJoinColumnContainerAdapter(); + protected final ContextListContainer specifiedPrimaryKeyJoinColumnContainer; protected final OrmReadOnlyBaseJoinColumn.Owner primaryKeyJoinColumnOwner; protected OrmPrimaryKeyJoinColumn defaultPrimaryKeyJoinColumn; @@ -63,7 +57,7 @@ public class GenericOrmSecondaryTable public GenericOrmSecondaryTable(OrmEntity parent, Owner owner, XmlSecondaryTable xmlSecondaryTable) { super(parent, owner, xmlSecondaryTable); this.primaryKeyJoinColumnOwner = this.buildPrimaryKeyJoinColumnOwner(); - this.initializeSpecifiedPrimaryKeyJoinColumns(); + this.specifiedPrimaryKeyJoinColumnContainer = this.buildSpecifiedPrimaryKeyJoinColumnContainer(); } @@ -123,44 +117,36 @@ public class GenericOrmSecondaryTable // ********** primary key join columns ********** - public ListIterator primaryKeyJoinColumns() { - return this.getPrimaryKeyJoinColumns().iterator(); - } - - protected ListIterable getPrimaryKeyJoinColumns() { + public ListIterable getPrimaryKeyJoinColumns() { return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumns() : this.getDefaultPrimaryKeyJoinColumns(); } - public int primaryKeyJoinColumnsSize() { - return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.specifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); + public int getPrimaryKeyJoinColumnsSize() { + return this.hasSpecifiedPrimaryKeyJoinColumns() ? this.getSpecifiedPrimaryKeyJoinColumnsSize() : this.getDefaultPrimaryKeyJoinColumnsSize(); } // ********** specified primary key join columns ********** - public ListIterator specifiedPrimaryKeyJoinColumns() { - return this.getSpecifiedPrimaryKeyJoinColumns().iterator(); - } - public ListIterable getSpecifiedPrimaryKeyJoinColumns() { - return new LiveCloneListIterable(this.specifiedPrimaryKeyJoinColumns); + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElements(); } - public int specifiedPrimaryKeyJoinColumnsSize() { - return this.specifiedPrimaryKeyJoinColumns.size(); + public int getSpecifiedPrimaryKeyJoinColumnsSize() { + return this.specifiedPrimaryKeyJoinColumnContainer.getContextElementsSize(); } protected boolean hasSpecifiedPrimaryKeyJoinColumns() { - return this.specifiedPrimaryKeyJoinColumns.size() != 0; + return this.getSpecifiedPrimaryKeyJoinColumnsSize() != 0; } public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn() { - return this.addSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.size()); + return this.addSpecifiedPrimaryKeyJoinColumn(this.getSpecifiedPrimaryKeyJoinColumnsSize()); } public OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn(int index) { XmlPrimaryKeyJoinColumn xmlJoinColumn = this.buildXmlPrimaryKeyJoinColumn(); - OrmPrimaryKeyJoinColumn joinColumn = this.addSpecifiedPrimaryKeyJoinColumn_(index, xmlJoinColumn); + OrmPrimaryKeyJoinColumn joinColumn = this.specifiedPrimaryKeyJoinColumnContainer.addContextElement(index, xmlJoinColumn); this.xmlSecondaryTable.getPrimaryKeyJoinColumns().add(index, xmlJoinColumn); return joinColumn; } @@ -170,76 +156,58 @@ public class GenericOrmSecondaryTable } public void removeSpecifiedPrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumns.indexOf(joinColumn)); + this.removeSpecifiedPrimaryKeyJoinColumn(this.specifiedPrimaryKeyJoinColumnContainer.indexOfContextElement((OrmPrimaryKeyJoinColumn) joinColumn)); } public void removeSpecifiedPrimaryKeyJoinColumn(int index) { - this.removeSpecifiedPrimaryKeyJoinColumn_(index); + this.specifiedPrimaryKeyJoinColumnContainer.removeContextElement(index); this.xmlSecondaryTable.getPrimaryKeyJoinColumns().remove(index); } - protected void removeSpecifiedPrimaryKeyJoinColumn_(int index) { - this.removeItemFromList(index, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - } - public void moveSpecifiedPrimaryKeyJoinColumn(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + this.specifiedPrimaryKeyJoinColumnContainer.moveContextElement(targetIndex, sourceIndex); this.xmlSecondaryTable.getPrimaryKeyJoinColumns().move(targetIndex, sourceIndex); } - protected void initializeSpecifiedPrimaryKeyJoinColumns() { - for (XmlPrimaryKeyJoinColumn xmlJoinColumn : this.getXmlPrimaryKeyJoinColumns()) { - this.specifiedPrimaryKeyJoinColumns.add(this.buildPrimaryKeyJoinColumn(xmlJoinColumn)); - } - } - protected void syncSpecifiedPrimaryKeyJoinColumns() { - ContextContainerTools.synchronizeWithResourceModel(this.specifiedPrimaryKeyJoinColumnContainerAdapter); + this.specifiedPrimaryKeyJoinColumnContainer.synchronizeWithResourceModel(); } - protected Iterable getXmlPrimaryKeyJoinColumns() { - // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlSecondaryTable.getPrimaryKeyJoinColumns()); - } - - protected void moveSpecifiedPrimaryKeyJoinColumn_(int index, OrmPrimaryKeyJoinColumn joinColumn) { - this.moveItemInList(index, joinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); + protected void updateSpecifiedPrimaryKeyJoinColumns() { + this.specifiedPrimaryKeyJoinColumnContainer.update(); } - protected OrmPrimaryKeyJoinColumn addSpecifiedPrimaryKeyJoinColumn_(int index, XmlPrimaryKeyJoinColumn xmlJoinColumn) { - OrmPrimaryKeyJoinColumn joinColumn = this.buildPrimaryKeyJoinColumn(xmlJoinColumn); - this.addItemToList(index, joinColumn, this.specifiedPrimaryKeyJoinColumns, SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST); - return joinColumn; + protected ListIterable getXmlPrimaryKeyJoinColumns() { + // clone to reduce chance of concurrency problems + return new LiveCloneListIterable(this.xmlSecondaryTable.getPrimaryKeyJoinColumns()); } - protected void removeSpecifiedPrimaryKeyJoinColumn_(OrmPrimaryKeyJoinColumn joinColumn) { - this.removeSpecifiedPrimaryKeyJoinColumn_(this.specifiedPrimaryKeyJoinColumns.indexOf(joinColumn)); + protected ContextListContainer buildSpecifiedPrimaryKeyJoinColumnContainer() { + return new SpecifiedPrimaryKeyJoinColumnContainer(); } /** - * specified primary key join column container adapter + * specified primary key join column container */ - protected class SpecifiedPrimaryKeyJoinColumnContainerAdapter - implements ContextContainerTools.Adapter + protected class SpecifiedPrimaryKeyJoinColumnContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmSecondaryTable.this.getSpecifiedPrimaryKeyJoinColumns(); + @Override + protected String getContextElementsPropertyName() { + return SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmPrimaryKeyJoinColumn buildContextElement(XmlPrimaryKeyJoinColumn resourceElement) { + return GenericOrmSecondaryTable.this.buildPrimaryKeyJoinColumn(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmSecondaryTable.this.getXmlPrimaryKeyJoinColumns(); } - public XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { + @Override + protected XmlPrimaryKeyJoinColumn getResourceElement(OrmPrimaryKeyJoinColumn contextElement) { return contextElement.getXmlColumn(); } - public void moveContextElement(int index, OrmPrimaryKeyJoinColumn element) { - GenericOrmSecondaryTable.this.moveSpecifiedPrimaryKeyJoinColumn_(index, element); - } - public void addContextElement(int index, XmlPrimaryKeyJoinColumn resourceElement) { - GenericOrmSecondaryTable.this.addSpecifiedPrimaryKeyJoinColumn_(index, resourceElement); - } - public void removeContextElement(OrmPrimaryKeyJoinColumn element) { - GenericOrmSecondaryTable.this.removeSpecifiedPrimaryKeyJoinColumn_(element); - } } protected OrmReadOnlyBaseJoinColumn.Owner buildPrimaryKeyJoinColumnOwner() { @@ -303,7 +271,7 @@ public class GenericOrmSecondaryTable public void initializeFrom(ReadOnlySecondaryTable oldSecondaryTable) { super.initializeFrom(oldSecondaryTable); - for (ReadOnlyPrimaryKeyJoinColumn pkJoinColumn : CollectionTools.iterable(oldSecondaryTable.specifiedPrimaryKeyJoinColumns())) { + for (ReadOnlyPrimaryKeyJoinColumn pkJoinColumn : oldSecondaryTable.getSpecifiedPrimaryKeyJoinColumns()) { this.addSpecifiedPrimaryKeyJoinColumn().initializeFrom(pkJoinColumn); } } @@ -371,7 +339,7 @@ public class GenericOrmSecondaryTable } public String getDefaultColumnName() { - if (this.joinColumnsSize() != 1) { + if (this.getJoinColumnsSize() != 1) { return null; } Entity parentEntity = this.getEntity().getParentEntity(); @@ -384,8 +352,8 @@ public class GenericOrmSecondaryTable return GenericOrmSecondaryTable.this.getDbTable(); } - public int joinColumnsSize() { - return GenericOrmSecondaryTable.this.primaryKeyJoinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmSecondaryTable.this.getPrimaryKeyJoinColumnsSize(); } public boolean joinColumnIsDefault(ReadOnlyBaseJoinColumn joinColumn) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmTableGenerator.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmTableGenerator.java index 9805b186f0..0516dff51b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmTableGenerator.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/orm/GenericOrmTableGenerator.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; import java.util.Iterator; -import java.util.Vector; - -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; +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.jpa.core.context.UniqueConstraint; import org.eclipse.jpt.jpa.core.context.XmlContextNode; import org.eclipse.jpt.jpa.core.context.orm.OrmTableGenerator; import org.eclipse.jpt.jpa.core.context.orm.OrmUniqueConstraint; -import org.eclipse.jpt.jpa.core.internal.context.ContextContainerTools; import org.eclipse.jpt.jpa.core.internal.context.orm.AbstractOrmGenerator; import org.eclipse.jpt.jpa.core.resource.orm.OrmFactory; import org.eclipse.jpt.jpa.core.resource.orm.XmlTableGenerator; @@ -51,8 +49,7 @@ public class GenericOrmTableGenerator protected String specifiedPkColumnValue; protected String defaultPkColumnValue; - protected final Vector uniqueConstraints = new Vector(); - protected final UniqueConstraintContainerAdapter uniqueConstraintContainerAdapter = new UniqueConstraintContainerAdapter(); + protected final ContextListContainer uniqueConstraintContainer; // ********** constructor ********** @@ -65,7 +62,7 @@ public class GenericOrmTableGenerator this.specifiedPkColumnName = xmlTableGenerator.getPkColumnName(); this.specifiedValueColumnName = xmlTableGenerator.getValueColumnName(); this.specifiedPkColumnValue = xmlTableGenerator.getPkColumnValue(); - this.initializeUniqueContraints(); + this.uniqueConstraintContainer = new UniqueConstraintContainer(); } @@ -329,21 +326,21 @@ public class GenericOrmTableGenerator // ********** unique constraints ********** - public Iterable getUniqueConstraints() { - return new LiveCloneIterable(this.uniqueConstraints); + public ListIterable getUniqueConstraints() { + return this.uniqueConstraintContainer.getContextElements(); } public int getUniqueConstraintsSize() { - return this.uniqueConstraints.size(); + return this.uniqueConstraintContainer.getContextElementsSize(); } public OrmUniqueConstraint addUniqueConstraint() { - return this.addUniqueConstraint(this.uniqueConstraints.size()); + return this.addUniqueConstraint(this.getUniqueConstraintsSize()); } public OrmUniqueConstraint addUniqueConstraint(int index) { XmlUniqueConstraint xmlConstraint = this.buildXmlUniqueConstraint(); - OrmUniqueConstraint constraint = this.addUniqueConstraint_(index, xmlConstraint); + OrmUniqueConstraint constraint = this.uniqueConstraintContainer.addContextElement(index, xmlConstraint); this.xmlGenerator.getUniqueConstraints().add(index, xmlConstraint); return constraint; } @@ -353,80 +350,58 @@ public class GenericOrmTableGenerator } public void removeUniqueConstraint(UniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint(this.uniqueConstraints.indexOf(uniqueConstraint)); + this.removeUniqueConstraint(this.uniqueConstraintContainer.indexOfContextElement((OrmUniqueConstraint) uniqueConstraint)); } public void removeUniqueConstraint(int index) { - this.removeUniqueConstraint_(index); + this.uniqueConstraintContainer.removeContextElement(index); this.xmlGenerator.getUniqueConstraints().remove(index); } - protected void removeUniqueConstraint_(int index) { - this.removeItemFromList(index, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - } - public void moveUniqueConstraint(int targetIndex, int sourceIndex) { - this.moveItemInList(targetIndex, sourceIndex, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + this.uniqueConstraintContainer.moveContextElement(targetIndex, sourceIndex); this.xmlGenerator.getUniqueConstraints().move(targetIndex, sourceIndex); } - protected void initializeUniqueContraints() { - for (XmlUniqueConstraint constraint : this.getXmlUniqueConstraints()) { - this.uniqueConstraints.add(this.buildUniqueConstraint(constraint)); - } - } - protected OrmUniqueConstraint buildUniqueConstraint(XmlUniqueConstraint resourceUniqueConstraint) { return this.getContextNodeFactory().buildOrmUniqueConstraint(this, this, resourceUniqueConstraint); } protected void syncUniqueConstraints() { - ContextContainerTools.synchronizeWithResourceModel(this.uniqueConstraintContainerAdapter); - } - - protected Iterable getXmlUniqueConstraints() { - // clone to reduce chance of concurrency problems - return new LiveCloneIterable(this.xmlGenerator.getUniqueConstraints()); + this.uniqueConstraintContainer.synchronizeWithResourceModel(); } - protected void moveUniqueConstraint_(int index, OrmUniqueConstraint uniqueConstraint) { - this.moveItemInList(index, uniqueConstraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); + protected void updateUniqueConstraints() { + this.uniqueConstraintContainer.update(); } - protected OrmUniqueConstraint addUniqueConstraint_(int index, XmlUniqueConstraint xmlConstraint) { - OrmUniqueConstraint constraint = this.buildUniqueConstraint(xmlConstraint); - this.addItemToList(index, constraint, this.uniqueConstraints, UNIQUE_CONSTRAINTS_LIST); - return constraint; - } - - protected void removeUniqueConstraint_(OrmUniqueConstraint uniqueConstraint) { - this.removeUniqueConstraint_(this.uniqueConstraints.indexOf(uniqueConstraint)); + protected ListIterable getXmlUniqueConstraints() { + // clone to reduce chance of concurrency problems + return new LiveCloneListIterable(this.xmlGenerator.getUniqueConstraints()); } /** - * unique constraint container adapter + * unique constraint container */ - protected class UniqueConstraintContainerAdapter - implements ContextContainerTools.Adapter + protected class UniqueConstraintContainer + extends ContextListContainer { - public Iterable getContextElements() { - return GenericOrmTableGenerator.this.getUniqueConstraints(); + @Override + protected String getContextElementsPropertyName() { + return UNIQUE_CONSTRAINTS_LIST; } - public Iterable getResourceElements() { + @Override + protected OrmUniqueConstraint buildContextElement(XmlUniqueConstraint resourceElement) { + return GenericOrmTableGenerator.this.buildUniqueConstraint(resourceElement); + } + @Override + protected ListIterable getResourceElements() { return GenericOrmTableGenerator.this.getXmlUniqueConstraints(); } - public XmlUniqueConstraint getResourceElement(OrmUniqueConstraint contextElement) { + @Override + protected XmlUniqueConstraint getResourceElement(OrmUniqueConstraint contextElement) { return contextElement.getXmlUniqueConstraint(); } - public void moveContextElement(int index, OrmUniqueConstraint element) { - GenericOrmTableGenerator.this.moveUniqueConstraint_(index, element); - } - public void addContextElement(int index, XmlUniqueConstraint resourceElement) { - GenericOrmTableGenerator.this.addUniqueConstraint_(index, resourceElement); - } - public void removeContextElement(OrmUniqueConstraint element) { - GenericOrmTableGenerator.this.removeUniqueConstraint_(element); - } } 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 d3d37ad989..5cd0538991 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 @@ -9,9 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.orm; -import java.util.ListIterator; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator; +import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy; import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationshipStrategy; @@ -40,22 +40,22 @@ public class NullOrmJoinColumnRelationshipStrategy // ********** join columns ********** - public ListIterator joinColumns() { - return EmptyListIterator.instance(); + public ListIterable getJoinColumns() { + return EmptyListIterable.instance(); } - public int joinColumnsSize() { + public int getJoinColumnsSize() { return 0; } // ********** specified join columns ********** - public ListIterator specifiedJoinColumns() { - return EmptyListIterator.instance(); + public ListIterable getSpecifiedJoinColumns() { + return EmptyListIterable.instance(); } - public int specifiedJoinColumnsSize() { + public int getSpecifiedJoinColumnsSize() { return 0; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericClassRef.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericClassRef.java index 1a95aa6256..ddf31c9991 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericClassRef.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericClassRef.java @@ -9,10 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence; -import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IType; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement.Kind; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.Tools; @@ -29,7 +30,6 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.internal.context.persistence.AbstractPersistenceXmlContextNode; 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.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.persistence.XmlJavaClassRef; import org.eclipse.text.edits.DeleteEdit; import org.eclipse.text.edits.ReplaceEdit; @@ -54,7 +54,8 @@ public class GenericClassRef /** * The Java persistent type corresponding to the ref's class name; - * this can be null if the name is invalid. + * this can be null if the className is invalid or + * refers to an enum instead of a class or interface. */ protected JavaPersistentType javaPersistentType; @@ -150,7 +151,7 @@ public class GenericClassRef } protected void updateJavaPersistentType() { - JavaResourcePersistentType resourceType = this.resolveJavaResourcePersistentType(); + JavaResourceType resourceType = this.resolveJavaResourceType(); if (resourceType == null) { if (this.javaPersistentType != null) { this.javaPersistentType.dispose(); @@ -160,7 +161,7 @@ public class GenericClassRef if (this.javaPersistentType == null) { this.setJavaPersistentType(this.buildJavaPersistentType(resourceType)); } else { - if (this.javaPersistentType.getResourcePersistentType() == resourceType) { + if (this.javaPersistentType.getJavaResourceType() == resourceType) { this.javaPersistentType.update(); } else { this.javaPersistentType.dispose(); @@ -170,12 +171,12 @@ public class GenericClassRef } } - protected JavaResourcePersistentType resolveJavaResourcePersistentType() { + protected JavaResourceType resolveJavaResourceType() { String javaClassName = this.getJavaClassName(); - return (javaClassName == null) ? null : this.getJpaProject().getJavaResourcePersistentType(javaClassName); + return (javaClassName == null) ? null : (JavaResourceType) this.getJpaProject().getJavaResourceType(javaClassName, Kind.TYPE); } - protected JavaPersistentType buildJavaPersistentType(JavaResourcePersistentType jrpt) { + protected JavaPersistentType buildJavaPersistentType(JavaResourceType jrpt) { return this.getJpaFactory().buildJavaPersistentType(this, jrpt); } @@ -345,9 +346,8 @@ public class GenericClassRef // i.e. the persistence.xml ref is the only ref - none of the mapping // files reference the same class boolean validateJavaPersistentType = true; - for (Iterator stream = this.getPersistenceUnit().mappingFileRefsContaining(this.getJavaClassName()); stream.hasNext(); ) { + for (MappingFileRef mappingFileRef : this.getPersistenceUnit().getMappingFileRefsContaining(this.getJavaClassName())) { validateJavaPersistentType = false; - MappingFileRef mappingFileRef = stream.next(); messages.add( DefaultJpaValidationMessages.buildMessage( IMessage.LOW_SEVERITY, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericPersistence.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericPersistence.java index 491d9a6ec9..1e9083278b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericPersistence.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/context/persistence/GenericPersistence.java @@ -10,8 +10,6 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence; import java.util.List; -import java.util.ListIterator; - import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; @@ -72,11 +70,7 @@ public class GenericPersistence // ********** persistence units ********** - public ListIterator persistenceUnits() { - return this.getPersistenceUnits().iterator(); - } - - protected ListIterable getPersistenceUnits() { + public ListIterable getPersistenceUnits() { return (this.persistenceUnit == null) ? EmptyListIterable.instance() : this.getPersistenceUnits_(); } @@ -84,12 +78,12 @@ public class GenericPersistence return new SingleElementListIterable(this.persistenceUnit); } - public int persistenceUnitsSize() { + public int getPersistenceUnitsSize() { return (this.persistenceUnit == null) ? 0 : 1; } public PersistenceUnit addPersistenceUnit() { - return this.addPersistenceUnit(this.persistenceUnitsSize()); + return this.addPersistenceUnit(this.getPersistenceUnitsSize()); } public PersistenceUnit addPersistenceUnit(int index) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverride1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverride1_0Annotation.java index 84286b57c7..a9e3b009a8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverride1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverride1_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,8 +10,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAssociationOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.AssociationOverride diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverrides1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverrides1_0Annotation.java deleted file mode 100644 index 7dbc81b9bd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryAssociationOverrides1_0Annotation.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.resource.java.binary; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableAssociationOverrideAnnotation; - -/** - * javax.persistence.AssociationOverrides - */ -public final class BinaryAssociationOverrides1_0Annotation - extends BinaryAssociationOverridesAnnotation -{ - - public BinaryAssociationOverrides1_0Annotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - } - - @Override - protected NestableAssociationOverrideAnnotation buildAssociationOverride(Object jdtAssociationOverride) { - return new BinaryAssociationOverride1_0Annotation(this, (IAnnotation) jdtAssociationOverride); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQueries1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQueries1_0Annotation.java deleted file mode 100644 index f1bd6aac02..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQueries1_0Annotation.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009 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.resource.java.binary; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedQueriesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableNamedQueryAnnotation; - -/** - * javax.persistence.NamedQueries - */ -public final class BinaryNamedQueries1_0Annotation - extends BinaryNamedQueriesAnnotation -{ - public BinaryNamedQueries1_0Annotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - } - - @Override - protected NestableNamedQueryAnnotation buildNamedQuery(Object jdtQuery) { - return new BinaryNamedQuery1_0Annotation(this, (IAnnotation) jdtQuery); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQuery1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQuery1_0Annotation.java index 3b315898d1..34bd911323 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQuery1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinaryNamedQuery1_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009 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,8 +10,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.NamedQuery diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinarySequenceGenerator1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinarySequenceGenerator1_0Annotation.java index 0415109916..8079c4b62b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinarySequenceGenerator1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/binary/BinarySequenceGenerator1_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,8 +10,8 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinarySequenceGeneratorAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.SequenceGenerator diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverride1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverride1_0Annotation.java index 529a51a775..987867e3c4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverride1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverride1_0Annotation.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,13 +11,14 @@ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source; import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ElementIndexedAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAssociationOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.AssociationOverride @@ -25,19 +26,52 @@ import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; public final class SourceAssociationOverride1_0Annotation extends SourceAssociationOverrideAnnotation { - public SourceAssociationOverride1_0Annotation(JavaResourceNode parent, Member member, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { - super(parent, member, daa, annotationAdapter); + + public static SourceAssociationOverride1_0Annotation buildSourceAssociationOverrideAnnotation( + JavaResourceNode parent, + AnnotatedElement element) { + + return new SourceAssociationOverride1_0Annotation(parent, element, DECLARATION_ANNOTATION_ADAPTER); + } + + public static SourceAssociationOverride1_0Annotation buildSourceAssociationOverrideAnnotation( + JavaResourceAnnotatedElement parent, + AnnotatedElement annotatedElement, + int index) { + IndexedDeclarationAnnotationAdapter idaa = buildAssociationOverrideDeclarationAnnotationAdapter(index); + IndexedAnnotationAdapter iaa = buildAssociationOverrideAnnotationAdapter(annotatedElement, idaa); + return new SourceAssociationOverride1_0Annotation( + parent, + annotatedElement, + idaa, + iaa); + } + + public static SourceAssociationOverride1_0Annotation buildNestedSourceAssociationOverrideAnnotation( + JavaResourceNode parent, + AnnotatedElement element, + IndexedDeclarationAnnotationAdapter idaa) { + + return new SourceAssociationOverride1_0Annotation(parent, element, idaa); + } + + private SourceAssociationOverride1_0Annotation( + JavaResourceNode parent, + AnnotatedElement element, + DeclarationAnnotationAdapter daa) { + + this(parent, element, daa, new ElementAnnotationAdapter(element, daa)); } - // ********** static methods ********** + private SourceAssociationOverride1_0Annotation( + JavaResourceNode parent, + AnnotatedElement element, + IndexedDeclarationAnnotationAdapter idaa) { - public static SourceAssociationOverride1_0Annotation buildAssociationOverride(JavaResourceNode parent, Member member) { - return new SourceAssociationOverride1_0Annotation(parent, member, DECLARATION_ANNOTATION_ADAPTER, new ElementAnnotationAdapter(member, DECLARATION_ANNOTATION_ADAPTER)); + this(parent, element, idaa, new ElementIndexedAnnotationAdapter(element, idaa)); } - static SourceAssociationOverride1_0Annotation buildNestedAssociationOverride(JavaResourceNode parent, Member member, int index, DeclarationAnnotationAdapter attributeOverridesAdapter) { - IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, attributeOverridesAdapter, ANNOTATION_NAME); - IndexedAnnotationAdapter annotationAdapter = new ElementIndexedAnnotationAdapter(member, idaa); - return new SourceAssociationOverride1_0Annotation(parent, member, idaa, annotationAdapter); + private SourceAssociationOverride1_0Annotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { + super(parent, element, daa, annotationAdapter); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverrides1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverrides1_0Annotation.java deleted file mode 100644 index f4c8ed5d23..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceAssociationOverrides1_0Annotation.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source; - -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableAssociationOverrideAnnotation; - -/** - * javax.persistence.AssociationOverrides - */ -public final class SourceAssociationOverrides1_0Annotation - extends SourceAssociationOverridesAnnotation -{ - public SourceAssociationOverrides1_0Annotation(JavaResourceNode parent, Member member) { - super(parent, member); - } - - @Override - protected NestableAssociationOverrideAnnotation buildAssociationOverride(int index) { - // pass the Java resource persistent member as the nested annotation's parent - // since the nested annotation can be converted to stand-alone - return SourceAssociationOverride1_0Annotation.buildNestedAssociationOverride(this.parent, this.annotatedElement, index, this.daa); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceNamedQuery1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceNamedQuery1_0Annotation.java index fa1baaabf2..3ce0b644b0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceNamedQuery1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceNamedQuery1_0Annotation.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,11 +9,11 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source; -import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Type; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.NamedQuery @@ -21,11 +21,21 @@ import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; public final class SourceNamedQuery1_0Annotation extends SourceNamedQueryAnnotation { - public SourceNamedQuery1_0Annotation(JavaResourceNode parent, Type type) { - super(parent, type); + public static SourceNamedQuery1_0Annotation buildSourceNamedQueryAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + IndexedDeclarationAnnotationAdapter idaa = buildNamedQueryDeclarationAnnotationAdapter(index); + IndexedAnnotationAdapter iaa = buildNamedQueryAnnotationAdapter(annotatedElement, idaa); + return new SourceNamedQuery1_0Annotation( + parent, + annotatedElement, + idaa, + iaa); + } + + private SourceNamedQuery1_0Annotation( + JavaResourceAnnotatedElement parent, + AnnotatedElement annotatedElement, + IndexedDeclarationAnnotationAdapter daa, + IndexedAnnotationAdapter annotationAdapter) { + super(parent, annotatedElement, daa, annotationAdapter); } - - public SourceNamedQuery1_0Annotation(JavaResourceNode parent, Type type, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { - super(parent, type, daa, annotationAdapter); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceSequenceGenerator1_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceSequenceGenerator1_0Annotation.java index 898364a8d5..99cc3b6c72 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceSequenceGenerator1_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa1/resource/java/source/SourceSequenceGenerator1_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 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,9 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source; -import org.eclipse.jpt.common.core.utility.jdt.Member; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceSequenceGeneratorAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.SequenceGenerator @@ -20,8 +20,8 @@ public final class SourceSequenceGenerator1_0Annotation extends SourceSequenceGeneratorAnnotation { - public SourceSequenceGenerator1_0Annotation(JavaResourceNode parent, Member member) { - super(parent, member); + public SourceSequenceGenerator1_0Annotation(JavaResourceNode parent, AnnotatedElement element) { + super(parent, element); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaAnnotationDefinitionProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaAnnotationDefinitionProvider.java index 84009a4467..948eff2c22 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaAnnotationDefinitionProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaAnnotationDefinitionProvider.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,15 +10,17 @@ package org.eclipse.jpt.jpa.core.internal.jpa2; import java.util.ArrayList; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.jpa.core.JpaAnnotationDefinitionProvider; import org.eclipse.jpt.jpa.core.internal.AbstractJpaAnnotationDefinitionProvider; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.Access2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.AssociationOverride2_0AnnotationDefinition; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.AssociationOverrides2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.Cacheable2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.CollectionTable2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.ElementCollection2_0AnnotationDefinition; +import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.GeneratedAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyClass2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyColumn2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyEnumerated2_0AnnotationDefinition; @@ -26,10 +28,11 @@ import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyJoinColumn2_0A import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyJoinColumns2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapKeyTemporal2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.MapsId2_0AnnotationDefinition; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.NamedQueries2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.NamedQuery2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.OrderColumn2_0AnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.SequenceGenerator2_0AnnotationDefinition; +import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.StaticMetamodelAnnotationDefinition; +import org.eclipse.jpt.jpa.core.internal.resource.java.AssociationOverridesAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.AttributeOverrideAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.AttributeOverridesAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.BasicAnnotationDefinition; @@ -55,6 +58,7 @@ import org.eclipse.jpt.jpa.core.internal.resource.java.MapKeyAnnotationDefinitio import org.eclipse.jpt.jpa.core.internal.resource.java.MappedSuperclassAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.NamedNativeQueriesAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.NamedNativeQueryAnnotationDefinition; +import org.eclipse.jpt.jpa.core.internal.resource.java.NamedQueriesAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.OneToManyAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.OneToOneAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.OrderByAnnotationDefinition; @@ -67,7 +71,6 @@ import org.eclipse.jpt.jpa.core.internal.resource.java.TableGeneratorAnnotationD import org.eclipse.jpt.jpa.core.internal.resource.java.TemporalAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.TransientAnnotationDefinition; import org.eclipse.jpt.jpa.core.internal.resource.java.VersionAnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; /** * Support for existing JPA 1.0 annotations, new JPA 2.0 annotations, and @@ -95,89 +98,55 @@ public class Generic2_0JpaAnnotationDefinitionProvider } @Override - protected void addTypeAnnotationDefinitionsTo(ArrayList definitions) { - CollectionTools.addAll(definitions, TYPE_ANNOTATION_DEFINITIONS); + protected void addAnnotationDefinitionsTo(ArrayList definitions) { + CollectionTools.addAll(definitions, ANNOTATION_DEFINITIONS); } - protected static final AnnotationDefinition[] TYPE_ANNOTATION_DEFINITIONS = new AnnotationDefinition[] { - Access2_0AnnotationDefinition.instance(), - AssociationOverride2_0AnnotationDefinition.instance(), - AssociationOverrides2_0AnnotationDefinition.instance(), - AttributeOverrideAnnotationDefinition.instance(), + protected static final AnnotationDefinition[] ANNOTATION_DEFINITIONS = new AnnotationDefinition[] { AttributeOverridesAnnotationDefinition.instance(), - Cacheable2_0AnnotationDefinition.instance(), - DiscriminatorColumnAnnotationDefinition.instance(), - DiscriminatorValueAnnotationDefinition.instance(), - EmbeddableAnnotationDefinition.instance(), - EntityAnnotationDefinition.instance(), - IdClassAnnotationDefinition.instance(), - InheritanceAnnotationDefinition.instance(), - MappedSuperclassAnnotationDefinition.instance(), - NamedQuery2_0AnnotationDefinition.instance(), - NamedQueries2_0AnnotationDefinition.instance(), - NamedNativeQueryAnnotationDefinition.instance(), - NamedNativeQueriesAnnotationDefinition.instance(), - PrimaryKeyJoinColumnAnnotationDefinition.instance(), - PrimaryKeyJoinColumnsAnnotationDefinition.instance(), - SecondaryTableAnnotationDefinition.instance(), - SecondaryTablesAnnotationDefinition.instance(), - SequenceGenerator2_0AnnotationDefinition.instance(), - TableAnnotationDefinition.instance(), - TableGeneratorAnnotationDefinition.instance() - }; - - @Override - protected void addTypeMappingAnnotationDefinitionsTo(ArrayList definitions) { - CollectionTools.addAll(definitions, TYPE_MAPPING_ANNOTATION_DEFINITIONS); - } - - protected static final AnnotationDefinition[] TYPE_MAPPING_ANNOTATION_DEFINITIONS = new AnnotationDefinition[] { - EmbeddableAnnotationDefinition.instance(), - EntityAnnotationDefinition.instance(), - MappedSuperclassAnnotationDefinition.instance() - }; - - @Override - protected void addAttributeAnnotationDefinitionsTo(ArrayList definitions) { - CollectionTools.addAll(definitions, ATTRIBUTE_ANNOTATION_DEFINITIONS); - } - - protected static final AnnotationDefinition[] ATTRIBUTE_ANNOTATION_DEFINITIONS = new AnnotationDefinition[] { + AssociationOverridesAnnotationDefinition.instance(), Access2_0AnnotationDefinition.instance(), - AssociationOverride2_0AnnotationDefinition.instance(), - AssociationOverrides2_0AnnotationDefinition.instance(), - AttributeOverrideAnnotationDefinition.instance(), - AttributeOverridesAnnotationDefinition.instance(), BasicAnnotationDefinition.instance(), + Cacheable2_0AnnotationDefinition.instance(), CollectionTable2_0AnnotationDefinition.instance(), ColumnAnnotationDefinition.instance(), + DiscriminatorColumnAnnotationDefinition.instance(), + DiscriminatorValueAnnotationDefinition.instance(), ElementCollection2_0AnnotationDefinition.instance(), + EmbeddableAnnotationDefinition.instance(), EmbeddedAnnotationDefinition.instance(), EmbeddedIdAnnotationDefinition.instance(), + EntityAnnotationDefinition.instance(), EnumeratedAnnotationDefinition.instance(), + GeneratedAnnotationDefinition.instance(), GeneratedValueAnnotationDefinition.instance(), IdAnnotationDefinition.instance(), - JoinColumnAnnotationDefinition.instance(), + IdClassAnnotationDefinition.instance(), + InheritanceAnnotationDefinition.instance(), JoinColumnsAnnotationDefinition.instance(), JoinTableAnnotationDefinition.instance(), LobAnnotationDefinition.instance(), ManyToManyAnnotationDefinition.instance(), ManyToOneAnnotationDefinition.instance(), + MappedSuperclassAnnotationDefinition.instance(), MapsId2_0AnnotationDefinition.instance(), MapKeyAnnotationDefinition.instance(), MapKeyClass2_0AnnotationDefinition.instance(), MapKeyColumn2_0AnnotationDefinition.instance(), MapKeyEnumerated2_0AnnotationDefinition.instance(), - MapKeyJoinColumn2_0AnnotationDefinition.instance(), MapKeyJoinColumns2_0AnnotationDefinition.instance(), MapKeyTemporal2_0AnnotationDefinition.instance(), + NamedQueriesAnnotationDefinition.instance(), + NamedNativeQueriesAnnotationDefinition.instance(), OneToManyAnnotationDefinition.instance(), OneToOneAnnotationDefinition.instance(), OrderByAnnotationDefinition.instance(), OrderColumn2_0AnnotationDefinition.instance(), - PrimaryKeyJoinColumnAnnotationDefinition.instance(), PrimaryKeyJoinColumnsAnnotationDefinition.instance(), + SecondaryTablesAnnotationDefinition.instance(), SequenceGenerator2_0AnnotationDefinition.instance(), + StaticMetamodelAnnotationDefinition.instance(), + TableAnnotationDefinition.instance(), TableGeneratorAnnotationDefinition.instance(), TemporalAnnotationDefinition.instance(), TransientAnnotationDefinition.instance(), @@ -185,7 +154,18 @@ public class Generic2_0JpaAnnotationDefinitionProvider }; @Override - protected void addPackageAnnotationDefinitionsTo(ArrayList definitions) { - // no package annotations + protected void addNestableAnnotationDefinitionsTo(ArrayList definitions) { + CollectionTools.addAll(definitions, NESTABLE_ANNOTATION_DEFINITIONS); } + + protected static final NestableAnnotationDefinition[] NESTABLE_ANNOTATION_DEFINITIONS = new NestableAnnotationDefinition[] { + AssociationOverride2_0AnnotationDefinition.instance(), + AttributeOverrideAnnotationDefinition.instance(), + JoinColumnAnnotationDefinition.instance(), + MapKeyJoinColumn2_0AnnotationDefinition.instance(), + NamedQuery2_0AnnotationDefinition.instance(), + NamedNativeQueryAnnotationDefinition.instance(), + PrimaryKeyJoinColumnAnnotationDefinition.instance(), + SecondaryTableAnnotationDefinition.instance(), + }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaPlatformFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaPlatformFactory.java index fc808c9fa0..6a0db9b94a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaPlatformFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/Generic2_0JpaPlatformFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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. @@ -13,7 +13,7 @@ import org.eclipse.jpt.jpa.core.JpaFacet; import org.eclipse.jpt.jpa.core.JpaPlatform; import org.eclipse.jpt.jpa.core.JpaPlatformFactory; import org.eclipse.jpt.jpa.core.JpaPlatformVariation; -import org.eclipse.jpt.jpa.core.internal.GenericJpaAnnotationProvider; +import org.eclipse.jpt.jpa.core.internal.JpaAnnotationProvider; import org.eclipse.jpt.jpa.core.internal.GenericJpaPlatform; import org.eclipse.jpt.jpa.core.internal.GenericJpaPlatformFactory.SimpleVersion; @@ -37,7 +37,7 @@ public class Generic2_0JpaPlatformFactory id, this.buildJpaVersion(), new GenericJpaFactory2_0(), - new GenericJpaAnnotationProvider(Generic2_0JpaAnnotationDefinitionProvider.instance()), + new JpaAnnotationProvider(Generic2_0JpaAnnotationDefinitionProvider.instance()), Generic2_0JpaPlatformProvider.instance(), this.buildJpaPlatformVariation()); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaDatabaseIdentifierAdapter.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaDatabaseIdentifierAdapter.java index 12e19f3689..ba5dcfefa7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaDatabaseIdentifierAdapter.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericJpaDatabaseIdentifierAdapter.java @@ -53,7 +53,7 @@ public class GenericJpaDatabaseIdentifierAdapter if (p == null) { return null; } - Iterator units = this.getPersistence().persistenceUnits(); + Iterator units = this.getPersistence().getPersistenceUnits().iterator(); return (PersistenceUnit2_0) (units.hasNext() ? units.next() : null); } 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 df4d29c664..bcd7e9a919 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 @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.jpa.core.JpaDataSource; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.core.JpaProject.Config; @@ -57,7 +58,6 @@ import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaSingleRelationshipMapping2 import org.eclipse.jpt.jpa.core.jpa2.resource.java.NamedQuery2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.SequenceGenerator2_0Annotation; import org.eclipse.jpt.jpa.core.resource.java.EmbeddableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.java.NamedQueryAnnotation; import org.eclipse.jpt.jpa.core.resource.java.SequenceGeneratorAnnotation; import org.eclipse.jpt.jpa.db.DatabaseIdentifierAdapter; @@ -99,8 +99,8 @@ public class GenericJpaFactory2_0 // ********** Java Context Model ********** @Override - public JavaPersistentType buildJavaPersistentType(PersistentType.Owner owner, JavaResourcePersistentType jrpt) { - return new GenericJavaPersistentType2_0(owner, jrpt); + public JavaPersistentType buildJavaPersistentType(PersistentType.Owner owner, JavaResourceType jrt) { + return new GenericJavaPersistentType2_0(owner, jrt); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericMetamodelSynchronizer.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericMetamodelSynchronizer.java index cd49a0e8f0..ecd2df254e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericMetamodelSynchronizer.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/GenericMetamodelSynchronizer.java @@ -21,6 +21,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAbstractType; import org.eclipse.jpt.common.core.utility.BodySourceWriter; import org.eclipse.jpt.common.utility.internal.ClassName; import org.eclipse.jpt.common.utility.internal.SimpleStack; @@ -30,11 +31,12 @@ import org.eclipse.jpt.jpa.core.context.AttributeMapping; import org.eclipse.jpt.jpa.core.context.PersistentType; import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute; import org.eclipse.jpt.jpa.core.jpa2.JpaProject2_0; +import org.eclipse.jpt.jpa.core.jpa2.MetamodelSynchronizer; import org.eclipse.jpt.jpa.core.jpa2.context.AttributeMapping2_0; import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelField; import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelSourceType; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.GeneratedAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.JavaResourcePersistentType2_0; import com.ibm.icu.text.DateFormat; import com.ibm.icu.text.SimpleDateFormat; @@ -99,7 +101,7 @@ public class GenericMetamodelSynchronizer */ protected String buildSource(ICompilationUnit compilationUnit, Map> memberTypeTree) throws JavaModelException { IFile file = (IFile) compilationUnit.getResource(); - JavaResourcePersistentType2_0 genType = this.getJpaProject().getGeneratedMetamodelTopLevelType(file); + JavaResourceAbstractType genType = this.getJpaProject().getGeneratedMetamodelTopLevelType(file); if (genType == null) { return null; // the file exists, but its source is not a generated metamodel top-level class } @@ -113,7 +115,7 @@ public class GenericMetamodelSynchronizer return newSource; } - String date = genType.getGeneratedAnnotation().getDate(); // if we get here, this will be non-empty + String date = ((GeneratedAnnotation) genType.getAnnotation(GeneratedAnnotation.ANNOTATION_NAME)).getDate(); // if we get here, this will be non-empty int dateBegin = oldSource.indexOf(date); if (dateBegin == -1) { return null; // hmmm... @@ -304,7 +306,7 @@ public class GenericMetamodelSynchronizer pw.printAnnotation("javax.annotation.Generated"); pw.print('('); pw.print("value="); - pw.printStringLiteral(JavaResourcePersistentType2_0.METAMODEL_GENERATED_ANNOTATION_VALUE); + pw.printStringLiteral(MetamodelSynchronizer.METAMODEL_GENERATED_ANNOTATION_VALUE); pw.print(", "); pw.print("date="); pw.printStringLiteral(format(new Date())); @@ -341,8 +343,8 @@ public class GenericMetamodelSynchronizer */ protected boolean printAttributesOn(BodySourceWriter pw) { boolean printed = false; - for (Iterator stream = this.sourceType.attributes(); stream.hasNext(); ) { - this.printAttributeOn(stream.next(), pw); + for (ReadOnlyPersistentAttribute att : this.sourceType.getAttributes()) { + this.printAttributeOn(att, pw); printed = true; } return printed; 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 73252c2e87..7f82627bcc 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 @@ -15,6 +15,9 @@ import java.util.List; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.utility.JDTTools; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceMember; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.Association; @@ -96,11 +99,8 @@ import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentAttribute2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.ElementCollection2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; import org.eclipse.jpt.jpa.core.resource.java.CompleteColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -443,11 +443,11 @@ public abstract class AbstractJavaElementCollectionMapping2_0 } protected ColumnAnnotation getValueColumnAnnotation() { - return (ColumnAnnotation) this.getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); + return (ColumnAnnotation) this.getResourceAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); } protected void removeValueColumnAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(ColumnAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(ColumnAnnotation.ANNOTATION_NAME); } @@ -484,7 +484,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0 * null, remove all the converter annotations. */ protected void retainConverterAnnotation(JavaConverter.Adapter converterAdapter) { - JavaResourcePersistentAttribute resourceAttribute = this.getResourcePersistentAttribute(); + JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { if (adapter != converterAdapter) { adapter.removeConverterAnnotation(resourceAttribute); @@ -526,7 +526,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0 * adapter. Return null if there are no converter annotations. */ protected Association getConverterAnnotation() { - JavaResourcePersistentAttribute resourceAttribute = this.getResourcePersistentAttribute(); + JavaResourceAttribute resourceAttribute = this.getResourceAttribute(); for (JavaConverter.Adapter adapter : this.getConverterAdapters()) { Annotation annotation = adapter.getConverterAnnotation(resourceAttribute); if (annotation != null) { @@ -761,7 +761,7 @@ public abstract class AbstractJavaElementCollectionMapping2_0 // ********** map key annotation ********** protected MapKeyAnnotation getMapKeyAnnotation() { - return (MapKeyAnnotation) this.getResourcePersistentAttribute().getAnnotation(MapKeyAnnotation.ANNOTATION_NAME); + return (MapKeyAnnotation) this.getResourceAttribute().getAnnotation(MapKeyAnnotation.ANNOTATION_NAME); } protected MapKeyAnnotation getMapKeyAnnotationForUpdate() { @@ -770,11 +770,11 @@ public abstract class AbstractJavaElementCollectionMapping2_0 } protected MapKeyAnnotation addMapKeyAnnotation() { - return (MapKeyAnnotation) this.getResourcePersistentAttribute().addAnnotation(MapKeyAnnotation.ANNOTATION_NAME); + return (MapKeyAnnotation) this.getResourceAttribute().addAnnotation(MapKeyAnnotation.ANNOTATION_NAME); } protected void removeMapKeyAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(MapKeyAnnotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(MapKeyAnnotation.ANNOTATION_NAME); } protected boolean mapKeyNameTouches(int pos, CompilationUnit astRoot) { @@ -871,15 +871,15 @@ public abstract class AbstractJavaElementCollectionMapping2_0 // ********** map key class annotation ********** protected MapKeyClass2_0Annotation getMapKeyClassAnnotation() { - return (MapKeyClass2_0Annotation) this.getResourcePersistentAttribute().getAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); + return (MapKeyClass2_0Annotation) this.getResourceAttribute().getAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); } protected MapKeyClass2_0Annotation addMapKeyClassAnnotation() { - return (MapKeyClass2_0Annotation) this.getResourcePersistentAttribute().addAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); + return (MapKeyClass2_0Annotation) this.getResourceAttribute().addAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); } protected void removeMapKeyClassAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(MapKeyClass2_0Annotation.ANNOTATION_NAME); } @@ -898,11 +898,11 @@ public abstract class AbstractJavaElementCollectionMapping2_0 } protected MapKeyColumn2_0Annotation getMapKeyColumnAnnotation() { - return (MapKeyColumn2_0Annotation) this.getResourcePersistentAttribute().getNonNullAnnotation(MapKeyColumn2_0Annotation.ANNOTATION_NAME); + return (MapKeyColumn2_0Annotation) this.getResourceAttribute().getNonNullAnnotation(MapKeyColumn2_0Annotation.ANNOTATION_NAME); } protected void removeMapKeyColumnAnnotation() { - this.getResourcePersistentAttribute().removeAnnotation(MapKeyColumn2_0Annotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(MapKeyColumn2_0Annotation.ANNOTATION_NAME); } @@ -1320,8 +1320,8 @@ public abstract class AbstractJavaElementCollectionMapping2_0 */ protected abstract class AbstractOwner { - public JavaResourcePersistentMember getResourcePersistentMember() { - return AbstractJavaElementCollectionMapping2_0.this.getResourcePersistentAttribute(); + public JavaResourceMember getResourceMember() { + return AbstractJavaElementCollectionMapping2_0.this.getResourceAttribute(); } public TypeMapping getTypeMapping() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCacheable2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCacheable2_0.java index 3d5e0db070..5b8595bab7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCacheable2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaCacheable2_0.java @@ -10,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaCacheable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaCacheableHolder2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Cacheable2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * Java cacheable @@ -116,7 +116,7 @@ public class GenericJavaCacheable2_0 * Return null if the annotation does not exists. */ protected Cacheable2_0Annotation getCacheableAnnotation() { - return (Cacheable2_0Annotation) this.getResourcePersistentType().getAnnotation(this.getCacheableAnnotationName()); + return (Cacheable2_0Annotation) this.getJavaResourceType().getAnnotation(this.getCacheableAnnotationName()); } /** @@ -128,11 +128,11 @@ public class GenericJavaCacheable2_0 } protected Cacheable2_0Annotation buildCacheableAnnotation() { - return (Cacheable2_0Annotation) this.getResourcePersistentType().addAnnotation(this.getCacheableAnnotationName()); + return (Cacheable2_0Annotation) this.getJavaResourceType().addAnnotation(this.getCacheableAnnotationName()); } protected void removeCacheableAnnotation() { - this.getResourcePersistentType().removeAnnotation(this.getCacheableAnnotationName()); + this.getJavaResourceType().removeAnnotation(this.getCacheableAnnotationName()); } protected String getCacheableAnnotationName() { @@ -151,8 +151,8 @@ public class GenericJavaCacheable2_0 return this.getParent(); } - protected JavaResourcePersistentType getResourcePersistentType() { - return this.getCacheableHolder().getResourcePersistentType(); + protected JavaResourceType getJavaResourceType() { + return this.getCacheableHolder().getJavaResourceType(); } 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 4edfdadcfb..92cac35863 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 @@ -54,12 +54,12 @@ public class GenericJavaCollectionTable2_0 @Override public CollectionTable2_0Annotation getTableAnnotation() { - return (CollectionTable2_0Annotation) this.getElementCollectionMapping().getResourcePersistentAttribute().getNonNullAnnotation(CollectionTable2_0Annotation.ANNOTATION_NAME); + return (CollectionTable2_0Annotation) this.getElementCollectionMapping().getResourceAttribute().getNonNullAnnotation(CollectionTable2_0Annotation.ANNOTATION_NAME); } @Override protected void removeTableAnnotation() { - this.getElementCollectionMapping().getResourcePersistentAttribute().removeAnnotation(CollectionTable2_0Annotation.ANNOTATION_NAME); + this.getElementCollectionMapping().getResourceAttribute().removeAnnotation(CollectionTable2_0Annotation.ANNOTATION_NAME); } @@ -167,8 +167,8 @@ public class GenericJavaCollectionTable2_0 return GenericJavaCollectionTable2_0.this.getElementCollectionMapping().getPersistentAttribute(); } - public int joinColumnsSize() { - return GenericJavaCollectionTable2_0.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericJavaCollectionTable2_0.this.getJoinColumnsSize(); } public JptValidator buildColumnValidator(ReadOnlyNamedColumn column, NamedColumnTextRangeResolver textRangeResolver) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaIdDerivedIdentityStrategy2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaIdDerivedIdentityStrategy2_0.java index 3a49304c91..bdd4cd8ed6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaIdDerivedIdentityStrategy2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaIdDerivedIdentityStrategy2_0.java @@ -11,13 +11,13 @@ 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.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaDerivedIdentity2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaIdDerivedIdentityStrategy2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; import org.eclipse.jpt.jpa.core.resource.java.IdAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -105,8 +105,8 @@ public class GenericJavaIdDerivedIdentityStrategy2_0 return this.getDerivedIdentity().getMapping(); } - protected JavaResourcePersistentAttribute getResourceAttribute() { - return this.getMapping().getPersistentAttribute().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getMapping().getPersistentAttribute().getResourceAttribute(); } public boolean isSpecified() { 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 37822cefe2..66b865e88e 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 @@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java; import java.util.Iterator; import java.util.List; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.common.utility.Filter; import org.eclipse.jpt.common.utility.internal.ArrayTools; @@ -38,7 +39,6 @@ import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaDerivedIdentity2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaMapsIdDerivedIdentityStrategy2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaSingleRelationshipMapping2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapsId2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.osgi.util.NLS; import org.eclipse.wst.validation.internal.provisional.core.IMessage; import org.eclipse.wst.validation.internal.provisional.core.IReporter; @@ -172,8 +172,8 @@ public class GenericJavaMapsIdDerivedIdentityStrategy2_0 return this.getMapping().getPersistentAttribute(); } - protected JavaResourcePersistentAttribute getResourceAttribute() { - return this.getPersistentAttribute().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getPersistentAttribute().getResourceAttribute(); } protected Iterable getAllAttributeMappings() { 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 b767f7f081..586c676820 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 @@ -9,13 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; 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; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOrderable2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * Java order column @@ -73,7 +73,7 @@ public class GenericJavaOrderColumn2_0 public OrderColumn2_0Annotation getColumnAnnotation() { // hmmmm... return this.isJpa2_0Compatible() ? - (OrderColumn2_0Annotation) this.getResourcePersistentAttribute().getNonNullAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME) : + (OrderColumn2_0Annotation) this.getResourceAttribute().getNonNullAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME) : this.getNullColumnAnnotation(); } @@ -86,13 +86,13 @@ public class GenericJavaOrderColumn2_0 protected OrderColumn2_0Annotation buildNullColumnAnnotation() { // hmmmm... - return (OrderColumn2_0Annotation) OrderColumn2_0AnnotationDefinition.instance().buildNullAnnotation(this.getResourcePersistentAttribute()); + return (OrderColumn2_0Annotation) OrderColumn2_0AnnotationDefinition.instance().buildNullAnnotation(this.getResourceAttribute()); } @Override protected void removeColumnAnnotation() { if (this.isJpa2_0Compatible()) { - this.getResourcePersistentAttribute().removeAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); + this.getResourceAttribute().removeAnnotation(OrderColumn2_0Annotation.ANNOTATION_NAME); } else { throw new IllegalStateException(); } @@ -239,8 +239,8 @@ public class GenericJavaOrderColumn2_0 return this.getParent(); } - protected JavaResourcePersistentAttribute getResourcePersistentAttribute() { - return this.getOrderable().getResourcePersistentAttribute(); + protected JavaResourceAttribute getResourceAttribute() { + return this.getOrderable().getResourceAttribute(); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java index 4c125250bb..65f5e159f3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/GenericJavaPersistentType2_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,16 +10,14 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.context.java; import java.util.Collection; -import java.util.ListIterator; import java.util.Map; import org.eclipse.core.resources.IFile; +import org.eclipse.jpt.common.core.resource.java.JavaResourceType; import org.eclipse.jpt.common.core.utility.BodySourceWriter; import org.eclipse.jpt.jpa.core.context.PersistentType; -import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaPersistentType; import org.eclipse.jpt.jpa.core.jpa2.context.MetamodelSourceType; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaPersistentType2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * JPA 2.0 Java persistent type. @@ -34,8 +32,8 @@ public class GenericJavaPersistentType2_0 protected final MetamodelSourceType.Synchronizer metamodelSynchronizer; - public GenericJavaPersistentType2_0(PersistentType.Owner parent, JavaResourcePersistentType jrpt) { - super(parent, jrpt); + public GenericJavaPersistentType2_0(PersistentType.Owner parent, JavaResourceType jrt) { + super(parent, jrt); this.declaringTypeName = this.buildDeclaringTypeName(); this.metamodelSynchronizer = this.buildMetamodelSynchronizer(); } @@ -50,15 +48,6 @@ public class GenericJavaPersistentType2_0 } - // ********** attributes ********** - - // suppress type-safety warning - @Override - public ListIterator attributes() { - return super.attributes(); - } - - // ********** declaring type name ********** public String getDeclaringTypeName() { @@ -72,7 +61,7 @@ public class GenericJavaPersistentType2_0 } protected String buildDeclaringTypeName() { - return this.resourcePersistentType.getDeclaringTypeName(); + return this.resourceType.getDeclaringTypeName(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaElementCollectionMappingDefinition2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaElementCollectionMappingDefinition2_0.java index dbfa04907e..44e10d41b3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaElementCollectionMappingDefinition2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaElementCollectionMappingDefinition2_0.java @@ -18,19 +18,18 @@ import org.eclipse.jpt.jpa.core.jpa2.JpaFactory2_0; import org.eclipse.jpt.jpa.core.jpa2.MappingKeys2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.CollectionTable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.ElementCollection2_0Annotation; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; 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.AttributeOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.AttributeOverridesAnnotation; import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; import org.eclipse.jpt.jpa.core.resource.java.EnumeratedAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; import org.eclipse.jpt.jpa.core.resource.java.LobAnnotation; import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation; import org.eclipse.jpt.jpa.core.resource.java.OrderByAnnotation; @@ -66,7 +65,7 @@ public class JavaElementCollectionMappingDefinition2_0 } public boolean isSpecified(JavaPersistentAttribute persistentAttribute) { - return persistentAttribute.getResourcePersistentAttribute().getAnnotation(this.getAnnotationName()) != null; + return persistentAttribute.getResourceAttribute().getAnnotation(this.getAnnotationName()) != null; } public Iterable getSupportingAnnotationNames() { @@ -75,9 +74,9 @@ public class JavaElementCollectionMappingDefinition2_0 private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY = new String[] { AssociationOverrideAnnotation.ANNOTATION_NAME, - AssociationOverridesAnnotation.ANNOTATION_NAME, + JPA.ASSOCIATION_OVERRIDES, AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, CollectionTable2_0Annotation.ANNOTATION_NAME, ColumnAnnotation.ANNOTATION_NAME, EnumeratedAnnotation.ANNOTATION_NAME, @@ -87,7 +86,7 @@ public class JavaElementCollectionMappingDefinition2_0 MapKeyColumn2_0Annotation.ANNOTATION_NAME, MapKeyEnumerated2_0Annotation.ANNOTATION_NAME, MapKeyJoinColumn2_0Annotation.ANNOTATION_NAME, - MapKeyJoinColumns2_0Annotation.ANNOTATION_NAME, + JPA2_0.MAP_KEY_JOIN_COLUMNS, MapKeyTemporal2_0Annotation.ANNOTATION_NAME, OrderByAnnotation.ANNOTATION_NAME, OrderColumn2_0Annotation.ANNOTATION_NAME, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaEmbeddedMappingDefinition2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaEmbeddedMappingDefinition2_0.java index 6658feab1b..16e8e5e6e7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaEmbeddedMappingDefinition2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaEmbeddedMappingDefinition2_0.java @@ -15,7 +15,7 @@ import org.eclipse.jpt.jpa.core.context.java.DefaultJavaAttributeMappingDefiniti import org.eclipse.jpt.jpa.core.internal.context.java.DefaultJavaAttributeMappingDefinitionWrapper; import org.eclipse.jpt.jpa.core.internal.context.java.JavaEmbeddedMappingDefinition; 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.JPA; public class JavaEmbeddedMappingDefinition2_0 extends DefaultJavaAttributeMappingDefinitionWrapper @@ -52,7 +52,7 @@ public class JavaEmbeddedMappingDefinition2_0 private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY_2_0 = new String[] { AssociationOverrideAnnotation.ANNOTATION_NAME, - AssociationOverridesAnnotation.ANNOTATION_NAME, + JPA.ASSOCIATION_OVERRIDES, }; public static final Iterable SUPPORTING_ANNOTATION_NAMES_2_0 = new ArrayIterable(SUPPORTING_ANNOTATION_NAMES_ARRAY_2_0); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaManyToManyMappingDefinition2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaManyToManyMappingDefinition2_0.java index 0b661a5c33..c122b0950d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaManyToManyMappingDefinition2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaManyToManyMappingDefinition2_0.java @@ -14,15 +14,15 @@ import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.java.JavaAttributeMappingDefinitionWrapper; import org.eclipse.jpt.jpa.core.internal.context.java.JavaManyToManyMappingDefinition; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; 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.JPA; public class JavaManyToManyMappingDefinition2_0 extends JavaAttributeMappingDefinitionWrapper @@ -59,12 +59,12 @@ public class JavaManyToManyMappingDefinition2_0 public static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY_2_0 = new String[] { AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, MapKeyClass2_0Annotation.ANNOTATION_NAME, MapKeyColumn2_0Annotation.ANNOTATION_NAME, MapKeyEnumerated2_0Annotation.ANNOTATION_NAME, MapKeyJoinColumn2_0Annotation.ANNOTATION_NAME, - MapKeyJoinColumns2_0Annotation.ANNOTATION_NAME, + JPA2_0.MAP_KEY_JOIN_COLUMNS, MapKeyTemporal2_0Annotation.ANNOTATION_NAME, OrderColumn2_0Annotation.ANNOTATION_NAME }; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaOneToManyMappingDefinition2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaOneToManyMappingDefinition2_0.java index 86f6666067..f933e6cce9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaOneToManyMappingDefinition2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/JavaOneToManyMappingDefinition2_0.java @@ -14,15 +14,15 @@ import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMappingDefinition; import org.eclipse.jpt.jpa.core.internal.context.java.JavaAttributeMappingDefinitionWrapper; import org.eclipse.jpt.jpa.core.internal.context.java.JavaOneToManyMappingDefinition; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; 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.JPA; public class JavaOneToManyMappingDefinition2_0 extends JavaAttributeMappingDefinitionWrapper @@ -59,12 +59,12 @@ public class JavaOneToManyMappingDefinition2_0 private static final String[] SUPPORTING_ANNOTATION_NAMES_ARRAY_2_0 = new String[] { AttributeOverrideAnnotation.ANNOTATION_NAME, - AttributeOverridesAnnotation.ANNOTATION_NAME, + JPA.ATTRIBUTE_OVERRIDES, MapKeyClass2_0Annotation.ANNOTATION_NAME, MapKeyColumn2_0Annotation.ANNOTATION_NAME, MapKeyEnumerated2_0Annotation.ANNOTATION_NAME, MapKeyJoinColumn2_0Annotation.ANNOTATION_NAME, - MapKeyJoinColumns2_0Annotation.ANNOTATION_NAME, + JPA2_0.MAP_KEY_JOIN_COLUMNS, MapKeyTemporal2_0Annotation.ANNOTATION_NAME, OrderColumn2_0Annotation.ANNOTATION_NAME }; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/NullJavaMapKeyColumn2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/NullJavaMapKeyColumn2_0.java index 9086e148a1..59eacabc11 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/NullJavaMapKeyColumn2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/context/java/NullJavaMapKeyColumn2_0.java @@ -35,7 +35,7 @@ public class NullJavaMapKeyColumn2_0 // ********** column annotation ********** public ColumnAnnotation getColumnAnnotation() { - return (ColumnAnnotation) this.getParent().getPersistentAttribute().getResourcePersistentAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); + return (ColumnAnnotation) this.getParent().getPersistentAttribute().getResourceAttribute().getNonNullAnnotation(ColumnAnnotation.ANNOTATION_NAME); } 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 62b9f779e2..e6f4d9f4c2 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 @@ -191,8 +191,8 @@ public class GenericOrmCollectionTable2_0 return GenericOrmCollectionTable2_0.this.getPersistentAttribute(); } - public int joinColumnsSize() { - return GenericOrmCollectionTable2_0.this.joinColumnsSize(); + public int getJoinColumnsSize() { + return GenericOrmCollectionTable2_0.this.getJoinColumnsSize(); } protected OrmElementCollectionMapping2_0 getElementCollectionMapping() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Access2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Access2_0AnnotationDefinition.java index 0e3e95e81d..86549e3f5c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Access2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Access2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryAccess2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceAccess2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.Access @@ -44,19 +42,18 @@ public final class Access2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceAccess2_0Annotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + return new SourceAccess2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullAccess2_0Annotation((JavaResourcePersistentMember) parent); + return new NullAccess2_0Annotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAccess2_0Annotation((JavaResourcePersistentMember) parent, jdtAnnotation); + return new BinaryAccess2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return Access2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverride2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverride2_0AnnotationDefinition.java index 12d1fe772f..c6af80ab76 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverride2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverride2_0AnnotationDefinition.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,29 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryAssociationOverride2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceAssociationOverride2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.AssociationOverride */ public final class AssociationOverride2_0AnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new AssociationOverride2_0AnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new AssociationOverride2_0AnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -43,20 +41,24 @@ public final class AssociationOverride2_0AnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceAssociationOverride2_0Annotation.buildAssociationOverride((JavaResourcePersistentMember) parent, (Member) annotatedElement); - } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceAssociationOverride2_0Annotation.buildSourceAssociationOverrideAnnotation(parent, annotatedElement, index); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { return new BinaryAssociationOverride2_0Annotation(parent, jdtAnnotation); } - public String getAnnotationName() { - return AssociationOverrideAnnotation.ANNOTATION_NAME; + public String getNestableAnnotationName() { + return JPA.ASSOCIATION_OVERRIDE; + } + + public String getContainerAnnotationName() { + return JPA.ASSOCIATION_OVERRIDES; } + public String getElementName() { + return JPA.ASSOCIATION_OVERRIDES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverrides2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverrides2_0AnnotationDefinition.java deleted file mode 100644 index 87eaa59f93..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/AssociationOverrides2_0AnnotationDefinition.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryAssociationOverrides2_0Annotation; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceAssociationOverrides2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; - -/** - * javax.persistence.AssociationOverrides - */ -public final class AssociationOverrides2_0AnnotationDefinition - implements AnnotationDefinition -{ - // singleton - private static final AnnotationDefinition INSTANCE = new AssociationOverrides2_0AnnotationDefinition(); - - /** - * Return the singleton. - */ - public static AnnotationDefinition instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private AssociationOverrides2_0AnnotationDefinition() { - super(); - } - - public AssociationOverridesAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceAssociationOverrides2_0Annotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); - } - - public AssociationOverridesAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); - } - - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAssociationOverrides2_0Annotation(parent, jdtAnnotation); - } - - public String getAnnotationName() { - return AssociationOverridesAnnotation.ANNOTATION_NAME; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Cacheable2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Cacheable2_0AnnotationDefinition.java index 0e99636386..b46f96c619 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Cacheable2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/Cacheable2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryCacheable2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceCacheable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Cacheable2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Cacheable @@ -44,7 +42,7 @@ public final class Cacheable2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceCacheable2_0Annotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceCacheable2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class Cacheable2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryCacheable2_0Annotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryCacheable2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return Cacheable2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/CollectionTable2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/CollectionTable2_0AnnotationDefinition.java index 34710f0028..d898e2e2bd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/CollectionTable2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/CollectionTable2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryCollectionTable2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceCollectionTable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.CollectionTable2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.CollectionTable @@ -44,7 +42,7 @@ public final class CollectionTable2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceCollectionTable2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceCollectionTable2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class CollectionTable2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryCollectionTable2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryCollectionTable2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return CollectionTable2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/ElementCollection2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/ElementCollection2_0AnnotationDefinition.java index 3d99fe6c92..1606cb9293 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/ElementCollection2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/ElementCollection2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryElementCollection2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceElementCollection2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.ElementCollection2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.ElementCollection @@ -44,7 +42,7 @@ public final class ElementCollection2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceElementCollection2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceElementCollection2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class ElementCollection2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryElementCollection2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryElementCollection2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return ElementCollection2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/GeneratedAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/GeneratedAnnotationDefinition.java index 5b897d1620..347b781d01 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/GeneratedAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/GeneratedAnnotationDefinition.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,20 +10,15 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryGeneratedAnnotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceGeneratedAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.GeneratedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.annotation.Generated - *

- * This annotation definition is not really required; it's just here for a bit - * of consistency.... */ public final class GeneratedAnnotationDefinition implements AnnotationDefinition @@ -46,7 +41,7 @@ public final class GeneratedAnnotationDefinition } public GeneratedAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceGeneratedAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceGeneratedAnnotation(parent, annotatedElement); } public GeneratedAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -54,11 +49,10 @@ public final class GeneratedAnnotationDefinition } public GeneratedAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryGeneratedAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryGeneratedAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return GeneratedAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyClass2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyClass2_0AnnotationDefinition.java index 37b7e18382..2b6168c2ec 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyClass2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyClass2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapKeyClass2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyClass @@ -44,7 +42,7 @@ public final class MapKeyClass2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyClass2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapKeyClass2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class MapKeyClass2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyClass2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapKeyClass2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return MapKeyClass2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyColumn2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyColumn2_0AnnotationDefinition.java index 53a40c8fcf..9cb89d9c70 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyColumn2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyColumn2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyColumn2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapKeyColumn2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyColumn @@ -44,7 +42,7 @@ public final class MapKeyColumn2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyColumn2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapKeyColumn2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class MapKeyColumn2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyColumn2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapKeyColumn2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return MapKeyColumn2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyEnumerated2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyEnumerated2_0AnnotationDefinition.java index 6ba277bdc2..f529e3baa5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyEnumerated2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyEnumerated2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyTemporal @@ -44,15 +42,15 @@ public final class MapKeyEnumerated2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyEnumerated2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapKeyEnumerated2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullMapKeyEnumerated2_0Annotation((JavaResourcePersistentAttribute) parent); + return new NullMapKeyEnumerated2_0Annotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyEnumerated2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapKeyEnumerated2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumn2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumn2_0AnnotationDefinition.java index c943113e00..94d71a1a50 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumn2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumn2_0AnnotationDefinition.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,27 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapKeyJoinColumn2_0Annotation; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; /** * javax.persistence.MapKeyJoinColumn */ public final class MapKeyJoinColumn2_0AnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new MapKeyJoinColumn2_0AnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new MapKeyJoinColumn2_0AnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -41,20 +41,23 @@ public final class MapKeyJoinColumn2_0AnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceMapKeyJoinColumn2_0Annotation.createMapKeyJoinColumn(parent, (Attribute) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceMapKeyJoinColumn2_0Annotation.buildSourceMapKeyJoinColumnAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryMapKeyJoinColumn2_0Annotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyJoinColumn2_0Annotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN; } - public String getAnnotationName() { - return MapKeyJoinColumn2_0Annotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA2_0.MAP_KEY_JOIN_COLUMNS; } + public String getElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMNS__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumns2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumns2_0AnnotationDefinition.java index 23ddfdc204..34b7b7c09b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumns2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyJoinColumns2_0AnnotationDefinition.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,14 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyJoinColumns2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; /** * javax.persistence.MapKeyJoinColumns @@ -42,20 +41,20 @@ public final class MapKeyJoinColumns2_0AnnotationDefinition super(); } - public MapKeyJoinColumns2_0Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyJoinColumns2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } - public MapKeyJoinColumns2_0Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { throw new UnsupportedOperationException(); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyJoinColumns2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return MapKeyJoinColumns2_0Annotation.ANNOTATION_NAME; + return JPA2_0.MAP_KEY_JOIN_COLUMNS; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyTemporal2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyTemporal2_0AnnotationDefinition.java index 4539b09588..7275995d17 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyTemporal2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapKeyTemporal2_0AnnotationDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 201 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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapKeyTemporal2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapKeyTemporal2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyTemporal @@ -44,15 +42,15 @@ public final class MapKeyTemporal2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyTemporal2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapKeyTemporal2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullMapKeyTemporal2_0Annotation((JavaResourcePersistentAttribute) parent); + return new NullMapKeyTemporal2_0Annotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyTemporal2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapKeyTemporal2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapsId2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapsId2_0AnnotationDefinition.java index a597251aee..2f4c550557 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapsId2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/MapsId2_0AnnotationDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. + * 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 @@ -11,16 +11,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryMapsId2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceMapsId2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapsId2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.MapsId @@ -48,15 +45,15 @@ public class MapsId2_0AnnotationDefinition implements AnnotationDefinition public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapsId2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapsId2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullMapsId2_0Annotation((JavaResourcePersistentMember) parent); + return new NullMapsId2_0Annotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapsId2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapsId2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQueries2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQueries2_0AnnotationDefinition.java deleted file mode 100644 index 888cc8e2a8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQueries2_0AnnotationDefinition.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 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 -*******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryNamedQueries2_0Annotation; -import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceNamedQueries2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueriesAnnotation; - -/** - * javax.persistence.NamedQueries - */ -public class NamedQueries2_0AnnotationDefinition - implements AnnotationDefinition -{ - // singleton - private static final AnnotationDefinition INSTANCE = new NamedQueries2_0AnnotationDefinition(); - - /** - * Return the singleton. - */ - public static AnnotationDefinition instance() { - return INSTANCE; - } - - /** - * Ensure single instance. - */ - private NamedQueries2_0AnnotationDefinition() { - super(); - } - - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceNamedQueries2_0Annotation(parent, (Type) annotatedElement); - } - - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); - } - - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedQueries2_0Annotation(parent, jdtAnnotation); - } - - public String getAnnotationName() { - return NamedQueriesAnnotation.ANNOTATION_NAME; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQuery2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQuery2_0AnnotationDefinition.java index 86ba2b97c6..1890065719 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQuery2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NamedQuery2_0AnnotationDefinition.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,28 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryNamedQuery2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceNamedQuery2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueryAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.NamedQuery */ public class NamedQuery2_0AnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new NamedQuery2_0AnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new NamedQuery2_0AnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -42,20 +41,23 @@ public class NamedQuery2_0AnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceNamedQuery2_0Annotation(parent, (Type) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceNamedQuery2_0Annotation.buildSourceNamedQueryAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryNamedQuery2_0Annotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedQuery2_0Annotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.NAMED_QUERY; } - public String getAnnotationName() { - return NamedQueryAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.NAMED_QUERIES; } + public String getElementName() { + return JPA.NAMED_QUERIES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullAccess2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullAccess2_0Annotation.java index 2aa8b84300..2e79bebb33 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullAccess2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullAccess2_0Annotation.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,11 +10,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.NullAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.NullAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; import org.eclipse.jpt.jpa.core.resource.java.AccessType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.Access @@ -24,7 +24,7 @@ public final class NullAccess2_0Annotation implements Access2_0Annotation { - protected NullAccess2_0Annotation(JavaResourcePersistentMember parent) { + protected NullAccess2_0Annotation(JavaResourceAnnotatedElement parent) { super(parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullCollectionTable2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullCollectionTable2_0Annotation.java index eba00c41e3..8d92f4a687 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullCollectionTable2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullCollectionTable2_0Annotation.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,12 +9,11 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; -import java.util.ListIterator; - -import org.eclipse.jpt.common.utility.internal.iterators.EmptyListIterator; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.utility.internal.iterables.EmptyListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.internal.resource.java.NullBaseTableAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.CollectionTable2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; /** @@ -33,11 +32,11 @@ public final class NullCollectionTable2_0Annotation } // ***** join columns - public ListIterator joinColumns() { - return EmptyListIterator.instance(); + public ListIterable getJoinColumns() { + return EmptyListIterable.instance(); } - public int joinColumnsSize() { + public int getJoinColumnsSize() { return 0; } @@ -45,10 +44,6 @@ public final class NullCollectionTable2_0Annotation return null; } - public int indexOfJoinColumn(JoinColumnAnnotation joinColumn) { - throw new UnsupportedOperationException(); - } - public JoinColumnAnnotation addJoinColumn(int index) { // the CollectionTable annotation is missing, add both it and a join column at the same time return this.addAnnotation().addJoinColumn(index); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyColumnAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyColumnAnnotation.java index 6a4b869bbe..7eac37b7ea 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyColumnAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyColumnAnnotation.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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.resource.java.NullBaseColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.MapKeyColumn diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyEnumerated2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyEnumerated2_0Annotation.java index c9eaf62795..62d1125de5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyEnumerated2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyEnumerated2_0Annotation.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,11 +10,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.NullAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.NullAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; import org.eclipse.jpt.jpa.core.resource.java.EnumType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyEnumerated @@ -23,7 +23,7 @@ public final class NullMapKeyEnumerated2_0Annotation extends NullAnnotation implements MapKeyEnumerated2_0Annotation { - protected NullMapKeyEnumerated2_0Annotation(JavaResourcePersistentAttribute parent) { + protected NullMapKeyEnumerated2_0Annotation(JavaResourceAnnotatedElement parent) { super(parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyTemporal2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyTemporal2_0Annotation.java index 2a8a676aba..25971b4410 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyTemporal2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapKeyTemporal2_0Annotation.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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.NullAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.NullAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.TemporalType; /** @@ -23,7 +23,7 @@ public final class NullMapKeyTemporal2_0Annotation extends NullAnnotation implements MapKeyTemporal2_0Annotation { - protected NullMapKeyTemporal2_0Annotation(JavaResourcePersistentAttribute parent) { + protected NullMapKeyTemporal2_0Annotation(JavaResourceAnnotatedElement parent) { super(parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapsId2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapsId2_0Annotation.java index 0dcf181809..89553a2ed0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapsId2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullMapsId2_0Annotation.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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.NullAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.NullAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapsId2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.MapsId @@ -22,7 +22,7 @@ public final class NullMapsId2_0Annotation extends NullAnnotation implements MapsId2_0Annotation { - protected NullMapsId2_0Annotation(JavaResourcePersistentMember parent) { + protected NullMapsId2_0Annotation(JavaResourceAnnotatedElement parent) { super(parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullOrderColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullOrderColumn2_0Annotation.java index ca2a7b5123..c74886dec1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullOrderColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/NullOrderColumn2_0Annotation.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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.resource.java.NullNamedColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.OrderColumn @@ -22,7 +22,7 @@ public final class NullOrderColumn2_0Annotation extends NullNamedColumnAnnotation implements OrderColumn2_0Annotation { - public NullOrderColumn2_0Annotation(JavaResourcePersistentAttribute parent) { + public NullOrderColumn2_0Annotation(JavaResourceAnnotatedElement parent) { super(parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/OrderColumn2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/OrderColumn2_0AnnotationDefinition.java index 91ff5ae6fc..d43bcb3c79 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/OrderColumn2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/OrderColumn2_0AnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryOrderColumn2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceOrderColumn2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.OrderColumn @@ -44,19 +42,18 @@ public final class OrderColumn2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceOrderColumn2_0Annotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceOrderColumn2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullOrderColumn2_0Annotation((JavaResourcePersistentAttribute) parent); + return new NullOrderColumn2_0Annotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryOrderColumn2_0Annotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryOrderColumn2_0Annotation(parent, jdtAnnotation); } public String getAnnotationName() { return OrderColumn2_0Annotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SequenceGenerator2_0AnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SequenceGenerator2_0AnnotationDefinition.java index 513678f78d..780423fae5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SequenceGenerator2_0AnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SequenceGenerator2_0AnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinarySequenceGenerator2_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceSequenceGenerator2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; import org.eclipse.jpt.jpa.core.resource.java.SequenceGeneratorAnnotation; /** @@ -44,7 +42,7 @@ public final class SequenceGenerator2_0AnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceSequenceGenerator2_0Annotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + return new SourceSequenceGenerator2_0Annotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -58,5 +56,4 @@ public final class SequenceGenerator2_0AnnotationDefinition public String getAnnotationName() { return SequenceGeneratorAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumn2_0Annotation.java deleted file mode 100644 index 1d1d2289a2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumn2_0Annotation.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; - -import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; -import org.eclipse.jpt.common.core.internal.utility.jdt.ElementIndexedAnnotationAdapter; -import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; -import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBaseJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.NestableMapKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; - -/** - * javax.persistence.MapKeyJoinColumn - */ -public final class SourceMapKeyJoinColumn2_0Annotation - extends SourceBaseJoinColumnAnnotation - implements NestableMapKeyJoinColumnAnnotation -{ - private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); - - - public SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, Attribute attribute, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { - super(parent, attribute, daa, annotationAdapter); - } - - public SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, Attribute attribute, DeclarationAnnotationAdapter daa) { - this(parent, attribute, daa, new ElementAnnotationAdapter(attribute, daa)); - } - - public SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, Attribute attribute, IndexedDeclarationAnnotationAdapter idaa) { - this(parent, attribute, idaa, new ElementIndexedAnnotationAdapter(attribute, idaa)); - } - - public String getAnnotationName() { - return ANNOTATION_NAME; - } - - // ********** SourceNamedColumnAnnotation implementation ********** - - @Override - protected String getNameElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__NAME; - } - - @Override - protected String getColumnDefinitionElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__COLUMN_DEFINITION; - } - - - // ********** SourceBaseColumnAnnotation implementation ********** - - @Override - protected String getTableElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__TABLE; - } - - @Override - protected String getUniqueElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__UNIQUE; - } - - @Override - protected String getNullableElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__NULLABLE; - } - - @Override - protected String getInsertableElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__INSERTABLE; - } - - @Override - protected String getUpdatableElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__UPDATABLE; - } - - - // ********** SourceBaseJoinColumnAnnotation implementation ********** - - @Override - protected String getReferencedColumnNameElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME; - } - - - // ********** static methods ********** - - public static SourceMapKeyJoinColumn2_0Annotation createMapKeyJoinColumn(JavaResourceNode parent, Attribute attribute) { - return new SourceMapKeyJoinColumn2_0Annotation(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); - } - - static SourceMapKeyJoinColumn2_0Annotation createNestedMapKeyJoinColumn(JavaResourceNode parent, Attribute attribute, int index, DeclarationAnnotationAdapter joinColumnsAdapter) { - IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, joinColumnsAdapter, ANNOTATION_NAME); - IndexedAnnotationAdapter annotationAdapter = new ElementIndexedAnnotationAdapter(attribute, idaa); - return new SourceMapKeyJoinColumn2_0Annotation(parent, attribute, idaa, annotationAdapter); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumns2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumns2_0Annotation.java deleted file mode 100644 index c538288cb1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/SourceMapKeyJoinColumns2_0Annotation.java +++ /dev/null @@ -1,137 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; - -import java.util.Vector; -import org.eclipse.jdt.core.dom.Annotation; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; -import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.AnnotationContainerTools; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.NestableMapKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; -import org.eclipse.jpt.jpa.core.resource.java.NestableAnnotation; - -/** - * javax.persistence.MapKeyJoinColumns - */ -public final class SourceMapKeyJoinColumns2_0Annotation - extends SourceAnnotation - implements MapKeyJoinColumns2_0Annotation -{ - public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); - - private final Vector mapKeyJoinColumns = new Vector(); - - - public SourceMapKeyJoinColumns2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); - } - - public String getAnnotationName() { - return ANNOTATION_NAME; - } - - public void initialize(CompilationUnit astRoot) { - AnnotationContainerTools.initialize(this, astRoot); - } - - public void synchronizeWith(CompilationUnit astRoot) { - AnnotationContainerTools.synchronize(this, astRoot); - } - - @Override - public boolean isUnset() { - return super.isUnset() && - this.mapKeyJoinColumns.isEmpty(); - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.mapKeyJoinColumns); - } - - - // ********** AnnotationContainer implementation ********** - - public String getElementName() { - return JPA2_0.MAP_KEY_JOIN_COLUMNS__VALUE; - } - - public String getNestedAnnotationName() { - return MapKeyJoinColumn2_0Annotation.ANNOTATION_NAME; - } - - public Iterable getNestedAnnotations() { - return new LiveCloneIterable(this.mapKeyJoinColumns); - } - - public int getNestedAnnotationsSize() { - return this.mapKeyJoinColumns.size(); - } - - public void nestStandAloneAnnotation(NestableAnnotation standAloneAnnotation) { - this.nestStandAloneAnnotation(standAloneAnnotation, this.mapKeyJoinColumns.size()); - } - - private void nestStandAloneAnnotation(NestableAnnotation standAloneAnnotation, int index) { - standAloneAnnotation.convertToNested(this, this.daa, index); - } - - public void addNestedAnnotation(int index, NestableAnnotation annotation) { - this.mapKeyJoinColumns.add(index, (NestableMapKeyJoinColumnAnnotation) annotation); - } - - public void convertLastNestedAnnotationToStandAlone() { - this.mapKeyJoinColumns.remove(0).convertToStandAlone(); - } - - public NestableMapKeyJoinColumnAnnotation addNestedAnnotation() { - return this.addNestedAnnotation(this.mapKeyJoinColumns.size()); - } - - private NestableMapKeyJoinColumnAnnotation addNestedAnnotation(int index) { - NestableMapKeyJoinColumnAnnotation joinColumn = this.buildMapKeyJoinColumn(index); - this.mapKeyJoinColumns.add(index, joinColumn); - return joinColumn; - } - - public void syncAddNestedAnnotation(Annotation astAnnotation) { - int index = this.mapKeyJoinColumns.size(); - NestableMapKeyJoinColumnAnnotation joinColumn = this.addNestedAnnotation(index); - joinColumn.initialize((CompilationUnit) astAnnotation.getRoot()); - this.fireItemAdded(MAP_KEY_JOIN_COLUMNS_LIST, index, joinColumn); - } - - private NestableMapKeyJoinColumnAnnotation buildMapKeyJoinColumn(int index) { - // pass the Java resource persistent member as the nested annotation's parent - // since the nested annotation can be converted to stand-alone - return SourceMapKeyJoinColumn2_0Annotation.createNestedMapKeyJoinColumn(this.parent, this.annotatedElement, index, this.daa); - } - - public NestableMapKeyJoinColumnAnnotation moveNestedAnnotation(int targetIndex, int sourceIndex) { - return CollectionTools.move(this.mapKeyJoinColumns, targetIndex, sourceIndex).get(targetIndex); - } - - public NestableMapKeyJoinColumnAnnotation removeNestedAnnotation(int index) { - return this.mapKeyJoinColumns.remove(index); - } - - public void syncRemoveNestedAnnotations(int index) { - this.removeItemsFromList(index, this.mapKeyJoinColumns, MAP_KEY_JOIN_COLUMNS_LIST); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/StaticMetamodelAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/StaticMetamodelAnnotationDefinition.java index b88a0b18bc..78cd576c44 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/StaticMetamodelAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/StaticMetamodelAnnotationDefinition.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,20 +10,15 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary.BinaryStaticMetamodelAnnotation; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source.SourceStaticMetamodelAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.StaticMetamodelAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.metamodel.StaticMetamodel - *

- * This annotation definition is not really required; it's just here for a bit - * of consistency.... */ public final class StaticMetamodelAnnotationDefinition implements AnnotationDefinition @@ -46,7 +41,7 @@ public final class StaticMetamodelAnnotationDefinition } public StaticMetamodelAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceStaticMetamodelAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceStaticMetamodelAnnotation(parent, annotatedElement); } public StaticMetamodelAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -54,11 +49,10 @@ public final class StaticMetamodelAnnotationDefinition } public StaticMetamodelAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryStaticMetamodelAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryStaticMetamodelAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return StaticMetamodelAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAccess2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAccess2_0Annotation.java index ee01d96507..cf8d13cf81 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAccess2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAccess2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,12 +11,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.resource.java.AccessType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.Access @@ -28,7 +28,7 @@ public final class BinaryAccess2_0Annotation private AccessType value; - public BinaryAccess2_0Annotation(JavaResourcePersistentMember parent, IAnnotation jdtAnnotation) { + public BinaryAccess2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.value = this.buildValue(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverride2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverride2_0Annotation.java index eb213548d2..ea89f2b714 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverride2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverride2_0Annotation.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,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.internal.resource.java.NullJoinTableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAssociationOverrideAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryJoinTableAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.AssociationOverride2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; /** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverrides2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverrides2_0Annotation.java deleted file mode 100644 index e2877de83d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryAssociationOverrides2_0Annotation.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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.jpa2.resource.java.binary; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableAssociationOverrideAnnotation; - -/** - * javax.persistence.AssociationOverrides - */ -public class BinaryAssociationOverrides2_0Annotation - extends BinaryAssociationOverridesAnnotation -{ - - public BinaryAssociationOverrides2_0Annotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - } - - @Override - protected NestableAssociationOverrideAnnotation buildAssociationOverride(Object jdtAssociationOverride) { - return new BinaryAssociationOverride2_0Annotation(this, (IAnnotation) jdtAssociationOverride); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCacheable2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCacheable2_0Annotation.java index 3702c2ec5f..aa1a5d0219 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCacheable2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCacheable2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Cacheable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Cacheable @@ -27,7 +27,7 @@ public final class BinaryCacheable2_0Annotation private Boolean value; - public BinaryCacheable2_0Annotation(JavaResourcePersistentType parent, IAnnotation jdtAnnotation) { + public BinaryCacheable2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.value = this.buildValue(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCollectionTable2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCollectionTable2_0Annotation.java index 324ac63515..00024b61cb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCollectionTable2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryCollectionTable2_0Annotation.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,16 +9,15 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; -import java.util.ListIterator; import java.util.Vector; - import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryBaseTableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryJoinColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.CollectionTable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; /** @@ -31,7 +30,7 @@ public final class BinaryCollectionTable2_0Annotation private final Vector joinColumns; - public BinaryCollectionTable2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryCollectionTable2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.joinColumns = this.buildJoinColumns(); } @@ -73,11 +72,11 @@ public final class BinaryCollectionTable2_0Annotation // ********** CollectionTable2_0Annotation implementation ********** // ***** join columns - public ListIterator joinColumns() { - return new CloneListIterator(this.joinColumns); + public ListIterable getJoinColumns() { + return new LiveCloneListIterable(this.joinColumns); } - public int joinColumnsSize() { + public int getJoinColumnsSize() { return this.joinColumns.size(); } @@ -85,10 +84,6 @@ public final class BinaryCollectionTable2_0Annotation return this.joinColumns.get(index); } - public int indexOfJoinColumn(JoinColumnAnnotation joinColumn) { - return this.joinColumns.indexOf(joinColumn); - } - public JoinColumnAnnotation addJoinColumn(int index) { throw new UnsupportedOperationException(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryElementCollection2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryElementCollection2_0Annotation.java index b4774b3c3c..256fa2a562 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryElementCollection2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryElementCollection2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,12 +11,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.ElementCollection2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.resource.java.FetchType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * org.eclipse.persistence.annotations.Transformation @@ -29,7 +29,7 @@ public class BinaryElementCollection2_0Annotation private FetchType fetch; - public BinaryElementCollection2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryElementCollection2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.targetClass = this.buildTargetClass(); this.fetch = this.buildFetch(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryGeneratedAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryGeneratedAnnotation.java index 798b809e9e..a8427a3af8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryGeneratedAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryGeneratedAnnotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,14 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; -import java.util.ListIterator; import java.util.Vector; - import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable; import org.eclipse.jpt.jpa.core.jpa2.resource.java.GeneratedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.annotation.Generated @@ -30,7 +29,7 @@ public final class BinaryGeneratedAnnotation private String comments; - public BinaryGeneratedAnnotation(JavaResourcePersistentType parent, IAnnotation jdtAnnotation) { + public BinaryGeneratedAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.values = this.buildValues(); this.date = this.buildDate(); @@ -58,11 +57,11 @@ public final class BinaryGeneratedAnnotation // ********** GeneratedAnnotation implementation ********** // ***** values - public ListIterator values() { - return new CloneListIterator(this.values); + public ListIterable getValues() { + return new LiveCloneListIterable(this.values); } - public int valuesSize() { + public int getValuesSize() { return this.values.size(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyClass2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyClass2_0Annotation.java index e20a405b5c..591ebbb90c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyClass2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyClass2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyClass @@ -27,7 +27,7 @@ public final class BinaryMapKeyClass2_0Annotation private String value; - public BinaryMapKeyClass2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryMapKeyClass2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.value = this.buildValue(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyColumn2_0Annotation.java index f2a2415614..751e2a04b2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyColumn2_0Annotation.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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryCompleteColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyColumn @@ -23,7 +23,7 @@ public final class BinaryMapKeyColumn2_0Annotation implements MapKeyColumn2_0Annotation { - public BinaryMapKeyColumn2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryMapKeyColumn2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyEnumerated2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyEnumerated2_0Annotation.java index 39f3229e74..5c838e012b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyEnumerated2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyEnumerated2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryBaseEnumeratedAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyEnumerated @@ -23,7 +23,7 @@ public final class BinaryMapKeyEnumerated2_0Annotation implements MapKeyEnumerated2_0Annotation { - public BinaryMapKeyEnumerated2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryMapKeyEnumerated2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumn2_0Annotation.java index c4d25d3ed2..9a088faadc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumn2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,17 +10,17 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryBaseJoinColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.NestableMapKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; /** * javax.persistence.MapKeyJoinColumn */ public final class BinaryMapKeyJoinColumn2_0Annotation extends BinaryBaseJoinColumnAnnotation - implements NestableMapKeyJoinColumnAnnotation + implements MapKeyJoinColumn2_0Annotation { public BinaryMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumns2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumns2_0Annotation.java deleted file mode 100644 index 2622efab7c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyJoinColumns2_0Annotation.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; - -import java.util.Vector; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryContainerAnnotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumns2_0Annotation; -import org.eclipse.jpt.jpa.core.jpa2.resource.java.NestableMapKeyJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; - -/** - * javax.persistence.MapKeyJoinColumns - */ -public final class BinaryMapKeyJoinColumns2_0Annotation - extends BinaryContainerAnnotation - implements MapKeyJoinColumns2_0Annotation -{ - private final Vector mapKeyJoinColumns; - - - public BinaryMapKeyJoinColumns2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - this.mapKeyJoinColumns = this.buildMapKeyJoinColumns(); - } - - public String getAnnotationName() { - return ANNOTATION_NAME; - } - - public Iterable getNestedAnnotations() { - return new LiveCloneIterable(this.mapKeyJoinColumns); - } - - public int getNestedAnnotationsSize() { - return this.mapKeyJoinColumns.size(); - } - - private Vector buildMapKeyJoinColumns() { - Object[] jdtMapKeyJoinColumns = this.getJdtMemberValues(JPA2_0.MAP_KEY_JOIN_COLUMNS__VALUE); - Vector result = new Vector(jdtMapKeyJoinColumns.length); - for (Object jdtMapKeyJoinColumn : jdtMapKeyJoinColumns) { - result.add(new BinaryMapKeyJoinColumn2_0Annotation(this, (IAnnotation) jdtMapKeyJoinColumn)); - } - return result; - } - - @Override - public void update() { - super.update(); - this.updateMapKeyJoinColumns(); - } - - // TODO - private void updateMapKeyJoinColumns() { - throw new UnsupportedOperationException(); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyTemporal2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyTemporal2_0Annotation.java index 1c5b97b821..72ff920a1c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyTemporal2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapKeyTemporal2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryBaseTemporalAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyTemporal @@ -23,7 +23,7 @@ public final class BinaryMapKeyTemporal2_0Annotation implements MapKeyTemporal2_0Annotation { - public BinaryMapKeyTemporal2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryMapKeyTemporal2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapsId2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapsId2_0Annotation.java index c7d7e03c05..c3b700c917 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapsId2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryMapsId2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. + * 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 @@ -12,11 +12,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapsId2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapsId @@ -28,7 +28,7 @@ public class BinaryMapsId2_0Annotation private String value; - public BinaryMapsId2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryMapsId2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.value = this.buildValue(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQueries2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQueries2_0Annotation.java deleted file mode 100644 index b6270a6eb5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQueries2_0Annotation.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009 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.jpa2.resource.java.binary; - -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedQueriesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableNamedQueryAnnotation; - -/** - * javax.persistence.NamedQueries - */ -public final class BinaryNamedQueries2_0Annotation - extends BinaryNamedQueriesAnnotation -{ - public BinaryNamedQueries2_0Annotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - } - - @Override - protected NestableNamedQueryAnnotation buildNamedQuery(Object jdtQuery) { - return new BinaryNamedQuery2_0Annotation(this, (IAnnotation) jdtQuery); - } - -} \ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQuery2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQuery2_0Annotation.java index 83e2f3e112..baf9d643a6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQuery2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryNamedQuery2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009 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,12 +11,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedQueryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.LockModeType_2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.NamedQuery2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * BinaryNamedQuery2_0Annotation diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryOrderColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryOrderColumn2_0Annotation.java index 446297a6a6..a7ecfee5bd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryOrderColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryOrderColumn2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; import org.eclipse.jpt.jpa.core.resource.java.JPA; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.OrderColumn @@ -29,7 +29,7 @@ public class BinaryOrderColumn2_0Annotation private Boolean updatable; - public BinaryOrderColumn2_0Annotation(JavaResourcePersistentAttribute parent, IAnnotation jdtAnnotation) { + public BinaryOrderColumn2_0Annotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.nullable = this.buildNullable(); this.insertable = this.buildInsertable(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinarySequenceGenerator2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinarySequenceGenerator2_0Annotation.java index b9b94ad58d..9ccb8ee0a9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinarySequenceGenerator2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinarySequenceGenerator2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009 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,11 +11,11 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinarySequenceGeneratorAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.SequenceGenerator2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * BinarySequenceGenerator2_0Annotation diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryStaticMetamodelAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryStaticMetamodelAnnotation.java index 3f30009013..417f94a781 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryStaticMetamodelAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/binary/BinaryStaticMetamodelAnnotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,10 +10,10 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.binary; import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.StaticMetamodelAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.metamodel.StaticMetamodel @@ -25,7 +25,7 @@ public final class BinaryStaticMetamodelAnnotation private String value; - public BinaryStaticMetamodelAnnotation(JavaResourcePersistentType parent, IAnnotation jdtAnnotation) { + public BinaryStaticMetamodelAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); this.value = this.buildValue(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAccess2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAccess2_0Annotation.java index 4b8790b08b..15375658fc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAccess2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAccess2_0Annotation.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,25 +10,25 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.EnumDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Access2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.resource.java.AccessType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.Access */ public final class SourceAccess2_0Annotation - extends SourceAnnotation + extends SourceAnnotation implements Access2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -38,9 +38,9 @@ public final class SourceAccess2_0Annotation private AccessType value; - public SourceAccess2_0Annotation(JavaResourcePersistentMember parent, Member member) { - super(parent, member, DECLARATION_ANNOTATION_ADAPTER); - this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(member, VALUE_ADAPTER); + public SourceAccess2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(element, VALUE_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java index 9ea428b84a..cf1e98cdcf 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverride2_0Annotation.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,24 +9,23 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; -import java.util.HashMap; -import java.util.Map; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ElementIndexedAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.NestedDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.NullAssociationOverrideJoinTableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAssociationOverrideAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceJoinTableAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.AssociationOverride2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.resource.java.JPA; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; /** @@ -40,9 +39,53 @@ public final class SourceAssociationOverride2_0Annotation private JoinTableAnnotation joinTable; private final JoinTableAnnotation nullJoinTable; - - public SourceAssociationOverride2_0Annotation(JavaResourceNode parent, Member member, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { - super(parent, member, daa, annotationAdapter); + + public static SourceAssociationOverride2_0Annotation buildSourceAssociationOverrideAnnotation( + JavaResourceNode parent, + AnnotatedElement element) { + + return new SourceAssociationOverride2_0Annotation(parent, element, DECLARATION_ANNOTATION_ADAPTER); + } + + public static SourceAssociationOverride2_0Annotation buildSourceAssociationOverrideAnnotation( + JavaResourceAnnotatedElement parent, + AnnotatedElement annotatedElement, + int index) { + IndexedDeclarationAnnotationAdapter idaa = buildAssociationOverrideDeclarationAnnotationAdapter(index); + IndexedAnnotationAdapter iaa = buildAssociationOverrideAnnotationAdapter(annotatedElement, idaa); + return new SourceAssociationOverride2_0Annotation( + parent, + annotatedElement, + idaa, + iaa); + } + + public static SourceAssociationOverride2_0Annotation buildNestedSourceAssociationOverrideAnnotation( + JavaResourceNode parent, + AnnotatedElement element, + IndexedDeclarationAnnotationAdapter idaa) { + + return new SourceAssociationOverride2_0Annotation(parent, element, idaa); + } + + private SourceAssociationOverride2_0Annotation( + JavaResourceNode parent, + AnnotatedElement element, + DeclarationAnnotationAdapter daa) { + + this(parent, element, daa, new ElementAnnotationAdapter(element, daa)); + } + + private SourceAssociationOverride2_0Annotation( + JavaResourceNode parent, + AnnotatedElement element, + IndexedDeclarationAnnotationAdapter idaa) { + + this(parent, element, idaa, new ElementIndexedAnnotationAdapter(element, idaa)); + } + + private SourceAssociationOverride2_0Annotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { + super(parent, element, daa, annotationAdapter); this.joinTableAdapter = this.buildJoinTableAdapter(); this.nullJoinTable = this.buildNullJoinTable(); } @@ -129,52 +172,14 @@ public final class SourceAssociationOverride2_0Annotation (this.joinTable == null); } - @Override - protected void rebuildAdapters() { - super.rebuildAdapters(); - this.joinTableAdapter = this.buildJoinTableAdapter(); - } - - @Override - public void storeOn(Map map) { - super.storeOn(map); - if (this.joinTable != null) { - Map joinTableState = new HashMap(); - this.joinTable.storeOn(joinTableState); - map.put(JOIN_TABLE_PROPERTY, joinTableState); - this.joinTable = null; - } - } - - @Override - public void restoreFrom(Map map) { - super.restoreFrom(map); - @SuppressWarnings("unchecked") - Map joinTableState = (Map) map.get(JOIN_TABLE_PROPERTY); - if (joinTableState != null) { - this.addJoinTable().restoreFrom(joinTableState); - } - } - // ********** static methods ********** - public static SourceAssociationOverride2_0Annotation buildAssociationOverride(JavaResourceNode parent, Member member) { - return new SourceAssociationOverride2_0Annotation(parent, member, DECLARATION_ANNOTATION_ADAPTER, new ElementAnnotationAdapter(member, DECLARATION_ANNOTATION_ADAPTER)); - } - - static JoinTableAnnotation buildJoinTableAnnotation(JavaResourceNode parent, Member member, DeclarationAnnotationAdapter associationOverrideAnnotationAdapter) { - return new SourceJoinTableAnnotation(parent, member, buildJoinTableAnnotationAdapter(associationOverrideAnnotationAdapter)); + static JoinTableAnnotation buildJoinTableAnnotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter associationOverrideAnnotationAdapter) { + return new SourceJoinTableAnnotation(parent, element, buildJoinTableAnnotationAdapter(associationOverrideAnnotationAdapter)); } static DeclarationAnnotationAdapter buildJoinTableAnnotationAdapter(DeclarationAnnotationAdapter associationOverrideAnnotationAdapter) { return new NestedDeclarationAnnotationAdapter(associationOverrideAnnotationAdapter, JPA2_0.ASSOCIATION_OVERRIDE__JOIN_TABLE, JPA.JOIN_TABLE); } - - - static SourceAssociationOverrideAnnotation buildNestedAssociationOverride(JavaResourceNode parent, Member member, int index, DeclarationAnnotationAdapter attributeOverridesAdapter) { - IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, attributeOverridesAdapter, ANNOTATION_NAME); - IndexedAnnotationAdapter annotationAdapter = new ElementIndexedAnnotationAdapter(member, idaa); - return new SourceAssociationOverride2_0Annotation(parent, member, idaa, annotationAdapter); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverrides2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverrides2_0Annotation.java deleted file mode 100644 index be45b19954..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceAssociationOverrides2_0Annotation.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; - -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableAssociationOverrideAnnotation; - -/** - * javax.persistence.AssociationOverrides - */ -public final class SourceAssociationOverrides2_0Annotation - extends SourceAssociationOverridesAnnotation -{ - public SourceAssociationOverrides2_0Annotation(JavaResourceNode parent, Member member) { - super(parent, member); - } - - @Override - protected NestableAssociationOverrideAnnotation buildAssociationOverride(int index) { - // pass the Java resource persistent member as the nested annotation's parent - // since the nested annotation can be converted to stand-alone - return SourceAssociationOverride2_0Annotation.buildNestedAssociationOverride(this.parent, this.annotatedElement, index, this.daa); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCacheable2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCacheable2_0Annotation.java index f89f48edd4..50ebc6ee75 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCacheable2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCacheable2_0Annotation.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,26 +10,25 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.BooleanExpressionConverter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.Cacheable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Cacheable */ public final class SourceCacheable2_0Annotation - extends SourceAnnotation + extends SourceAnnotation implements Cacheable2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -39,9 +38,9 @@ public final class SourceCacheable2_0Annotation private Boolean value; - public SourceCacheable2_0Annotation(JavaResourcePersistentType parent, Type type) { - super(parent, type, DECLARATION_ANNOTATION_ADAPTER); - this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(type, VALUE_ADAPTER); + public SourceCacheable2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(element, VALUE_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCollectionTable2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCollectionTable2_0Annotation.java index 8243f24a36..713d45078d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCollectionTable2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceCollectionTable2_0Annotation.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,34 +9,22 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; -import java.util.HashMap; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; -import java.util.Vector; -import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.NestedIndexedDeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneIterable; -import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.AnnotationContainerTools; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBaseTableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceJoinColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.CollectionTable2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationContainer; import org.eclipse.jpt.jpa.core.resource.java.JPA; -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.NestableJoinColumnAnnotation; /** * javax.persistence.CollectionTable @@ -54,12 +42,11 @@ public final class SourceCollectionTable2_0Annotation private static final DeclarationAnnotationElementAdapter CATALOG_ADAPTER = ConversionDeclarationAnnotationElementAdapter.forStrings(DECLARATION_ANNOTATION_ADAPTER, JPA2_0.COLLECTION_TABLE__CATALOG); - private final Vector joinColumns = new Vector(); private final JoinColumnsAnnotationContainer joinColumnsContainer = new JoinColumnsAnnotationContainer(); - public SourceCollectionTable2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); + public SourceCollectionTable2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); } public String getAnnotationName() { @@ -69,13 +56,13 @@ public final class SourceCollectionTable2_0Annotation @Override public void initialize(CompilationUnit astRoot) { super.initialize(astRoot); - AnnotationContainerTools.initialize(this.joinColumnsContainer, astRoot); + this.joinColumnsContainer.initialize(this.getAstAnnotation(astRoot)); } @Override public void synchronizeWith(CompilationUnit astRoot) { super.synchronizeWith(astRoot); - AnnotationContainerTools.synchronize(this.joinColumnsContainer, astRoot); + this.joinColumnsContainer.synchronize(this.getAstAnnotation(astRoot)); } @@ -103,170 +90,72 @@ public final class SourceCollectionTable2_0Annotation // ********** CollectionTable2_0Annotation implementation ********** - // ***** join columns - public ListIterator joinColumns() { - return new CloneListIterator(this.joinColumns); - } + // **************** join columns ************************************************* - Iterable getNestableJoinColumns() { - return new LiveCloneIterable(this.joinColumns); + public ListIterable getJoinColumns() { + return this.joinColumnsContainer.getNestedAnnotations(); } - public int joinColumnsSize() { - return this.joinColumns.size(); + public int getJoinColumnsSize() { + return this.joinColumnsContainer.getNestedAnnotationsSize(); } - public NestableJoinColumnAnnotation joinColumnAt(int index) { - return this.joinColumns.get(index); + public JoinColumnAnnotation joinColumnAt(int index) { + return this.joinColumnsContainer.nestedAnnotationAt(index); } - public int indexOfJoinColumn(JoinColumnAnnotation joinColumn) { - return this.joinColumns.indexOf(joinColumn); + public JoinColumnAnnotation addJoinColumn(int index) { + return this.joinColumnsContainer.addNestedAnnotation(index); } - - private NestableJoinColumnAnnotation addJoinColumn() { - return this.addJoinColumn(this.joinColumns.size()); + + private JoinColumnAnnotation buildJoinColumn(int index) { + return SourceJoinColumnAnnotation.buildNestedSourceJoinColumnAnnotation( + this, this.annotatedElement, buildJoinColumnIndexedDeclarationAnnotationAdapter(index)); } - - public NestableJoinColumnAnnotation addJoinColumn(int index) { - return (NestableJoinColumnAnnotation) AnnotationContainerTools.addNestedAnnotation(index, this.joinColumnsContainer); - } - - NestableJoinColumnAnnotation addJoinColumn_() { - return this.addJoinColumn_(this.joinColumns.size()); - } - - private NestableJoinColumnAnnotation addJoinColumn_(int index) { - NestableJoinColumnAnnotation joinColumn = this.buildJoinColumn(index); - this.joinColumns.add(index, joinColumn); - return joinColumn; - } - - void syncAddJoinColumn(Annotation astAnnotation) { - int index = this.joinColumns.size(); - NestableJoinColumnAnnotation joinColumn = this.addJoinColumn_(index); - joinColumn.initialize((CompilationUnit) astAnnotation.getRoot()); - this.fireItemAdded(JOIN_COLUMNS_LIST, index, joinColumn); - } - - private NestableJoinColumnAnnotation buildJoinColumn(int index) { - return new SourceJoinColumnAnnotation(this, this.annotatedElement, buildJoinColumnAnnotationAdapter(index)); - } - - private IndexedDeclarationAnnotationAdapter buildJoinColumnAnnotationAdapter(int index) { - return new NestedIndexedDeclarationAnnotationAdapter(this.daa, JPA.JOIN_TABLE__JOIN_COLUMNS, index, JPA.JOIN_COLUMN); - } - - void joinColumnAdded(int index, NestableJoinColumnAnnotation joinColumn) { - this.fireItemAdded(JOIN_COLUMNS_LIST, index, joinColumn); + + private IndexedDeclarationAnnotationAdapter buildJoinColumnIndexedDeclarationAnnotationAdapter(int index) { + return new NestedIndexedDeclarationAnnotationAdapter( + this.daa, JPA2_0.COLLECTION_TABLE__JOIN_COLUMNS, index, JPA.JOIN_COLUMN); } public void moveJoinColumn(int targetIndex, int sourceIndex) { - AnnotationContainerTools.moveNestedAnnotation(targetIndex, sourceIndex, this.joinColumnsContainer); - } - - NestableJoinColumnAnnotation moveJoinColumn_(int targetIndex, int sourceIndex) { - return CollectionTools.move(this.joinColumns, targetIndex, sourceIndex).get(targetIndex); + this.joinColumnsContainer.moveNestedAnnotation(targetIndex, sourceIndex); } public void removeJoinColumn(int index) { - AnnotationContainerTools.removeNestedAnnotation(index, this.joinColumnsContainer); - } - - NestableJoinColumnAnnotation removeJoinColumn_(int index) { - return this.joinColumns.remove(index); - } - - void syncRemoveJoinColumns(int index) { - this.removeItemsFromList(index, this.joinColumns, JOIN_COLUMNS_LIST); - } - - - // ********** misc ********** - - @Override - public boolean isUnset() { - return super.isUnset() && - this.joinColumns.isEmpty(); - } - - @Override - public void storeOn(Map map) { - super.storeOn(map); - - List> joinColumnsState = this.buildStateList(this.joinColumns.size()); - for (NestableJoinColumnAnnotation joinColumn : this.getNestableJoinColumns()) { - Map joinColumnState = new HashMap(); - joinColumn.storeOn(joinColumnState); - joinColumnsState.add(joinColumnState); - } - map.put(JOIN_COLUMNS_LIST, joinColumnsState); - this.joinColumns.clear(); + this.joinColumnsContainer.removeNestedAnnotation(index); } - - @Override - public void restoreFrom(Map map) { - super.restoreFrom(map); - - @SuppressWarnings("unchecked") - List> joinColumnsState = (List>) map.get(JOIN_COLUMNS_LIST); - for (Map joinColumnState : joinColumnsState) { - this.addJoinColumn().restoreFrom(joinColumnState); - } - } - - - // ********** join column container ********** - + /** * adapt the AnnotationContainer interface to the collection table's join columns */ - class JoinColumnsAnnotationContainer - implements AnnotationContainer + class JoinColumnsAnnotationContainer + extends AnnotationContainer { - public org.eclipse.jdt.core.dom.Annotation getAstAnnotation(CompilationUnit astRoot) { - return SourceCollectionTable2_0Annotation.this.getAstAnnotation(astRoot); + @Override + protected String getAnnotationsPropertyName() { + return JOIN_COLUMNS_LIST; } - - public String getElementName() { + @Override + protected String getElementName() { return JPA2_0.COLLECTION_TABLE__JOIN_COLUMNS; } - - public String getNestedAnnotationName() { - return JoinColumnAnnotation.ANNOTATION_NAME; - } - - public Iterable getNestedAnnotations() { - return SourceCollectionTable2_0Annotation.this.getNestableJoinColumns(); - } - - public int getNestedAnnotationsSize() { - return SourceCollectionTable2_0Annotation.this.joinColumnsSize(); - } - - public NestableJoinColumnAnnotation addNestedAnnotation() { - return SourceCollectionTable2_0Annotation.this.addJoinColumn_(); - } - - public void syncAddNestedAnnotation(Annotation astAnnotation) { - SourceCollectionTable2_0Annotation.this.syncAddJoinColumn(astAnnotation); + @Override + protected String getNestedAnnotationName() { + return JPA.JOIN_COLUMN; } - - public NestableJoinColumnAnnotation moveNestedAnnotation(int targetIndex, int sourceIndex) { - return SourceCollectionTable2_0Annotation.this.moveJoinColumn_(targetIndex, sourceIndex); + @Override + protected JoinColumnAnnotation buildNestedAnnotation(int index) { + return SourceCollectionTable2_0Annotation.this.buildJoinColumn(index); } + } - public NestableJoinColumnAnnotation removeNestedAnnotation(int index) { - return SourceCollectionTable2_0Annotation.this.removeJoinColumn_(index); - } - public void syncRemoveNestedAnnotations(int index) { - SourceCollectionTable2_0Annotation.this.syncRemoveJoinColumns(index); - } + // ********** misc ********** - @Override - public String toString() { - return StringTools.buildToStringFor(this); - } + @Override + public boolean isUnset() { + return super.isUnset() && + this.joinColumnsContainer.isEmpty(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceElementCollection2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceElementCollection2_0Annotation.java index 3910e85f42..4cd1d19e03 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceElementCollection2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceElementCollection2_0Annotation.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,29 +10,29 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.EnumDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleTypeStringExpressionConverter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.ExpressionConverter; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.ElementCollection2_0Annotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.resource.java.FetchType; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * org.eclipse.persistence.annotations.Transformation */ public final class SourceElementCollection2_0Annotation - extends SourceAnnotation + extends SourceAnnotation implements ElementCollection2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -53,10 +53,10 @@ public final class SourceElementCollection2_0Annotation private FetchType fetch; - public SourceElementCollection2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); - this.targetClassAdapter = new AnnotatedElementAnnotationElementAdapter(attribute, TARGET_CLASS_ADAPTER); - this.fetchAdapter = new AnnotatedElementAnnotationElementAdapter(attribute, FETCH_ADAPTER); + public SourceElementCollection2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.targetClassAdapter = new AnnotatedElementAnnotationElementAdapter(element, TARGET_CLASS_ADAPTER); + this.fetchAdapter = new AnnotatedElementAnnotationElementAdapter(element, FETCH_ADAPTER); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceGeneratedAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceGeneratedAnnotation.java index 4e68a01b21..af81759ef7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceGeneratedAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceGeneratedAnnotation.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,31 +10,29 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import java.util.Arrays; -import java.util.ListIterator; import java.util.Vector; - import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotationStringArrayExpressionConverter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.ExpressionConverter; -import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.iterators.CloneListIterator; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable; import org.eclipse.jpt.jpa.core.jpa2.resource.java.GeneratedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.annotation.Generated */ public final class SourceGeneratedAnnotation - extends SourceAnnotation + extends SourceAnnotation implements GeneratedAnnotation { public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -52,8 +50,8 @@ public final class SourceGeneratedAnnotation private String comments; - public SourceGeneratedAnnotation(JavaResourcePersistentType parent, Type type) { - super(parent, type, DECLARATION_ANNOTATION_ADAPTER); + public SourceGeneratedAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); this.valueAdapter = this.buildAnnotationElementAdapter(VALUE_ADAPTER); this.dateAdapter = this.buildAdapter(DATE_ADAPTER); this.commentsAdapter = this.buildAdapter(COMMENTS_ADAPTER); @@ -100,11 +98,11 @@ public final class SourceGeneratedAnnotation // ********** GeneratedAnnotation implementation ********** // ***** values - public ListIterator values() { - return new CloneListIterator(this.values); + public ListIterable getValues() { + return new LiveCloneListIterable(this.values); } - public int valuesSize() { + public int getValuesSize() { return this.values.size(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyClass2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyClass2_0Annotation.java index ca2f005792..42f7ea3fae 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyClass2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyClass2_0Annotation.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,26 +10,26 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleTypeStringExpressionConverter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyClass2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyClass */ public final class SourceMapKeyClass2_0Annotation - extends SourceAnnotation + extends SourceAnnotation implements MapKeyClass2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -46,9 +46,9 @@ public final class SourceMapKeyClass2_0Annotation private boolean fqClassNameStale = true; - public SourceMapKeyClass2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); - this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(attribute, VALUE_ADAPTER); + public SourceMapKeyClass2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(element, VALUE_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyColumn2_0Annotation.java index e0ee92ad8f..be914944d3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyColumn2_0Annotation.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,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceCompleteColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyColumn @@ -27,8 +27,8 @@ public final class SourceMapKeyColumn2_0Annotation private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(MapKeyColumn2_0Annotation.ANNOTATION_NAME); - public SourceMapKeyColumn2_0Annotation(JavaResourcePersistentAttribute parent, Member member) { - super(parent, member, DECLARATION_ANNOTATION_ADAPTER); + public SourceMapKeyColumn2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyEnumerated2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyEnumerated2_0Annotation.java index 6a6adffa06..76b85cef77 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyEnumerated2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyEnumerated2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBaseEnumeratedAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyEnumerated2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyEnumerated @@ -26,8 +26,8 @@ public final class SourceMapKeyEnumerated2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(MapKeyEnumerated2_0Annotation.ANNOTATION_NAME); - public SourceMapKeyEnumerated2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); + public SourceMapKeyEnumerated2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyJoinColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyJoinColumn2_0Annotation.java new file mode 100644 index 0000000000..576ad56f5f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyJoinColumn2_0Annotation.java @@ -0,0 +1,145 @@ +/******************************************************************************* + * 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. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; + +import org.eclipse.jpt.common.core.internal.utility.jdt.CombinationIndexedDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; +import org.eclipse.jpt.common.core.internal.utility.jdt.ElementIndexedAnnotationAdapter; +import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; +import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBaseJoinColumnAnnotation; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; +import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyJoinColumn2_0Annotation; + +/** + * javax.persistence.MapKeyJoinColumn + */ +public final class SourceMapKeyJoinColumn2_0Annotation + extends SourceBaseJoinColumnAnnotation + implements MapKeyJoinColumn2_0Annotation +{ + private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); + private static final DeclarationAnnotationAdapter CONTAINER_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA2_0.MAP_KEY_JOIN_COLUMNS); + + + public static SourceMapKeyJoinColumn2_0Annotation buildSourceMapKeyJoinColumnAnnotation( + JavaResourceNode parent, + AnnotatedElement element) { + + return new SourceMapKeyJoinColumn2_0Annotation(parent, element, DECLARATION_ANNOTATION_ADAPTER); + } + + public static SourceMapKeyJoinColumn2_0Annotation buildSourceMapKeyJoinColumnAnnotation( + JavaResourceAnnotatedElement parent, + AnnotatedElement annotatedElement, + int index) { + IndexedDeclarationAnnotationAdapter idaa = buildMapKeyJoinColumnDeclarationAnnotationAdapter(index); + IndexedAnnotationAdapter iaa = buildMapKeyJoinColumnAnnotationAdapter(annotatedElement, idaa); + return new SourceMapKeyJoinColumn2_0Annotation( + parent, + annotatedElement, + idaa, + iaa); + } + + public static SourceMapKeyJoinColumn2_0Annotation buildNestedSourceMapKeyJoinColumnAnnotation( + JavaResourceNode parent, + AnnotatedElement element, + IndexedDeclarationAnnotationAdapter idaa) { + + return new SourceMapKeyJoinColumn2_0Annotation(parent, element, idaa); + } + + private SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa) { + this(parent, element, daa, new ElementAnnotationAdapter(element, daa)); + } + + private SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, AnnotatedElement element, IndexedDeclarationAnnotationAdapter idaa) { + this(parent, element, idaa, new ElementIndexedAnnotationAdapter(element, idaa)); + } + + private SourceMapKeyJoinColumn2_0Annotation(JavaResourceNode parent, AnnotatedElement element, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { + super(parent, element, daa, annotationAdapter); + } + + public String getAnnotationName() { + return ANNOTATION_NAME; + } + + // ********** SourceNamedColumnAnnotation implementation ********** + + @Override + protected String getNameElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__NAME; + } + + @Override + protected String getColumnDefinitionElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__COLUMN_DEFINITION; + } + + + // ********** SourceBaseColumnAnnotation implementation ********** + + @Override + protected String getTableElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__TABLE; + } + + @Override + protected String getUniqueElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__UNIQUE; + } + + @Override + protected String getNullableElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__NULLABLE; + } + + @Override + protected String getInsertableElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__INSERTABLE; + } + + @Override + protected String getUpdatableElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__UPDATABLE; + } + + + // ********** SourceBaseJoinColumnAnnotation implementation ********** + + @Override + protected String getReferencedColumnNameElementName() { + return JPA2_0.MAP_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME; + } + + // ********** static methods ********** + + private static IndexedAnnotationAdapter buildMapKeyJoinColumnAnnotationAdapter(AnnotatedElement annotatedElement, IndexedDeclarationAnnotationAdapter idaa) { + return new ElementIndexedAnnotationAdapter(annotatedElement, idaa); + } + + private static IndexedDeclarationAnnotationAdapter buildMapKeyJoinColumnDeclarationAnnotationAdapter(int index) { + IndexedDeclarationAnnotationAdapter idaa = + new CombinationIndexedDeclarationAnnotationAdapter( + DECLARATION_ANNOTATION_ADAPTER, + CONTAINER_DECLARATION_ANNOTATION_ADAPTER, + index, + ANNOTATION_NAME); + return idaa; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyTemporal2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyTemporal2_0Annotation.java index 6f119b77fb..b41f402c7a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyTemporal2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapKeyTemporal2_0Annotation.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 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,12 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBaseTemporalAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapKeyTemporal2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapKeyTemporal @@ -27,8 +27,8 @@ public final class SourceMapKeyTemporal2_0Annotation private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(MapKeyTemporal2_0Annotation.ANNOTATION_NAME); - public SourceMapKeyTemporal2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); + public SourceMapKeyTemporal2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapsId2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapsId2_0Annotation.java index 866f42d481..a586b20fc0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapsId2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceMapsId2_0Annotation.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,24 +10,24 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.MapsId2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.MapsId */ public final class SourceMapsId2_0Annotation - extends SourceAnnotation + extends SourceAnnotation implements MapsId2_0Annotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -37,9 +37,9 @@ public final class SourceMapsId2_0Annotation private String value; - public SourceMapsId2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); - this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(attribute, VALUE_ADAPTER); + public SourceMapsId2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(element, VALUE_ADAPTER); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQueries2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQueries2_0Annotation.java deleted file mode 100644 index 71a614c996..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQueries2_0Annotation.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 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 -*******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; - -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedQueriesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.NestableNamedQueryAnnotation; - -/** - * javax.persistence.NamedQueries - */ -public final class SourceNamedQueries2_0Annotation - extends SourceNamedQueriesAnnotation -{ - public SourceNamedQueries2_0Annotation(JavaResourceNode parent, Type type) { - super(parent, type); - } - - @Override - protected NestableNamedQueryAnnotation buildNamedQuery(int index) { - // pass the Java resource persistent member as the nested annotation's parent - // since the nested annotation can be converted to stand-alone - return SourceNamedQuery2_0Annotation.createNestedNamedQuery(this.parent, this.annotatedElement, index, this.daa); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQuery2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQuery2_0Annotation.java index 780c127a30..07c7c1af35 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQuery2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceNamedQuery2_0Annotation.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,25 +9,20 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; -import java.util.Map; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; -import org.eclipse.jpt.common.core.internal.utility.jdt.ElementAnnotationAdapter; -import org.eclipse.jpt.common.core.internal.utility.jdt.ElementIndexedAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.EnumDeclarationAnnotationElementAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.common.core.utility.jdt.AnnotationAdapter; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.IndexedDeclarationAnnotationAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedQueryAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.LockModeType_2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.NamedQuery2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * javax.persistence.NamedQuery @@ -40,17 +35,26 @@ public final class SourceNamedQuery2_0Annotation private AnnotationElementAdapter lockModeAdapter; private LockModeType_2_0 lockMode; - - public SourceNamedQuery2_0Annotation(JavaResourceNode parent, Type type, DeclarationAnnotationAdapter daa, AnnotationAdapter annotationAdapter) { - super(parent, type, daa, annotationAdapter); + public static SourceNamedQuery2_0Annotation buildSourceNamedQueryAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + IndexedDeclarationAnnotationAdapter idaa = buildNamedQueryDeclarationAnnotationAdapter(index); + IndexedAnnotationAdapter iaa = buildNamedQueryAnnotationAdapter(annotatedElement, idaa); + return new SourceNamedQuery2_0Annotation( + parent, + annotatedElement, + idaa, + iaa); + } + + private SourceNamedQuery2_0Annotation( + JavaResourceAnnotatedElement parent, + AnnotatedElement annotatedElement, + IndexedDeclarationAnnotationAdapter daa, + IndexedAnnotationAdapter annotationAdapter) { + super(parent, annotatedElement, daa, annotationAdapter); this.lockModeDeclarationAdapter = this.buildLockModeDeclarationAdapter(); this.lockModeAdapter = this.buildLockModeAdapter(); } - public SourceNamedQuery2_0Annotation(JavaResourceNode parent, Type type) { - this(parent, type, DECLARATION_ANNOTATION_ADAPTER, new ElementAnnotationAdapter(type, DECLARATION_ANNOTATION_ADAPTER)); - } - private String getLockModeElementName() { return JPA2_0.NAMED_QUERY__LOCK_MODE; } @@ -116,32 +120,4 @@ public final class SourceNamedQuery2_0Annotation (this.lockMode == null); } - @Override - protected void rebuildAdapters() { - super.rebuildAdapters(); - this.lockModeDeclarationAdapter = this.buildLockModeDeclarationAdapter(); - this.lockModeAdapter = this.buildLockModeAdapter(); - } - - @Override - public void storeOn(Map map) { - super.storeOn(map); - map.put(LOCK_MODE_PROPERTY, this.lockMode); - this.lockMode = null; - } - - @Override - public void restoreFrom(Map map) { - super.restoreFrom(map); - this.setLockMode((LockModeType_2_0) map.get(LOCK_MODE_PROPERTY)); - } - - - // ********** static methods ********** - - static SourceNamedQuery2_0Annotation createNestedNamedQuery(JavaResourceNode parent, Type type, int index, DeclarationAnnotationAdapter attributeOverridesAdapter) { - IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, attributeOverridesAdapter, ANNOTATION_NAME); - IndexedAnnotationAdapter annotationAdapter = new ElementIndexedAnnotationAdapter(type, idaa); - return new SourceNamedQuery2_0Annotation(parent, type, idaa, annotationAdapter); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceOrderColumn2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceOrderColumn2_0Annotation.java index 9d45f1d4b1..2138f1c39f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceOrderColumn2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceOrderColumn2_0Annotation.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,18 +9,17 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; -import java.util.Map; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedColumnAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.OrderColumn2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.OrderColumn @@ -44,8 +43,8 @@ public final class SourceOrderColumn2_0Annotation private Boolean updatable; - public SourceOrderColumn2_0Annotation(JavaResourcePersistentAttribute parent, Attribute attribute) { - super(parent, attribute, DECLARATION_ANNOTATION_ADAPTER); + public SourceOrderColumn2_0Annotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); this.nullableDeclarationAdapter = this.buildNullableDeclarationAdapter(); this.nullableAdapter = this.buildNullableAdapter(); this.insertableDeclarationAdapter = this.buildInsertableDeclarationAdapter(); @@ -211,34 +210,4 @@ public final class SourceOrderColumn2_0Annotation (this.insertable == null) && (this.updatable == null); } - - @Override - protected void rebuildAdapters() { - super.rebuildAdapters(); - this.nullableDeclarationAdapter = this.buildNullableDeclarationAdapter(); - this.nullableAdapter = this.buildNullableAdapter(); - this.insertableDeclarationAdapter = this.buildInsertableDeclarationAdapter(); - this.insertableAdapter = this.buildInsertableAdapter(); - this.updatableDeclarationAdapter = this.buildUpdatableDeclarationAdapter(); - this.updatableAdapter = this.buildUpdatableAdapter(); - } - - @Override - public void storeOn(Map map) { - super.storeOn(map); - map.put(NULLABLE_PROPERTY, this.nullable); - this.nullable = null; - map.put(INSERTABLE_PROPERTY, this.insertable); - this.insertable = null; - map.put(UPDATABLE_PROPERTY, this.updatable); - this.updatable = null; - } - - @Override - public void restoreFrom(Map map) { - super.restoreFrom(map); - this.setNullable((Boolean) map.get(NULLABLE_PROPERTY)); - this.setInsertable((Boolean) map.get(INSERTABLE_PROPERTY)); - this.setUpdatable((Boolean) map.get(UPDATABLE_PROPERTY)); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceSequenceGenerator2_0Annotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceSequenceGenerator2_0Annotation.java index f6fbcbcef1..99322b3e8e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceSequenceGenerator2_0Annotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceSequenceGenerator2_0Annotation.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,14 +10,14 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.common.core.utility.TextRange; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceSequenceGeneratorAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.SequenceGenerator2_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** * SourceSequenceGenerator2_0Annotation @@ -36,8 +36,8 @@ public final class SourceSequenceGenerator2_0Annotation // ********** constructor ********** - public SourceSequenceGenerator2_0Annotation(JavaResourceNode parent, Member member) { - super(parent, member); + public SourceSequenceGenerator2_0Annotation(JavaResourceNode parent, AnnotatedElement element) { + super(parent, element); this.catalogAdapter = this.buildAdapter(CATALOG_ADAPTER); this.schemaAdapter = this.buildAdapter(SCHEMA_ADAPTER); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceStaticMetamodelAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceStaticMetamodelAnnotation.java index 165188d7e6..a3a0190203 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceStaticMetamodelAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpa2/resource/java/source/SourceStaticMetamodelAnnotation.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,25 +10,25 @@ package org.eclipse.jpt.jpa.core.internal.jpa2.resource.java.source; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools; import org.eclipse.jpt.common.core.internal.utility.jdt.AnnotatedElementAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.ConversionDeclarationAnnotationElementAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.internal.utility.jdt.SimpleTypeStringExpressionConverter; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotationElementAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.common.core.utility.jdt.DeclarationAnnotationElementAdapter; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.jpa.core.jpa2.resource.java.JPA2_0; import org.eclipse.jpt.jpa.core.jpa2.resource.java.StaticMetamodelAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.metamodel.StaticMetamodel */ public final class SourceStaticMetamodelAnnotation - extends SourceAnnotation + extends SourceAnnotation implements StaticMetamodelAnnotation { private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -45,9 +45,9 @@ public final class SourceStaticMetamodelAnnotation private boolean fqClassNameStale = true; - public SourceStaticMetamodelAnnotation(JavaResourcePersistentType parent, Type type) { - super(parent, type, DECLARATION_ANNOTATION_ADAPTER); - this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(type, VALUE_ADAPTER); + public SourceStaticMetamodelAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { + super(parent, element, DECLARATION_ANNOTATION_ADAPTER); + this.valueAdapter = new AnnotatedElementAnnotationElementAdapter(element, VALUE_ADAPTER); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaEntity.java index 2f992ee1f8..952d00ba1f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaEntity.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaEntity.java @@ -14,8 +14,8 @@ package org.eclipse.jpt.jpa.core.internal.jpql; import java.util.HashMap; -import java.util.ListIterator; import java.util.Map; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.persistence.jpa.jpql.spi.IEntity; @@ -91,14 +91,13 @@ abstract class JpaEntity extends JpaManagedType void initializeQueries(Map queries) { JpaManagedTypeProvider provider = getProvider(); - for (ListIterator iter = namedQueries(); iter.hasNext(); ) { - NamedQuery namedQuery = iter.next(); + for (NamedQuery namedQuery : getNamedQueries()) { queries.put(namedQuery.getName(), buildQuery(provider, namedQuery)); } } - private ListIterator namedQueries() { - return getManagedType().getQueryContainer().namedQueries(); + private ListIterable getNamedQueries() { + return getManagedType().getQueryContainer().getNamedQueries(); } /** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaManagedTypeProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaManagedTypeProvider.java index e42748c56b..dc614dd395 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaManagedTypeProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaManagedTypeProvider.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import org.eclipse.jpt.jpa.core.JpaFacet; import org.eclipse.jpt.jpa.core.JpaPlatform; @@ -130,8 +129,7 @@ abstract class JpaManagedTypeProvider implements IManagedTypeProvider { private Map buildManagedTypes() { Map managedTypes = new HashMap(); - for (Iterator iter = persistenceTypes(); iter.hasNext(); ) { - PersistentType persistentType = iter.next(); + for (PersistentType persistentType : persistenceTypes()) { if (persistentType != null) { managedTypes.put(persistentType.getMapping().getName(), buildManagedType(persistentType)); } @@ -238,7 +236,7 @@ abstract class JpaManagedTypeProvider implements IManagedTypeProvider { * * @return The managed types that are defined only in the provider */ - abstract Iterator persistenceTypes(); + abstract Iterable persistenceTypes(); private static class EntityCollector implements IManagedTypeVisitor { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMapping.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMapping.java index f51147cab1..8152bbdf67 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMapping.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMapping.java @@ -14,17 +14,16 @@ package org.eclipse.jpt.jpa.core.internal.jpql; import java.lang.annotation.Annotation; -import java.util.Iterator; import java.util.List; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAttribute; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.AttributeMapping; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.jpa2.MappingKeys2_0; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.persistence.jpa.jpql.spi.IManagedType; import org.eclipse.persistence.jpa.jpql.spi.IMapping; import org.eclipse.persistence.jpa.jpql.spi.IMappingType; @@ -81,13 +80,13 @@ final class JpaMapping implements IMapping { private ITypeDeclaration[] buildGenericTypeDeclarations() { JavaPersistentAttribute javaPersistentAttribute = mapping.getPersistentAttribute().getJavaPersistentAttribute(); - JavaResourcePersistentAttribute resource = javaPersistentAttribute.getResourcePersistentAttribute(); + JavaResourceAttribute resource = javaPersistentAttribute.getResourceAttribute(); List declarations = CollectionTools.list(buildGenericTypeDeclarations(resource)); return declarations.toArray(new ITypeDeclaration[declarations.size()]); } - private Iterator buildGenericTypeDeclarations(JavaResourcePersistentAttribute resource) { - return new TransformationIterator(resource.typeTypeArgumentNames()) { + private Iterable buildGenericTypeDeclarations(JavaResourceAttribute resource) { + return new TransformationIterable(resource.getTypeTypeArgumentNames()) { @Override protected ITypeDeclaration transform(String next) { return getTypeRepository().getType(next).getTypeDeclaration(); @@ -173,7 +172,7 @@ final class JpaMapping implements IMapping { * {@inheritDoc} */ public boolean hasAnnotation(Class annotationType) { - JavaResourcePersistentAttribute attribute = mapping.getPersistentAttribute().getJavaPersistentAttribute().getResourcePersistentAttribute(); + JavaResourceAttribute attribute = mapping.getPersistentAttribute().getJavaPersistentAttribute().getResourceAttribute(); return attribute.getAnnotation(annotationType.getName()) != null; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMappingFile.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMappingFile.java index d3b2a0835a..fa95229d86 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMappingFile.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaMappingFile.java @@ -13,7 +13,6 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpql; -import java.util.Iterator; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.MappingFile; @@ -59,7 +58,7 @@ public class JpaMappingFile extends JpaManagedTypeProvider { * {@inheritDoc} */ @Override - protected Iterator persistenceTypes() { - return getPersistentTypeContainer().getPersistentTypes().iterator(); + protected Iterable persistenceTypes() { + return getPersistentTypeContainer().getPersistentTypes(); } } \ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaOrmEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaOrmEntity.java index 03eb192e66..504019c449 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaOrmEntity.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaOrmEntity.java @@ -9,7 +9,6 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpql; -import java.util.ListIterator; import java.util.Map; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.NamedQuery; @@ -50,8 +49,7 @@ final class JpaOrmEntity extends JpaEntity { if (mapping instanceof Entity) { Entity entity = (Entity) mapping; - for (ListIterator iter = entity.getQueryContainer().namedQueries(); iter.hasNext(); ) { - NamedQuery namedQuery = iter.next(); + for (NamedQuery namedQuery : entity.getQueryContainer().getNamedQueries()) { queries.put(namedQuery.getName(), buildQuery(provider, namedQuery)); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaPersistenceUnit.java index c6b289b9bd..4ffa24042a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaPersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/jpql/JpaPersistenceUnit.java @@ -13,9 +13,8 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.jpql; -import java.util.Iterator; -import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; +import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable; +import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; import org.eclipse.jpt.jpa.core.JpaProject; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PersistentType; @@ -59,10 +58,10 @@ public final class JpaPersistenceUnit extends JpaManagedTypeProvider { } @SuppressWarnings("unchecked") - private Iterator javaClassRefs() { - return new CompositeIterator( - getPersistentTypeContainer().specifiedClassRefs(), - getPersistentTypeContainer().impliedClassRefs() + private Iterable javaClassRefs() { + return new CompositeIterable( + getPersistentTypeContainer().getSpecifiedClassRefs(), + getPersistentTypeContainer().getImpliedClassRefs() ); } @@ -70,8 +69,8 @@ public final class JpaPersistenceUnit extends JpaManagedTypeProvider { * {@inheritDoc} */ @Override - Iterator persistenceTypes() { - return new TransformationIterator(javaClassRefs()) { + Iterable persistenceTypes() { + return new TransformationIterable(javaClassRefs()) { @Override protected PersistentType transform(ClassRef classRef) { return classRef.getJavaPersistentType(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationDataModelProvider.java index 57cf4806bb..56fc36696e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationDataModelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationDataModelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. + * 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 @@ -10,15 +10,14 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.core.internal.operations; -import java.util.Iterator; import java.util.Set; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jpt.common.utility.internal.ArrayTools; import org.eclipse.jpt.common.utility.internal.StringTools; -import org.eclipse.jpt.common.utility.internal.iterators.CompositeIterator; -import org.eclipse.jpt.common.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; +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.TransformationIterable; import org.eclipse.jpt.jpa.core.JpaFacet; import org.eclipse.jpt.jpa.core.JpaPlatform; import org.eclipse.jpt.jpa.core.JpaProject; @@ -117,10 +116,10 @@ public class OrmFileCreationDataModelProvider if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() == 0) { + if (persistence.getPersistenceUnitsSize() == 0) { return null; } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } @Override @@ -147,7 +146,7 @@ public class OrmFileCreationDataModelProvider } else if (propertyName.equals(PERSISTENCE_UNIT)) { return ArrayTools.array( - new TransformationIterator(new CompositeIterator(null, persistenceUnitNames())) { + new TransformationIterable(new CompositeIterable(null, getPersistenceUnitNames())) { @Override protected DataModelPropertyDescriptor transform(String next) { return persistenceUnitPropertyDescriptor(next); @@ -250,8 +249,7 @@ public class OrmFileCreationDataModelProvider Persistence persistence = (persistenceXml == null) ? null : persistenceXml.getPersistence(); if (persistence != null) { - for (Iterator stream = persistence.persistenceUnits(); stream.hasNext(); ) { - PersistenceUnit next = stream.next(); + for (PersistenceUnit next : persistence.getPersistenceUnits()) { if (pUnitName.equals(next.getName())) { return next; } @@ -260,17 +258,17 @@ public class OrmFileCreationDataModelProvider return null; } - protected Iterator persistenceUnits() { + protected Iterable getPersistenceUnits() { //only get the persistence units for the selected JpaProject, //if no jpa project is selected, then no persistence units will be listed in the combo JpaProject jpaProject = getJpaProject(); PersistenceXml persistenceXml = (jpaProject == null) ? null : jpaProject.getRootContextNode().getPersistenceXml(); Persistence persistence = (persistenceXml == null) ? null : persistenceXml.getPersistence(); - return (persistence == null) ? EmptyIterator.instance() : persistence.persistenceUnits(); + return (persistence == null) ? EmptyIterable.instance() : persistence.getPersistenceUnits(); } - protected Iterator persistenceUnitNames() { - return new TransformationIterator(persistenceUnits()) { + protected Iterable getPersistenceUnitNames() { + return new TransformationIterable(getPersistenceUnits()) { @Override protected String transform(PersistenceUnit next) { return next.getName(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationOperation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationOperation.java index 7f2879eede..61eaf568fd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationOperation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/operations/OrmFileCreationOperation.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.internal.operations; -import java.util.Iterator; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; @@ -65,8 +64,7 @@ public class OrmFileCreationOperation if (persistence == null) { throw new ExecutionException("persistence.xml does not have a persistence node."); //$NON-NLS-1$ } - for (Iterator stream = persistence.persistenceUnits(); stream.hasNext(); ) { - PersistenceUnit pUnit = stream.next(); + for (PersistenceUnit pUnit : persistence.getPersistenceUnits()) { if (pUnitName.equals(pUnit.getName())) { return pUnit; } @@ -91,8 +89,8 @@ public class OrmFileCreationOperation IPath filePath = container.getFullPath().append(fileName); IProject project = container.getProject(); IPath runtimePath = JptCommonCorePlugin.getResourceLocator(project).getRuntimePath(project, filePath); - for (Iterator stream = pUnit.specifiedMappingFileRefs(); stream.hasNext(); ) { - if (runtimePath.equals(stream.next().getFileName())) { + for (MappingFileRef ref : pUnit.getSpecifiedMappingFileRefs()) { + if (runtimePath.equals(ref.getFileName())) { return; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaDeleteTypeParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaDeleteTypeParticipant.java index 9a9ada9879..9d948a34c3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaDeleteTypeParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaDeleteTypeParticipant.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. @@ -180,13 +180,13 @@ public abstract class AbstractJpaDeleteTypeParticipant if (persistenceUnit == null) { return; } - SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.mappingFileRefsSize()); + SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.getMappingFileRefsSize()); Iterable persistenceXmlDeleteEdits = this.createPersistenceXmlDeleteEdits(persistenceUnit); if (!CollectionTools.isEmpty(persistenceXmlDeleteEdits)) { this.persistenceXmlDeleteEdits.put(jpaProject.getPersistenceXmlResource().getFile(), persistenceXmlDeleteEdits); } sm.worked(1); - for (MappingFileRef mappingFileRef : CollectionTools.iterable(persistenceUnit.mappingFileRefs())) { + for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFileRefs()) { if (sm.isCanceled()) { throw new OperationCanceledException(); } @@ -268,10 +268,10 @@ public abstract class AbstractJpaDeleteTypeParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaMoveJavaElementParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaMoveJavaElementParticipant.java index 13bc76ed57..9024e3eed8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaMoveJavaElementParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaMoveJavaElementParticipant.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. @@ -175,13 +175,13 @@ public abstract class AbstractJpaMoveJavaElementParticipant if (persistenceUnit == null) { return; } - SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.mappingFileRefsSize()); + SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.getMappingFileRefsSize()); Iterable classRefDeleteEdits = this.createPersistenceUnitReplaceEditsCheckClasspath(persistenceUnit); sm.worked(1); if (!CollectionTools.isEmpty(classRefDeleteEdits)) { this.persistenceXmlReplaceEdits.put(jpaProject.getPersistenceXmlResource().getFile(), classRefDeleteEdits); } - for (MappingFileRef mappingFileRef : CollectionTools.iterable(persistenceUnit.mappingFileRefs())) { + for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFileRefs()) { if (sm.isCanceled()) { throw new OperationCanceledException(); } @@ -274,10 +274,10 @@ public abstract class AbstractJpaMoveJavaElementParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaRenameJavaElementParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaRenameJavaElementParticipant.java index d0d951594c..123153e758 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaRenameJavaElementParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/AbstractJpaRenameJavaElementParticipant.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. @@ -155,13 +155,13 @@ public abstract class AbstractJpaRenameJavaElementParticipant if (persistenceUnit == null) { return; } - SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.mappingFileRefsSize()); + SubMonitor sm = SubMonitor.convert(monitor, 1 + persistenceUnit.getMappingFileRefsSize()); Iterable classRefDeleteEdits = this.createPersistenceXmlReplaceEditsCheckClasspath(persistenceUnit); sm.worked(1); if (!CollectionTools.isEmpty(classRefDeleteEdits)) { this.persistenceXmlReplaceEdits.put(jpaProject.getPersistenceXmlResource().getFile(), classRefDeleteEdits); } - for (MappingFileRef mappingFileRef : CollectionTools.iterable(persistenceUnit.mappingFileRefs())) { + for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFileRefs()) { if (sm.isCanceled()) { throw new OperationCanceledException(); } @@ -237,10 +237,10 @@ public abstract class AbstractJpaRenameJavaElementParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaDeleteMappingFileParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaDeleteMappingFileParticipant.java index 9627149c6d..31fd726b99 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaDeleteMappingFileParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaDeleteMappingFileParticipant.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. @@ -190,10 +190,10 @@ public class JpaDeleteMappingFileParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveFolderParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveFolderParticipant.java index 160e216b3c..faa035ba20 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveFolderParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveFolderParticipant.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. @@ -219,10 +219,10 @@ public class JpaMoveFolderParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveMappingFileParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveMappingFileParticipant.java index 0adac39634..e26e694930 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveMappingFileParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaMoveMappingFileParticipant.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. @@ -222,10 +222,10 @@ public class JpaMoveMappingFileParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameFolderParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameFolderParticipant.java index 57cd8b335d..268b0d74b4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameFolderParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameFolderParticipant.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. @@ -174,10 +174,10 @@ public class JpaRenameFolderParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameMappingFileParticipant.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameMappingFileParticipant.java index 69349e3481..e4e18412dd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameMappingFileParticipant.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/refactoring/JpaRenameMappingFileParticipant.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. @@ -169,10 +169,10 @@ public class JpaRenameMappingFileParticipant if (persistence == null) { return null; } - if (persistence.persistenceUnitsSize() != 1) { + if (persistence.getPersistenceUnitsSize() != 1) { return null; // the context model currently only supports 1 persistence unit } - return persistence.persistenceUnits().next(); + return persistence.getPersistenceUnits().iterator().next(); } private void addEdits(TextChange textChange, Iterable textEdits) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AbstractJavaResourceNode.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AbstractJavaResourceNode.java deleted file mode 100644 index 8cb4a5f3d2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AbstractJavaResourceNode.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.resource.java; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jpt.common.utility.internal.model.AbstractModel; -import org.eclipse.jpt.common.utility.internal.model.AspectChangeSupport; -import org.eclipse.jpt.common.utility.internal.model.ChangeSupport; -import org.eclipse.jpt.jpa.core.JpaAnnotationProvider; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; - -/** - * Java resource containment hierarchy - */ -public abstract class AbstractJavaResourceNode - extends AbstractModel - implements JavaResourceNode -{ - protected final JavaResourceNode parent; - - - // ********** constructor ********** - - protected AbstractJavaResourceNode(JavaResourceNode parent) { - super(); - this.checkParent(parent); - this.parent = parent; - } - - - // ********** parent ********** - - public JavaResourceNode getParent() { - return this.parent; - } - - protected void checkParent(JavaResourceNode p) { - if (p == null) { - if (this.requiresParent()) { - throw new IllegalArgumentException("'parent' cannot be null"); //$NON-NLS-1$ - } - } else { - if (this.forbidsParent()) { - throw new IllegalArgumentException("'parent' must be null"); //$NON-NLS-1$ - } - } - } - - protected boolean requiresParent() { - return true; - } - - protected boolean forbidsParent() { - return ! this.requiresParent(); // assume 'parent' is not optional - } - - - // ********** change support callback hook ********** - - @Override - protected final ChangeSupport buildChangeSupport() { - return new AspectChangeSupport(this, this.buildChangeSupportListener()); - } - - private AspectChangeSupport.Listener buildChangeSupportListener() { - return new AspectChangeSupport.Listener() { - public void aspectChanged(String aspectName) { - AbstractJavaResourceNode.this.aspectChanged(aspectName); - } - }; - } - - /** - * ignore the aspect name, we notify listeners of *every* change - */ - protected void aspectChanged(@SuppressWarnings("unused") String aspectName) { - this.getRoot().resourceModelChanged(); - } - - - // ********** JavaResourceNode implementation ********** - - /** - * @see org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceCompilationUnit#getRoot() - * @see org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryPackageFragmentRoot#getRoot() - * @see org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryPersistentTypeCache#getRoot() - */ - public Root getRoot() { - return this.parent.getRoot(); - } - - public IFile getFile() { - return this.getRoot().getFile(); - } - - - // ********** misc ********** - - protected JpaAnnotationProvider getAnnotationProvider() { - return this.getRoot().getAnnotationProvider(); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverrideAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverrideAnnotationDefinition.java index d92334b88b..a1e61a1caa 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverrideAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverrideAnnotationDefinition.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,29 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary.BinaryAssociationOverride1_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source.SourceAssociationOverride1_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AssociationOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.AssociationOverride */ public final class AssociationOverrideAnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new AssociationOverrideAnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new AssociationOverrideAnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -43,20 +41,23 @@ public final class AssociationOverrideAnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceAssociationOverride1_0Annotation.buildAssociationOverride((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceAssociationOverride1_0Annotation.buildSourceAssociationOverrideAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryAssociationOverride1_0Annotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAssociationOverride1_0Annotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.ASSOCIATION_OVERRIDE; } - public String getAnnotationName() { - return AssociationOverrideAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.ASSOCIATION_OVERRIDES; } + public String getElementName() { + return JPA.ASSOCIATION_OVERRIDES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverridesAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverridesAnnotationDefinition.java index 42561b2853..e93bec5a59 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverridesAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AssociationOverridesAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary.BinaryAssociationOverrides1_0Annotation; -import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source.SourceAssociationOverrides1_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AssociationOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.AssociationOverrides @@ -43,20 +41,20 @@ public final class AssociationOverridesAnnotationDefinition super(); } - public AssociationOverridesAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceAssociationOverrides1_0Annotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } - public AssociationOverridesAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { throw new UnsupportedOperationException(); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAssociationOverrides1_0Annotation(parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return AssociationOverridesAnnotation.ANNOTATION_NAME; + return JPA.ASSOCIATION_OVERRIDES; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverrideAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverrideAnnotationDefinition.java index e0c82a25cc..a675fbecce 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverrideAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverrideAnnotationDefinition.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,29 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAttributeOverrideAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAttributeOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AttributeOverrideAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.AttributeOverride */ public final class AttributeOverrideAnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new AttributeOverrideAnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new AttributeOverrideAnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -43,20 +41,23 @@ public final class AttributeOverrideAnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceAttributeOverrideAnnotation.buildAttributeOverride((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceAttributeOverrideAnnotation.buildSourceAttributeOverrideAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryAttributeOverrideAnnotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAttributeOverrideAnnotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.ATTRIBUTE_OVERRIDE; } - public String getAnnotationName() { - return AttributeOverrideAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.ATTRIBUTE_OVERRIDES; } + public String getElementName() { + return JPA.ATTRIBUTE_OVERRIDES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverridesAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverridesAnnotationDefinition.java index 8e0629aca6..c21211186b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverridesAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/AttributeOverridesAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryAttributeOverridesAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceAttributeOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.AttributeOverridesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.AttributeOverrides @@ -43,20 +41,20 @@ public final class AttributeOverridesAnnotationDefinition super(); } - public AttributeOverridesAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceAttributeOverridesAnnotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } - public AttributeOverridesAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { throw new UnsupportedOperationException(); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryAttributeOverridesAnnotation(parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return AttributeOverridesAnnotation.ANNOTATION_NAME; + return JPA.ATTRIBUTE_OVERRIDES; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/BasicAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/BasicAnnotationDefinition.java index a5f249a48d..d5c9f819af 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/BasicAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/BasicAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryBasicAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceBasicAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.BasicAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.Basic @@ -42,9 +40,9 @@ public final class BasicAnnotationDefinition private BasicAnnotationDefinition() { super(); } - + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceBasicAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceBasicAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class BasicAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryBasicAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryBasicAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return BasicAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ColumnAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ColumnAnnotationDefinition.java index 56fec881a3..be971f01c6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ColumnAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ColumnAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryColumnAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.ColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; /** * javax.persistence.Column @@ -44,7 +42,7 @@ public final class ColumnAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceColumnAnnotation((JavaResourcePersistentMember) parent, (Member) annotatedElement, SourceColumnAnnotation.MAPPING_DECLARATION_ANNOTATION_ADAPTER); + return new SourceColumnAnnotation(parent, annotatedElement, SourceColumnAnnotation.MAPPING_DECLARATION_ANNOTATION_ADAPTER); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorColumnAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorColumnAnnotationDefinition.java index a9d8797d59..8869b15e8c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorColumnAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorColumnAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryDiscriminatorColumnAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceDiscriminatorColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.DiscriminatorColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.DiscriminatorColumn @@ -45,15 +43,15 @@ public final class DiscriminatorColumnAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceDiscriminatorColumnAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceDiscriminatorColumnAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullDiscriminatorColumnAnnotation((JavaResourcePersistentType) parent); + return new NullDiscriminatorColumnAnnotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryDiscriminatorColumnAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryDiscriminatorColumnAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorValueAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorValueAnnotationDefinition.java index 1150a7d7a4..4fe3535e79 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorValueAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/DiscriminatorValueAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryDiscriminatorValueAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceDiscriminatorValueAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.DiscriminatorValueAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.DiscriminatorValue @@ -44,15 +42,15 @@ public final class DiscriminatorValueAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceDiscriminatorValueAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceDiscriminatorValueAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullDiscriminatorValueAnnotation((JavaResourcePersistentType) parent); + return new NullDiscriminatorValueAnnotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryDiscriminatorValueAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryDiscriminatorValueAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddableAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddableAnnotationDefinition.java index 995417e071..b11237dddc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddableAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddableAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryEmbeddableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceEmbeddableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.EmbeddableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Embeddable @@ -44,7 +42,7 @@ public final class EmbeddableAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceEmbeddableAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceEmbeddableAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,7 +50,7 @@ public final class EmbeddableAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryEmbeddableAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryEmbeddableAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedAnnotationDefinition.java index 50818c215e..dc28ee26da 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryEmbeddedAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceEmbeddedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.EmbeddedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.Embedded @@ -44,7 +42,7 @@ public final class EmbeddedAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceEmbeddedAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceEmbeddedAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,7 +50,7 @@ public final class EmbeddedAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryEmbeddedAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryEmbeddedAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedIdAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedIdAnnotationDefinition.java index 572fde6d2c..840fdefbed 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedIdAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EmbeddedIdAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryEmbeddedIdAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceEmbeddedIdAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.EmbeddedIdAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.EmbeddedId @@ -44,7 +42,7 @@ public final class EmbeddedIdAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceEmbeddedIdAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceEmbeddedIdAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class EmbeddedIdAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryEmbeddedIdAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryEmbeddedIdAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return EmbeddedIdAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EntityAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EntityAnnotationDefinition.java index f13e842fbc..23dbdb233a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EntityAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EntityAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryEntityAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceEntityAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.EntityAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Entity @@ -44,7 +42,7 @@ public final class EntityAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceEntityAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceEntityAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class EntityAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryEntityAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryEntityAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return EntityAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EnumeratedAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EnumeratedAnnotationDefinition.java index 79ce931c82..b338ee24e9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EnumeratedAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/EnumeratedAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryEnumeratedAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceEnumeratedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.EnumeratedAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.Enumerated @@ -44,19 +42,18 @@ public final class EnumeratedAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceEnumeratedAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceEnumeratedAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullEnumeratedAnnotation((JavaResourcePersistentAttribute) parent); + return new NullEnumeratedAnnotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryEnumeratedAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryEnumeratedAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return EnumeratedAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/GeneratedValueAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/GeneratedValueAnnotationDefinition.java index 0cc96173bb..5c0a3d01c5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/GeneratedValueAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/GeneratedValueAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryGeneratedValueAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceGeneratedValueAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.GeneratedValueAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.GeneratedValue @@ -44,7 +42,7 @@ public final class GeneratedValueAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceGeneratedValueAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceGeneratedValueAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class GeneratedValueAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryGeneratedValueAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryGeneratedValueAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return GeneratedValueAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdAnnotationDefinition.java index 8628cfede1..c446b333a3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryIdAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceIdAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.IdAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; /** * javax.persistence.Id @@ -44,7 +42,7 @@ public final class IdAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceIdAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceIdAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class IdAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryIdAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryIdAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return IdAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdClassAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdClassAnnotationDefinition.java index e5cbb6c281..05b066cd93 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdClassAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/IdClassAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryIdClassAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceIdClassAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.IdClassAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.IdClass @@ -44,7 +42,7 @@ public final class IdClassAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceIdClassAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceIdClassAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class IdClassAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryIdClassAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryIdClassAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return IdClassAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/InheritanceAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/InheritanceAnnotationDefinition.java index d0d4734830..8b39be25b4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/InheritanceAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/InheritanceAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryInheritanceAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceInheritanceAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.jpa.core.resource.java.InheritanceAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; /** * javax.persistence.Inheritance @@ -44,19 +42,18 @@ public final class InheritanceAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceInheritanceAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceInheritanceAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - return new NullInheritanceAnnotation((JavaResourcePersistentType) parent); + return new NullInheritanceAnnotation(parent); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryInheritanceAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryInheritanceAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return InheritanceAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnAnnotationDefinition.java index 8430099980..ee175d09dd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnAnnotationDefinition.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,29 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryJoinColumnAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceJoinColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.jpa.core.resource.java.JoinColumnAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.JoinColumn */ public final class JoinColumnAnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new JoinColumnAnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new JoinColumnAnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -43,20 +41,23 @@ public final class JoinColumnAnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceJoinColumnAnnotation.createJoinColumn((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceJoinColumnAnnotation.buildSourceJoinColumnAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryJoinColumnAnnotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryJoinColumnAnnotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.JOIN_COLUMN; } - public String getAnnotationName() { - return JoinColumnAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.JOIN_COLUMNS; } + public String getElementName() { + return JPA.JOIN_COLUMNS__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnsAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnsAnnotationDefinition.java index e0e07b6efd..ffe0e7c815 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnsAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinColumnsAnnotationDefinition.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,15 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryJoinColumnsAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceJoinColumnsAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; -import org.eclipse.jpt.jpa.core.resource.java.JoinColumnsAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.JoinColumns @@ -43,20 +41,20 @@ public final class JoinColumnsAnnotationDefinition super(); } - public JoinColumnsAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceJoinColumnsAnnotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } - public JoinColumnsAnnotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { throw new UnsupportedOperationException(); } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryJoinColumnsAnnotation(parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return JoinColumnsAnnotation.ANNOTATION_NAME; + return JPA.JOIN_COLUMNS; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinTableAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinTableAnnotationDefinition.java index ad35ea19e3..3f3894be12 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinTableAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/JoinTableAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Member; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryJoinTableAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceJoinTableAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; import org.eclipse.jpt.jpa.core.resource.java.JoinTableAnnotation; /** @@ -44,7 +42,7 @@ public final class JoinTableAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceJoinTableAnnotation((JavaResourcePersistentMember) parent, (Member) annotatedElement); + return new SourceJoinTableAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -58,5 +56,4 @@ public final class JoinTableAnnotationDefinition public String getAnnotationName() { return JoinTableAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/LobAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/LobAnnotationDefinition.java index 593295e108..941bf6e2a8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/LobAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/LobAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryLobAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceLobAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.LobAnnotation; /** @@ -44,7 +42,7 @@ public final class LobAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceLobAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceLobAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class LobAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryLobAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryLobAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return LobAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToManyAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToManyAnnotationDefinition.java index 173ae215c9..e96d01e153 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToManyAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToManyAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryManyToManyAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceManyToManyAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.ManyToManyAnnotation; /** @@ -44,7 +42,7 @@ public final class ManyToManyAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceManyToManyAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceManyToManyAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class ManyToManyAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryManyToManyAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryManyToManyAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return ManyToManyAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToOneAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToOneAnnotationDefinition.java index 7d8571e116..e2c9537623 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToOneAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/ManyToOneAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryManyToOneAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceManyToOneAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.ManyToOneAnnotation; /** @@ -44,7 +42,7 @@ public final class ManyToOneAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceManyToOneAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceManyToOneAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class ManyToOneAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryManyToOneAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryManyToOneAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return ManyToOneAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MapKeyAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MapKeyAnnotationDefinition.java index db92373fe0..caa04880dc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MapKeyAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MapKeyAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Attribute; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryMapKeyAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceMapKeyAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentAttribute; import org.eclipse.jpt.jpa.core.resource.java.MapKeyAnnotation; /** @@ -44,7 +42,7 @@ public final class MapKeyAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMapKeyAnnotation((JavaResourcePersistentAttribute) parent, (Attribute) annotatedElement); + return new SourceMapKeyAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class MapKeyAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMapKeyAnnotation((JavaResourcePersistentAttribute) parent, jdtAnnotation); + return new BinaryMapKeyAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return MapKeyAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MappedSuperclassAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MappedSuperclassAnnotationDefinition.java index 2d03a17fe4..bc83790cf6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MappedSuperclassAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/MappedSuperclassAnnotationDefinition.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,14 +10,12 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryMappedSuperclassAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceMappedSuperclassAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentType; import org.eclipse.jpt.jpa.core.resource.java.MappedSuperclassAnnotation; /** @@ -44,7 +42,7 @@ public final class MappedSuperclassAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceMappedSuperclassAnnotation((JavaResourcePersistentType) parent, (Type) annotatedElement); + return new SourceMappedSuperclassAnnotation(parent, annotatedElement); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -52,11 +50,10 @@ public final class MappedSuperclassAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryMappedSuperclassAnnotation((JavaResourcePersistentType) parent, jdtAnnotation); + return new BinaryMappedSuperclassAnnotation(parent, jdtAnnotation); } public String getAnnotationName() { return MappedSuperclassAnnotation.ANNOTATION_NAME; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueriesAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueriesAnnotationDefinition.java index 64d1419a8c..43ad8a23d2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueriesAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueriesAnnotationDefinition.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,14 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedNativeQueriesAnnotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedNativeQueriesAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueriesAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.NamedNativeQueries @@ -43,7 +42,7 @@ public final class NamedNativeQueriesAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceNamedNativeQueriesAnnotation(parent, (Type) annotatedElement); + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -51,11 +50,11 @@ public final class NamedNativeQueriesAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedNativeQueriesAnnotation(parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return NamedNativeQueriesAnnotation.ANNOTATION_NAME; + return JPA.NAMED_NATIVE_QUERIES; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueryAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueryAnnotationDefinition.java index 07aa297403..804b262156 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueryAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedNativeQueryAnnotationDefinition.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,28 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.resource.java.binary.BinaryNamedNativeQueryAnnotation; import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedNativeQueryAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedNativeQueryAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.NamedNativeQuery */ public final class NamedNativeQueryAnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new NamedNativeQueryAnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new NamedNativeQueryAnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -42,20 +41,23 @@ public final class NamedNativeQueryAnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return SourceNamedNativeQueryAnnotation.createNamedNativeQuery(parent, (Type) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceNamedNativeQueryAnnotation.buildSourceNamedNativeQueryAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryNamedNativeQueryAnnotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedNativeQueryAnnotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.NAMED_NATIVE_QUERY; } - public String getAnnotationName() { - return NamedNativeQueryAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.NAMED_NATIVE_QUERIES; } + public String getElementName() { + return JPA.NAMED_NATIVE_QUERIES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueriesAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueriesAnnotationDefinition.java index 4636029019..855f933404 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueriesAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueriesAnnotationDefinition.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,14 +10,13 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.binary.BinaryNamedAnnotation; +import org.eclipse.jpt.common.core.internal.resource.java.source.SourceNamedAnnotation; +import org.eclipse.jpt.common.core.resource.java.Annotation; +import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; -import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary.BinaryNamedQueries1_0Annotation; -import org.eclipse.jpt.jpa.core.internal.resource.java.source.SourceNamedQueries1_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueriesAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.NamedQueries @@ -43,7 +42,7 @@ public final class NamedQueriesAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceNamedQueries1_0Annotation(parent, (Type) annotatedElement); + return new SourceNamedAnnotation(parent, annotatedElement, getAnnotationName()); } public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { @@ -51,11 +50,11 @@ public final class NamedQueriesAnnotationDefinition } public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedQueries1_0Annotation(parent, jdtAnnotation); + return new BinaryNamedAnnotation(parent, jdtAnnotation, getAnnotationName()); } public String getAnnotationName() { - return NamedQueriesAnnotation.ANNOTATION_NAME; + return JPA.NAMED_QUERIES; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueryAnnotationDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueryAnnotationDefinition.java index 3b49b07818..397442f380 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueryAnnotationDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NamedQueryAnnotationDefinition.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,28 +10,27 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.IAnnotation; +import org.eclipse.jpt.common.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotation; +import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition; import org.eclipse.jpt.common.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.common.core.utility.jdt.Type; import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.binary.BinaryNamedQuery1_0Annotation; import org.eclipse.jpt.jpa.core.internal.jpa1.resource.java.source.SourceNamedQuery1_0Annotation; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.AnnotationDefinition; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jpa.core.resource.java.NamedQueryAnnotation; +import org.eclipse.jpt.jpa.core.resource.java.JPA; /** * javax.persistence.NamedQuery */ public final class NamedQueryAnnotationDefinition - implements AnnotationDefinition + implements NestableAnnotationDefinition { // singleton - private static final AnnotationDefinition INSTANCE = new NamedQueryAnnotationDefinition(); + private static final NestableAnnotationDefinition INSTANCE = new NamedQueryAnnotationDefinition(); /** * Return the singleton. */ - public static AnnotationDefinition instance() { + public static NestableAnnotationDefinition instance() { return INSTANCE; } @@ -42,20 +41,23 @@ public final class NamedQueryAnnotationDefinition super(); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceNamedQuery1_0Annotation(parent, (Type) annotatedElement); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement, int index) { + return SourceNamedQuery1_0Annotation.buildSourceNamedQueryAnnotation(parent, annotatedElement, index); } - public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { - throw new UnsupportedOperationException(); + public NestableAnnotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation, int index) { + return new BinaryNamedQuery1_0Annotation(parent, jdtAnnotation); } - public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryNamedQuery1_0Annotation(parent, jdtAnnotation); + public String getNestableAnnotationName() { + return JPA.NAMED_QUERY; } - public String getAnnotationName() { - return NamedQueryAnnotation.ANNOTATION_NAME; + public String getContainerAnnotationName() { + return JPA.NAMED_QUERIES; } + public String getElementName() { + return JPA.NAMED_QUERIES__VALUE; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullAnnotation.java deleted file mode 100644 index ab7a3377a7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullAnnotation.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 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 - ******************************************************************************/ -package org.eclipse.jpt.jpa.core.internal.resource.java; - -import java.util.Map; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.jpa.core.resource.java.Annotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceCompilationUnit; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourcePersistentMember; - -/** - * Simplify null annotation classes. - */ -public abstract class NullAnnotation - extends AbstractJavaResourceNode - implements Annotation -{ - protected NullAnnotation(JavaResourceNode parent) { - super(parent); - } - - public void initialize(CompilationUnit astRoot) { - // do nothing - } - - public org.eclipse.jdt.core.dom.Annotation getAstAnnotation(CompilationUnit astRoot) { - return null; - } - - public JavaResourceCompilationUnit getJavaResourceCompilationUnit() { - throw new UnsupportedOperationException(); - } - - public void newAnnotation() { - throw new UnsupportedOperationException(); - } - - public void removeAnnotation() { - throw new UnsupportedOperationException(); - } - - public boolean isUnset() { - throw new UnsupportedOperationException(); - } - - public void storeOn(Map map) { - // NOP - } - - public void restoreFrom(Map map) { - // NOP - } - - public TextRange getTextRange(CompilationUnit astRoot) { - return null; - } - - public void synchronizeWith(CompilationUnit astRoot) { - throw new UnsupportedOperationException(); - } - - /** - * Convenience method: Cast the annotation's parent to a - * persistent member. - */ - protected JavaResourcePersistentMember getMember() { - return (JavaResourcePersistentMember) this.parent; - } - - /** - * Convenience method: Add the type or attribute's annotation - * and return it. - *

- * Pre-condition: The annotation's parent must be a persistent member - * (type or attribute). - */ - @SuppressWarnings("unchecked") - protected A addAnnotation() { - return (A) this.addAnnotation_(); - } - - protected Annotation addAnnotation_() { - return this.getMember().addAnnotation(this.getAnnotationName()); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullBaseColumnAnnotation.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullBaseColumnAnnotation.java index 44696dab1c..9ab6d373cb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullBaseColumnAnnotation.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/resource/java/NullBaseColumnAnnotation.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,9 +10,9 @@ package org.eclipse.jpt.jpa.core.internal.resource.java; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.common.core.resource.java.JavaResourceNode; import org.eclipse.jpt.common.core.utility.TextRange; import org.eclipse.jpt.jpa.core.resource.java.BaseColumnAnnotation; -import org.eclipse.jpt.jpa.core.resource.java.JavaResourceNode; /** *