title: Eclipse plug-in development: custom problem marker does not appear in Problems view
body: <p>I am developing an Eclipse plug-in where I declare a custom problem marker. It has <code>org.eclipse.core.resources.problemmarker</code> as its super type, and the <code>persistent</code> attribute set to true. I contribute a custom <code>CategorizedProblem</code> class, where <code>getMarkerType</code> returns the id of my custom marker, that I add to the class with problems from the <code>reconcile</code> method in a custom <code>CompilationParticipant</code> using the <code>ReconcileContext.putProblems</code> method. The <code>CompilationParticipant</code> also declares the marker type under the <code>managedMarker</code> attribute:</p>
  
  <p><strong>Relevant parts of plugin.xml:</strong></p>
  
  <pre><code>&lt;extension
        point="org.eclipse.jdt.core.compilationParticipant"&gt;
     &lt;compilationParticipant
           class="no.tobask.sb4e.FxControllerValidator"
           id="FxControllerValidator"
           createsProblems="true"&gt;
           &lt;managedMarker
                 markerType="no.tobask.sb4e.fxcontrollerproblemmarker"&gt;
           &lt;/managedMarker&gt;
     &lt;/compilationParticipant&gt;
  &lt;/extension&gt;
  &lt;extension
        id="no.tobask.sb4e.fxcontrollerproblemmarker"
        point="org.eclipse.core.resources.markers"&gt;
     &lt;super
           type="org.eclipse.core.resources.problemmarker"&gt;
     &lt;/super&gt;
     &lt;persistent
           value="true"&gt;
     &lt;/persistent&gt;
  &lt;/extension&gt;
  </code></pre>
  
  <p><strong>Relevant code from the CompilationParticipant:</strong></p>
  
  <pre><code>public void reconcile(ReconcileContext context) {
      ICompilationUnit clazz = context.getWorkingCopy();
      String className = clazz.findPrimaryType().getFullyQualifiedName();
      if (documentListener.isAssignedController(className)) {
          URL documentLocation = documentListener.getDocument(className);
          try {
              String fxmlContent = FXOMDocument.readContentFromURL(documentLocation);
              FXOMDocument document = new FXOMDocument(fxmlContent, documentLocation, Activator.getClassLoader(),
                      I18N.getBundle());
              CategorizedProblem[] problems = getProblems(context.getAST(AST.JLS11), document);
              if (problems != null) {
                  context.putProblems("no.tobask.sb4e.fxcontrollerproblemmarker", problems);
              }
          } catch (IOException | JavaModelException e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p><strong>The CategorizedProblem:</strong></p>
  
  <pre><code>public class FxControllerProblem extends CategorizedProblem {
  
      List&lt;String&gt; missingIds;
      IResource resource;
  
      public FxControllerProblem(List&lt;String&gt; missingIds, IResource resource) {
          this.missingIds = missingIds;
          this.resource = resource;
      }
  
      @Override
      public String[] getArguments() {
          return missingIds.toArray(new String[0]);
      }
  
      @Override
      public int getID() {
          return 1234;
      }
  
      @Override
      public String getMessage() {
          return "One or more fx:ids from associated FXML document do not have corresponding fields";
      }
  
      @Override
      public char[] getOriginatingFileName() {
          return resource.getName().toCharArray();
      }
  
      @Override
      public int getSourceEnd() {
          return -1;
      }
  
      @Override
      public int getSourceLineNumber() {
          return 1;
      }
  
      @Override
      public int getSourceStart() {
          return 0;
      }
  
      @Override
      public boolean isError() {
          return false;
      }
  
      @Override
      public boolean isWarning() {
          return true;
      }
  
      @Override
      public void setSourceEnd(int sourceEnd) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void setSourceLineNumber(int lineNumber) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void setSourceStart(int sourceStart) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public int getCategoryID() {
          return CAT_MEMBER;
      }
  
      @Override
      public String getMarkerType() {
          return "no.tobask.sb4e.fxcontrollerproblemmarker";
      }
  
  }
  </code></pre>
  
  <p>The issue is that, while the warning does appear correctly in the Java editor, <em>it does not show up in the Problems view</em>.</p>