Index: src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedProcessor.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedProcessor.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedProcessor.java (working copy) @@ -54,7 +54,6 @@ } private List processEvent(final JaxrsElementChangedEvent event) throws CoreException { - Logger.debug("Processing JAX-RS change {}", event); final IJaxrsElement element = event.getElement(); final EnumElementKind elementKind = element.getElementKind(); final int flags = event.getFlags(); Index: src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuildJob.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuildJob.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuildJob.java (working copy) @@ -3,6 +3,7 @@ */ package org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder; +import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; @@ -19,7 +20,10 @@ import org.eclipse.jdt.internal.core.JavaElementDelta; import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel; import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger; +import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsEndpoint; import org.jboss.tools.ws.jaxrs.core.pubsub.EventService; +import static org.eclipse.jdt.core.IJavaElementDelta.REMOVED; + /** @author xcoulon */ @SuppressWarnings("restriction") @@ -43,7 +47,16 @@ if (metamodel == null) { JaxrsMetamodel.create(javaProject); } else if (requiresReset) { + // copying the references to the endpoints into a new list before it is reset + final List allEndpoints = new ArrayList(metamodel.getAllEndpoints()); metamodel.reset(); + // now, notifying of the actual removals to the UI + for (IJaxrsEndpoint endpoint : allEndpoints) { + JaxrsEndpointChangedEvent change = new JaxrsEndpointChangedEvent(endpoint, REMOVED); + Logger.debug(change.toString()); + EventService.getInstance().publish(change); + } + } } @@ -74,13 +87,13 @@ events, progressMonitor); final List jaxrsEndpointChanges = jaxrsElementChangedProcessor.processEvents( jaxrsElementChanges, progressMonitor); - if(jaxrsEndpointChanges == null || jaxrsEndpointChanges.isEmpty()) { + if (jaxrsEndpointChanges == null || jaxrsEndpointChanges.isEmpty()) { Logger.debug("No JAX-RS change to publish to the UI"); } else { - for (JaxrsEndpointChangedEvent change : jaxrsEndpointChanges) { - Logger.debug(change.toString()); - EventService.getInstance().publish(change); - } + for (JaxrsEndpointChangedEvent change : jaxrsEndpointChanges) { + Logger.debug(change.toString()); + EventService.getInstance().publish(change); + } } } catch (Throwable e) { Logger.error("Failed to build or refresh the JAX-RS metamodel", e); Index: src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedEvent.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedEvent.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementChangedEvent.java (working copy) @@ -90,7 +90,9 @@ @Override public String toString() { StringBuilder s = new StringBuilder(); - s.append("JaxrsElementChange: [").append(ConstantUtils.getStaticFieldName(IJavaElementDelta.class, deltaKind)) + s.append("JaxrsElementChange: [") + .append(ConstantUtils.toCamelCase(element.getElementKind().toString())) + .append(" ").append(ConstantUtils.getStaticFieldName(IJavaElementDelta.class, deltaKind)) .append("] ").append(element.getJavaElement().getElementName()); try { Index: src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java (working copy) @@ -385,6 +385,7 @@ this.providers.clear(); this.resources.clear(); this.elementsIndex.clear(); + this.endpoints.clear(); } /** Index: src/org/jboss/tools/ws/jaxrs/core/internal/utils/ConstantUtils.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/utils/ConstantUtils.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/utils/ConstantUtils.java (working copy) @@ -52,7 +52,7 @@ return result; } - static String toCamelCase(String s) { + public static String toCamelCase(String s) { String[] parts = s.split("_"); String camelCaseString = ""; for (String part : parts) { Index: src/org/jboss/tools/ws/jaxrs/core/internal/utils/Logger.java =================================================================== --- src/org/jboss/tools/ws/jaxrs/core/internal/utils/Logger.java (revision 37078) +++ src/org/jboss/tools/ws/jaxrs/core/internal/utils/Logger.java (working copy) @@ -119,10 +119,7 @@ * the message to trace. */ public static void debug(final String message) { - String debugOption = Platform.getDebugOption(DEBUG); - if (JBossJaxrsCorePlugin.getDefault().isDebugging() && "true".equalsIgnoreCase(debugOption)) { - System.out.println("[" + Thread.currentThread().getName() + "] " + message); - } + debug(message, (Object[])null); } @@ -139,10 +136,11 @@ String valuedMessage = message; if (JBossJaxrsCorePlugin.getDefault() != null && JBossJaxrsCorePlugin.getDefault().isDebugging() && "true".equalsIgnoreCase(debugOption)) { - for (Object item : items) { - valuedMessage = valuedMessage.replaceFirst("\\{\\}", (item != null ? item.toString() : "null")); + if (items != null) { + for (Object item : items) { + valuedMessage = valuedMessage.replaceFirst("\\{\\}", (item != null ? item.toString() : "null")); + } } - System.out.println(dateFormatter.get().format(new Date()) + " [" + Thread.currentThread().getName() + "] " + valuedMessage); }