Author: max.andersen(a)jboss.com
Date: 2011-06-22 17:41:13 -0400 (Wed, 22 Jun 2011)
New Revision: 32292
Modified:
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/utils/JdtUtils.java
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/UriMappingsContentProvider.java
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java
Log:
applied patches for JBIDE-9230 and JBIDE-9220 avoiding freezeson enablement of JAX-RS and
NPE for codeassist
Modified:
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/utils/JdtUtils.java
===================================================================
---
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/utils/JdtUtils.java 2011-06-22
20:57:04 UTC (rev 32291)
+++
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/utils/JdtUtils.java 2011-06-22
21:41:13 UTC (rev 32292)
@@ -252,12 +252,15 @@
* the progress monitor
* @return compilationUnit the DOM CompilationUnit returned by the parse()
* method. This operation is expensive and should be performed only
- * once for each type.
+ * once for each type. Returns null if the given member was null.
* @throws JavaModelException
* in case of exception underneath...
*/
public static CompilationUnit parse(final IMember member, final IProgressMonitor
progressMonitor)
throws JavaModelException {
+ if (member == null) {
+ return null;
+ }
IType type = null;
if (member.getElementType() == IMember.TYPE) {
type = (IType) member;
Modified:
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/UriMappingsContentProvider.java
===================================================================
---
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/UriMappingsContentProvider.java 2011-06-22
20:57:04 UTC (rev 32291)
+++
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/cnf/UriMappingsContentProvider.java 2011-06-22
21:41:13 UTC (rev 32292)
@@ -53,33 +53,11 @@
if (!uriPathTemplateCategories.containsKey(project)) {
Metamodel metamodel = Metamodel.get(project);
if (metamodel == null) {
- // trigger background build and immediately return a
- // temporary element to the UI
- Job[] jobs = Job.getJobManager().find(null);
- if (jobs != null) {
- for (Job job : jobs) {
- if (job.belongsTo(ResourcesPlugin.FAMILY_AUTO_BUILD)
- || job.belongsTo(ResourcesPlugin.FAMILY_AUTO_REFRESH)
- || job.belongsTo(ResourcesPlugin.FAMILY_MANUAL_BUILD)
- || job.belongsTo(ResourcesPlugin.FAMILY_MANUAL_REFRESH)
- && job.getState() == Job.RUNNING) {
- // joining running job
- Logger.debug("Joining Running job: " + job.getName() +
"(blocking="
- + job.isBlocking() + "/state=" + job.getState() + ")");
- job.join();
- Logger.debug("Job finished: " + job.getName());
- }
- }
- }
- // after running job is done, check if the metamodel
- // was
- // built, otherwise, force it.
- metamodel = Metamodel.get(project);
- if (metamodel == null) {
- Logger.debug("Metamodel is (still) null for project '" +
project.getName() + "'");
- CoreUtility.startBuildInBackground(project);
- return new Object[] { new WaitWhileBuildingElement() };
- }
+ Logger.debug("Metamodel needs to be built for project '" +
project.getName() + "'");
+ Job buildJob = CoreUtility.getBuildJob(project);
+ buildJob.setRule(ResourcesPlugin.getWorkspace().getRoot());
+ buildJob.schedule();
+ return new Object[] { new WaitWhileBuildingElement() };
}
UriPathTemplateCategory uriPathTemplateCategory = new UriPathTemplateCategory(this,
metamodel,
project);
@@ -88,10 +66,6 @@
return new Object[] { uriPathTemplateCategories.get(project) };
} catch (CoreException e) {
Logger.error("Failed to retrieve JAX-RS Metamodel in project '" +
project.getName() + "'", e);
- } catch (InterruptedException e) {
- Logger.error(
- "Failed to join currently running job while building or retrieving metamodel
for project '"
- + project.getName() + "'", e);
} finally {
long endTime = new Date().getTime();
Logger.debug("JAX-RS Metamodel UI for project '" + project.getName() +
"' refreshed in "
Modified:
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java
===================================================================
---
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java 2011-06-22
20:57:04 UTC (rev 32291)
+++
branches/jbosstools-3.3.0.M2/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java 2011-06-22
21:41:13 UTC (rev 32292)
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
@@ -40,6 +41,7 @@
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.ws.jaxrs.core.configuration.ProjectNatureUtils;
import org.jboss.tools.ws.jaxrs.core.utils.JdtUtils;
import org.jboss.tools.ws.jaxrs.ui.JBossJaxrsUIPlugin;
import org.jboss.tools.ws.jaxrs.ui.internal.utils.Logger;
@@ -78,7 +80,16 @@
final IProgressMonitor monitor) {
JavaContentAssistInvocationContext javaContext = (JavaContentAssistInvocationContext)
context;
try {
+
+ IJavaProject project = javaContext.getProject();
+ // skip if the JAX-RS Nature is not configured for this project
+ if (!ProjectNatureUtils.isProjectNatureInstalled(project.getProject(),
ProjectNatureUtils.JAXRS_NATURE_ID)) {
+ return Collections.emptyList();
+ }
CompilationUnit compilationUnit = resolveContextualCompilationUnit(monitor,
javaContext);
+ if (compilationUnit == null) {
+ return Collections.emptyList();
+ }
IJavaElement invocationElement = javaContext.getCompilationUnit().getElementAt(
context.getInvocationOffset());
if (invocationElement.getElementType() == IJavaElement.METHOD) {
@@ -222,6 +233,11 @@
* in case of underlying exception
*/
private IType getEnclosingType(final IJavaElement element) throws JavaModelException {
+ if (element == null) {
+ // no enclosing parent. For example, an annotation is set before the
+ // method itself was written.
+ return null;
+ }
switch (element.getElementType()) {
case IJavaElement.TYPE:
return (IType) element;
Show replies by date