Jump to: navigation, search

New Help for Old Friends VIII


This page collects notes and pointers to changes coming up in the WTP 3.5 (Kepler) release.

This page acts as a central "jumping off" point for those adopters of WTP that are moving up from a previous version of WTP. Most of this information may be already contained in various mailing lists and Bugzilla reports, but it is believed best to have a central place to get people started. Adopters: if you run into trouble or notice things that are not covered here, please update this page and/or let us know (such as by opening a bug, or sending a note to wtp-dev). Web Tools is a Platform and we strive to provide compatible API evolution with clear migration paths, instructions, etc.

One thing we have learned in the past is that some adopters do not move with us to every new release. Some early adopters went from 0.7 directly to 1.5, for example. Unfortunately, it is difficult to present the information in that way, covering multiple changes across multiple version ranges, so those types of migrations have to read about migrating to each version.

Note: as these notes develop and grow in number, they may occasionally be re-organized into categories, etc.

WTP Git migration

WTP has moved its source code repository from CVS to Git. A detailed list of what moved where can be found here



  • All the BundleActivator implementations (i.e. "plug-in" classes; e.g. JptJpaCorePlugin) were moved from public packages to private packages and all public members moved to the appropriate public interfaces etc.
  • Various convenience Transformers have been added to many public interfaces.

Common Utility (Provisional API)

  • added interfaces:
    • Association
    • Bag
    • Queue
    • Stack
    • ListIterable
    • MultiThreadedExceptionHandler
    • Node
    • Problem
    • IntReference
    • ModifiableIntReference
    • ModifiableBooleanReference
    • Transformer
  • moved interfaces:
    • ObjectReference
    • ModifiableObjectReference
    • BooleanReference
    • Filter
    • IndentingPrintWriter
    • Synchronizer (moved to JAXB core plug-in)
    • CallbackSynchronizer (moved to JAXB core plug-in)
  • removed all "tree"-related events and listeners
  • Transformer
    • changed Null to always returns null
    • added Non, an implementation that always returns the object, untransformed (this is what Null used to do)

Common Core (Provisional API)

  • added interfaces:
    • JptWorkspace
    • LibraryValidatorManager
    • ResourceLocatorManager
  • JptCommonCorePlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New
getLibraryValidators(...) LibraryValidatorManager.getLibraryValidators(...)

  • reworked resource types
    • added resourcTypes extension point to specify resource types and their relationships
    • converted JptResourceType to an interface with instances defined by the resourcTypes extension point - extensions are managed by the JptResourceTypeManager
    • defined basic resource types
    • added JptResourceTypeReference
    • added ContentTypeReference
  • added TypeBinding to encapsulate type information (e.g. simple/qualified name, is interface/enum) spread elsewhere in resource model
  • JavaResourceAbstractType
    • Removed
      • getQualifiedName()
      • getPackageName()
      • isMemberType() (and associated property strings).
    • Added getTypeBinding() (and associated property string) whose API now takes their place (and adds related API).
  • JavaResourceAttribute
    • Removed
      • getTypeArrayComponentTypeName()
      • getTypeArrayDimensionality()
      • getTypeInterfaceNames()
      • getTypeName()
      • getTypeSuperclassNames()
      • getTypeTypeArgumentName(int)
      • getTypeTypeArgumentNames()
      • getTypeTypeArgumentNamesSize()
      • typeIsArray()
      • typeIsEnum()
      • typeIsInterface()
      • typeIsSubTypeOf(String)
      • typeIsVariablePrimitive() (and associated property strings).
    • Added getTypeBinding() (and associated property string) whose API now takes their place (and adds related API).
  • JavaResourceField - added synchronizeWith(FieldDeclaration, VariableDeclarationFragment) to replace synchronizeWith(CompilationUnit)
  • JavaResourceMethod - removed initialize(MethodDeclaration) as it was unnecessary.
  • JavaResourceType
    • Added
      • getAttributeTypeBinding(JavaResourceAttribute)
      • getField(String name)
  • Annotation - initialize/synchronizeWith(Annotation) are preferred where possible over initialize/syncrhonizeWith(CompilationUnit). It is probably more performant to use the Annotation that has already been discovered than to search through the CompilationUnit again. If reusing any of the generic JPA annotation implementations, clients will now need to call initialize(Annotation)
    • added
      • initialize(Annotation).
      • synchronizeWith(Annotation).
  • JavaResourceAnnotatedElement
    • added
      • getContainerAnnotation(String) : Annotation. - You can no longer use getAnnotation(String) to return container annotations. This was changed to improve performance. see bug 376787
    • changed
      • getNameTextRange(CompilationUnit) to getNameTextRange(). Caching the name TextRange during sync
      • getKind() to getAstNodeType()
      • JavaResourceAnnotatedElement.Kind renamed to JavaResourceAnnotatedElement.AstNodeType. Replaced Kind.getAstNodeType() with AstNodeType.matches(int)
  • AnnotationAdapter
    • changed method signature of newMarkerAnnotation() to return MarkerAnnotation
    • changed method signature of newSingleMemberAnnotation() to return SingleMemberAnnotation
    • changed method signature of newNormalAnnotation() to return NormalAnnotation
  • AnnotationElementAdapter
    • added methods for performance improvements
      • getValue(Annotation)
      • getExpression(Annotation)
  • DeclarationAnnotationElementAdapter
    • added methods for performance improvements
      • getValue(Annotation)
      • getExpression(Annotation)
  • NotifyingRepeatingJobCommand.Listener
    • changed signature of method executionQuiesced(JobCommand, IProgressMonitor) : IStatus to executionQuiesced(JobCommand) : void - all listeners are notified; there is no way to cancel this notification
  • *.common.core.resource.xml.JptXmlResource - moved/renamed from *.jpa.core.JpaXmlResource
  • ResourceLocator renamed methods:
    • resourceLocationIsValid(...) renamed to locationIsValid(...)
    • getDefaultResourceLocation(...) renamed to getDefaultLocation(...)
    • getResourcePath(...) renamed to getWorkspacePath(...)
  • ProjectResourceLocator renamed methods:
    • resourceLocationIsValid(...) renamed to locationIsValid(...)
    • getDefaultResourceLocation(...) renamed to getDefaultLocation(...)
    • getResourcePath(...) renamed to getWorkspacePath(...)
  • EBaseObject
    • added method getFullTextRange()

JPA Database (Provisional API)

  • JptJpaDbPlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New
getConnectionProfileFactory() IWorkspace.getAdapter(ConnectionProfileFactory.class)
buildDriverClasspathContainerFor(...) ConnectionProfileFactory.buildDriverClasspathContainer(...)

  • promoted the method refresh() from Schema to DatabaseObject
  • added ConnectionProfileFactory.getWorkspace()

JPA Core (Provisional API)

  • JptJpaCorePlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New
WEB_FACET ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_WEB_MODULE)
getConnectionProfileName(...) removed
setConnectionProfileName(...) removed
getUserOverrideDefaultCatalog(...) removed
setUserOverrideDefaultCatalog(...) removed
getUserOverrideDefaultSchema(...) removed
setUserOverrideDefaultSchema(...) removed
clearProjectPersistentProperties(...) removed
getJarRuntimeRootPath(...) ProjectTools.getJarRuntimeRootPath(...)
nodeIsJpa2_0Compatible(...) JptResourceType.isCompatibleWith(...)
nodeIsXml2_0Compatible(...) JptResourceType.isCompatibleWith(...)
resourceTypeIsCompatible(...) JptResourceType.isCompatibleWith(...)
projectHasWebFacet(...) ProjectTools.hasWebFacet(...)

  • moved preference code to new facade JpaPreferences
  • JpaStructureNode now extends JpaContextNode
  • renamed AbstractXmlResourceProvider to AbstractJpaXmlResourceProvider and moved to internal package
  • moved JpaXmlResourceProvider to appropriate package and added method createFileAndResource(...)
  • cleaned up support for non-XML mapping files:
    • changed the resource passed to the method JpaFactory.buildMappingFile(...) from JpaXmlResource to Object
    • moved MappingFileRoot to be a member type: MappingFile.Root
    • added change support for MappingFile.ROOT_PROPERTY
    • added methods to MappingFile:
      • getResourceMappingFile()
    • MappingFilePersistenceUnitMetadata now extends JpaContextNode, not XmlContextNode
    • MappingFilePersistenceUnitDefaults now extends JpaContextNode, not XmlContextNode
    • added support for a root to XmlFile
    • OrmXml now extends XmlFile
    • EntityMappings now extends both MappingFile.Root and XmlFile.Root
    • Persistence now extends XmlFile.Root
    • replaced PersistenceXml.getPersistence() with getRoot()
    • added method MappingFile.getDefinition()
  • added method EntityMappings.getOrmXml()
  • removed JpaXmlStructureNode and moved method getXmlCompletionProposals(...) to XmlContextNode
  • removed unneeded method MappingFileRef.isFor(...)
  • renamed MappingFileRef.isImplied() to MappingFileRef.isDefault()
  • renamed PersistenceXmlContextNodeFactory.buildImpliedMappingFileRef(...) to PersistenceXmlContextNodeFactory.buildVirtualMappingFileRef(...)
  • added method JpaNode.getJpaPlatform()
  • deleted class JpaFacet
    • moved ID to JpaProject.FACET_ID
    • moved FACET to JpaProject.FACET
    • moved VERSION_1_0 to JpaProject.FACET_VERSION_STRING and JpaProject.FACET_VERSION
    • moved VERSION_2_0 to JpaProject2_0.FACET_VERSION_STRING and JpaProject2_0.FACET_VERSION
  • changed JpaPlatformFactory.buildJpaPlatform(String) to JpaPlatformFactory.buildJpaPlatform(JpaPlatform.Config)
  • reworked JpaPlatformManager
    • no longer a singleton - access it via JpaWorkspace
    • renamed various methods to more accurately reflect model (e.g. getPlatform(String) now returns a JpaPlatform, while getJpaPlatformDescription(String) returns the JpaPlatformDescription)
  • added method JpaPlatform.getContentType(IFile)
  • ConnectionProfileFactory is no longer a singleton - access it via JpaWorkspace
  • PersistenceUnit added method removeSpecifiedClassRefs(Iterable<ClassRef>)
  • JpaProject
    • changed getMappedJavaSourceClassNames(): Iterable<String> to getMappedJavaSourceTypes() : Iterable<JavaResourceAbstractType>
    • changed getAnnotatedJavaSourceClassNames(): Iterable<String> to getAnnotatedJavaSourceTypes() : Iterable<JavaResourceAbstractType>
  • reworked JpaProject.Manager
    • added getJpaWorkspace()
    • removed log(String)
    • removed log(Throwable)
    • removed log(String, Throwable)
    • removed getExceptionHandler()
  • JpaProjectManager
    • renamed
      • addAsyncEventListenerFlag(BooleanReference) to addJavaEventListenerFlag(BooleanReference)
      • removeAsyncEventListenerFlag(BooleanReference) to removeJavaEventListenerFlag(BooleanReference)
  • JpaPlatformProvider
    • removed getMostRecentSupportedResourceType(IContentType)
    • added getMostRecentSupportedResourceTypes()
  • PersistentType
    • added getAttributeTypeBinding(ReadOnlyPersistentAttribute)
  • ReadOnlyPersistentAttribute
    • added getTypeName(PersistentType)
  • Generator - refactored all DB specific methods to a new interface DbGenerator bug 380150
  • added interface JavaElementReference - implemented by:
    • JavaPersistentType
    • JavaPersistentAttribute
    • Accessor
  • cleaned up how JpaFile root structure nodes are registered Bug 231872:
    • added JpaFile.updateRootStructureNodes()
    • removed JpaFile.addRootStructureNode(Object, JpaStructureNode)
    • removed JpaFile.removeRootStructureNode(Object, JpaStructureNode)
    • added JpaStructureNode.gatherRootStructureNodes(JpaFile, Collection<JpaStructureNode>)
  • fixed Structure View when static member types present Bug 390616:
    • added JpaStructureNodes.getFullTextRange()
    • renamed EntityMappings.getFullyQualifiedName(...) to qualify(...)
  • reworked JpaPlatform-related classes:
    • renamed JpaPlatformDescription to JpaPlatform.Config
    • renamed JpaPlatformGroupDescription to JpaPlatform.GroupConfig
    • added method JpaPlatform.Config.getJpaPlatform()
  • JpaProject2_0 no longer extends MetamodelSynchronizer - that behavior should be internal to the JpaProject
  • JpaXmlResource - moved/renamed to *.common.core.JptXmlResource.
  • added method ClassRef.getJavaResourceType()
  • added method Entity.supportsValidationMessages() and Entity.getNameTextRange()
  • added method Generator.supportsValidationMessages()
  • added method Query.supportsValidationMessages()
  • Refactored validation methods to not include a CompilationUnit for Java(bug 376595). Now the API is the same for Java and Orm.
    • added JpaContextNode.getValidationTextRange()
    • added JpaContextNode.validate(...)
    • Refactored completion proposal methods to be identical in xml and java and moved up the hierarchy, removed Filter and CompilationUnit parameters in both JPA and JAXB
      • added JpaContextNode.getCompletionProposals(...)
    • Deleted JavaJpaContextNode and XmlContextNode as they were no longer needed after the validation and context assist refactorings.
    • Deleted many other Java and Xml specific interfaces. For example, JavaMultiRelationshipMapping and XmlMultiRelationshipMapping were deleted, use MultiRelationshipMapping now.
  • The refactoring participant methods have been refactored
    • The common methods have been consolidated into the following interfaces:
      • DeleteTypeRefactoringParticipant
      • MappingFileRefactoringParticipant
      • TypeRefactoringParticipant
    • The following interfaces now extend one or more of the above-listed interfaces:
      • EntityMappings
      • OrmAttributeMapping
      • OrmIdClassReference
      • OrmPersistentAttribute
      • OrmPersistentType
      • OrmTypeMapping
      • ClassRef
      • MappingFileRef
      • PersistenceUnit
      • PersistenceUnitProperties
  • PersistentType2_0
    • added method getMetamodelType()
  • JarFile
    • removed method dispose()
  • Support JPA 2.1 Converter types (bug 392702:
    • added ManagedType, JavaManagedType, OrmManagedType
    • PersistentType now extends ManagedType, moved some type/name related methods to it
    • added JavaManagedTypeDefinition
    • added OrmManagedTypeDefinition
    • JarFile
      • renamed getJavaPersistentTypes() to <code>getJavaManagedTypes()
      • renamed getJavaPersistentTypesSize() to <code>getJavaManagedTypesSize()
    • EntityMappings
      • replaced removePersistentType(...) with removeManagedType(...)
      • replaced containsPersistentType(...) with containsManagedType(...)
      • replaced getPersistentTypesSize() with getManagedTypesSize()
    • OrmPersistentType.JAVA_PERSISTENT_TYPE_PROPERTY has been replaced with OrmManagedType.JAVA_MANAGED_TYPE_PROPERTY
    • possibly want to use OrmManagedType.getJavaManagedType() instead of OrmPersistent.getJavaPersistentType() that is now just a helper method for returning the JavaManagedType of it is of type JavaPersistentType

JAXB Core (Provisional API)

  • JptJaxbCorePlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New

  • added JaxbWorkspace
  • added JaxbPreferences
  • renamed JaxbPlatformDescription to JaxbPlatformConfig
  • renamed JaxbPlatformGroupDescription to JaxbPlatformGroupConfig
  • removed GenericJaxbPlatform and scattered its constants to various JaxbPlatformDefinition implementations
  • removed JaxbFacet and moved its constants to JaxbProject

EclipseLink JPA Core (Provisional API)

  • JptJpaEclipseLinkCorePlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New
nodeIsEclipseLink2_3Compatible(...) removed
nodeIsEclipseLink2_4Compatible(...) removed
nodeIsEclipseLinkVersionCompatible(...) removed

  • moved preference code to new facade EclipseLinkJpaPreferences
  • removed EclipseLinkPlatform and scattered its constants to various JpaPlatformFactory implementations

EclipseLink JAXB Core (Provisional API)

  • removed ELJaxbPlatform and scattered its constants to various JaxbPlatformDefinition implementations

Common UI (Provisional API)

  • WidgetFactory:
    • removed deprecated createCCombo(...)
    • removed deprecated createEditableCCombo(...)
    • removed createMultiLineLabel(...)
    • added dispose() - must be called when finished with the widget factory
  • ItemLabelProvider.Manager:
    • added getResourceManager()
  • added JptCommonUiImages

JPA UI (Provisional API)

  • enhanced JpaPlatformUi:
    • added getTypeMappingUiDefinition(...)
    • added getAttributeMappingUiDefinition(...)
    • added parameters PropertyValueModel<Boolean> enabledModel and ResourceManager resourceManager to buildTypeMappingComposite(...)
    • added parameters PropertyValueModel<Boolean> enabledModel and ResourceManager resourceManager to buildAttributeMappingComposite(...)
    • changed buildJpaDetailsManager(...) to getDetailsProvider(JpaStructureNode)
  • converted Iterators to Iterables:
    • JpaPlatformUi.getTypeMappingUiDefinitions(...)
    • JpaPlatformUi.getAttributeMappingUiDefinitions(...)
    • JpaPlatformUiProvider.getDetailsProviders()
    • JpaPlatformUiProvider.getResourceUiDefinitions()
    • MappingResourceUiDefinition.getTypeMappingUiDefinitions()
    • MappingResourceUiDefinition.getAttributeMappingUiDefinitions()
  • enhanced JpaPlatformUiProvider:
    • moved getDetailsProviders() to ResourceUiDefinition
  • enhanced ResourceUiDefinition:
    • added getEditorPageDefinitions()
    • moved getDetailsProviders() from JpaPlatformUiProvider
  • enhanced MappingResourceUiDefinition:
    • added getTypeMappingUiDefinition(...)
    • added getTypeMappingUiDeginitions(PersistentType)
    • added getAttributeMappingUiDefinition(...)
    • added getAttributeMappingUiDefinitions(ReadOnlyPersistentAttribute)
    • added parameters PropertyValueModel<Boolean> enabledModel and ResourceManager resourceManager to buildAttributeMappingComposite(...)
    • added parameter ResourceManager resourceManager to buildTypeMappingComposite(...)
  • enhanced MappingUiDefinition:
    • ungenericized this interface
    • changed getImage() to getImageDescriptor()
    • added method buildMappingComposite(), this replaced similar methods in JavaTypeMappingUiDefinition and JavaAttributeMappingUiDefinition. added parameters PropertyValueModel<Boolean> enabledModel and ResourceManager resourceManager
  • deleted JavaTypeMappingUiDefinition - see MappingUiDefinition
  • deleted JavaAttributeMappingUiDefinition - see MappingUiDefinition
  • deleted DefaultJavaTypeMappingUiDefinition - see MappingUiDefinition
  • deleted DefaultJavaAttributeMappingUiDefinition - see MappingUiDefinition
  • deleted OrmTypeMappingUiDefinition - see MappingUiDefinition
  • deleted OrmAttributeMappingUiDefinition - see MappingUiDefinition
  • deleted JavaUiFactory - see JpaUiFactory
  • deleted OrmXmlUiFactory - see JpaUiFactory
  • deleted JavaUiFactory2_0 - see JpaUiFactory2_0
  • deleted OrmXmlUiFactory2_0 - see JpaUiFactory2_0
  • added JpaUiFactory and JpaUiFactory2_0
    • methods from deleted classes JavaUiFactory OrmXmlUiFactory were renamed to be not specific to orm/java, ie createEntityComposite(...) replaced createJavaEntityComposite(...)
    • added parameters PropertyValueModel<Boolean> enabledModel and ResourceManager resourceManager to all attribute and type mapping methods
    • removed vestigial ORM type mapping methods:
      • createOrmMappedSuperclassComposite(...)
      • createOrmEntityComposite(...)
      • createOrmEmbeddableComposite(...)
  • enhanced JpaComposite
    • removed enableWidgets(boolean) - a Pane now takes a PropertyValueModel<Boolean> used for enabling widgets
  • moved JpaPageComposite from org.eclipse.jpt.jpa.ui.details to org.eclipse.jpa.ui.editors and renamed it to JpaEditorPageDefinition
    • no longer extends JpaComposite
    • renamed getPageImageDescriptor() to getTitleImageDescriptor()
    • renamed getPageText() to getTitleText()
    • added buildContent(...)
  • enhanced JpaDetailsPageManager:
    • Ungenericized this interface.
    • getSubject() now returns JpaStructureNode
    • setSubject(...) now takes a JpaStructureNode parameter
  • enhanced JpaDetailsPageManager.Factory:
    • added parameter ResourceManager resourceManager to buildPageManager(...)
  • enhanced JpaDetailsProvider:
    • added parameter ResourceManager resourceManager to buildDetailsPageManager(...)
    • replaced method providesDetails(JpaStructureNode>) with getType()
  • added JpaWorkbench
  • added JpaPlatformUiManager
  • added JptJpaUiImages

JPQL Query (content assist and validation) (Provisional API)

  • SourceAnnotation, ASTTools
    • Added support for retrieving a list of text ranges when the value is split.
  • Query, QueryAnnotation, XmlQuery
    • Changed "TextRange getTextRange()" to "List<TextRange> getTextRanges()" to support a JPQL query split into multiple sections (see bug 386414).
  • XmlQuery
    • Added 3 methods (getActualQuery(), getQueryOffset(), isQueryInsideCDATASection()) to help fix alignment issue of content assist and validation text range (also see bug 360713).
  • JpaJpqlQueryHelper, changed the signature of validate() to better support content assist and validation due to:
    • Split strings in a Java annotation;
    • Inside a CDATA section in XML;
    • Contains leading whitespace between <query> element and the query itself in XML.

JAXB UI (Provisional API)

  • JptJaxbUiPlugin - moved to private package and moved its members to the appropriate public interfaces etc.

Old New
getJaxbPlatformUiManager() TO DO

  • added JaxbWorkbench
  • added JptJaxbUiImages


This document covers ONLY changes between WTP 3.5 and WTP 3.4. See also: