Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 152178 Details for
Bug 293467
[Hotbug] Performance problem when validate managed properties
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
combined patch with all other patches that effect jsf.common
jsf.patch (text/plain), 35.23 KB, created by
David Williams
on 2009-11-13 12:50:24 EST
(
hide
)
Description:
combined patch with all other patches that effect jsf.common
Filename:
MIME Type:
Creator:
David Williams
Created:
2009-11-13 12:50:24 EST
Size:
35.23 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jst.jsf.common >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/META-INF/MANIFEST.MF,v >retrieving revision 1.33.4.2 >diff -u -r1.33.4.2 MANIFEST.MF >--- META-INF/MANIFEST.MF 12 Nov 2009 21:54:13 -0000 1.33.4.2 >+++ META-INF/MANIFEST.MF 13 Nov 2009 17:49:26 -0000 >@@ -2,7 +2,7 @@ > Bundle-ManifestVersion: 2 > Bundle-Name: %plugin.name > Bundle-SymbolicName: org.eclipse.jst.jsf.common;singleton:=true >-Bundle-Version: 1.1.4.qualifier >+Bundle-Version: 1.1.5.qualifier > Bundle-Activator: org.eclipse.jst.jsf.common.JSFCommonPlugin$Implementation > Bundle-Localization: plugin > Export-Package: org.eclipse.jst.jsf.common;x-internal:=true, >Index: src/org/eclipse/jst/jsf/common/util/TypeUtil.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/util/TypeUtil.java,v >retrieving revision 1.12.4.2 >diff -u -r1.12.4.2 TypeUtil.java >--- src/org/eclipse/jst/jsf/common/util/TypeUtil.java 12 Nov 2009 21:54:12 -0000 1.12.4.2 >+++ src/org/eclipse/jst/jsf/common/util/TypeUtil.java 13 Nov 2009 17:49:26 -0000 >@@ -15,16 +15,15 @@ > import java.util.ArrayList; > import java.util.List; > >-import org.eclipse.core.runtime.NullProgressMonitor; > import org.eclipse.jdt.core.IField; > import org.eclipse.jdt.core.IJavaProject; > import org.eclipse.jdt.core.IType; >-import org.eclipse.jdt.core.ITypeHierarchy; > import org.eclipse.jdt.core.ITypeParameter; > import org.eclipse.jdt.core.JavaModelException; > import org.eclipse.jdt.core.Signature; > import org.eclipse.jst.jsf.common.JSFCommonPlugin; > import org.eclipse.jst.jsf.common.internal.types.TypeConstants; >+import org.eclipse.jst.jsf.common.internal.types.TypeInfoCache; > > /** > * Utility for handling IType's and type signatures >@@ -359,11 +358,13 @@ > throws JavaModelException > { > IType resolvedType = null; >+ >+ final TypeInfoCache typeInfoCache = TypeInfoCache.getInstance(); >+ IType[] superTypes = typeInfoCache.getCachedSupertypes(childType); >+ if (superTypes == null) { >+ superTypes = typeInfoCache.cacheSupertypesFor(childType); >+ } > >- // not resolved? try the supertypes >- final ITypeHierarchy typeHierarchy = >- childType.newSupertypeHierarchy(new NullProgressMonitor()); >- IType[] superTypes = typeHierarchy.getAllSupertypes(childType); > String[][] resolved; > > LOOP_UNTIL_FIRST_MATCH: >@@ -394,9 +395,8 @@ > */ > public static IType resolveType(final IJavaProject javaProject, final String fullyResolvedTypeSignature) > { >- final String fullyQualifiedName = >- getFullyQualifiedName(fullyResolvedTypeSignature); >- >+ String fullyQualifiedName = getFullyQualifiedName(fullyResolvedTypeSignature); >+ fullyQualifiedName = Signature.getTypeErasure(fullyQualifiedName); > try { > return javaProject.findType(fullyQualifiedName); > } catch (JavaModelException e) { >Index: src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java,v >retrieving revision 1.5.4.2 >diff -u -r1.5.4.2 StandardMetaDataFilesTranslator.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java 12 Nov 2009 21:54:13 -0000 1.5.4.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/StandardMetaDataFilesTranslator.java 13 Nov 2009 17:49:26 -0000 >@@ -14,6 +14,7 @@ > import java.util.Iterator; > > import org.eclipse.core.runtime.IStatus; >+import org.eclipse.emf.ecore.util.EcoreUtil.Copier; > import org.eclipse.jst.jsf.common.JSFCommonPlugin; > import org.eclipse.jst.jsf.common.metadata.Entity; > import org.eclipse.jst.jsf.common.metadata.EntityGroup; >@@ -42,16 +43,20 @@ > //assert assistant.getSourceModel() instanceof ModelKeyDescriptor; > > MetaDataModel mm = assistant.getMergedModel(); >- if (mm.getRoot() == null) >- mm.setRoot(assistant.getSourceModelProvider().getSourceModel()); >- >+ Model mk = (Model)assistant.getSourceModelProvider().getSourceModel(); >+ if (mm.getRoot() == null) { >+ //create copy, otherwise source model becomes merged model because of reference >+ Copier copier = new Copier(); >+ Model newModel = (Model)copier.copy(mk.getModel()); >+ copier.copyReferences(); >+ mm.setRoot(newModel); >+ } > else { >- //for each entity and trait call "add". assistant will handle merge. >- Model mk = (Model)assistant.getSourceModelProvider().getSourceModel(); >+ //for each entity and trait call "add". assistant will handle merge. > if (mk != null) {//possible that model was not loaded > traverseAndAdd(assistant, mk); > } else if (StandardModelFactory.DEBUG_MD_LOAD) { >- JSFCommonPlugin.log(IStatus.ERROR,"Unable to load source model: "+assistant.getSourceModelProvider()); >+ JSFCommonPlugin.log(IStatus.ERROR,"Unable to load source model: "+assistant.getSourceModelProvider()); //$NON-NLS-1$ > } > } > } >Index: src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceTypesRegistry.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceTypesRegistry.java,v >retrieving revision 1.3.10.2 >diff -u -r1.3.10.2 DomainSourceTypesRegistry.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceTypesRegistry.java 12 Nov 2009 21:54:13 -0000 1.3.10.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceTypesRegistry.java 13 Nov 2009 17:49:26 -0000 >@@ -30,10 +30,9 @@ > * Registry of Domain Source Types loaded from domainSourceModelTypes ext-pt. > */ > public class DomainSourceTypesRegistry{ >- private static final String EXTENSION_POINT_ID = "domainSourceModelTypes"; >+ private static final String EXTENSION_POINT_ID = "domainSourceModelTypes"; //$NON-NLS-1$ > private static DomainSourceTypesRegistry INSTANCE; > private Map/*<String, List/*<DomainSourceModelTypeDescriptor>>*/ domainSourceTypeDescriptors; >- private Map/*<String, List/*<IDomainSourceModelType>*/ domainSourceTypes; > > private DomainSourceTypesRegistry(){ > init(); >@@ -53,10 +52,7 @@ > * @param domain identifier > * @return list of <code>IDomainSourceModelType</code> sorted in descending order by ordinal > */ >- public List/*<IDomainSourceModelType>*/ getDomainSourceTypes(String domain){ >- if (getDomainSourceTypes().containsKey(domain)) >- return (List)getDomainSourceTypes().get(domain); >- >+ public List/*<IDomainSourceModelType>*/ getDomainSourceTypes(String domain){ > List/*<DomainSourceModelTypeDescriptor>*/ list = getDomainSourceModelDescriptors(domain); > List/*<IDomainSourceModelType>*/ types = new ArrayList/*<IDomainSourceModelType>*/(); > for(Iterator/*<DomainSourceModelTypeDescriptor>*/ it=list.iterator();it.hasNext();){ >@@ -78,7 +74,6 @@ > > }); > >- getDomainSourceTypes().put(domain, types); > return types; > } > >@@ -110,12 +105,12 @@ > } > > private void addDomainSourceTypeDescriptor(IConfigurationElement element) { >- String domainId = element.getAttribute("domainId"); >- String srcHdlrId = element.getAttribute("domainSourceModelTypeId"); >- String locator = element.getAttribute("locator"); >- String ordinalStr = element.getAttribute("ordinal"); >+ String domainId = element.getAttribute("domainId"); //$NON-NLS-1$ >+ String srcHdlrId = element.getAttribute("domainSourceModelTypeId"); //$NON-NLS-1$ >+ String locator = element.getAttribute("locator"); //$NON-NLS-1$ >+ String ordinalStr = element.getAttribute("ordinal"); //$NON-NLS-1$ > int ordinal = 1; >- if (ordinalStr!=null && !ordinalStr.equals("")){ >+ if (ordinalStr!=null && !ordinalStr.equals("")){ //$NON-NLS-1$ > ordinal = Integer.parseInt(ordinalStr); > } > DomainSourceModelTypeDescriptor d = new DomainSourceModelTypeDescriptor(domainId, srcHdlrId, locator, element.getContributor().getName(), ordinal); >@@ -134,11 +129,11 @@ > return domainSourceTypeDescriptors; > } > >- private Map/*<String, List/*<IDomainSourceModelType>>*/ getDomainSourceTypes() { >- if (domainSourceTypes == null){ >- domainSourceTypes = new HashMap/*<String, List/*<IDomainSourceModelType>>*/(); >- } >- return domainSourceTypes; >- } >+// private Map/*<String, List/*<IDomainSourceModelType>>*/ getDomainSourceTypes() { >+// if (domainSourceTypes == null){ >+// domainSourceTypes = new HashMap/*<String, List/*<IDomainSourceModelType>>*/(); >+// } >+// return domainSourceTypes; >+// } > > } >\ No newline at end of file >Index: src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java,v >retrieving revision 1.11.4.2 >diff -u -r1.11.4.2 DomainLoadingStrategy.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java 12 Nov 2009 21:54:13 -0000 1.11.4.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/DomainLoadingStrategy.java 13 Nov 2009 17:49:26 -0000 >@@ -59,7 +59,7 @@ > * @see org.eclipse.jst.jsf.common.metadata.internal.IDomainLoadingStrategy#reload() > */ > public void reload() throws ModelNotSetException { >- System.out.println("reload");//debug >+ //System.out.println("reload");//debug //$NON-NLS-1$ > if (_model == null) > throw new ModelNotSetException(); > >@@ -77,7 +77,7 @@ > */ > protected void mergeModel(MetaDataModel model, List/*<IMetaDataSourceModelProvider>*/ sources) { > >- StandardModelFactory.debug(">> Begin Merge: "+model.getModelKey()+"("+sources.size()+ " sources)", StandardModelFactory.DEBUG_MD_LOAD); >+ StandardModelFactory.debug(">> Begin Merge: "+model.getModelKey()+"("+sources.size()+ " sources)", StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > > IMetaDataModelMergeAssistant assistant = createModelMergeAssistant(model); > for (Iterator/*<IMetaDataSourceModelProvider>*/ it = sources.iterator();it.hasNext();){ >@@ -86,19 +86,19 @@ > while (translators.hasNext()){ > IMetaDataTranslator translator = (IMetaDataTranslator)translators.next(); > if (translator.canTranslate(mds)){ >- StandardModelFactory.debug(">>> Merging: "+model.getModelKey()+"::"+mds, StandardModelFactory.DEBUG_MD_LOAD); >+ StandardModelFactory.debug(">>> Merging: "+model.getModelKey()+"::"+mds, StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$//$NON-NLS-2$ > assistant.setSourceModelProvider(mds); > try { > translator.translate(assistant); > } catch (Exception e) { >- StandardModelFactory.debug(">>>> Error during translate/merge of: "+model.getModelKey()+": "+mds, StandardModelFactory.DEBUG_MD_LOAD); >- JSFCommonPlugin.log(IStatus.ERROR, "Error during load of: "+mds, e); >+ StandardModelFactory.debug(">>>> Error during translate/merge of: "+model.getModelKey()+": "+mds, StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$ //$NON-NLS-2$ >+ JSFCommonPlugin.log(IStatus.ERROR, "Error during load of: "+mds, e); //$NON-NLS-1$ > } > } > } > } > assistant.setMergeComplete(); >- StandardModelFactory.debug(">> End Merge: "+model.getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); >+ StandardModelFactory.debug(">> End Merge: "+model.getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$ > } > > /** >@@ -135,25 +135,23 @@ > List/*<IMetaDataSourceModelProvider>*/ sources = new ArrayList/*<IMetaDataSourceModelProvider>*/(); > for (Iterator/*<IDomainSourceModelType>*/ it = sourceTypes.iterator();it.hasNext();){ > IDomainSourceModelType sourceType = (IDomainSourceModelType)it.next(); >- IMetaDataLocator locator = sourceType.getLocator(); >- //We MUST set the sourceType here to associate the handler with locator to use for the source models >- locator.setDomainSourceModelType(sourceType); >- >- //set project context in locator for those that care >- if (locator instanceof IPathSensitiveMetaDataLocator) >- ((IPathSensitiveMetaDataLocator)locator).setProjectContext(model.getModelKey().getProject()); >- >- List/*<IMetaDataSourceModelProvider>*/ providers = sourceType.getLocator().locateMetaDataModelProviders(model.getModelKey().getUri()); >- if (providers != null && !providers.isEmpty()){ >- for (Iterator mdProviders =providers.iterator();mdProviders.hasNext();){ >- IMetaDataSourceModelProvider provider = (IMetaDataSourceModelProvider)mdProviders.next(); >- //We MUST set the sourceType here to associate the translators to use for the source models >- provider.setLocator(sourceType.getLocator()); >- sources.add(provider); >+ IMetaDataLocator locator = sourceType.getLocator(model.getModelKey().getProject()); >+ if (locator != null) { >+ //We MUST set the sourceType here to associate the handler with locator to use for the source models >+ locator.setDomainSourceModelType(sourceType); >+ >+ List/*<IMetaDataSourceModelProvider>*/ providers = locator.locateMetaDataModelProviders(model.getModelKey().getUri()); >+ if (providers != null && !providers.isEmpty()){ >+ for (Iterator mdProviders =providers.iterator();mdProviders.hasNext();){ >+ IMetaDataSourceModelProvider provider = (IMetaDataSourceModelProvider)mdProviders.next(); >+ //We MUST set the sourceType here to associate the translators to use for the source models >+ provider.setLocator(locator); >+ sources.add(provider); >+ } > } >+ //listen for changes >+ locator.addObserver(this); > } >- //listen for changes >- sourceType.getLocator().addObserver(this); > } > return sources; > } >Index: src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceModelTypeDescriptor.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceModelTypeDescriptor.java,v >retrieving revision 1.8.4.2 >diff -u -r1.8.4.2 DomainSourceModelTypeDescriptor.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceModelTypeDescriptor.java 12 Nov 2009 21:54:13 -0000 1.8.4.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/DomainSourceModelTypeDescriptor.java 13 Nov 2009 17:49:26 -0000 >@@ -15,6 +15,7 @@ > import java.util.Iterator; > import java.util.Set; > >+import org.eclipse.core.resources.IProject; > import org.eclipse.core.runtime.IConfigurationElement; > import org.eclipse.core.runtime.IExtensionPoint; > import org.eclipse.core.runtime.IExtensionRegistry; >@@ -28,15 +29,14 @@ > * <code>com.eclipse.jst.jsf.common.domainSourceModelTypeTranslators</code> ext-pt > */ > public class DomainSourceModelTypeDescriptor { >- private static final String TRANSLATORS_EXTENSION_POINT_ID = "domainSourceModelTypeTranslators"; >- private static final String STANDARD_FILE_NULL_TRANSLATOR = "org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataFilesTranslator"; >- private String domain = "DEFAULT"; >+ private static final String TRANSLATORS_EXTENSION_POINT_ID = "domainSourceModelTypeTranslators"; //$NON-NLS-1$ >+ private static final String STANDARD_FILE_NULL_TRANSLATOR = "org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataFilesTranslator"; //$NON-NLS-1$ >+ private String domain = "DEFAULT"; //$NON-NLS-1$ > private String domainSourceModelTypeId; >- private String locatorClassName = "org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataLocator"; >+ private String locatorClassName = "org.eclipse.jst.jsf.common.metadata.internal.StandardMetaDataLocator"; //$NON-NLS-1$ > private Set translatorDescriptors; > private String bundleId = JSFCommonPlugin.PLUGIN_ID; > private int ordinal; >- private IDomainSourceModelType _instance; > > /** > * Constructor >@@ -70,7 +70,7 @@ > IConfigurationElement[] elements = point.getConfigurationElements(); > for (int i = 0; i < elements.length; i++) { > IConfigurationElement element = elements[i]; >- String srcHdlrId = element.getAttribute("domainSourceModelTypeId"); >+ String srcHdlrId = element.getAttribute("domainSourceModelTypeId"); //$NON-NLS-1$ > if (srcHdlrId.equals(domainSourceModelTypeId)) > addTranslatorDescriptor(element); > } >@@ -78,7 +78,7 @@ > } > > private void addTranslatorDescriptor(IConfigurationElement element) { >- String translator = element.getAttribute("translatorClass"); >+ String translator = element.getAttribute("translatorClass"); //$NON-NLS-1$ > DomainSourceModelTranslatorDescriptor d = new DomainSourceModelTranslatorDescriptor(translator, element.getContributor().getName()); > getTranslatorDescriptors().add(d); > } >@@ -98,19 +98,9 @@ > } > > /** >- * @return singleton instance of the {@link IDomainSourceModelType} >+ * @return new instance of the {@link IDomainSourceModelType} > */ > public IDomainSourceModelType getInstance(){ >- if (_instance == null){ >- _instance = newInstance(); >- } >- return _instance; >- } >- /** >- * @return new instance of {@link IDomainSourceModelType} >- */ >- private IDomainSourceModelType newInstance(){ >- > return new DomainSourceModelTypeImpl(); > } > >@@ -143,9 +133,9 @@ > /* (non-Javadoc) > * @see org.eclipse.jst.jsf.common.metadata.internal.IDomainSourceModelType#getLocator() > */ >- public IMetaDataLocator getLocator() { >+ public IMetaDataLocator getLocator(IProject project) { > if (locator == null){ >- locator = MetaDataLocatorFactory.getInstance().getLocator(locatorClassName, bundleId); >+ locator = MetaDataLocatorFactory.getInstance().getLocator(locatorClassName, bundleId, project); > } > > return locator; >@@ -165,12 +155,12 @@ > * @see java.lang.Object#toString() > */ > public String toString(){ >- StringBuffer buf = new StringBuffer("DomainSourceModelTypeImpl"); >- buf.append("(domain = "); >+ StringBuffer buf = new StringBuffer("DomainSourceModelTypeImpl"); //$NON-NLS-1$ >+ buf.append("(domain = "); //$NON-NLS-1$ > buf.append(getDomain()); >- buf.append(", locator = "); >- buf.append(getLocator()); >- buf.append(")"); >+ buf.append(", locator = "); //$NON-NLS-1$ >+ buf.append(locator != null ? locator.toString() : "null"); //$NON-NLS-1$ >+ buf.append(")"); //$NON-NLS-1$ > return buf.toString(); > } > >@@ -187,10 +177,10 @@ > return translators; > } catch (InstantiationException e) { > // TODO: other error handling? >- JSFCommonPlugin.log(e, "Error in createTranslatorInstances(STANDARD_FILE_NULL_TRANSLATOR)"); >+ JSFCommonPlugin.log(e, "Error in createTranslatorInstances(STANDARD_FILE_NULL_TRANSLATOR)"); //$NON-NLS-1$ > } catch (IllegalAccessException e) { > // TODO: other error handling? >- JSFCommonPlugin.log(e, "Error in createTranslatorInstances(STANDARD_FILE_NULL_TRANSLATOR)"); >+ JSFCommonPlugin.log(e, "Error in createTranslatorInstances(STANDARD_FILE_NULL_TRANSLATOR)"); //$NON-NLS-1$ > } > > } >@@ -203,10 +193,10 @@ > translators.add(klass.newInstance()); > } catch (InstantiationException e) { > // TODO: other error handling? >- JSFCommonPlugin.log(e, "Error in createTranslatorInstances"); >+ JSFCommonPlugin.log(e, "Error in createTranslatorInstances"); //$NON-NLS-1$ > } catch (IllegalAccessException e) { > // TODO: other error handling? >- JSFCommonPlugin.log(e, "Error in createTranslatorInstances"); >+ JSFCommonPlugin.log(e, "Error in createTranslatorInstances"); //$NON-NLS-1$ > } > } > return translators; >Index: src/org/eclipse/jst/jsf/common/metadata/internal/IDomainSourceModelType.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/IDomainSourceModelType.java,v >retrieving revision 1.2.6.2 >diff -u -r1.2.6.2 IDomainSourceModelType.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/IDomainSourceModelType.java 12 Nov 2009 21:54:12 -0000 1.2.6.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/IDomainSourceModelType.java 13 Nov 2009 17:49:26 -0000 >@@ -13,6 +13,8 @@ > > import java.util.Set; > >+import org.eclipse.core.resources.IProject; >+ > /** > * Binds a domain of metadata to a source model type which is defined by a {@link IMetaDataLocator} > * and set of {@link IMetaDataTranslator}s >@@ -24,9 +26,10 @@ > */ > public String getDomain(); > /** >- * @return IMetaDataLocator >+ * @param project - may be null >+ * @return instance of IMetaDataLocator - may return null if the locator cannot operate in the current context > */ >- public IMetaDataLocator getLocator(); >+ public IMetaDataLocator getLocator(IProject project); > // public int getOrdinal(); > /** > * @return set of {@link IMetaDataTranslator}s for the domain source model type >Index: src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataLocatorFactory.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataLocatorFactory.java,v >retrieving revision 1.4.6.2 >diff -u -r1.4.6.2 MetaDataLocatorFactory.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataLocatorFactory.java 12 Nov 2009 21:54:13 -0000 1.4.6.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataLocatorFactory.java 13 Nov 2009 17:49:26 -0000 >@@ -10,10 +10,17 @@ > *******************************************************************************/ > package org.eclipse.jst.jsf.common.metadata.internal; > >+import java.util.ArrayList; > import java.util.HashMap; > import java.util.Iterator; >+import java.util.List; > import java.util.Map; >+import java.util.StringTokenizer; > >+import org.eclipse.core.resources.IProject; >+import org.eclipse.core.resources.IResourceChangeEvent; >+import org.eclipse.core.resources.IResourceChangeListener; >+import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.IStatus; > import org.eclipse.jst.jsf.common.JSFCommonPlugin; > >@@ -21,56 +28,84 @@ > * Creates instances of IMetaDataLocators and caches them so that there is only one instance of a particular locator > * when client requests one. > */ >-public class MetaDataLocatorFactory { >+public class MetaDataLocatorFactory >+ implements IResourceChangeListener { >+ > private static MetaDataLocatorFactory INSTANCE = null; >+ private Map<String, IMetaDataLocator> _locators; > >+ private static final boolean DEBUG = false; > /** > * @return singleton instance of the MetaDataLocatorFactory > */ > public synchronized static MetaDataLocatorFactory getInstance(){ > if (INSTANCE == null){ > INSTANCE = new MetaDataLocatorFactory(); >+ ResourcesPlugin.getWorkspace().addResourceChangeListener(INSTANCE, IResourceChangeEvent.PRE_CLOSE); > } > return INSTANCE; > } > >- private HashMap _locators; > >- private Map getLocators() { >+ >+ private Map<String, IMetaDataLocator> getLocators() { > if (_locators == null){ >- _locators = new HashMap(); >+ _locators = new HashMap<String, IMetaDataLocator>(); > } > return _locators; > } > > /** >- * @param locatorClassName >- * @param bundleId >- * @return IMetaDataLocator >+ * @param locatorClassName - may NOT be null >+ * @param bundleId - may NOT be null >+ * @param project - may be null >+ * @return shared instance of IMetaDataLocator >+ * may return null if is IPathSensitiveMetaDataLocator and there is no project context > */ >- public IMetaDataLocator getLocator(String locatorClassName, String bundleId){ >+ public IMetaDataLocator getLocator(final String locatorClassName, final String bundleId, final IProject project){ >+ final Class klass = JSFCommonPlugin.loadClass(locatorClassName, bundleId); > String key = getKey(locatorClassName, bundleId); >- IMetaDataLocator locator = (IMetaDataLocator)getLocators().get(key); >- if (locator == null){ >- Class klass = JSFCommonPlugin.loadClass(locatorClassName, bundleId); >- try { >- locator = (IMetaDataLocator)klass.newInstance(); >- if (locator != null) { >+ IMetaDataLocator locator = null; >+ try { >+ IMetaDataLocator tempLocator = (IMetaDataLocator)klass.newInstance(); >+ if (tempLocator != null) { >+ if (tempLocator instanceof IPathSensitiveMetaDataLocator) { >+ if (project == null) >+ return null; >+ >+ key = getKey(locatorClassName, project.getName()); >+ } >+ >+ locator = getLocators().get(key); >+ if (locator == null) { >+ locator = tempLocator; >+ if (locator instanceof IPathSensitiveMetaDataLocator) >+ ((IPathSensitiveMetaDataLocator)locator).setProjectContext(project); >+ >+ if (DEBUG) >+ System.out.println("Created locator: "+locator.toString()); //$NON-NLS-1$ >+ > getLocators().put(key, locator); > locator.startLocating(); > } >- } catch (InstantiationException e) { >- JSFCommonPlugin.log(IStatus.ERROR, "Could not instantiate IMetaDataLocator: "+key, e); >- } catch (IllegalAccessException e) { >- JSFCommonPlugin.log(IStatus.ERROR, "IllegalAccessException while creating IMetaDataLocator: "+key, e); > } >+ } catch (InstantiationException e) { >+ JSFCommonPlugin.log(IStatus.ERROR, "Could not instantiate IMetaDataLocator: "+key, e); //$NON-NLS-1$ >+ } catch (IllegalAccessException e) { >+ JSFCommonPlugin.log(IStatus.ERROR, "IllegalAccessException while creating IMetaDataLocator: "+key, e); //$NON-NLS-1$ > } >+ > return locator; > } > >- private String getKey(String locatorClassName, String bundleId) { >- StringBuffer buf = new StringBuffer(bundleId); >- buf.append(":"); >+ /** >+ * @param locatorClassName >+ * @param contextId - this may be the bundleID or the projectName if it is a path sensitive locator >+ * @return key >+ */ >+ private String getKey(final String locatorClassName, final String contextId) { >+ StringBuffer buf = new StringBuffer(contextId); >+ buf.append(":"); //$NON-NLS-1$ > buf.append(locatorClassName); > return buf.toString(); > } >@@ -79,10 +114,56 @@ > * Stops and disposes all locators > */ > public void dispose(){ >+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); > for (Iterator it=getLocators().values().iterator();it.hasNext();){ > IMetaDataLocator locator = (IMetaDataLocator)it.next(); > locator.stopLocating(); > } > getLocators().clear(); > } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see >+ * org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org >+ * .eclipse.core.resources.IResourceChangeEvent) >+ */ >+ public void resourceChanged(final IResourceChangeEvent event) { >+ if (event.getType() == IResourceChangeEvent.PRE_CLOSE >+ || event.getType() == IResourceChangeEvent.PRE_DELETE) { >+ // a project is closing - release and cleanup >+ final IProject aProject = (IProject) event.getResource(); >+ >+ if (aProject != null) { >+ List<String> locatorsToRemove = new ArrayList<String>(); >+ for (Iterator it=getLocators().keySet().iterator();it.hasNext();){ >+ String key = (String)it.next(); >+ if (locatorIsForProject(key, aProject.getName())) { >+ locatorsToRemove.add(key); >+ } >+ } >+ >+ if (! locatorsToRemove.isEmpty()) { >+ for (String key : locatorsToRemove) { >+ IMetaDataLocator locator = getLocators().get(key); >+ >+ if (DEBUG) >+ System.out.println("Removed locator: "+locator.toString()); //$NON-NLS-1$ >+ >+ locator.stopLocating(); >+ getLocators().remove(key); >+ } >+ } >+ } >+ } >+ } >+ >+ private boolean locatorIsForProject(final String key, final String projectName) { >+ StringTokenizer t = new StringTokenizer(key, ":"); //$NON-NLS-1$ >+ String contextId = t.nextToken(); >+ if (contextId.equals(projectName)) >+ return true; >+ return false; >+ } > } >Index: src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java,v >retrieving revision 1.13.4.2 >diff -u -r1.13.4.2 MetaDataModelManager.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java 12 Nov 2009 21:54:13 -0000 1.13.4.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelManager.java 13 Nov 2009 17:49:26 -0000 >@@ -137,10 +137,10 @@ > synchronized (GLOBAL_INSTANCE_LOCK) { > ModelKeyDescriptor modelKeyDescriptor = StandardModelFactory.getInstance().createModelKeyDescriptor(modelContext); > >- StandardModelFactory.debug(">START getModel: "+modelKeyDescriptor, StandardModelFactory.DEBUG_MD_GET); >+ StandardModelFactory.debug(">START getModel: "+modelKeyDescriptor, StandardModelFactory.DEBUG_MD_GET); //$NON-NLS-1$ > > MetaDataModel model = models.get(modelKeyDescriptor); >- if (model == null || project == null) { >+ if (model == null || project == null) { //<--- why is the project == null test here?!?! > // long in = System.currentTimeMillis(); > model = loadMetadata(modelKeyDescriptor); > //System.out.println("Time to load "+modelContext.getURI()+": "+ >@@ -157,7 +157,7 @@ > ((Model) model.getRoot()) > .setCurrentModelContext(modelKeyDescriptor); > >- StandardModelFactory.debug(">END getModel: "+modelKeyDescriptor, StandardModelFactory.DEBUG_MD_GET); >+ StandardModelFactory.debug(">END getModel: "+modelKeyDescriptor, StandardModelFactory.DEBUG_MD_GET); //$NON-NLS-1$ > return model; > } > } >@@ -194,7 +194,7 @@ > if (!Thread.holdsLock(GLOBAL_INSTANCE_LOCK)) { > JSFCommonPlugin > .log(IStatus.ERROR, >- "Internal Error: loadMetadata must not be called if class lock not held"); >+ "Internal Error: loadMetadata must not be called if class lock not held"); //$NON-NLS-1$ > return null; > } > >Index: src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java >=================================================================== >RCS file: /cvsroot/webtools/org.eclipse.jsf/components/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java,v >retrieving revision 1.12.4.2 >diff -u -r1.12.4.2 MetaDataModelMergeAssistantImpl.java >--- src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java 12 Nov 2009 21:54:12 -0000 1.12.4.2 >+++ src/org/eclipse/jst/jsf/common/metadata/internal/MetaDataModelMergeAssistantImpl.java 13 Nov 2009 17:49:26 -0000 >@@ -43,7 +43,6 @@ > IMetaDataModelMergeAssistant { > > private MetaDataModel mergedModel; >- private Copier copier; > private SimpleEntityQueryVisitorImpl entityVisitor; > private SimpleTraitQueryVisitorImpl traitVisitor; > private IMetaDataSourceModelProvider provider; >@@ -54,7 +53,6 @@ > */ > public MetaDataModelMergeAssistantImpl(MetaDataModel model) { > this.mergedModel = model; >- copier = new Copier(); > entityVisitor = new SimpleEntityQueryVisitorImpl(new HierarchicalSearchControl(1, > HierarchicalSearchControl.SCOPE_ALL_LEVELS)); > traitVisitor = new SimpleTraitQueryVisitorImpl(new SearchControl(1)); >@@ -110,7 +108,7 @@ > ret = (Entity)rs.getResults().get(0); > rs.close(); > } catch (MetaDataException e) { >- JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedEntity()", e); >+ JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedEntity()", e); //$NON-NLS-1$ > } > return ret; > } >@@ -175,6 +173,7 @@ > } > > private /*synchronized*/ Entity addEntityInternal(final Entity parent, final Entity entity) { >+ Copier copier = new Copier(); > Entity mmEntity =(Entity)copier.copy(entity); > copier.copyReferences(); > parent.getChildEntities().add(mmEntity); >@@ -209,11 +208,11 @@ > public void setMergeComplete() { > Model model = (Model)getMergedModel().getRoot(); > if (model != null){ >- StandardModelFactory.debug(">> Begin processIncludeGroups for: "+getMergedModel().getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); >+ StandardModelFactory.debug(">> Begin processIncludeGroups for: "+getMergedModel().getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$ > > processIncludeGroups(model); > >- StandardModelFactory.debug(">> End processIncludeGroups for: "+getMergedModel().getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); >+ StandardModelFactory.debug(">> End processIncludeGroups for: "+getMergedModel().getModelKey(),StandardModelFactory.DEBUG_MD_LOAD); //$NON-NLS-1$ > } > } > >@@ -226,7 +225,8 @@ > * @param trait > * @return merged Trait > */ >- private Trait addTraitInternal(final Entity parent, final Trait trait) { >+ private Trait addTraitInternal(final Entity parent, final Trait trait) { >+ Copier copier = new Copier(); > Trait mmTrait =(Trait)copier.copy(trait); > copier.copyReferences(); > parent.getTraits().add(mmTrait); >@@ -254,7 +254,7 @@ > ret = (Entity)rs.getResults().get(0); > rs.close(); > } catch (MetaDataException e) { >- JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedEntity()", e); >+ JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedEntity()", e); //$NON-NLS-1$ > } > return ret; > } >@@ -265,7 +265,7 @@ > while (e.eContainer() != null){ > buf.insert(0, e.getId()); > if (e.eContainer()!=null && e.eContainer().eContainer() != null) >- buf.insert(0,"/"); >+ buf.insert(0,"/"); //$NON-NLS-1$ > e = (Entity)e.eContainer(); > } > return buf.toString(); >@@ -287,7 +287,7 @@ > ret = (Trait)rs.getResults().get(0); > rs.close(); > } catch (MetaDataException e) { >- JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedTrait()", e); >+ JSFCommonPlugin.log(IStatus.ERROR, "Error in getMergedTrait()", e); //$NON-NLS-1$ > } > return ret; > } >@@ -337,8 +337,8 @@ > addIncludeRefs(entity, entityGroup); > } > else { >- JSFCommonPlugin.log(IStatus.ERROR, "Unable to load external metadata model refs for "+modelContext.getURI() >- + " into "+ entity.getModel().getCurrentModelContext().getUri()); >+ JSFCommonPlugin.log(IStatus.ERROR, "Unable to load external metadata model refs for "+modelContext.getURI() //$NON-NLS-1$ >+ + " into "+ entity.getModel().getCurrentModelContext().getUri()); //$NON-NLS-1$ > } > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 293467
: 152178