public Assembly getCachedCompiledAssembly_MD5(string key) { if (CachedCompiledAssemblies.hasKey(key)) { var cachedAssembly = CachedCompiledAssemblies[key]; if (cachedAssembly.fileExists()) { "found cached compiled assembly: {0}".info(cachedAssembly); return(cachedAssembly.assembly()); } } return(null); }
public void TestDictionary() { Dictionary <string, int> d = new Dictionary <string, int>() { { "cat", 2 }, { "dog", 1 }, }; Assert.AreEqual(new string[] { "cat", "dog" }, d.Keys); Assert.AreEqual(new int[] { 2, 1 }, d.Values); Assert.AreEqual(new string[] { "cat", "dog" }, d.keys()); Assert.AreEqual(new int[] { 2, 1 }, d.values()); Assert.AreEqual("System.Collections.Generic.Dictionary`2[System.String,System.Int32]", d.ToString()); Assert.AreEqual("{cat: 2, dog: 1}", d.to_s()); Assert.AreEqual("{}", new Dictionary <string, int>() { }.to_s()); Assert.AreEqual(true, d.hasKey("dog")); Assert.AreEqual(false, d.hasKey("apple")); Assert.AreEqual(1, d.fetch("dog")); Assert.AreEqual(1, d["dog"]); Assert.AreEqual(null, d.fetch("apple")); Assert.AreEqual(2, d.Count); d.store("horse", 5); Assert.AreEqual("{cat: 2, dog: 1, horse: 5}", d.to_s()); Assert.AreEqual(3, d.Count); d.delete("apple"); Assert.AreEqual("{cat: 2, dog: 1, horse: 5}", d.to_s()); d.delete("cat"); Assert.AreEqual("{dog: 1, horse: 5}", d.to_s()); Assert.AreEqual(2, d.Count); Dictionary <string, int> e = new Dictionary <string, int>() { { "cow", 7 }, }; d.merge(e); Assert.AreEqual("{cow: 7, dog: 1, horse: 5}", d.to_s()); Assert.AreEqual(3, d.Count); d.clear(); Assert.AreEqual(0, d.Count); }
public static string findScriptOnLocalScriptFolder(string file) { if (file.contains("/", @"\")) // currenlty relative paths are not supported { return(""); } //string defaultLocalScriptsFolder = @"C:\O2\O2Scripts_Database\_Scripts"; if (LocalScriptFileMappings.hasKey(file)) { return(LocalScriptFileMappings[file]); } var mappedFilePath = ""; var filesToSearch = PublicDI.config.LocalScriptsFolder.files(true, "*.cs"); filesToSearch.add(PublicDI.config.LocalScriptsFolder.files(true, "*.o2")); foreach (var localScriptFile in filesToSearch) { if (localScriptFile.fileName().ToLower().StartsWith(file.ToLower())) //if (fileToResolve.lower() == localScriptFile.fileName().lower()) { PublicDI.log.debug("in CompileEngine, file reference '{0}' was mapped to local O2 Script file '{1}'", file, localScriptFile); mappedFilePath = localScriptFile; break; } } if (mappedFilePath.valid()) { LocalScriptFileMappings.add(file, mappedFilePath); } return(mappedFilePath); }
public static TreeNode jint_Show_Statements <T>(this TreeNode treeNode, Statement statement, bool addChildStatements) where T : Statement { treeNode.clear(); var nodesAdded = new Dictionary <string, TreeNode>(); foreach (var childStatement in statement.statements <T>(true)) { var codeReference = childStatement.firstSourceCodeReference(true); var nodeText = childStatement.str(); if (nodeText.valid()) { if (codeReference.isNull()) { nodeText += " (no source code mapping)"; } if (nodesAdded.hasKey(nodeText).isFalse()) { nodesAdded.add(nodeText, treeNode.add_Node(nodeText, codeReference)); } var newNode = nodesAdded[nodeText].add_Node(nodeText, codeReference); if (addChildStatements) { newNode.jint_Show_AstTree(childStatement); } } } return(treeNode); }
public static Dictionary <Guid, guidanceExplorer> addGuidanceExplorerObject(this Dictionary <Guid, guidanceExplorer> guidanceExplorers, guidanceExplorer _guidanceExplorer) { if (_guidanceExplorer.notNull()) { try { var libraryGuid = _guidanceExplorer.library.name.guid(); //check if the name is already there foreach (guidanceExplorer guidanceExplorer in guidanceExplorers.Values) { if (guidanceExplorer.library.caption == _guidanceExplorer.library.caption) { "[addGuidanceExplorerObject]: Skipping load due to duplicate Library name '{0}' was in both library {1} and {2}".error(guidanceExplorer.library.caption, guidanceExplorer.library.name, _guidanceExplorer.library.name); return(guidanceExplorers); } } //check if the guid is already there if (guidanceExplorers.hasKey(libraryGuid)) { "[addGuidanceExplorerObject]: for {0} , duplicate LibraryID detected, assiging a new Library Id: {0}".error(_guidanceExplorer.library.caption, libraryGuid); libraryGuid = Guid.NewGuid(); _guidanceExplorer.library.name = libraryGuid.str(); "[addGuidanceExplorerObject]: new ID for library {0} is now {1}".error(_guidanceExplorer.library.caption, libraryGuid); _guidanceExplorer.xmlDB_Save_GuidanceExplorer(TM_Xml_Database.Current, false); } guidanceExplorers.Add(libraryGuid, _guidanceExplorer); } catch //(Exception ex) { "[addGuidanceExplorerObject] error importing guidanceExplorer: {0}".error(_guidanceExplorer); } } return(guidanceExplorers); }
public static Dictionary <string, string> toStringDictionary(this string targetString, string rowSeparator, string keySeparator) { var stringDictionary = new Dictionary <string, string>(); try { foreach (var row in targetString.split(rowSeparator)) { if (row.valid()) { var splittedRow = row.split(keySeparator); if (splittedRow.size() != 2) { "[toStringDictionary] splittedRow was not 2: {0}".error(row); } else { if (stringDictionary.hasKey(splittedRow[0])) { "[toStringDictionary] key already existed in the collection: {0}".error(splittedRow[0]); } else { stringDictionary.Add(splittedRow[0], splittedRow[1]); } } } } } catch (Exception ex) { "[toStringDictionary] {0}".error(ex.Message); } return(stringDictionary); }
public static Dictionary <T, T1> add <T, T1>(this Dictionary <T, T1> dictionary, T key, T1 value) { try { if (dictionary.isNull()) { "[Dictionary<T, T1> add] dictionary object was null".error(); } else { lock (dictionary) { if (dictionary.hasKey(key)) { dictionary[key] = value; } else { dictionary.Add(key, value); } } } } catch (Exception ex) { ex.log("[in Dictionary<T, T1> .add) key = {0} , value = {1}".format(key, value)); } return(dictionary); }
public static Dictionary <string, string> processTrivia(string trivia) { var result = new Dictionary <string, string> { }; if (trivia != null && trivia != "") { var regex = new RegExp("(?:\\n|^)\\s*(?://|#|/\\*\\*?)\\s*@([A-Za-z0-9_.-]+) ?((?!\\n|\\*/|$).+)?"); while (true) { var match = regex.exec(trivia); if (match == null) { break; } if (result.hasKey(match.get(1))) { // @php $result[$match[1]] .= "\n" . $match[2]; // @python result[match[1]] += "\n" + match[2] // @csharp result[match[1]] += "\n" + match[2]; // @java result.put(match[1], result.get(match[1]) + "\n" + match[2]); result[match[1]] += "\n" + match[2]; } else { result.set(match.get(1), (match.get(2) ?? "") == "" ? "true" : match.get(2) ?? ""); } } } return(result); }
public void Test_getFolders() { //var guidanceExplorers = TM_Xml_Database.loadGuidanceExplorerObjects(); var libraryId = TM_Xml_Database.GuidanceExplorers_XmlFormat.Keys.first(); var guidanceExplorerFolders = TM_Xml_Database.GuidanceExplorers_XmlFormat[libraryId].library.libraryStructure.folder; Assert.That(guidanceExplorerFolders.size() > 0,"guidanceExplorerFolders was empty"); var tmFolders = tmXmlDatabase.tmFolders(libraryId); Assert.IsNotNull(tmFolders,"folders"); Assert.That(tmFolders.size() > 0,"folders was empty"); //show.info(guidanceExplorerFolders); //show.info(tmFolders); var mappedById = new Dictionary<Guid,Folder_V3>(); foreach(var tmFolder in tmFolders) mappedById.Add(tmFolder.folderId, tmFolder); //Add checks for sub folders foreach(var folder in guidanceExplorerFolders) { Assert.That(mappedById.hasKey(folder.folderId.guid()), "mappedById didn't have key: {0}".format(folder.folderId)); var tmFolder = mappedById[folder.folderId.guid()]; Assert.That(tmFolder.name == folder.caption); Assert.That(tmFolder.libraryId == libraryId, "libraryId"); } }
public void Test_getFolders() { //var guidanceExplorers = TM_Xml_Database.loadGuidanceExplorerObjects(); var libraryId = TM_Xml_Database.GuidanceExplorers_XmlFormat.Keys.first(); var guidanceExplorerFolders = TM_Xml_Database.GuidanceExplorers_XmlFormat[libraryId].library.libraryStructure.folder; Assert.That(guidanceExplorerFolders.size() > 0, "guidanceExplorerFolders was empty"); var tmFolders = tmXmlDatabase.tmFolders(libraryId); Assert.IsNotNull(tmFolders, "folders"); Assert.That(tmFolders.size() > 0, "folders was empty"); //show.info(guidanceExplorerFolders); //show.info(tmFolders); var mappedById = new Dictionary <Guid, Folder_V3>(); foreach (var tmFolder in tmFolders) { mappedById.Add(tmFolder.folderId, tmFolder); } //Add checks for sub folders foreach (var folder in guidanceExplorerFolders) { Assert.That(mappedById.hasKey(folder.folderId.guid()), "mappedById didn't have key: {0}".format(folder.folderId)); var tmFolder = mappedById[folder.folderId.guid()]; Assert.That(tmFolder.name == folder.caption); Assert.That(tmFolder.libraryId == libraryId, "libraryId"); } }
public static Dictionary<string, string> queryParameters_Indexed_ByName(this Uri uri) { var queryParameters = new Dictionary<string,string>(); if (uri.notNull()) { var query = uri.Query; if (query.starts("?")) query = query.removeFirstChar(); foreach(var parameter in query.split("&")) if (parameter.valid()) { var splitParameter = parameter.split("="); if (splitParameter.size()==2) if (queryParameters.hasKey(splitParameter[0])) { "duplicate parameter key in property '{0}', adding extra parameter in a new line".info(splitParameter[0]); queryParameters.add(splitParameter[0], queryParameters[splitParameter[0]].line() + splitParameter[1]); } else queryParameters.add(splitParameter[0], splitParameter[1]); else "Something's wrong with the parameter value, there should only be one = in there: '{0}' ".info(parameter); } } return queryParameters; }
public override object this[string key] { get { return((sessionData.hasKey(key)) ? sessionData[key] : null); } set { sessionData[key] = value; } }
public static Color treeNodeColor(this string signature, Dictionary <string, Java_Method> methods_bySignature) { return(methods_bySignature.hasKey(signature) ? methods_bySignature[signature].IsAbstract ? Color.DarkBlue : Color.DarkGreen : Color.DarkRed); }
public static Dictionary <T, T1> delete <T, T1>(this Dictionary <T, T1> dictionary, T key) { if (dictionary.hasKey(key)) { dictionary.Remove(key); } return(dictionary); }
public static T1 get <T, T1>(this Dictionary <T, T1> dictionary, T key) { if (dictionary.hasKey(key)) { return(dictionary[key]); } return(default(T1)); }
public static Dictionary <T, List <T1> > add <T, T1>(this Dictionary <T, List <T1> > dictionary, T key, T1 value) { if (dictionary.hasKey(key).isFalse()) { dictionary[key] = new List <T1>(); } dictionary[key].Add(value); return(dictionary); }
public static Dictionary <T, T1> add <T, T1>(this Dictionary <T, T1> dictionary, T key, T1 value) { if (dictionary.hasKey(key)) { dictionary[key] = value; } else { dictionary.Add(key, value); } return(dictionary); }
public static Dictionary <string, string> toDictionary(this Items items) { var dictionary = new Dictionary <string, string>(); foreach (var item in items) { if (dictionary.hasKey(item.Key)) { "alert: in Items.toDictionary there was a duplicate key value for {0}, the original value ('{1}') will be overritten with '{2}')".debug(item.Key, dictionary[item.Key], item.Value); } dictionary.add(item.Key, item.Value); } return(dictionary); }
public static Method_CallMapping add_Method(this Dictionary <string, Method_CallMapping> callMappings, string signature) { //return existing ones if (callMappings.hasKey(signature)) { return(callMappings[signature]); } //or create it var callMapping = signature.callMapping(); callMappings.Add(signature, callMapping); return(callMapping); }
//we need to do this because the IKVMC doesn't have a option to get both fields and source code references at the same time public static Java_Class map_LineNumbers(this Java_Class javaClass, object classFileWithLineNumbers) { var methodsWithLineNumbers = ((IEnumerable)classFileWithLineNumbers.prop("Methods")); var currentMethodId = 0; foreach (var methodWithLineNumbers in methodsWithLineNumbers) { var javaMethod = javaClass.Methods[currentMethodId]; var lineNumberTableAttributes = (IEnumerable)methodWithLineNumbers.prop("LineNumberTableAttribute"); if (lineNumberTableAttributes.notNull()) { foreach (var lineNumberTableAttribute in lineNumberTableAttributes) { javaMethod.LineNumbers.Add(new LineNumber { Line_Number = lineNumberTableAttribute.field("line_number").str().toInt(), Start_Pc = lineNumberTableAttribute.field("start_pc").str().toInt() }); } var mapppedLineNumbers = new Dictionary <int, int>(); foreach (var lineNumber in javaMethod.LineNumbers) { mapppedLineNumbers.Add(lineNumber.Start_Pc, lineNumber.Line_Number); } var lastLineNumber = 0; foreach (var instruction in javaMethod.Instructions) { if (mapppedLineNumbers.hasKey(instruction.Pc)) { instruction.Line_Number = mapppedLineNumbers[instruction.Pc]; lastLineNumber = instruction.Line_Number; } else { instruction.Line_Number = lastLineNumber; } } } currentMethodId++; } return(javaClass); }
public static TreeNode add_Implements(this TreeNode treeNode, Method_CallMapping callMapping, Dictionary <string, Method_CallMapping> callMappings, Dictionary <string, Java_Method> methods_bySignature, bool showStubTreeNode) { if (callMapping.Implements.size() == 0) { return(treeNode); } var implementsNode = (showStubTreeNode) ? treeNode.add_Node("Implements").color(Color.Gray) : treeNode; implementsNode.add_Nodes(callMapping.Implements .OrderBy((implements) => implements.Signature) .Where((implements) => callMappings.hasKey(implements.Signature)), (implements) => implements.Signature, (implements) => callMappings[implements.Signature], (implements) => true, //callMappings.hasMapping_ImplementedBy(implementedBy.Signature), (implements) => implements.Signature.treeNodeColor(methods_bySignature)); return(treeNode); }
public static List <Java_Method> implementations(this Java_Method method, Dictionary <string, List <Java_Class> > classesImplementations) { var implementations = new List <Java_Method>(); if (classesImplementations.hasKey(method.ClassName)) { foreach (var _class in classesImplementations[method.ClassName]) { foreach (var implementationMethod in _class.Methods) { if (method.SimpleSignature == implementationMethod.SimpleSignature) { implementations.Add(implementationMethod); break; } } } } return(implementations); }
public static TreeNode add_IsCalledBy(this TreeNode treeNode, Method_CallMapping callMapping, Dictionary <string, Method_CallMapping> callMappings, Dictionary <string, Java_Method> methods_bySignature, bool showStubTreeNode) { if (callMapping.IsCalledBy.size() == 0) { return(treeNode); } //var isCalledByLocations = treeNode.add_Node("_IsCalledBy_Locations"); var locations = new List <MethodCall_Location>(); foreach (var isCalledBy in callMapping.IsCalledBy) { foreach (var atLocation in isCalledBy.AtLocations) { atLocation.Signature = isCalledBy.Signature; // did this so that we don't have to store/serialize the Signature here locations.Add(atLocation); } } locations = locations.OrderBy((atLocation) => atLocation.Pc) .OrderBy((atLocation) => atLocation.Signature).toList(); //isCalledByLocations.add_Nodes(locations); var isCalledByToNode = (showStubTreeNode) ? treeNode.add_Node("IsCalledBy").color(Color.Gray) : treeNode; isCalledByToNode.add_Node("_IsCalledBy_Locations").color(Color.Gray) .add_Nodes(locations); isCalledByToNode.add_Nodes(callMapping.IsCalledBy .OrderBy((calledBy) => calledBy.Signature) .Where((calledBy) => callMappings.hasKey(calledBy.Signature)), (calledBy) => calledBy.Signature, (calledBy) => callMappings[calledBy.Signature], (calledBy) => true, //callMappings.hasMapping_IsCalledBy(calledBy.Signature), (calledBy) => methods_bySignature.hasKey(calledBy.Signature) ? Color.DarkGreen : Color.DarkRed); return(treeNode); }
public static GitData_Repository map_File_Commits(this GitData_Repository gitDataRepository) { var mappedSha1s = new List <string>(); var nGit = gitDataRepository.nGit; var results = new List <string>(); var mappedFiles = new Dictionary <string, GitData_File>(); foreach (var file in gitDataRepository.files()) { mappedFiles.Add(file.FilePath, file); } foreach (var commit in nGit.commits()) { Action <TreeWalk> onTreeWalk = (treeWalk) => { if (mappedFiles.hasKey(treeWalk.PathString)) { var mappedSha1 = "{0}:{1}".format(treeWalk.GetObjectId(0).sha1(), mappedFiles[treeWalk.PathString].Sha1); if (mappedSha1s.contains(mappedSha1)) { return; } var fileCommit = new GitData_File_Commit { File_Sha1 = treeWalk.GetObjectId(0).sha1(), Commit_Sha1 = commit.sha1(), Author = commit.author_Name(), When = commit.when().toFileTimeUtc() }; mappedFiles[treeWalk.PathString].Commits.add(fileCommit); mappedSha1s.add(mappedSha1); //mappedSha1.add(file.Sha1); } }; nGit.files(commit.sha1(), onTreeWalk); } return(gitDataRepository); }
public static Dictionary<Guid, guidanceExplorer> addGuidanceExplorerObject(this TM_FileStorage tmFileStorage, Dictionary<Guid, guidanceExplorer> guidanceExplorers, guidanceExplorer newGuidanceExplorer, string xmlFile) { if (newGuidanceExplorer.notNull()) { try { var libraryGuid = newGuidanceExplorer.library.name.guid(); //check if the name is already there foreach(guidanceExplorer guidanceExplorer in guidanceExplorers.Values) { if (guidanceExplorer.library.caption == newGuidanceExplorer.library.caption) { "[addGuidanceExplorerObject]: Skipping load due to duplicate Library name '{0}' was in both library {1} and {2}".error(guidanceExplorer.library.caption, guidanceExplorer.library.name, newGuidanceExplorer.library.name); return guidanceExplorers; } } //check if the guid is already there if (guidanceExplorers.hasKey(libraryGuid)) { "[addGuidanceExplorerObject]: for {0} , duplicate LibraryID detected, assiging a new Library Id: {0}".error(newGuidanceExplorer.library.caption, libraryGuid); libraryGuid = Guid.NewGuid(); newGuidanceExplorer.library.name = libraryGuid.str(); "[addGuidanceExplorerObject]: new ID for library {0} is now {1}".error(newGuidanceExplorer.library.caption, libraryGuid); newGuidanceExplorer.xmlDB_Save_GuidanceExplorer(TM_Xml_Database.Current);//, false); } tmFileStorage.GuidanceExplorers_Paths.add(newGuidanceExplorer, xmlFile); // add this mapping so that we can find it base on name guidanceExplorers.Add(libraryGuid, newGuidanceExplorer); } catch//(Exception ex) { "[addGuidanceExplorerObject] error importing guidanceExplorer: {0}".error(newGuidanceExplorer); } } return guidanceExplorers; }
public static Dictionary <string, string> queryParameters_Indexed_ByName(this Uri uri) { var queryParameters = new Dictionary <string, string>(); if (uri.notNull()) { var query = uri.Query; if (query.starts("?")) { query = query.removeFirstChar(); } foreach (var parameter in query.split("&")) { if (parameter.valid()) { var splitParameter = parameter.split("="); if (splitParameter.size() == 2) { if (queryParameters.hasKey(splitParameter[0])) { "duplicate parameter key in property '{0}', adding extra parameter in a new line".info(splitParameter[0]); queryParameters.add(splitParameter[0], queryParameters[splitParameter[0]].line() + splitParameter[1]); } else { queryParameters.add(splitParameter[0], splitParameter[1]); } } else { "Something's wrong with the parameter value, there should only be one = in there: '{0}' ".info(parameter); } } } } return(queryParameters); }
public static Dictionary <Guid, guidanceExplorer> addGuidanceExplorerObject(this TM_FileStorage tmFileStorage, Dictionary <Guid, guidanceExplorer> guidanceExplorers, guidanceExplorer newGuidanceExplorer, string xmlFile) { if (newGuidanceExplorer.notNull()) { try { var libraryGuid = newGuidanceExplorer.library.name.guid(); //check if the name is already there foreach (guidanceExplorer guidanceExplorer in guidanceExplorers.Values) { if (guidanceExplorer.library.caption == newGuidanceExplorer.library.caption) { "[addGuidanceExplorerObject]: Skipping load due to duplicate Library name '{0}' was in both library {1} and {2}".error(guidanceExplorer.library.caption, guidanceExplorer.library.name, newGuidanceExplorer.library.name); return(guidanceExplorers); } } //check if the guid is already there if (guidanceExplorers.hasKey(libraryGuid)) { "[addGuidanceExplorerObject]: for {0} , duplicate LibraryID detected, assiging a new Library Id: {0}".error(newGuidanceExplorer.library.caption, libraryGuid); libraryGuid = Guid.NewGuid(); newGuidanceExplorer.library.name = libraryGuid.str(); "[addGuidanceExplorerObject]: new ID for library {0} is now {1}".error(newGuidanceExplorer.library.caption, libraryGuid); newGuidanceExplorer.xmlDB_Save_GuidanceExplorer(TM_Xml_Database.Current); //, false); } tmFileStorage.GuidanceExplorers_Paths.add(newGuidanceExplorer, xmlFile); // add this mapping so that we can find it base on name guidanceExplorers.Add(libraryGuid, newGuidanceExplorer); } catch//(Exception ex) { "[addGuidanceExplorerObject] error importing guidanceExplorer: {0}".error(newGuidanceExplorer); } } return(guidanceExplorers); }
public static Action <string> viewJavaMappings(this Control control, API_IKVMC_Java_Metadata javaMappings) { control.clear(); Dictionary <string, Java_Class> classes_bySignature = null; Dictionary <string, Java_Method> methods_bySignature = null; Dictionary <string, List <Java_Class> > classes_MappedTo_Implementations = null; var showFullClassNames = false; var openSourceCodeReference = false; var classFilter = ""; Action refresh = null; API_IKVMC_Java_Metadata currentJavaMetaData = null; var treeView = control.add_TreeView_with_PropertyGrid(); var codeEditor = control.insert_Right().add_SourceCodeEditor(); var configPanel = control.insert_Below(40, "Config"); treeView.insert_Above(20).add_TextBox("Class Filter", "") .onEnter((text) => { classFilter = text; refresh(); }); configPanel.add_CheckBox("Show Full Class names", 0, 0, (value) => { showFullClassNames = value; treeView.collapse(); }).autoSize() .append_Control <CheckBox>().set_Text("Open SourceCode Reference") .autoSize() .onChecked((value) => openSourceCodeReference = value) .check(); //BeforeExpand Events Action <TreeNode, List <Java_Class> > add_Classes = (treeNode, classes) => { treeNode.add_Nodes(classes.Where((_class) => classFilter.inValid() || _class.Signature.regEx(classFilter)) .OrderBy((_class) => _class.Name), (_class) => (showFullClassNames) ? _class.Signature : _class.Name, (_class) => true, (_class) => (_class.IsInterface) ? Color.DarkRed : Color.DarkOrange); }; treeView.beforeExpand <API_IKVMC_Java_Metadata>( (treeNode, javaMetadata) => { add_Classes(treeNode, javaMetadata.Classes); }); treeView.beforeExpand <Java_Class>( (treeNode, _class) => { if (classes_MappedTo_Implementations.hasKey(_class.Signature)) { add_Classes(treeNode.add_Node("_Implementations"), classes_MappedTo_Implementations[_class.Signature]); } treeNode.add_ConstantsPool(_class) .add_Annotations(true, _class.Annotations); treeNode.add_Nodes(_class.Methods.OrderBy((item) => item.Name), (method) => method.str(), (method) => method.IsAbstract.isFalse(), (method) => (method.IsAbstract) ? Color.DarkRed : Color.DarkBlue); }); treeView.beforeExpand <Java_Method>( (treeNode, method) => { treeNode.add_ConstantsPool(method, classes_bySignature[method.ClassName]) .add_Annotations(true, method.Annotations) .add_Variables(method); treeNode.add_Node("_Instructions") .add_Instructions(method, classes_bySignature[method.ClassName]); }); treeView.beforeExpand <object[]>( (treeNode, annotations) => { treeNode.add_Annotations(false, annotations); }); treeView.beforeExpand <List <ConstantPool> >( (treeNode, constantsPool) => { treeNode.add_Nodes(constantsPool.OrderBy((item) => item.str()), (constant) => constant.str(), (constant) => false, (constant) => methods_bySignature.hasKey(constant.Value) ? Color.Green : Color.Sienna); }); //AfterSelect Events treeView.afterSelect <Java_Class>( (_class) => { if (openSourceCodeReference) { codeEditor.showInCodeEditor(classes_bySignature[_class.Signature], _class.Methods.first()); treeView.focus(); } }); treeView.afterSelect <Java_Method>( (method) => { if (openSourceCodeReference) { codeEditor.showInCodeEditor(classes_bySignature[method.ClassName], method); treeView.focus(); } }); treeView.afterSelect <Java_Instruction>( (instruction) => { if (openSourceCodeReference) { codeEditor.gotoLine(instruction.Line_Number, 4); treeView.focus(); } }); treeView.afterSelect <ConstantPool>( (constantPool) => { if (methods_bySignature.hasKey(constantPool.Value)) { var method = methods_bySignature[constantPool.Value]; codeEditor.showInCodeEditor(classes_bySignature[method.ClassName], method); treeView.focus(); } }); //Other events refresh = () => { if (currentJavaMetaData.notNull()) { treeView.clear(); classes_bySignature = currentJavaMetaData.classes_IndexedBySignature(); methods_bySignature = currentJavaMetaData.methods_IndexedBySignature(); classes_MappedTo_Implementations = currentJavaMetaData.classes_MappedTo_Implementations(); treeView.add_Node(currentJavaMetaData.str(), currentJavaMetaData, true); treeView.nodes().first().expand(); //treeView.focus(); } else { treeView.add_Node("Drop Jar/Zip or class file to view its contents"); } }; Action <API_IKVMC_Java_Metadata> loadJavaMappings = (_javaMappings) => { currentJavaMetaData = _javaMappings; refresh(); }; Action <string> loadFile = (file) => { treeView.azure(); O2Thread.mtaThread( () => { if (file.extension(".xml")) { loadJavaMappings(file.load <API_IKVMC_Java_Metadata>()); } else { loadJavaMappings(new API_IKVMC().create_JavaMetadata(file)); } treeView.white(); }); }; treeView.onDrop(loadFile); loadJavaMappings(javaMappings); return(loadFile); }
[WebMethod(EnableSession = true)] public JsTree JsTreeWithFoldersAndGuidanceItems() { // ReSharper disable JoinDeclarationAndInitializer var jsTree = new JsTree(); Func <Guid, List <Folder_V3>, JsTreeNode, List <Guid> > mapFolders = null; Func <Guid, Guid, List <Guid>, JsTreeNode, List <Guid> > mapViews; // ReSharper restore JoinDeclarationAndInitializer //precalculate for performance reasons var allViews = new Dictionary <Guid, View_V3>(); foreach (var view in GetViews()) { if (allViews.hasKey(view.viewId)) { "[getFolderStructure_Library] duplicate viewID: {0} from Library {0}".format(view.viewId, view.libraryId); // this should be moved into a TM Library health check } else { allViews.Add(view.viewId, view); } } mapViews = (libraryId, folderId, viewIds, targetNode) => { var viewsId = new List <Guid>(); foreach (var viewId in viewIds) { var view = allViews[viewId]; //GetViewById(viewId.str()); var viewNodeText = view.viewId.str(); var viewNode = targetNode.add_Node(view.caption, viewNodeText); //viewNode.state = "closed"; // views don't need this viewNode.data.icon = "/Images/ViewIcon.png"; viewsId.add(view.viewId); } return(viewsId); }; mapFolders = (libraryId, folders, targetNode) => { var folderViewsId = new List <Guid>(); foreach (var folder in folders) { var subFolderViewsId = new List <Guid>(); var folderId = folder.folderId; var folderNode = targetNode.add_Node(folder.name); folderNode.state = "closed"; folderNode.data.icon = "/Images/FolderIcon.png"; // ReSharper disable AccessToModifiedClosure // ReSharper disable PossibleNullReferenceException subFolderViewsId.AddRange(mapFolders(libraryId, folder.subFolders, folderNode)); // ReSharper restore PossibleNullReferenceException // ReSharper restore AccessToModifiedClosure var viewIds = (from view in folder.views select view.viewId).toList(); subFolderViewsId.AddRange(mapViews(libraryId, folderId, viewIds, folderNode)); folderNode.attr.id = folderId.str(); folderViewsId.AddRange(subFolderViewsId); } return(folderViewsId); }; var sessionLibraryId = GetCurrentSessionLibrary(); var libraries = (sessionLibraryId == Guid.Empty) ? tmXmlDatabase.tmLibraries() : tmXmlDatabase.tmLibrary(sessionLibraryId).wrapOnList(); foreach (var library in libraries) { var libraryNode = jsTree.add_Node(library.Caption); //var mappedFolders = new Dictionary<string, List<Folder_V3>>(); mapFolders(library.Id, GetFolders(library.Id), libraryNode); mapViews(library.Id, Guid.Empty, GetViewsInLibraryRoot(library.Id).guids(), libraryNode); //libraryNode.state = "open"; libraryNode.state = "closed"; libraryNode.data.icon = "/Images/SingleLibrary.png"; var libraryNodeText = library.Id.str(); libraryNode.attr.id = libraryNodeText; } return(jsTree); }
public static GitData_Repository map_File_Commits(this GitData_Repository gitDataRepository) { var mappedSha1s = new List<string>(); var nGit = gitDataRepository.nGit; var results = new List<string>(); var mappedFiles = new Dictionary<string, GitData_File>(); foreach(var file in gitDataRepository.files()) mappedFiles.Add(file.FilePath, file); foreach(var commit in nGit.commits()) { Action<TreeWalk> onTreeWalk = (treeWalk)=> { if (mappedFiles.hasKey(treeWalk.PathString)) { var mappedSha1 = "{0}:{1}".format(treeWalk.GetObjectId(0).sha1(),mappedFiles[treeWalk.PathString].Sha1); if (mappedSha1s.contains(mappedSha1)) return; var fileCommit = new GitData_File_Commit { File_Sha1 = treeWalk.GetObjectId(0).sha1(), Commit_Sha1 = commit.sha1(), Author = commit.author_Name(), When = commit.when().toFileTimeUtc() }; mappedFiles[treeWalk.PathString].Commits.add(fileCommit); mappedSha1s.add(mappedSha1); //mappedSha1.add(file.Sha1); } }; nGit.files(commit.sha1(), onTreeWalk); } return gitDataRepository; }
public static Library_V3 getFolderStructure_Library(this TM_WebServices tmWebServices, Guid libraryId, TM_GUI_Objects guiObjects) { // ReSharper disable AccessToModifiedClosure //pre-create this mapping since the view retrieval was a massive performance bottle neck var allViews = new Dictionary<Guid, View_V3>(); foreach(var view in tmWebServices.GetViews()) if (allViews.hasKey(view.viewId)) "[getFolderStructure_Library] duplicate viewID: {0} from Library {0}".format(view.viewId, view.libraryId); // this should be moved into a TM Library health check else allViews.Add(view.viewId, view); Action<Folder_V3> mapFolderViews = null; Func<List<Guid>, List<View_V3>> mapViews = (viewGuids) => { var views = new List<View_V3>(); foreach(var viewGuid in viewGuids) { var view = allViews[viewGuid]; /*// compress view.guidanceItems using guiObjects view.guidanceItems_Indexes = (from guid in view.guidanceItems select guiObjects.get_Index(guid.str()).str()).toList() .join(",").remove(" "); view.guidanceItems.Clear();*/ views.add(view); } return views; }; // ReSharper disable PossibleNullReferenceException // ReSharper disable ImplicitlyCapturedClosure mapFolderViews = (folder) => { var mappedViews = mapViews(folder.views.guids()); folder.views.Clear(); folder.views.add(mappedViews); foreach(var subFolder in folder.subFolders) mapFolderViews(subFolder); }; Action<List<Folder_V3>, List<Folder_V3>> mapFolders = (folders, parentFolder) => { foreach(var folder in folders) { parentFolder.add(folder); mapFolderViews(folder); } }; Func<Guid,string, Library_V3> mapLibrary = (library_Id, libraryName)=> { var libraryV3 = new Library_V3 { libraryId = library_Id, name = libraryName }; mapFolders(tmWebServices.GetFolders(library_Id), libraryV3.subFolders); libraryV3.views.add(mapViews(tmWebServices.GetViewsInLibraryRoot(libraryId).guids())); libraryV3.guidanceItems = tmWebServices.getGuidanceItemsIds_NotInViews(library_Id); return libraryV3; }; Func<Guid,Library_V3> getLibrary_TreeStructure = (id)=>{ var tmLibrary = tmWebServices.GetLibraryById(id); if (tmLibrary.isNull()) { "[in getLibraryFolderStructure] could not find library with id: {0}".error(id); return null; } return mapLibrary(id, tmLibrary.caption); }; return getLibrary_TreeStructure(libraryId); // ReSharper restore PossibleNullReferenceException // ReSharper restore ImplicitlyCapturedClosure // ReSharper restore AccessToModifiedClosure }
public static Library_V3 getFolderStructure_Library(this TM_WebServices tmWebServices, Guid libraryId, TM_GUI_Objects guiObjects) { // ReSharper disable AccessToModifiedClosure //pre-create this mapping since the view retrieval was a massive performance bottle neck var allViews = new Dictionary <Guid, View_V3>(); foreach (var view in tmWebServices.GetViews()) { if (allViews.hasKey(view.viewId)) { "[getFolderStructure_Library] duplicate viewID: {0} from Library {0}".format(view.viewId, view.libraryId); // this should be moved into a TM Library health check } else { allViews.Add(view.viewId, view); } } Action <Folder_V3> mapFolderViews = null; Func <List <Guid>, List <View_V3> > mapViews = (viewGuids) => { var views = new List <View_V3>(); foreach (var viewGuid in viewGuids) { var view = allViews[viewGuid]; /*// compress view.guidanceItems using guiObjects * view.guidanceItems_Indexes = (from guid in view.guidanceItems * select guiObjects.get_Index(guid.str()).str()).toList() * .join(",").remove(" "); * view.guidanceItems.Clear();*/ views.add(view); } return(views); }; // ReSharper disable PossibleNullReferenceException // ReSharper disable ImplicitlyCapturedClosure mapFolderViews = (folder) => { var mappedViews = mapViews(folder.views.guids()); folder.views.Clear(); folder.views.add(mappedViews); foreach (var subFolder in folder.subFolders) { mapFolderViews(subFolder); } }; Action <List <Folder_V3>, List <Folder_V3> > mapFolders = (folders, parentFolder) => { foreach (var folder in folders) { parentFolder.add(folder); mapFolderViews(folder); } }; Func <Guid, string, Library_V3> mapLibrary = (library_Id, libraryName) => { var libraryV3 = new Library_V3 { libraryId = library_Id, name = libraryName }; mapFolders(tmWebServices.GetFolders(library_Id), libraryV3.subFolders); libraryV3.views.add(mapViews(tmWebServices.GetViewsInLibraryRoot(libraryId).guids())); libraryV3.guidanceItems = tmWebServices.getGuidanceItemsIds_NotInViews(library_Id); return(libraryV3); }; Func <Guid, Library_V3> getLibrary_TreeStructure = (id) => { var tmLibrary = tmWebServices.GetLibraryById(id); if (tmLibrary.isNull()) { "[in getLibraryFolderStructure] could not find library with id: {0}".error(id); return(null); } return(mapLibrary(id, tmLibrary.caption)); }; return(getLibrary_TreeStructure(libraryId)); // ReSharper restore PossibleNullReferenceException // ReSharper restore ImplicitlyCapturedClosure // ReSharper restore AccessToModifiedClosure }
public static Assembly loadAssemblyAndAllItsDependencies(this string pathToAssemblyToLoad) { var referencesFolder = pathToAssemblyToLoad.directoryName(); var referencesFiles = referencesFolder.files(true, "*.dll", "*.exe"); Func <string, string> resolveAssemblyName = (name) => { if (name.starts("System")) { return(name); } if (name.isAssemblyName()) { name = name.assembly_Name(); } var resolvedPath = referencesFiles.find_File_in_List(name, name + ".dll", name + ".exe"); if (resolvedPath.fileExists()) { //"**** Found match:{0}".info(resolvedPath); return(resolvedPath); } //"**** Couldn't match:{0}".error(resolvedPath); return(null); }; var loadedAssemblies = new Dictionary <string, Assembly>(); // ReSharper disable ImplicitlyCapturedClosure // ReSharper disable AccessToModifiedClosure Action <Assembly> loadReferencedAssemblies = (assembly) => { }; Func <string, Assembly> loadAssembly = null; loadAssembly = (assemblyPathOrName) => { if (loadedAssemblies.hasKey(assemblyPathOrName)) { return(loadedAssemblies[assemblyPathOrName]); } var assembly = assemblyPathOrName.resolveAssembly(resolveAssemblyName); if (assembly.notNull()) { loadedAssemblies.add(assemblyPathOrName, assembly); loadReferencedAssemblies(assembly); if (assembly.Location.valid().isFalse()) { loadAssembly(assembly.FullName.assembly_Name()); loadAssembly(assembly.ManifestModule.Name != "<Unknown>" ? assembly.ManifestModule.Name : assembly.ManifestModule.ScopeName); } //loadAssembly(assembly.ManifestModule.Name); } return(assembly); }; loadReferencedAssemblies = (assembly) => { var referencedAssemblies = assembly.referencedAssemblies(); foreach (var referencedAssembly in referencedAssemblies) { var assemblyName = referencedAssembly.str(); if (loadAssembly(assemblyName).isNull()) { "COULD NOT LOAD Referenced Assembly: {0}".error(assemblyName); } } }; // ReSharper restore ImplicitlyCapturedClosure // ReSharper restore AccessToModifiedClosure var mainAssembly = loadAssembly(pathToAssemblyToLoad); "[loadAssemblyAndAllItsDependencies] there were {0} references loaded/mapped from '{1}'".info(loadedAssemblies.size(), pathToAssemblyToLoad); //show.info(loadedAssemblies); return(mainAssembly); }
public static Color treeNodeColor(this string signature, Dictionary<string, Java_Method> methods_bySignature) { return methods_bySignature.hasKey(signature) ? methods_bySignature[signature].IsAbstract ? Color.DarkBlue : Color.DarkGreen : Color.DarkRed; }
public static TreeNode add_Implements(this TreeNode treeNode, Method_CallMapping callMapping, Dictionary<string, Method_CallMapping> callMappings , Dictionary<string, Java_Method> methods_bySignature , bool showStubTreeNode) { if (callMapping.Implements.size()==0) return treeNode; var implementsNode = (showStubTreeNode) ? treeNode.add_Node("Implements").color(Color.Gray) : treeNode; implementsNode.add_Nodes(callMapping.Implements .OrderBy((implements)=>implements.Signature) .Where((implements)=>callMappings.hasKey(implements.Signature)), (implements) => implements.Signature, (implements) => callMappings[implements.Signature], (implements) => true, //callMappings.hasMapping_ImplementedBy(implementedBy.Signature), (implements) => implements.Signature.treeNodeColor(methods_bySignature)); return treeNode; }
public static TreeNode add_IsCalledBy(this TreeNode treeNode, Method_CallMapping callMapping, Dictionary<string, Method_CallMapping> callMappings , Dictionary<string, Java_Method> methods_bySignature , bool showStubTreeNode) { if (callMapping.IsCalledBy.size()==0) return treeNode; //var isCalledByLocations = treeNode.add_Node("_IsCalledBy_Locations"); var locations = new List<MethodCall_Location>(); foreach(var isCalledBy in callMapping.IsCalledBy) foreach(var atLocation in isCalledBy.AtLocations) { atLocation.Signature = isCalledBy.Signature; // did this so that we don't have to store/serialize the Signature here locations.Add(atLocation); } locations = locations.OrderBy((atLocation)=>atLocation.Pc) .OrderBy((atLocation)=>atLocation.Signature).toList(); //isCalledByLocations.add_Nodes(locations); var isCalledByToNode = (showStubTreeNode) ? treeNode.add_Node("IsCalledBy").color(Color.Gray) : treeNode; isCalledByToNode.add_Node("_IsCalledBy_Locations").color(Color.Gray) .add_Nodes(locations); isCalledByToNode.add_Nodes(callMapping.IsCalledBy .OrderBy((calledBy)=>calledBy.Signature) .Where((calledBy)=>callMappings.hasKey(calledBy.Signature)), (calledBy) => calledBy.Signature, (calledBy) => callMappings[calledBy.Signature], (calledBy) => true, //callMappings.hasMapping_IsCalledBy(calledBy.Signature), (calledBy) => methods_bySignature.hasKey(calledBy.Signature) ? Color.DarkGreen : Color.DarkRed); return treeNode; }
public JsTree JsTreeWithFoldersAndGuidanceItems() { // ReSharper disable JoinDeclarationAndInitializer var jsTree = new JsTree(); Func<Guid, List<Folder_V3>, JsTreeNode, List<Guid>> mapFolders = null; Func<Guid, Guid, List<Guid>, JsTreeNode, List<Guid>> mapViews; // ReSharper restore JoinDeclarationAndInitializer //precalculate for performance reasons var allViews = new Dictionary<Guid, View_V3>(); foreach(var view in GetViews()) if (allViews.hasKey(view.viewId)) "[getFolderStructure_Library] duplicate viewID: {0} from Library {0}".format(view.viewId, view.libraryId); // this should be moved into a TM Library health check else allViews.Add(view.viewId, view); mapViews = (libraryId, folderId, viewIds, targetNode) => { var viewsId = new List<Guid>(); foreach(var viewId in viewIds) { var view = allViews[viewId];//GetViewById(viewId.str()); var viewNodeText = view.viewId.str(); var viewNode = targetNode.add_Node(view.caption, viewNodeText); //viewNode.state = "closed"; // views don't need this viewNode.data.icon = "/Images/ViewIcon.png"; viewsId.add(view.viewId); } return viewsId; }; mapFolders = (libraryId, folders, targetNode)=> { var folderViewsId = new List<Guid>(); foreach(var folder in folders) { var subFolderViewsId = new List<Guid>(); var folderId = folder.folderId; var folderNode = targetNode.add_Node(folder.name); folderNode.state = "closed"; folderNode.data.icon = "/Images/FolderIcon.png"; // ReSharper disable AccessToModifiedClosure // ReSharper disable PossibleNullReferenceException subFolderViewsId.AddRange(mapFolders(libraryId, folder.subFolders, folderNode)); // ReSharper restore PossibleNullReferenceException // ReSharper restore AccessToModifiedClosure var viewIds = (from view in folder.views select view.viewId).toList(); subFolderViewsId.AddRange(mapViews(libraryId, folderId, viewIds, folderNode)); folderNode.attr.id = folderId.str(); folderViewsId.AddRange(subFolderViewsId); } return folderViewsId; }; var sessionLibraryId = GetCurrentSessionLibrary(); var libraries = (sessionLibraryId == Guid.Empty) ? tmXmlDatabase.tmLibraries() : tmXmlDatabase.tmLibrary(sessionLibraryId).wrapOnList(); foreach(var library in libraries) { var libraryNode =jsTree.add_Node(library.Caption); //var mappedFolders = new Dictionary<string, List<Folder_V3>>(); mapFolders(library.Id, GetFolders(library.Id), libraryNode); mapViews(library.Id, Guid.Empty, GetViewsInLibraryRoot(library.Id).guids(), libraryNode); //libraryNode.state = "open"; libraryNode.state = "closed"; libraryNode.data.icon = "/Images/SingleLibrary.png"; var libraryNodeText = library.Id.str(); libraryNode.attr.id = libraryNodeText; } return jsTree; }
public static Assembly loadAssemblyAndAllItsDependencies(this string pathToAssemblyToLoad) { var referencesFolder = pathToAssemblyToLoad.directoryName(); var referencesFiles = referencesFolder.files(true,"*.dll", "*.exe"); Func<string,string> resolveAssemblyName = (name)=>{ if (name.starts("System")) return name; if (name.isAssemblyName()) name = name.assembly_Name(); var resolvedPath = referencesFiles.find_File_in_List(name, name+ ".dll", name+ ".exe"); if(resolvedPath.fileExists()) { //"**** Found match:{0}".info(resolvedPath); return resolvedPath; } //"**** Couldn't match:{0}".error(resolvedPath); return null; }; var loadedAssemblies = new Dictionary<string, Assembly>(); // ReSharper disable ImplicitlyCapturedClosure // ReSharper disable AccessToModifiedClosure Action<Assembly> loadReferencedAssemblies = (assembly) => { }; Func<string, Assembly> loadAssembly = null; loadAssembly = (assemblyPathOrName) => { if (loadedAssemblies.hasKey(assemblyPathOrName)) return loadedAssemblies[assemblyPathOrName]; var assembly = assemblyPathOrName.resolveAssembly(resolveAssemblyName); if(assembly.notNull()) { loadedAssemblies.add(assemblyPathOrName, assembly); loadReferencedAssemblies(assembly); if (assembly.Location.valid().isFalse()) { loadAssembly(assembly.FullName.assembly_Name()); loadAssembly(assembly.ManifestModule.Name != "<Unknown>" ? assembly.ManifestModule.Name : assembly.ManifestModule.ScopeName); } //loadAssembly(assembly.ManifestModule.Name); } return assembly; }; loadReferencedAssemblies = (assembly)=>{ var referencedAssemblies = assembly.referencedAssemblies(); foreach(var referencedAssembly in referencedAssemblies) { var assemblyName = referencedAssembly.str(); if (loadAssembly(assemblyName).isNull()) "COULD NOT LOAD Referenced Assembly: {0}".error(assemblyName); } }; // ReSharper restore ImplicitlyCapturedClosure // ReSharper restore AccessToModifiedClosure var mainAssembly = loadAssembly(pathToAssemblyToLoad); "[loadAssemblyAndAllItsDependencies] there were {0} references loaded/mapped from '{1}'".info(loadedAssemblies.size(), pathToAssemblyToLoad); //show.info(loadedAssemblies); return mainAssembly; }
public static bool hasMapping_Implements(this Dictionary <string, Method_CallMapping> callMappings, string signature) { return(callMappings.hasKey(signature).isTrue() && callMappings[signature].Implements.size() > 0); }
public static List<Java_Method> implementations(this Java_Method method, Dictionary<string, List<Java_Class>> classesImplementations) { var implementations = new List<Java_Method>(); if (classesImplementations.hasKey(method.ClassName)) { foreach(var _class in classesImplementations[method.ClassName]) foreach(var implementationMethod in _class.Methods) if (method.SimpleSignature == implementationMethod.SimpleSignature) { implementations.Add(implementationMethod); break; } } return implementations; }
public static Dictionary <TKey, TValue> assert_Has_Key <TKey, TValue>(this Dictionary <TKey, TValue> dictionary, TKey key, string message = Extra_NUnit_Messages.ASSERT_HAS_KEY) { dictionary.hasKey(key).assert_True(message.format(key)); return(dictionary); }