Summary: Add swf8 version to LPS.java
Bugs Fixed:
Bug LPP-1623: java.lang.RuntimeException: Unknown SWF version: swf8
Technical Reviewer:
QA Reviewer:
Doc Reviewer:
mt1
[EMAIL PROTECTED]
/******************************************************************************
* LPS.java
* ****************************************************************************/
/* J_LZ_COPYRIGHT_BEGIN *******************************************************
* Copyright 2001-2004 Laszlo Systems, Inc. All Rights Reserved. *
* Use is subject to license terms. *
* J_LZ_COPYRIGHT_END *********************************************************/
package org.openlaszlo.server;
import java.lang.Package;
import java.lang.Class;
import java.util.Calendar;
import java.util.Properties;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.ServletConfig.*;
import javax.servlet.http.*;
import org.openlaszlo.utils.ChainedException;
import org.openlaszlo.utils.MathUtils;
import org.openlaszlo.utils.LZUtils;
import org.apache.log4j.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.filter.ElementFilter;
import org.jdom.input.*;
/**
* LPS is a singleton for global server state.
*
* @author Eric Bloch
* @version 1.0
*/
public class LPS {
private static long mBootTime = Calendar.getInstance().getTime().getTime();
private static Properties mProperties = null;
private static String mHome = null;
public static Configuration configuration = null;
public static String VERSION_FILE = "/org/openlaszlo/server/lps.xml";
private static String mBuildID;
private static String mBuildDate;
private static String mVersionID;
private static String mRelease;
public static String mSWFVersionDefault = null;
public static int mSWFVersionNumDefault = -1;
/**
* Initialize version info
*/
static {
// Read in version details from XML file
SAXBuilder builder = new SAXBuilder();
Document doc;
try {
InputStream in = LPS.class.getResourceAsStream(VERSION_FILE);
doc = builder.build(in);
} catch (Throwable t) {
throw new RuntimeException(t);
}
Element root = doc.getRootElement();
mBuildID = root.getChildTextNormalize("build-id");
mBuildDate = root.getChildTextNormalize("build-date");
mVersionID = root.getChildTextNormalize("version-id");
mRelease = root.getChildTextNormalize("release");
}
/*
* Set the home directory
*/
public static void setHome(String home) {
mHome = home;
}
/*
* Read the xml configuration file.
*/
public static void initialize() {
configuration = new Configuration();
}
/**
* @return the LPS_HOME property
*/
public static String HOME() {
if (mHome == null || mHome.equals("")) {
mHome = getSystemProperty("LPS_HOME");
if (mHome == null || mHome.equals("")) {
// This is catastrophic
throw new
RuntimeException("Server configuration error: can't find
LPS_HOME.");
}
}
return mHome;
}
/**
* @return the "root directory" of the LPS bits. Typically,
HOME/WEB-INF/lps.
*/
public static String ROOT() {
return HOME() + File.separator + "WEB-INF" +
File.separator + "lps";
}
/**
* @return the "public root directory" of the LPS bits. Typically,
HOME/lps.
*/
public static String PUBLIC_ROOT() {
return HOME() + File.separator + "lps";
}
/**
* @return the location of the lps.jar when
* running inside a servlet container
*/
public static File getLPSJarFile() {
return new File(HOME() + File.separator + "WEB-INF" +
File.separator + "lib" +
File.separator + "lps.jar");
}
/**
* @return the location of the config directory.
*/
public static String getConfigDirectory() {
return ConfigDir.get(HOME());
}
/**
* @return the properties file
*/
// TODO:[2002-12-2 bloch] add parameter/property for
// location of properties file.
public static File getPropertiesFile() {
return new File( getConfigDirectory() + File.separator +
"lps.properties" );
}
/**
* @return the location of the default cache directory.
*/
public static String getWorkDirectory() {
return ROOT() + File.separator + "work";
}
/**
* @return the location of the misc directory.
*/
public static String getMiscDirectory() {
return ROOT() + File.separator + "misc";
}
/**
* @return the location of the components directory.
*/
public static String getComponentsDirectory() {
return PUBLIC_ROOT() + File.separator + "components";
}
/**
* @return the location of the fonts directory.
*/
public static String getFontDirectory() {
return PUBLIC_ROOT() + File.separator + "fonts";
}
/*
* @return the location of the lfc directory
*/
public static String getLFCDirectory() {
return ROOT() + File.separator + "lfc";
}
/*
* @return the location of the server template directory
*/
public static String getTemplateDirectory() {
return ROOT() + File.separator + "templates";
}
/**
* @return a string representation of the version
* of this build.
*/
public static String getBuild() {
// The version number is actually baked into the manifest for the
// of the package.
/* This doesn't work under Tomcat3.3 (see bug 4948, erroneous closed)
try {
Package p = Package.getPackage("org.openlaszlo.server");
return p.getImplementationVersion();
} catch (Exception e) {
// THIS IS FATAL!
throw new RuntimeException(e);
}
*/
return mBuildID;
}
/**
* @return a string representation of the version
* of this build.
*/
public static String getVersion() {
// The version number is actually baked into the manifest for the
// of the package.
/* This doesn't work under Tomcat3.3 (see bug 4948, erroneous closed)
try {
Package p = Package.getPackage("org.openlaszlo.server");
return p.getSpecificationVersion();
} catch (Exception e) {
// THIS IS FATAL!
throw new RuntimeException(e);
}
*/
return mVersionID;
}
/**
* @return a string representation of the release
*/
public static String getRelease() {
// The version number is actually baked into the manifest for the
// of the package.
/* This doesn't work under Tomcat3.3 (see bug 4948, erroneous closed)
try {
Package p = Package.getPackage("org.openlaszlo.server");
return p.getSpecificationVersion();
} catch (Exception e) {
// THIS IS FATAL!
throw new RuntimeException(e);
}
*/
return mRelease;
}
/*
* @return the string version of the LPS in lowercase. E.g. lps-dr, lps-v1.
*/
public static String getShortVersion() {
return "lps-" + mVersionID;
}
/**
* @return the boot time
*/
public static long getBootTime() {
return mBootTime;
}
/**
*
*/
public static String getBuildDate() {
return mBuildDate;
}
/**
* Set SWF version default.
*/
public static void setSWFVersionDefault(String swfversion) {
if (swfversion.equals("swf8")) {
mSWFVersionNumDefault = 8;
mSWFVersionDefault = "swf8";
} else if (swfversion.equals("swf7")) {
mSWFVersionNumDefault = 7;
mSWFVersionDefault = "swf7";
} else if (swfversion.equals("swf6")) {
mSWFVersionNumDefault = 6;
mSWFVersionDefault = "swf6";
} else if (swfversion.equals("swf5")) {
mSWFVersionNumDefault = 5;
mSWFVersionDefault = "swf5";
} else {
throw new RuntimeException("Unknown SWF version: " + swfversion);
}
}
/**
* @return swf version number
*/
public static int getSWFVersionNum(String swfversion) {
if (swfversion == null) return mSWFVersionNumDefault;
if (swfversion.equals("swf8")) return 8;
if (swfversion.equals("swf7")) return 7;
if (swfversion.equals("swf6")) return 6;
if (swfversion.equals("swf5")) return 5;
return mSWFVersionNumDefault;
}
public static String getSWFVersion(int num) {
if (num == 8) return "swf8";
if (num == 7) return "swf7";
if (num == 6) return "swf6";
if (num == 5) return "swf5";
return mSWFVersionDefault;
}
/**
* @return swf version number
*/
public static int getSWFVersionNum(HttpServletRequest req) {
return getSWFVersionNum(req.getParameter("lzr"));
}
/**
* @return an XML string of info
*/
public static String getInfo(HttpServletRequest req,
ServletContext ctxt, String tagName) {
StringBuffer buf = new StringBuffer();
InetAddress localHost;
InetAddress [] myIPs;
final double MEG = 1024*1024;
// Store my ips
try {
localHost = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
throw new ChainedException("LPS can't determine localhost ip
address");
}
try {
myIPs = InetAddress.getAllByName("localhost");
} catch (UnknownHostException e) {
throw new ChainedException("Can not determine server IP address!");
}
buf.append("<").append(tagName).append(" \n" );
buf.append("\t server-port=\"" + req.getServerPort() + "\"\n");
buf.append("\t servlet-container=\"" + ctxt.getServerInfo() + "\"\n");
buf.append("\t servlet-container-version=\"" + ctxt.getMajorVersion() +
"." + ctxt.getMinorVersion() + "\"\n");
// buf.append("\t context=\"" + ctxt + "\"\n");
buf.append("\t jre-version=\"" +
getSystemPropertyOrUnknowable("java.version") + "\"\n");
buf.append("\t os-name=\"" + getSystemPropertyOrUnknowable("os.name") +
"\"\n");
buf.append("\t os-version=\"" +
getSystemPropertyOrUnknowable("os.version") + "\"\n");
String level = "org.openlaszlo logger not configured!";
Logger l = Logger.getLogger("org.openlaszlo");
try {
if (l != null) {
level =
Logger.getLogger("org.openlaszlo").getLevel().toString();
}
} catch (Throwable t) {
level = "unknown";
}
buf.append("\t log4j-level=\"" + level + "\"\n");
buf.append("\t user=\"" + getSystemPropertyOrUnknowable("user.name") +
"\"\n");
buf.append("\t version=\"" + getVersion() + "\"\n");
buf.append("\t release=\"" + getRelease() + "\"\n");
buf.append("\t build=\"" + getBuild() + "\"\n");
buf.append("\t built-on=\"" + mBuildDate + "\"\n");
buf.append("\t max-mem=\"" +
MathUtils.formatDouble(Runtime.getRuntime().maxMemory()/(MEG), 2) +
"MB\"\n");
buf.append("\t total-mem=\"" +
MathUtils.formatDouble(Runtime.getRuntime().totalMemory()/(MEG), 2)
+ "MB\"\n");
buf.append("\t free-mem=\"" +
MathUtils.formatDouble(Runtime.getRuntime().freeMemory()/(MEG), 2)
+ "MB\"\n");
buf.append("\t lps-home=\"" + mHome + "\"\n" );
buf.append("\t localhost=\"" + localHost.getHostAddress() + "\"\n" );
for(int i = 0; i < myIPs.length; i++) {
buf.append("\t ipaddress-" + (i+1) + "=\"" +
myIPs[i].getHostAddress() + "\"\n");
}
buf.append("\t client=\"" + req.getRemoteHost() + "\"\n");
buf.append("/>");
// TODO: [2003-02-28 bloch] add lps.properties fia properties->xml
thingee
return buf.toString();
}
/**
* Safe version of System.getProperty() that won't
* throw a SecurityException if the property can't be read
*/
public static String getSystemProperty(String name) {
try {
return System.getProperty(name);
} catch (SecurityException e) {
// TODO [2004-07-06 bloch]: log the failure somehow
return "";
}
}
/**
* Safe version of System.getProperty() that won't
* throw a SecurityException if the property can't be read.
* Return 'unknowable' if security won't let us know.
*/
public static String getSystemPropertyOrUnknowable(String name) {
return getSystemProperty(name, "unknowable");
}
/**
* Safe version of System.getProperty() that won't
* throw a SecurityException if the property can't be read
*/
public static String getSystemProperty(String name, String d) {
try {
return System.getProperty(name, d);
} catch (SecurityException e) {
// TODO [2004-07-06 bloch]: log the failure somehow
return d;
}
}
private static void loadProperties() {
if (mProperties == null) {
File propFile = getPropertiesFile();
Properties properties = new Properties();
Properties sysProperties =
(Properties)System.getProperties().clone();
try {
properties.load(new FileInputStream(propFile));
properties = LZUtils.expandProperties(properties);
sysProperties.putAll(properties);
} catch (Exception e) {
throw new ChainedException (e);
}
mProperties = sysProperties;
}
}
/** @return the LPS properties */
public static Properties getProperties() {
loadProperties();
return mProperties;
}
private final static String KRANK_PORT_PROPERTY = "krankPortNum";
private final static int DEFAULT_KRANK_PORT = 4444;
/*** @return Krank listener port */
public static int getKrankPort () {
String portStr = LPS.getProperties().getProperty(KRANK_PORT_PROPERTY);
int portnum = DEFAULT_KRANK_PORT;
if (portStr == null) {
return portnum;
}
try {
portnum = Integer.parseInt(portStr);
} catch (NumberFormatException e) {
throw new
RuntimeException("Server configuration error: can't parse
lps.properties entry '"+KRANK_PORT_PROPERTY+"'");
}
return portnum;
}
/** @return a property from the LPS property file, defaulting
* to value. */
public static String getProperty(String name, String value) {
loadProperties();
return mProperties.getProperty(name, value);
}
/** @return a property from the LPS property file. */
public static String getProperty(String name) {
loadProperties();
return getProperty(name, null);
}
/** Override a property in the LPS property file. */
public static void setProperty(String name, String value) {
loadProperties();
mProperties.setProperty(name, value);
}
public static boolean isInternalBuild() {
return LPS.getBuild().equals("INTERNAL");
}
}
*** /home/onoke/lps_server/server/LPS.java 2006-03-03 14:24:22.000000000
+0900
---
/home/onoke/openlaszlo/lps-3.1-src/lps-3.1/WEB-INF/lps/server/src/org/openlaszlo/server/LPS.java
2005-11-18 07:15:03.000000000 +0900
***************
*** 278,287 ****
* Set SWF version default.
*/
public static void setSWFVersionDefault(String swfversion) {
! if (swfversion.equals("swf8")) {
! mSWFVersionNumDefault = 8;
! mSWFVersionDefault = "swf8";
! } else if (swfversion.equals("swf7")) {
mSWFVersionNumDefault = 7;
mSWFVersionDefault = "swf7";
} else if (swfversion.equals("swf6")) {
--- 278,284 ----
* Set SWF version default.
*/
public static void setSWFVersionDefault(String swfversion) {
! if (swfversion.equals("swf7")) {
mSWFVersionNumDefault = 7;
mSWFVersionDefault = "swf7";
} else if (swfversion.equals("swf6")) {
***************
*** 300,306 ****
*/
public static int getSWFVersionNum(String swfversion) {
if (swfversion == null) return mSWFVersionNumDefault;
- if (swfversion.equals("swf8")) return 8;
if (swfversion.equals("swf7")) return 7;
if (swfversion.equals("swf6")) return 6;
if (swfversion.equals("swf5")) return 5;
--- 297,302 ----
***************
*** 308,314 ****
}
public static String getSWFVersion(int num) {
- if (num == 8) return "swf8";
if (num == 7) return "swf7";
if (num == 6) return "swf6";
if (num == 5) return "swf5";
--- 304,309 ----
_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev