From 90eadde0002edc687878622399a4b0c4a8668ab2 Mon Sep 17 00:00:00 2001 From: plamen5kov Date: Thu, 28 May 2015 14:46:21 +0300 Subject: [PATCH] refactored: classNameSeparator is now a constant in binding generator and runtime changed tests so they can work with the new changes --- .../Generator/src/com/tns/bindings/Dump.java | 4 +++- .../Generator/src/com/tns/bindings/ProxyGenerator.java | 2 +- src/jni/Constants.h | 2 ++ src/jni/MetadataNode.cpp | 10 +++++----- src/jni/NativeScriptRuntime.cpp | 2 +- src/src/com/tns/DexFactory.java | 6 ++++-- test-app/assets/app/tests/tests.js | 2 +- test-app/assets/app/tests/testsForTypescript.js | 9 +++++---- 8 files changed, 22 insertions(+), 15 deletions(-) diff --git a/binding-generator/Generator/src/com/tns/bindings/Dump.java b/binding-generator/Generator/src/com/tns/bindings/Dump.java index a2ff7eef6..53307fe6c 100644 --- a/binding-generator/Generator/src/com/tns/bindings/Dump.java +++ b/binding-generator/Generator/src/com/tns/bindings/Dump.java @@ -12,6 +12,8 @@ public class Dump { + public static final char CLASS_NAME_LOCATION_SEPARATOR = '_'; + private static final String callJsMethodSignatureCtor = "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Z[Ljava/lang/Object;"; private static final String callJsMethodSignatureMethod = "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;"; private static final String LCOM_TNS = "Lcom/tns/gen/"; @@ -228,7 +230,7 @@ public void generateProxy(ApplicationWriter aw, String proxyName, Class class //String methodSignature = org.objectweb.asm.Type.getMethodDescriptor(Object.class.getMethods()[0]); String tnsClassSignature = LCOM_TNS + classSignature.substring(1, classSignature.length() - 1).replace("$", "_") - + "-" + proxyName + ";"; + + CLASS_NAME_LOCATION_SEPARATOR + proxyName + ";"; ClassVisitor cv = generateClass(aw, classTo, classSignature, tnsClassSignature); Method[] methods = getSupportedMethods(classTo, methodOverrides); diff --git a/binding-generator/Generator/src/com/tns/bindings/ProxyGenerator.java b/binding-generator/Generator/src/com/tns/bindings/ProxyGenerator.java index 94a9f4cc4..2fce6d093 100644 --- a/binding-generator/Generator/src/com/tns/bindings/ProxyGenerator.java +++ b/binding-generator/Generator/src/com/tns/bindings/ProxyGenerator.java @@ -53,7 +53,7 @@ public String generateProxy(String proxyName, Class classToProxy, HashSetSetHiddenValue(ConvertToV8String("implClassName"), ConvertToV8String(fullName)); // @@ -1073,7 +1073,7 @@ void MetadataNode::ExtendCallMethodHandler(const v8::FunctionCallbackInfom_name + '-' + extendNameAndLocation; //ConvertToString(extendName); + auto fullClassName = node->m_name + Constants::CLASS_NAME_LOCATION_SEPARATOR + extendNameAndLocation; //ConvertToString(extendName); auto fullExtendedName = TNS_PREFIX + fullClassName; DEBUG_WRITE("ExtendsCallMethodHandler: extend full name %s", fullClassName.c_str()); @@ -1162,8 +1162,8 @@ bool MetadataNode::GetExtendLocation(string& extendLocation) } string srcFileName = ConvertToString(scriptName); - std::replace(srcFileName.begin(), srcFileName.end(), '/', '-'); - std::replace(srcFileName.begin(), srcFileName.end(), '.', '-'); + std::replace(srcFileName.begin(), srcFileName.end(), '/', '_'); + std::replace(srcFileName.begin(), srcFileName.end(), '.', '_'); int lineNumber = frame->GetLineNumber(); if (lineNumber < 0) { @@ -1186,7 +1186,7 @@ bool MetadataNode::GetExtendLocation(string& extendLocation) } - extendLocationStream << "f" << srcFileName.c_str() << "-l" << lineNumber << "-c" << column << "--"; + extendLocationStream << "f" << srcFileName.c_str() << "_l" << lineNumber << "_c" << column << "__"; //DEBUG_WRITE("EXTEND_LOCATION %s", extendLocationStream.str().c_str()); } } diff --git a/src/jni/NativeScriptRuntime.cpp b/src/jni/NativeScriptRuntime.cpp index 1b31e78e5..657ddd24c 100644 --- a/src/jni/NativeScriptRuntime.cpp +++ b/src/jni/NativeScriptRuntime.cpp @@ -565,7 +565,7 @@ jobject NativeScriptRuntime::CreateJavaInstance(int objectID, const std::string& int NativeScriptRuntime::GetCachedConstructorId(JEnv& env, const FunctionCallbackInfo& args, const string& name, const string& className, jobjectArray javaArgs, const Handle& implementationObject) { int ctorId = -1; - string fullClassName = className + '-' + name; + string fullClassName = className + Constants::CLASS_NAME_LOCATION_SEPARATOR + name; string encodedCtorArgs = MethodCache::EncodeSignature(fullClassName, "", args, false); auto itFound = s_constructorCache.find(encodedCtorArgs); diff --git a/src/src/com/tns/DexFactory.java b/src/src/com/tns/DexFactory.java index 214f9aa5c..c0f93a22c 100644 --- a/src/src/com/tns/DexFactory.java +++ b/src/src/com/tns/DexFactory.java @@ -27,6 +27,7 @@ public class DexFactory { private static final String SECONDARY_DEX_FOLDER_NAME = "code_cache" + File.separator + "secondary-dexes"; + private static final char CLASS_NAME_LOCATION_SEPARATOR = '_'; private String dexPath; private String odexPath; @@ -75,7 +76,7 @@ public Class resolveClass(String name, String className, String[] methodOverr return NativeScriptActivity.class; } - String fullClassName = className.replace("$", "_") + "-" + name; + String fullClassName = className.replace("$", "_") + CLASS_NAME_LOCATION_SEPARATOR + name; Class existingClass = this.injectedDexClasses.get(fullClassName); if(existingClass != null) { @@ -83,7 +84,7 @@ public Class resolveClass(String name, String className, String[] methodOverr } String classToProxy = this.getClassToProxyName(className); - String dexFilePath = classToProxy + "-" + name; + String dexFilePath = classToProxy + CLASS_NAME_LOCATION_SEPARATOR + name; File dexFile = this.getDexFile(dexFilePath); if (dexFile == null) @@ -136,6 +137,7 @@ public Class resolveClass(String name, String className, String[] methodOverr public Class findClass(String className) throws ClassNotFoundException { String canonicalName = className.replace('/', '.'); + Log.d("TNS_NATIVE", canonicalName); Class existingClass = this.injectedDexClasses.get(canonicalName); if(existingClass != null) { diff --git a/test-app/assets/app/tests/tests.js b/test-app/assets/app/tests/tests.js index 481432948..e35906508 100644 --- a/test-app/assets/app/tests/tests.js +++ b/test-app/assets/app/tests/tests.js @@ -394,7 +394,7 @@ describe("Tests ", function () { var button1 = new MyButton(); var button1Label = button1.toString(); - expect(button1Label.indexOf("com.tns.tests.Button1-")).not.toEqual(-1); + expect(button1Label.indexOf("com.tns.tests.Button1_")).not.toEqual(-1); expect(button1Label.indexOf("MyButton")).not.toEqual(-1); expect(button1Label.indexOf("success")).not.toEqual(-1); diff --git a/test-app/assets/app/tests/testsForTypescript.js b/test-app/assets/app/tests/testsForTypescript.js index 11aa80957..93298f03c 100644 --- a/test-app/assets/app/tests/testsForTypescript.js +++ b/test-app/assets/app/tests/testsForTypescript.js @@ -112,8 +112,9 @@ describe("Tests typescript", function () { var button = new MyButton2(); var button1Label = button.superToString(); - expect(button1Label.indexOf("com.tns.tests.Button1-")).not.toEqual(-1); - expect(button1Label.indexOf("-MyButton2")).not.toEqual(-1); + + expect(button1Label.indexOf("com.tns.tests.Button1_")).not.toEqual(-1); + expect(button1Label.indexOf("_MyButton2")).not.toEqual(-1); }); it("When_creating_a_pure_typescript_inheritance_chain_it_should_work", function () { @@ -289,8 +290,8 @@ describe("Tests typescript", function () { var button = new MyButton5(); var button1Label = button.toString(); - expect(button1Label.indexOf("com.tns.tests.Button1-")).not.toEqual(-1); - expect(button1Label.indexOf("-MyButton5")).not.toEqual(-1); + expect(button1Label.indexOf("com.tns.tests.Button1_")).not.toEqual(-1); + expect(button1Label.indexOf("_MyButton5")).not.toEqual(-1); }); it("When_extending_an_already_extended_object_it_should_throw_an_error", function () {