Revert "Remove unused project."

This reverts commit eaada771a6e62ca494a625ce1b060f1a94fa9877.

Reason for revert: Breaks build_test and other builds
Bug: 155862492

Change-Id: I1a14b84d54b05596ec250b31ae56e437cf49fd81
diff --git a/find_java2/FindJava2/FindJava2.cpp b/find_java2/FindJava2/FindJava2.cpp
new file mode 100755
index 0000000..1435e1b
--- /dev/null
+++ b/find_java2/FindJava2/FindJava2.cpp
@@ -0,0 +1,199 @@
+/*

+* Copyright (C) 2014 The Android Open Source Project

+*

+* Licensed under the Apache License, Version 2.0 (the "License");

+* you may not use this file except in compliance with the License.

+* You may obtain a copy of the License at

+*

+*      http://www.apache.org/licenses/LICENSE-2.0

+*

+* Unless required by applicable law or agreed to in writing, software

+* distributed under the License is distributed on an "AS IS" BASIS,

+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+* See the License for the specific language governing permissions and

+* limitations under the License.

+*/

+

+#include "stdafx.h"

+#include "FindJava2.h"

+#include "utils.h"

+#include "JavaFinder.h"

+#include "FindJava2Dlg.h"

+

+#ifdef _DEBUG

+#define new DEBUG_NEW

+#endif

+

+// The one and only MFC application object

+class CFindJava2App : public CWinApp {

+public:

+    CFindJava2App() {

+    }

+

+    // Set CWinApp default registry key. Must be consistent with all apps using findjava2.

+    void initRegistryKey() {

+        SetRegistryKey(_T("Android-FindJava2"));

+    }

+};

+

+CFindJava2App theApp;

+

+using namespace std;

+

+int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) {

+

+    // Init utils; use default app name based on VERSIONINFO.FileDescription

+    initUtils(NULL);

+

+    // initialize MFC and print and error on failure

+    HMODULE hModule = ::GetModuleHandle(NULL);

+    if (hModule == NULL) {

+        displayLastError(_T("Fatal Error: "));

+        return -2;

+    }

+    if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0)) {

+        displayLastError(_T("Fatal Error: "));

+        return -3;

+    }

+

+    theApp.initRegistryKey();

+

+    gIsConsole = true; // tell utils to to print errors to stderr

+    gIsDebug = (getenv("ANDROID_SDKMAN_DEBUG") != NULL);

+

+    // Parse command line

+    bool doTests = false;

+    bool doShortPath = false;

+    bool doVersion = false;

+    bool doJavaW = false;

+    bool doForceUi = false;

+    bool doJava1_7 = false;

+

+    for (int i = 1; i < argc; i++) {

+        if (_tcsnccmp(argv[i], _T("-t"), 2) == 0) {

+            doTests = true;

+

+        } else if (_tcsnccmp(argv[i], _T("-d"), 2) == 0) {

+            gIsDebug = true;

+

+        } else if (_tcsnccmp(argv[i], _T("-s"), 2) == 0) {

+            doShortPath = true;

+

+        } else if (_tcsnccmp(argv[i], _T("-v"), 2) == 0) {

+            doVersion = true;

+

+        } else if (_tcsnccmp(argv[i], _T("-f"), 2) == 0) {

+            doForceUi = true;

+

+        } else if (_tcsnccmp(argv[i], _T("-7"), 2) == 0) {

+            doJava1_7 = true;

+

+        } else if (_tcscmp(argv[i], _T("-w")) == 0 || _tcscmp(argv[i], _T("-javaw")) == 0) {

+            doJavaW = true;

+

+        } else {

+            printf(

+                "Outputs the path of the first Java.exe found on the local system.\n"

+                "Returns code 0 when found, 1 when not found.\n"

+                "Options:\n"

+                "-h / -help   : This help.\n"

+                "-t / -test   : Internal test.\n"

+                "-f / -force  : Force UI selection.\n"

+                "-7           : Java 1.7 minimum instead of 1.6.\n"

+                "-s / -short  : Print path in short DOS form.\n"

+                "-w / -javaw  : Search a matching javaw.exe; defaults to java.exe if not found.\n"

+                "-v / -version: Only prints the Java version found.\n"

+                );

+            return 2;

+        }

+    }

+

+

+    CJavaFinder javaFinder(JAVA_VERS_TO_INT(1, doJava1_7 ? 7 : 6));

+    CJavaPath javaPath = javaFinder.getRegistryPath();

+

+    if (doTests) {

+        std::set<CJavaPath> paths;

+        javaFinder.findJavaPaths(&paths);

+        bool regPrinted = false;

+        for (const CJavaPath &p : paths) {

+            bool isReg = (p == javaPath);

+            if (isReg) {

+                regPrinted = true;

+            }

+            _tprintf(_T("%c [%s] %s\n"), isReg ? '*' : ' ', p.getVersion(), p.mPath);

+        }

+

+        if (!regPrinted && !javaPath.isEmpty()) {

+            const CJavaPath &p = javaPath;

+            _tprintf(_T("* [%s] %s\n"), p.getVersion(), p.mPath);

+        }

+        return 0;

+    }

+

+    if (doForceUi || javaPath.isEmpty()) {

+        CFindJava2Dlg dlg;

+        dlg.setJavaFinder(&javaFinder);

+        INT_PTR nResponse = dlg.DoModal();

+

+        if (nResponse == IDOK) {

+            // Get java path selected by user and save into registry for later re-use

+            javaPath = dlg.getSelectedPath();

+            javaFinder.setRegistryPath(javaPath);

+        } else if (nResponse == -1) {   // MFC boilerplate

+            TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n");

+            return 1;

+        }

+    }

+

+    if (javaPath.isEmpty()) {

+        fprintf(stderr, "No java.exe path found");

+        return 1;

+    }

+

+    if (doShortPath) {

+        PVOID oldWow64Value = disableWow64FsRedirection();

+        if (!javaPath.toShortPath()) {

+            revertWow64FsRedirection(&oldWow64Value);

+            _ftprintf(stderr,

+                    _T("Failed to convert path to a short DOS path: %s\n"),

+                    javaPath.mPath);

+            return 1;

+        }

+        revertWow64FsRedirection(&oldWow64Value);

+    }

+

+    if (doVersion) {

+        // Print version found. We already have the version as an integer

+        // so we don't need to run java -version a second time.

+        _tprintf(_T("%s"), javaPath.getVersion());

+        return 0;

+    }

+

+    if (doJavaW) {

+        // Try to find a javaw.exe instead of java.exe at the same location.

+        CPath javawPath = javaPath.mPath;

+        javawPath.RemoveFileSpec();

+        javawPath.Append(_T("javaw.exe"));

+        javawPath.Canonicalize();

+

+        // Only accept it if we can actually find the exec

+        PVOID oldWow64Value = disableWow64FsRedirection();

+        bool exists = javawPath.FileExists() == TRUE; // skip BOOL-to-bool warning

+        revertWow64FsRedirection(&oldWow64Value);

+

+        if (!exists) {

+            _ftprintf(stderr,

+                    _T("Failed to find javaw at: %s\n"),

+                    javawPath);

+            return 1;

+        }

+

+        javaPath.mPath = javawPath;

+    }

+

+    // Print java.exe path found

+    _tprintf(_T("%s"), javaPath.mPath);

+    return 0;

+

+}