blob: f8163168ce6654105d02736ace74c252662286ca [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
/*
* Author: Tomas Holy
*/
#include "applauncher.h"
#include "../../../platform/o.n.bootstrap/launcher/windows/utilsfuncs.h"
#include "../../../platform/o.n.bootstrap/launcher/windows/argnames.h"
using namespace std;
const char *AppLauncher::OPT_DEFAULT_USER_DIR = "default_userdir=";
const char *AppLauncher::OPT_DEFAULT_CACHE_DIR = "default_cachedir=";
const char *AppLauncher::OPT_DEFAULT_OPTIONS = "default_options=";
const char *AppLauncher::OPT_EXTRA_CLUSTERS = "extra_clusters=";
const char *AppLauncher::OPT_JDK_HOME = "jdkhome=";
const char *AppLauncher::APPNAME_TOKEN = "${APPNAME}";
const char *AppLauncher::CACHE_SUFFIX = "\\Cache\\";
AppLauncher::AppLauncher() {
}
AppLauncher::AppLauncher(const AppLauncher& orig) {
}
AppLauncher::~AppLauncher() {
}
bool AppLauncher::initBaseNames() {
if (!NbLauncher::initBaseNames()) {
return false;
}
string pattern = baseDir + "\\platform*";
WIN32_FIND_DATA fd = {0};
HANDLE hFind;
hFind = FindFirstFile(pattern.c_str(), &fd);
if (hFind == INVALID_HANDLE_VALUE) {
logErr(false, true, "Cannot find 'platform*' folder!");
return false;
}
do {
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& fileExists((baseDir + '\\' + fd.cFileName + NbLauncher::NBEXEC_FILE_PATH).c_str())) {
platformDir = baseDir + '\\' + fd.cFileName;
break;
}
} while (FindNextFile(hFind, &fd));
FindClose(hFind);
if (platformDir.empty()) {
logErr(false, true, "Cannot find valid 'platform*' folder!");
return false;
}
return true;
}
bool AppLauncher::findUserDir(const char *str) {
logMsg("AppLauncher::findUserDir()");
if (!NbLauncher::findUserDir(str)) { // will set userDir and possibly userHome.
return false;
}
int pos = userDir.find(APPNAME_TOKEN);
if (pos != string::npos) {
userDir.replace(pos, strlen(APPNAME_TOKEN), appName);
}
return true;
}
bool AppLauncher::findCacheDir(const char *str) {
logMsg("AppLauncher::findCacheDir");
if (!NbLauncher::findCacheDir(str)) { // will set userDir and possibly userHome.
return false;
}
int pos = cacheDir.find(APPNAME_TOKEN);
if (pos != string::npos) {
cacheDir.replace(pos, strlen(APPNAME_TOKEN), appName);
}
return true;
}
const char * AppLauncher::getAppName() {
return appName.c_str();
}
void AppLauncher::addSpecificOptions(CmdArgs &args) {
}
void AppLauncher::adjustHeapSize() {
}
const char * AppLauncher::getDefUserDirOptName() {
return OPT_DEFAULT_USER_DIR;
}
const char * AppLauncher::getDefCacheDirOptName() {
return OPT_DEFAULT_CACHE_DIR;
}
const char * AppLauncher::getDefOptionsOptName() {
return OPT_DEFAULT_OPTIONS;
}
const char * AppLauncher::getExtraClustersOptName() {
return OPT_EXTRA_CLUSTERS;
}
const char * AppLauncher::getJdkHomeOptName() {
return OPT_JDK_HOME;
}
const char * AppLauncher::getCurrentDir() {
return baseDir.c_str();
}
std::string AppLauncher::constructApplicationDir(const std::string& dir, bool cache) {
if (cache) {
return dir + "\\" + getAppName() + CACHE_SUFFIX;
} else {
return dir + "\\" + getAppName() + "\\";
}
}