/**
* Copyright 1999-2009 The Pegadi Team
*
* 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.
*/
package org.pegadi.webapp.webstart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* User: ronnie
* Date: Nov 17, 2005
* Time: 1:01:57 PM
* To change this template use File | Settings | File Templates.
*/
public class WebstartController extends AbstractController implements ResourceLoaderAware {
private JnlpConfigBean configBean;
private ResourceLoader resourceLoader;
private final Logger log = LoggerFactory.getLogger(getClass());
private ResourceBundle resourceBundle = ResourceBundle.getBundle("org.pegadi.webstart.webstart");
protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
List<String> libs = new ArrayList<String>();
configBean.setVersion(resourceBundle.getString("version"));
String contextPath = httpServletRequest.getContextPath();
int serverport = httpServletRequest.getServerPort();
String server = httpServletRequest.getServerName();
configBean.setWebBase("http://" + server + ":" + serverport + contextPath);
configBean.getProperties().put("server.host", server);
File clientFolder = resourceLoader.getResource(configBean.getCodeBase()).getFile();
if (clientFolder.isDirectory() ) {
File[] files = clientFolder.listFiles();
for (File tempFile : files) {
if(!tempFile.getName().contains(".jar")){
continue;
}
if (tempFile.getName().contains(configBean.getMainLibBaseName())) {
model.put("main", configBean.getCodeBase() + tempFile.getName());
} else {
libs.add(configBean.getCodeBase() + tempFile.getName());
}
}
} else {
log.error("ERROR: clientFolder " + clientFolder.getAbsolutePath() + " is not a directory");
throw new ServletException("WebStartController: Could not read directory containing client jars.");
}
model.put("jars", libs);
model.put("config", configBean);
return new ModelAndView("webstart", model);
}
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
@Required
public void setConfigBean(JnlpConfigBean configBean) {
this.configBean = configBean;
}
}