protected void addJSFile(TernDoc doc, ITernFile file) throws IOException { TernQuery query = doc.getQuery(); String fileName = file.getFullName(getProject()); query.setFile(fileName); TernFile tf = file.toTernServerFile(getProject()); doc.addFile(tf); }
@Override public void process( TernDoc doc, IJSONObjectHelper jsonObjectHelper, Object jsonObject, ITernLintCollector collector) { if (!(jsonObject instanceof JsonObject)) { // TODO: support for Rhino server return; } JsonArray messages = (JsonArray) ((JsonObject) jsonObject).get(MESSAGES_FIELD); // $NON-NLS-1$ if (messages != null) { TernLintQuery query = (TernLintQuery) doc.getQuery(); if (query.isGroupByFiles()) { JsonObject filesObject = null; String file = null; for (JsonValue files : messages) { filesObject = (JsonObject) files; file = jsonObjectHelper.getText(filesObject.get(FILE_FIELD)); // $NON-NLS-1$ try { collector.startLint(file); JsonArray messagesFile = (JsonArray) filesObject.get(MESSAGES_FIELD); // $NON-NLS-1$ if (messagesFile != null) { addMessages(jsonObjectHelper, messagesFile, query, collector); } } finally { collector.endLint(file); } } } else { String file = doc.getQuery().getFile(); try { collector.startLint(file); addMessages(jsonObjectHelper, messages, query, collector); } finally { collector.endLint(file); } } } }
@Test public void todoTextAfterEnd() throws TernException { TernDoc doc = createDocForDefinitionTodoText(); doc.getQuery().setEnd(9); MockTernDefinitionCollector collector = new MockTernDefinitionCollector(); server.request(doc, collector); Assert.assertNull(collector.getFile()); }
@Test public void todoTextDefinedInScopeToo() throws TernException { TernDoc doc = createDocForDefinitionTodoText(); ((TernAngularDefinitionQuery) doc.getQuery()).getScope().getProps().add("todoText", "todoText"); MockTernDefinitionCollector collector = new MockTernDefinitionCollector(); server.request(doc, collector); Assert.assertNotNull(collector.getFile()); Assert.assertEquals("myfile.js", collector.getFile()); Assert.assertNotNull(collector.getStart()); Assert.assertEquals(216, collector.getStart().longValue()); Assert.assertNotNull(collector.getEnd()); Assert.assertEquals(224, collector.getEnd().longValue()); }
@Test public void todoTextBeforeEnd() throws TernException { TernDoc doc = createDocForDefinitionTodoText(); doc.getQuery().setEnd(8); MockTernDefinitionCollector collector = new MockTernDefinitionCollector(); server.request(doc, collector); Assert.assertNotNull(collector.getFile()); Assert.assertEquals("myfile.js", collector.getFile()); Assert.assertNotNull(collector.getStart()); Assert.assertEquals(216, collector.getStart().longValue()); Assert.assertNotNull(collector.getEnd()); Assert.assertEquals(224, collector.getEnd().longValue()); }
@Override public void synchronizeFile(TernDoc doc, ITernFile file) throws IOException { writeLock.lock(); try { try { TernQuery query = doc.getQuery(); if (query != null) { if (TernResourcesManager.isJSFile(file)) { addJSFile(doc, file); sendFiles(doc); return; } else if (TernResourcesManager.isHTMLFile(file)) { // This is HTML file case: never keep the file on the server String queryType = query.getType(); if (TernCompletionsQuery.isQueryType(queryType) || TernDefinitionQuery.isQueryType(queryType) || query instanceof TernLintQuery) { addHTMLFile(doc, file); return; } } } TernFile tf = file.toTernServerFile(getProject()); String oldText = sentFiles.get(tf.getName()); if (tf.getText().equals(oldText) && !uploader.cancel(tf.getName())) { // no need to synchronize the file, already up-to-date return; } doc.addFile(tf); } finally { updateSentFiles(doc); // as this is // wait a bit for the sync to finish uploader.join(TIMEOUT); } } finally { writeLock.unlock(); } }
protected void addHTMLFile(TernDoc doc, ITernFile file) throws IOException { TernQuery query = doc.getQuery(); TernFile tf = file.toTernServerFile(getProject()); doc.addFile(tf); query.set("file", "#" + (doc.getFiles().size() - 1)); // $NON-NLS-1$ //$NON-NLS-2$ }