Example #1
0
  public void loadTypesFinished() {

    try {

      final NullProgressMonitor monitor = new NullProgressMonitor();
      isConsistent = false;
      reconcile(true, null, monitor);

      // added by [email protected]
      // this logic is to find the dependents types of the saving jst type
      // and update their validations result accordingly
      try {
        if (jstType != null
            && jstType.getPackage() != null
            && jstType.getPackage().getGroupName() != null
            && jstType.getName() != null) {
          final List<IJstType> dependents =
              mgr.getTypeSpace()
                  .getAllDependents(
                      new TypeName(jstType.getPackage().getGroupName(), jstType.getName()));
          if (dependents != null) {
            final List<ISourceModule> selectedSourceModules = new LinkedList<ISourceModule>();
            final StandardScriptBuilder scriptBuild = new StandardScriptBuilder();
            final ScriptProject scriptProject =
                CodeassistUtils.getScriptProject(jstType.getPackage().getGroupName());
            VjoSourceHelper.getAllSourceModulesFromJst(
                selectedSourceModules, dependents, scriptProject);
            if (selectedSourceModules.size() > 0) {
              scriptBuild.initialize(scriptProject);
              scriptBuild.buildModelElements(
                  scriptProject, selectedSourceModules, new SubProgressMonitor(monitor, 1), 1);
            }
          }
        }
      } catch (Exception e) {
        DLTKCore.error(e.toString(), e);
      } finally {
        monitor.done();
      }

    } catch (CoreException e) {
      DLTKCore.error(e.toString(), e);
    }
  }
 private String getLocalVariableName() {
   return CodeassistUtils.getFirstVariableName((JstVars) getMatchNode());
 }
Example #3
0
 public SourceTypeName getTypeName() {
   IResource path = this.getResource();
   return CodeassistUtils.getTypeName(path);
 }
Example #4
0
  private boolean doBuild(
      OpenableElementInfo info,
      IProgressMonitor progressMonitor,
      Map newElements,
      IResource underlyingResource)
      throws ModelException {
    try {

      final JSSourceModuleElementInfo moduleInfo = (JSSourceModuleElementInfo) info;

      IBuffer buffer = null;
      // ensure buffer is opened
      if (hasBuffer()) {
        buffer = getBufferManager().getBuffer(this);
        if (buffer == null) {
          buffer = openBuffer(progressMonitor, moduleInfo);
        }
      }

      final char[] contents = (buffer == null) ? null : buffer.getCharacters();

      // generate structure and compute syntax problems if needed
      final VjoSourceModuleStructureRequestor requestor =
          new VjoSourceModuleStructureRequestor(this, moduleInfo, newElements);

      // System.out.println("==> Parsing: " + resource.getName());
      final String natureId = getNatureId();
      if (natureId == null) {
        throw new ModelException(new ModelStatus(ModelStatus.INVALID_NAME));
      }

      SourceTypeName stName = getTypeName();
      IResource resource = getResource();
      // it is not a workspace file
      // if ("".equals(stName.groupName().trim()) && (resource == null ||
      // !resource.exists())) {
      // jstType = CodeassistUtils.findNativeJstType(stName.typeName());
      // } else {
      // processType(contents);
      // }
      final VjoSourceElementParser parser =
          (VjoSourceElementParser) getSourceElementParser(natureId);
      if (!isReadOnly()) {
        ((ISourceElementParserExtension) parser).setScriptProject(this.getScriptProject());
      }

      parser.setRequestor(requestor);
      final AccumulatingProblemReporter problemReporter = getAccumulatingProblemReporter();
      parser.setReporter(problemReporter);

      boolean reparsed = false;
      if (problemReporter != null) {
        if (!problemReporter.hasErrors()) {
          StructureBuilder.build(natureId, this, problemReporter);
          reparsed = true;
        }
        problemReporter.reportToRequestor();
      }

      if (jstType == null && isVirtualTypeResource(resource)) {

        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
        IResource typespaceresource = root.findMember(resource.getFullPath());
        if (typespaceresource != null) {
          URI location = typespaceresource.getLocationURI();
          String typeName = location.getPath().replace("/", ".");
          String groupName = location.getHost();
          if (typeName.indexOf(".") == 0) {
            typeName = typeName.substring(1, typeName.length());
          }
          typeName = typeName.replace(".js", "");

          jstType = CodeassistUtils.findJstType(groupName, typeName);
        }
      } else if (jstType == null || !reparsed) {
        if ("".equals(stName.groupName().trim()) && (resource == null || !resource.exists())) {
          jstType = CodeassistUtils.findNativeJstType(stName.typeName());
        } else {
          processType(contents);
        }
      }

      // parse source module after getting the JstType
      //
      SourceParserUtil.parseSourceModule(this, parser);

      if (DLTKCore.DEBUG_PRINT_MODEL) {
        System.out.println("Source Module Debug print:"); // $NON-NLS-1$

        CorePrinter printer = new CorePrinter(System.out);
        printNode(printer);
        printer.flush();
      }

      // update timestamp (might be IResource.NULL_STAMP if original does
      // not exist)
      if (underlyingResource == null) {
        underlyingResource = getResource();
      }
      // underlying resource is null in the case of a working copy out of
      // workspace
      if (underlyingResource != null) {
        moduleInfo.setTimestamp(((IFile) underlyingResource).getModificationStamp());
      }

      isConsistent = true;

      return moduleInfo.isStructureKnown();
    } catch (CoreException e) {
      throw new ModelException(e);
    }
  }