From 35dff630906be43187f216bf91c8c82c3f64d6c5 Mon Sep 17 00:00:00 2001 From: davidaca Date: Fri, 5 Dec 2025 01:16:50 +0000 Subject: [PATCH 1/2] Bug 580555 - No IModelProvider exists for project {1} of version: {2} This change levels the logging messages to INFO. The exception NPE is not used anymore to avoid alarm but keeping the stack trace in the message as it could be useful. Also it gives the opportunity to turn off/on the output with property eclipse.log.level=[INFO|WARNING|ERROR] --- .../jst/j2ee/model/ModelProviderManager.java | 381 +++++++++++++++++- 1 file changed, 374 insertions(+), 7 deletions(-) diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java index 987a9c2019..d31badf674 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java @@ -15,6 +15,7 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; @@ -27,7 +28,347 @@ import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource; import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper; import org.eclipse.wst.common.project.facet.core.IFacetedProject; -import org.eclipse.wst.common.project.facet.core.IProjectFacet; +import org.eclipse.wst.common.project.facet.c * Licensed Material - Property of IBM +package org.eclipse.jst.j2ee.model; + +import java.util.ArrayList; + +public class ModelProviderManager { + +public static class ModelProviderKey { + + protected IProjectFacetVersion version; + protected int priority; + + public ModelProviderKey() { + super(); + } + @Override + public boolean equals(Object aOther){ + if( this == aOther ) + return true; + + ModelProviderKey otherKey = (ModelProviderKey)aOther; + if( version.equals( otherKey.version) ) + return true; + return false; + } + + @Override + public int hashCode() { + return version.hashCode(); + } + } +private static class ResourceSetListener extends AdapterImpl { + /* + * @see Adapter#notifyChanged(new ENotificationImpl((InternalEObject)Notifier, + * int,(EStructuralFeature) EObject, Object, Object, int)) + */ + @Override + public void notifyChanged(Notification notification) { + switch (notification.getEventType()) { + case Notification.ADD : + addedResource((Resource) notification.getNewValue()); + break; + case Notification.REMOVE : + removedResource((Resource) notification.getOldValue()); + break; + case Notification.REMOVE_MANY : + removedResources((List) notification.getOldValue()); + break; + } + } +} +private static WeakHashMap modelsProviders = new WeakHashMap(); +private static final int DEFAULT_PRIORITY = 100; +private static HashMap providers; +protected static HashMap resourceSetListeners; + + /** + * + * @param + * @param + * @return IModelProvider for the given project of the given version, NULL if no IModelProvider exists for project, version pair + */ + public static IModelProvider getModelProvider(IProject project, IProjectFacetVersion vers) { + + IModelProviderFactory factory = getProvider(vers); + if(factory != null){ + startListeningToResourceSet(project); + return factory.create(project); + } + + String infoMessage = J2EECommonMessages.getResourceString( + J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {project, vers}); + + StringBuffer buffer = new StringBuffer(); + buffer.append(infoMessage) + .append(System.lineSeparator()); + + for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { + buffer.append(element) + .append(System.lineSeparator()); + } + + J2EEPlugin.log( + J2EEPlugin.createStatus( + IStatus.INFO, + buffer.toString() + ) + ); + + return null; + } + + + /** + * + * @param + * @param + * @return IModelProvider for the given component of the given version, NULL if no IModelProvider exists for virtual component/version pair + */ + public static IModelProvider getModelProvider(IVirtualComponent aModule, IProjectFacetVersion vers) { + + IModelProviderFactory factory = getProvider(vers); + if(factory != null){ + IModelProvider mp = factory.create(aModule); + addProvider(mp); + return mp; + } + + String infoMessage = J2EECommonMessages.getResourceString( + J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {aModule, vers}); + + StringBuffer buffer = new StringBuffer(); + buffer.append(infoMessage) + .append(System.lineSeparator()); + + for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { + buffer.append(element) + .append(System.lineSeparator()); + } + + J2EEPlugin.log( + J2EEPlugin.createStatus( + IStatus.INFO, + buffer.toString() + ) + ); + + return null; + } + + + private static void addProvider(IModelProvider mp) { + modelsProviders.put(mp, null); + + } + + /** + * Notify all editModels of the change. + */ + private static void addedResource(Resource addedResource) { + if ((addedResource != null) && (addedResource instanceof CompatibilityXMIResource)) + ((CompatibilityXMIResource) addedResource).setFormat(CompatibilityXMIResource.FORMAT_MOF5); + IProject proj = WorkbenchResourceHelper.getProject(addedResource); + IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.ADDED_RESOURCE, null,proj); + event.addResource(addedResource); + notifyModelProviders(event); + + } + /** + * Notify all editModels of the change. + */ + protected static void notifyModelProviders(IModelProviderEvent anEvent) { + if ((anEvent == null) || (modelsProviders.size() == 0)) + return; + List aList = new ArrayList(); + synchronized (modelsProviders) { + aList.addAll(modelsProviders.keySet()); + } + + for (int i = 0; i < aList.size(); i++) { + IModelProvider mod; + mod = (IModelProvider) aList.get(i); + try { + if (mod instanceof IModelProviderListener) + { + ((IModelProviderListener)mod).modelsChanged(anEvent); + } + } catch (Exception e) { + J2EEPlugin.logError(e); + } + } + } + + /** + * Notify all editModels of the change. + */ + private static void removedResource(Resource removedResource) { + IProject proj = WorkbenchResourceHelper.getProject(removedResource); + IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.REMOVED_RESOURCE, null,proj); + event.addResource(removedResource); + notifyModelProviders(event); + + } + + /** + * Notify all editModels of the change. + */ + private static void removedResources(List removedResources) { + Resource firstRes = (Resource)removedResources.get(0); + IProject proj = WorkbenchResourceHelper.getProject(firstRes); + IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.REMOVED_RESOURCE, null,proj); + event.addResources(removedResources); + notifyModelProviders(event); + + } + + /** + * Used to register an IModelProviderFactory against a facet version + * + * @param providerFactory + * - {@link IModelProviderFactory} + * @param v + * - {@link IProjectFacetVersion} + * @param priority + * - {@link String}- Used to allow multiple instances, the + * highest priority is chosen. Priority '0' is higher that + * priority '1'. If priorities are equal the new providerFactory + * is chosen. + */ + public static void registerProvider(IModelProviderFactory providerFactory, IProjectFacetVersion v, String priority) { + + int newPriority = (priority != null) ? Integer.parseInt(priority) : DEFAULT_PRIORITY; + int currentPriority = getProviderPriority(v); + if (newPriority <= currentPriority) { + ModelProviderKey key = createProviderKey(v, newPriority); + getProviders().put(key, providerFactory); + } + } + + private static IModelProviderFactory getProvider(IProjectFacetVersion v) { + Set keys = getProviders().keySet(); + for (Iterator iterator = keys.iterator(); iterator.hasNext();) { + ModelProviderKey key = (ModelProviderKey) iterator.next(); + if (key.version.equals(v)) + return (IModelProviderFactory)providers.get(key); + } + return null; + } + public static IModelProviderFactory getProvider(IProject p) { + IProjectFacetVersion facetVersion = getDefaultFacet(p); + return getProvider(facetVersion); + } + private static int getProviderPriority(IProjectFacetVersion v) { + Set keys = getProviders().keySet(); + for (Iterator iterator = keys.iterator(); iterator.hasNext();) { + ModelProviderKey key = (ModelProviderKey) iterator.next(); + if (key.version.equals(v)) + return key.priority; + } + return DEFAULT_PRIORITY; + } + protected static Adapter getResourceSetListener(IProject project) { + if (resourceSetListeners == null) + resourceSetListeners = new HashMap(); + Adapter listener = (Adapter)resourceSetListeners.get(project); + if (listener == null) { + listener = new ResourceSetListener(); + resourceSetListeners.put(project, listener); + } + return listener; + } + + private static J2EEModelProviderRegistry registry; + + + private static void initProviders() { + //Make sure both variables are null to prevent re-entrant behavior + if (registry == null && providers == null) { + providers = new HashMap(); + registry = J2EEModelProviderRegistry.getInstance(); + } + + } + private static void startListeningToResourceSet(IProject project) { + ResourceSet set = WorkbenchResourceHelper.getResourceSet(project); + Adapter listener = getResourceSetListener(project); + if (set != null && !set.eAdapters().contains(listener)) + set.eAdapters().add(listener); + } + private static ModelProviderKey createProviderKey(IProjectFacetVersion fv, int priority) { + ModelProviderKey key = new ModelProviderKey(); + key.priority = priority; + key.version = fv; + return key; + } + + public static IModelProvider getModelProvider(IProject proj) { + IProjectFacetVersion facetVersion = getDefaultFacet(proj); + return getModelProvider(proj, facetVersion); + + } + + public static IModelProvider getModelProvider(IVirtualComponent aModule) { + IProjectFacetVersion facetVersion = getDefaultFacet(aModule); + return getModelProvider(aModule, facetVersion); + } + + public static boolean hasModelProvider(IProject proj){ + IProjectFacetVersion facetVersion = getDefaultFacet(proj); + if (getProvider(facetVersion)== null) + return false; + return true; + } + + private static IProjectFacetVersion getDefaultFacet(IProject proj) { + String type = J2EEProjectUtilities.getJ2EEProjectType(proj); + if( ProjectFacetsManager.isProjectFacetDefined(type)) { + IProjectFacet facet = ProjectFacetsManager.getProjectFacet(type); + IFacetedProject fp = null; + try { + fp = ProjectFacetsManager.create(proj); + } catch (CoreException e) { + J2EEPlugin.logError(e); + } + if (fp != null && facet != null) { + return fp.getInstalledVersion(facet); + } + } + return null; + } + + private static IProjectFacetVersion getDefaultFacet(IVirtualComponent aModule) { + String type = J2EEProjectUtilities.getJ2EEComponentType(aModule); + IProjectFacet facet = ProjectFacetsManager.getProjectFacet(type); + IFacetedProject fp = null; + try { + if (aModule.isBinary()) + { + + } + else + { + fp = ProjectFacetsManager.create(aModule.getProject()); + } + } catch (CoreException e) { + J2EEPlugin.logError(e); + } + if (fp != null && facet != null) { + return fp.getInstalledVersion(facet); + } + return null; + } + + private synchronized static HashMap getProviders() { + if (registry == null) + initProviders(); + return providers; + } + +} +ore.IProjectFacet; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; @@ -96,11 +437,24 @@ public static IModelProvider getModelProvider(IProject project, IProjectFacetVer return factory.create(project); } - String errorMessage = J2EECommonMessages.getResourceString( + String infoMessage = J2EECommonMessages.getResourceString( J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {project, vers}); - Throwable error = new NullPointerException(errorMessage); - J2EEPlugin.logError(error); + StringBuffer buffer = new StringBuffer(); + buffer.append(infoMessage) + .append(System.lineSeparator()); + + for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { + buffer.append(element) + .append(System.lineSeparator()); + } + + J2EEPlugin.log( + J2EEPlugin.createStatus( + IStatus.INFO, + buffer.toString() + ) + ); return null; } @@ -121,11 +475,24 @@ public static IModelProvider getModelProvider(IVirtualComponent aModule, IProjec return mp; } - String errorMessage = J2EECommonMessages.getResourceString( + String infoMessage = J2EECommonMessages.getResourceString( J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {aModule, vers}); - Throwable error = new NullPointerException(errorMessage); - J2EEPlugin.logError(error); + StringBuffer buffer = new StringBuffer(); + buffer.append(infoMessage) + .append(System.lineSeparator()); + + for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { + buffer.append(element) + .append(System.lineSeparator()); + } + + J2EEPlugin.log( + J2EEPlugin.createStatus( + IStatus.INFO, + buffer.toString() + ) + ); return null; } From b58b28c28259616022e6eb187710c601e7a7de23 Mon Sep 17 00:00:00 2001 From: davidaca Date: Fri, 5 Dec 2025 01:53:45 +0000 Subject: [PATCH 2/2] Bug 580555 - No IModelProvider exists for project {1} of version: {2} This change levels the logging messages to INFO. The exception NPE is not used anymore to avoid alarm but keeping the stack trace in the message as it could be useful. Also it gives the opportunity to turn off/on the output with property eclipse.log.level=[INFO|WARNING|ERROR] --- .../jst/j2ee/model/ModelProviderManager.java | 342 +----------------- 1 file changed, 1 insertion(+), 341 deletions(-) diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java index d31badf674..81af003886 100644 --- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java +++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/model/ModelProviderManager.java @@ -28,347 +28,7 @@ import org.eclipse.wst.common.internal.emf.resource.CompatibilityXMIResource; import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper; import org.eclipse.wst.common.project.facet.core.IFacetedProject; -import org.eclipse.wst.common.project.facet.c * Licensed Material - Property of IBM -package org.eclipse.jst.j2ee.model; - -import java.util.ArrayList; - -public class ModelProviderManager { - -public static class ModelProviderKey { - - protected IProjectFacetVersion version; - protected int priority; - - public ModelProviderKey() { - super(); - } - @Override - public boolean equals(Object aOther){ - if( this == aOther ) - return true; - - ModelProviderKey otherKey = (ModelProviderKey)aOther; - if( version.equals( otherKey.version) ) - return true; - return false; - } - - @Override - public int hashCode() { - return version.hashCode(); - } - } -private static class ResourceSetListener extends AdapterImpl { - /* - * @see Adapter#notifyChanged(new ENotificationImpl((InternalEObject)Notifier, - * int,(EStructuralFeature) EObject, Object, Object, int)) - */ - @Override - public void notifyChanged(Notification notification) { - switch (notification.getEventType()) { - case Notification.ADD : - addedResource((Resource) notification.getNewValue()); - break; - case Notification.REMOVE : - removedResource((Resource) notification.getOldValue()); - break; - case Notification.REMOVE_MANY : - removedResources((List) notification.getOldValue()); - break; - } - } -} -private static WeakHashMap modelsProviders = new WeakHashMap(); -private static final int DEFAULT_PRIORITY = 100; -private static HashMap providers; -protected static HashMap resourceSetListeners; - - /** - * - * @param - * @param - * @return IModelProvider for the given project of the given version, NULL if no IModelProvider exists for project, version pair - */ - public static IModelProvider getModelProvider(IProject project, IProjectFacetVersion vers) { - - IModelProviderFactory factory = getProvider(vers); - if(factory != null){ - startListeningToResourceSet(project); - return factory.create(project); - } - - String infoMessage = J2EECommonMessages.getResourceString( - J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {project, vers}); - - StringBuffer buffer = new StringBuffer(); - buffer.append(infoMessage) - .append(System.lineSeparator()); - - for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { - buffer.append(element) - .append(System.lineSeparator()); - } - - J2EEPlugin.log( - J2EEPlugin.createStatus( - IStatus.INFO, - buffer.toString() - ) - ); - - return null; - } - - - /** - * - * @param - * @param - * @return IModelProvider for the given component of the given version, NULL if no IModelProvider exists for virtual component/version pair - */ - public static IModelProvider getModelProvider(IVirtualComponent aModule, IProjectFacetVersion vers) { - - IModelProviderFactory factory = getProvider(vers); - if(factory != null){ - IModelProvider mp = factory.create(aModule); - addProvider(mp); - return mp; - } - - String infoMessage = J2EECommonMessages.getResourceString( - J2EECommonMessages.ERR_NO_MODEL_PROVIDER_FOR_PROJECT, new Object[] {aModule, vers}); - - StringBuffer buffer = new StringBuffer(); - buffer.append(infoMessage) - .append(System.lineSeparator()); - - for ( StackTraceElement element : Thread.currentThread().getStackTrace()) { - buffer.append(element) - .append(System.lineSeparator()); - } - - J2EEPlugin.log( - J2EEPlugin.createStatus( - IStatus.INFO, - buffer.toString() - ) - ); - - return null; - } - - - private static void addProvider(IModelProvider mp) { - modelsProviders.put(mp, null); - - } - - /** - * Notify all editModels of the change. - */ - private static void addedResource(Resource addedResource) { - if ((addedResource != null) && (addedResource instanceof CompatibilityXMIResource)) - ((CompatibilityXMIResource) addedResource).setFormat(CompatibilityXMIResource.FORMAT_MOF5); - IProject proj = WorkbenchResourceHelper.getProject(addedResource); - IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.ADDED_RESOURCE, null,proj); - event.addResource(addedResource); - notifyModelProviders(event); - - } - /** - * Notify all editModels of the change. - */ - protected static void notifyModelProviders(IModelProviderEvent anEvent) { - if ((anEvent == null) || (modelsProviders.size() == 0)) - return; - List aList = new ArrayList(); - synchronized (modelsProviders) { - aList.addAll(modelsProviders.keySet()); - } - - for (int i = 0; i < aList.size(); i++) { - IModelProvider mod; - mod = (IModelProvider) aList.get(i); - try { - if (mod instanceof IModelProviderListener) - { - ((IModelProviderListener)mod).modelsChanged(anEvent); - } - } catch (Exception e) { - J2EEPlugin.logError(e); - } - } - } - - /** - * Notify all editModels of the change. - */ - private static void removedResource(Resource removedResource) { - IProject proj = WorkbenchResourceHelper.getProject(removedResource); - IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.REMOVED_RESOURCE, null,proj); - event.addResource(removedResource); - notifyModelProviders(event); - - } - - /** - * Notify all editModels of the change. - */ - private static void removedResources(List removedResources) { - Resource firstRes = (Resource)removedResources.get(0); - IProject proj = WorkbenchResourceHelper.getProject(firstRes); - IModelProviderEvent event = new ModelProviderEvent(IModelProviderEvent.REMOVED_RESOURCE, null,proj); - event.addResources(removedResources); - notifyModelProviders(event); - - } - - /** - * Used to register an IModelProviderFactory against a facet version - * - * @param providerFactory - * - {@link IModelProviderFactory} - * @param v - * - {@link IProjectFacetVersion} - * @param priority - * - {@link String}- Used to allow multiple instances, the - * highest priority is chosen. Priority '0' is higher that - * priority '1'. If priorities are equal the new providerFactory - * is chosen. - */ - public static void registerProvider(IModelProviderFactory providerFactory, IProjectFacetVersion v, String priority) { - - int newPriority = (priority != null) ? Integer.parseInt(priority) : DEFAULT_PRIORITY; - int currentPriority = getProviderPriority(v); - if (newPriority <= currentPriority) { - ModelProviderKey key = createProviderKey(v, newPriority); - getProviders().put(key, providerFactory); - } - } - - private static IModelProviderFactory getProvider(IProjectFacetVersion v) { - Set keys = getProviders().keySet(); - for (Iterator iterator = keys.iterator(); iterator.hasNext();) { - ModelProviderKey key = (ModelProviderKey) iterator.next(); - if (key.version.equals(v)) - return (IModelProviderFactory)providers.get(key); - } - return null; - } - public static IModelProviderFactory getProvider(IProject p) { - IProjectFacetVersion facetVersion = getDefaultFacet(p); - return getProvider(facetVersion); - } - private static int getProviderPriority(IProjectFacetVersion v) { - Set keys = getProviders().keySet(); - for (Iterator iterator = keys.iterator(); iterator.hasNext();) { - ModelProviderKey key = (ModelProviderKey) iterator.next(); - if (key.version.equals(v)) - return key.priority; - } - return DEFAULT_PRIORITY; - } - protected static Adapter getResourceSetListener(IProject project) { - if (resourceSetListeners == null) - resourceSetListeners = new HashMap(); - Adapter listener = (Adapter)resourceSetListeners.get(project); - if (listener == null) { - listener = new ResourceSetListener(); - resourceSetListeners.put(project, listener); - } - return listener; - } - - private static J2EEModelProviderRegistry registry; - - - private static void initProviders() { - //Make sure both variables are null to prevent re-entrant behavior - if (registry == null && providers == null) { - providers = new HashMap(); - registry = J2EEModelProviderRegistry.getInstance(); - } - - } - private static void startListeningToResourceSet(IProject project) { - ResourceSet set = WorkbenchResourceHelper.getResourceSet(project); - Adapter listener = getResourceSetListener(project); - if (set != null && !set.eAdapters().contains(listener)) - set.eAdapters().add(listener); - } - private static ModelProviderKey createProviderKey(IProjectFacetVersion fv, int priority) { - ModelProviderKey key = new ModelProviderKey(); - key.priority = priority; - key.version = fv; - return key; - } - - public static IModelProvider getModelProvider(IProject proj) { - IProjectFacetVersion facetVersion = getDefaultFacet(proj); - return getModelProvider(proj, facetVersion); - - } - - public static IModelProvider getModelProvider(IVirtualComponent aModule) { - IProjectFacetVersion facetVersion = getDefaultFacet(aModule); - return getModelProvider(aModule, facetVersion); - } - - public static boolean hasModelProvider(IProject proj){ - IProjectFacetVersion facetVersion = getDefaultFacet(proj); - if (getProvider(facetVersion)== null) - return false; - return true; - } - - private static IProjectFacetVersion getDefaultFacet(IProject proj) { - String type = J2EEProjectUtilities.getJ2EEProjectType(proj); - if( ProjectFacetsManager.isProjectFacetDefined(type)) { - IProjectFacet facet = ProjectFacetsManager.getProjectFacet(type); - IFacetedProject fp = null; - try { - fp = ProjectFacetsManager.create(proj); - } catch (CoreException e) { - J2EEPlugin.logError(e); - } - if (fp != null && facet != null) { - return fp.getInstalledVersion(facet); - } - } - return null; - } - - private static IProjectFacetVersion getDefaultFacet(IVirtualComponent aModule) { - String type = J2EEProjectUtilities.getJ2EEComponentType(aModule); - IProjectFacet facet = ProjectFacetsManager.getProjectFacet(type); - IFacetedProject fp = null; - try { - if (aModule.isBinary()) - { - - } - else - { - fp = ProjectFacetsManager.create(aModule.getProject()); - } - } catch (CoreException e) { - J2EEPlugin.logError(e); - } - if (fp != null && facet != null) { - return fp.getInstalledVersion(facet); - } - return null; - } - - private synchronized static HashMap getProviders() { - if (registry == null) - initProviders(); - return providers; - } - -} -ore.IProjectFacet; +import org.eclipse.wst.common.project.facet.core.IProjectFacet; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;