http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/log/Logger.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/log/Logger.java b/common/src/flex/messaging/log/Logger.java deleted file mode 100644 index 8684a3e..0000000 --- a/common/src/flex/messaging/log/Logger.java +++ /dev/null @@ -1,402 +0,0 @@ -/* - * 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. - */ -package flex.messaging.log; - -import flex.messaging.util.PrettyPrinter; -import flex.messaging.util.StringUtils; - -import java.util.ArrayList; -import java.util.Iterator; - -/** - * The <code>Logger</code> class is used to log out information. It provides named - * methods to log information out at the desired level. Each <code>Logger</code> - * will log information out for a log category that is settable. - * - * - */ -public class Logger -{ - /** - * The category this logger send messages for. - */ - private volatile String category; - - /** - * The list of targets that this logger will dispatch log events to. - */ - private final ArrayList targets; - - /** - * Constructs a <code>Logger</code> instance that will log - * information out to the specified category. - * - * @param category The category to log information for. - */ - public Logger(String category) - { - this.category = category; - targets = new ArrayList(); - } - - /** - * Returns the category this <code>Logger</code> logs information for. - * - * @return The category this <code>Logger</code> logs information for. - */ - public String getCategory() - { - return category; - } - - /** - * Determines whether the <code>Logger</code> has at least one target. - * - * @return True if the <code>Logger</code> has one or more targets. - */ - public boolean hasTarget() - { - synchronized (targets) - { - return !targets.isEmpty(); - } - } - /** - * Adds a <code>Target</code> that will format and output log events - * generated by this <code>Logger</code>. - * - * @param target The <code>Target</code> to add. - */ - void addTarget(Target target) - { - synchronized (targets) - { - if (!targets.contains(target)) - targets.add(target); - } - } - - /** - * Removes a <code>Target</code> from this <code>Logger</code>. - * - * @param target The <code>Target</code> to remove. - */ - void removeTarget(Target target) - { - synchronized (targets) - { - targets.remove(target); - } - } - - /* - * DEBUG - */ - /** - * Logs out a debug message. - * - * @param message The message to log. - */ - public void debug(String message) - { - log(LogEvent.DEBUG, message, null, null); - } - - /** - * Logs out a debug message associated with a <code>Throwable</code>. - * - * @param message The message to log. - * @param t The associated <code>Throwable</code>. - */ - public void debug(String message, Throwable t) - { - log(LogEvent.DEBUG, message, null, t); - } - - /** - * Logs out a debug message supporting positional parameter substitutions. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - */ - public void debug(String message, Object[] parameters) - { - log(LogEvent.DEBUG, message, parameters, null); - } - - /** - * Logs out a debug message supporting positional parameter substitutions and an - * associated <code>Throwable</code>. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - * @param t The associated <code>Throwable</code>. - */ - public void debug(String message, Object[] parameters, Throwable t) - { - log(LogEvent.DEBUG, message, parameters, t); - } - - /* - * INFO - */ - /** - * Logs out an info message. - * - * @param message The message to log. - */ - public void info(String message) - { - log(LogEvent.INFO, message, null, null); - } - - /** - * Logs out an info message associated with a <code>Throwable</code>. - * - * @param message The message to log. - * @param t The associated <code>Throwable</code>. - */ - public void info(String message, Throwable t) - { - log(LogEvent.INFO, message, null, t); - } - - /** - * Logs out an info message supporting positional parameter substitutions. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - */ - public void info(String message, Object[] parameters) - { - log(LogEvent.INFO, message, parameters, null); - } - - /** - * Logs out an info message supporting positional parameter substitutions and an - * associated <code>Throwable</code>. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - * @param t The associated <code>Throwable</code>. - */ - public void info(String message, Object[] parameters, Throwable t) - { - log(LogEvent.INFO, message, parameters, t); - } - - /* - * WARN - */ - /** - * Logs out a warn message. - * - * @param message The message to log. - */ - public void warn(String message) - { - log(LogEvent.WARN, message, null, null); - } - - /** - * Logs out a warn message associated with a <code>Throwable</code>. - * - * @param message The message to log. - * @param t The associated <code>Throwable</code>. - */ - public void warn(String message, Throwable t) - { - log(LogEvent.WARN, message, null, t); - } - - /** - * Logs out a warn message supporting positional parameter substitutions. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - */ - public void warn(String message, Object[] parameters) - { - log(LogEvent.WARN, message, parameters, null); - } - - /** - * Logs out a warn message supporting positional parameter substitutions and an - * associated <code>Throwable</code>. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - * @param t The associated <code>Throwable</code>. - */ - public void warn(String message, Object[] parameters, Throwable t) - { - log(LogEvent.WARN, message, parameters, t); - } - - /* - * ERROR - */ - /** - * Logs out an error message. - * - * @param message The message to log. - */ - public void error(String message) - { - log(LogEvent.ERROR, message, null, null); - } - - /** - * Logs out an error message associated with a <code>Throwable</code>. - * - * @param message The message to log. - * @param t The associated <code>Throwable</code>. - */ - public void error(String message, Throwable t) - { - log(LogEvent.ERROR, message, null, t); - } - - /** - * Logs out an error message supporting positional parameter substitutions. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - */ - public void error(String message, Object[] parameters) - { - log(LogEvent.ERROR, message, parameters, null); - } - - /** - * Logs out an error message supporting positional parameter substitutions and an - * associated <code>Throwable</code>. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - * @param t The associated <code>Throwable</code>. - */ - public void error(String message, Object[] parameters, Throwable t) - { - log(LogEvent.ERROR, message, parameters, t); - } - - /* - * FATAL - */ - /** - * Logs out a fatal message. - * - * @param message The message to log. - */ - public void fatal(String message) - { - log(LogEvent.FATAL, message, null, null); - } - - /** - * Logs out a fatal message associated with a <code>Throwable</code>. - * - * @param message The message to log. - * @param t The associated <code>Throwable</code>. - */ - public void fatal(String message, Throwable t) - { - log(LogEvent.FATAL, message, null, t); - } - - /** - * Logs out a fatal message supporting positional parameter substitutions. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - */ - public void fatal(String message, Object[] parameters) - { - log(LogEvent.FATAL, message, parameters, null); - } - - /** - * Logs out a fatal message supporting positional parameter substitutions and an - * associated <code>Throwable</code>. - * - * @param message The message to log. - * @param parameters Parameters to substitute into the message. - * @param t The associated <code>Throwable</code>. - */ - public void fatal(String message, Object[] parameters, Throwable t) - { - log(LogEvent.FATAL, message, parameters, t); - } - - /** - * - * The methods named according to log level delegate to this method to log. - * - * @param level The log level. - * @param message The message to log. - * @param parameters Substitution parameters (may be null). - * @param t The associated <code>Throwable</code> (may be null). - */ - public void log(short level, String message, Object[] parameters, Throwable t) - { - log(level, message, parameters, t, true); - } - - /** - * - * Logs a passed message if its level verifies as high enough. - * - * @param level The log level. - * @param message The message to log. - * @param parameters Substitution parameters (may be null). - * @param t The associated <code>Throwable</code>. - * @param verifyLevel <code>true</code> to verify the log level; otherwise log without verifying the level. - */ - public void log(short level, String message, Object[] parameters, Throwable t, boolean verifyLevel) - { - if (targets.size() > 0 && (!verifyLevel || (level >= Log.getTargetLevel()))) - { - if (parameters != null) - { - PrettyPrinter prettyPrinter = Log.getPrettyPrinter(); - - // replace all of the parameters in the msg string - for(int i = 0; i < parameters.length; i++) - { - String replacement = parameters[i] != null ? prettyPrinter.prettify(parameters[i]) : "null"; - - //this guy runs into problems if the replacement has a \ or $ in it - //message = message.replaceAll("\\{" + i + "\\}", replacement); - message = StringUtils.substitute(message, "{" + i + "}", replacement); - } - } - LogEvent event = new LogEvent(this, message, level, t); - Target tgt; - synchronized (targets) - { - for (Iterator iter = targets.iterator(); iter.hasNext();) - { - tgt = (Target) iter.next(); - if (!verifyLevel || (level >= tgt.getLevel())) - tgt.logEvent(event); - } - } - } - } - -}
http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/log/Target.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/log/Target.java b/common/src/flex/messaging/log/Target.java deleted file mode 100644 index 7a39fb5..0000000 --- a/common/src/flex/messaging/log/Target.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * 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. - */ -package flex.messaging.log; - -import java.util.List; - -import flex.messaging.config.ConfigMap; - -/** - * All logger target implementations within the logging framework must - * implement this interface. <code>Target</code> implementations receive log events - * and output information from these events to the appropriate output - * destination which may be a console, log file or some other custom - * destination. - */ -public interface Target -{ - /** - * Initializes the target with id and properties. - * - * @param id id for the target. - * @param properties ConfigMap of properties for the target. - */ - void initialize(String id, ConfigMap properties); - - /** - * Returns the category filters defined for the <code>Target</code>. - * - * @return The category filters defined for the <code>Target</code>. - */ - List getFilters(); - - /** - * Sets the category filters that the <code>Target</code> will process - * log events for. - * - * @param value The category filters that the <code>Target</code> will process - */ - void setFilters(List value); - - /** - * Adds the category filteer that the <code>Target</code> will process - * log events for. - * - * @param value The new category filter to add to the <code>Target</code>'s list of filters. - */ - void addFilter(String value); - - /** - * Removes a category filter from the list of filters the <code>Target</code> will - * process log events for. - * - * @param value The category filter to remove from the <code>Target</code>'s list of filters. - */ - void removeFilter(String value); - - /** - * Returns the log level that the <code>Target</code> will process log - * events for. Log events at this level, or at a higher priority level - * will be processed. - * - * @return The log level that the <code>Target</code> will process log events for. - */ - short getLevel(); - - /** - * Sets the log level that the <code>Target</code> will process log events - * for. Log events at this level, or at a higher priority level will be - * processed. - * - * @param value The log level that the <code>Target</code> will process log events for. - */ - void setLevel(short value); - - /** - * Adds a <code>Logger</code> whose category matches the filters list for - * the <code>Target</code>. The <code>Logger</code> will dispatch log events - * to this <code>Target</code> to be output. - * - * @param logger The <code>Logger</code> to add. - */ - void addLogger(Logger logger); - - /** - * Removes a <code>Logger</code> from the <code>Target</code>. - * - * @param logger The <code>Logger</code> to remove. - */ - void removeLogger(Logger logger); - - /** - * Logs a log event out to the <code>Target</code>s output destination, - * which may be the console or a log file. - * - * @param event The <code>LogEvent</code> containing the information to output. - */ - void logEvent(LogEvent event); -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/BasicPrettyPrinter.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/BasicPrettyPrinter.java b/common/src/flex/messaging/util/BasicPrettyPrinter.java deleted file mode 100644 index 19fa547..0000000 --- a/common/src/flex/messaging/util/BasicPrettyPrinter.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.lang.reflect.Array; -import java.lang.reflect.Method; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.Map; - -/** - * Prettifies the representation of an Object as a String. Complex - * types are not traversed. - * - * - */ -public class BasicPrettyPrinter implements PrettyPrinter -{ - protected ObjectTrace trace; - - public BasicPrettyPrinter() - { - } - - /** - * Prettifies the representation of an Object as a String. - * <ul> - * <li>Simple types are simply toString'ed.</li> - * <li>XML strings are formatted with line feeds and indentations.</li> - * <li>Complex types report their class names.</li> - * <li>Collections, Maps and native Arrays also report their size/length.</li> - * </ul> - * @return A prettified version of an Object as a String. - */ - public String prettify(Object o) - { - try - { - trace = new ObjectTrace(); - internalPrettify(o); - return trace.toString(); - } - catch (Throwable t) - { - return trace.toString(); - } - finally - { - trace = null; - } - } - - protected void internalPrettify(Object o) - { - if (o == null) - { - trace.writeNull(); - } - else if (o instanceof String) - { - String string = (String)o; - if (string.startsWith("<?xml")) - { - trace.write(StringUtils.prettifyXML(string)); - } - else - { - trace.write(string); - } - } - else if (o instanceof Number || o instanceof Boolean || o instanceof Date - || o instanceof Calendar || o instanceof Character) - { - trace.write(o); - } - else - { - prettifyComplexType(o); - } - } - - protected void prettifyComplexType(Object o) - { - StringBuffer header = new StringBuffer(); - - if (o instanceof PrettyPrintable) - { - PrettyPrintable pp = (PrettyPrintable)o; - header.append(pp.toStringHeader()); - } - - Class c = o.getClass(); - String className = c.getName(); - - if (o instanceof Collection) - { - header.append(className).append(" (Collection size:").append(((Collection)o).size()).append(")"); - } - else if (o instanceof Map) - { - header.append(className).append(" (Map size:").append(((Map)o).size()).append(")"); - } - else if (c.isArray() && c.getComponentType() != null) - { - Class componentType = c.getComponentType(); - className = componentType.getName(); - header.append(className).append("[] (Array length:").append(Array.getLength(o)).append(")"); - } - else - { - header.append(className); - } - - trace.startObject(header.toString()); - trace.endObject(); - } - - /** - * If the definition of toString is not from java.lang.Object or any class in the - * java.util.* package then we consider it a custom implementation in which case - * we'll use it instead of introspecting the class. - * - * @param c The class to check for a custom toString definition. - * @return Whether this class declares a custom toString() method. - */ - protected boolean hasCustomToStringMethod(Class c) - { - try - { - Method toStringMethod = c.getMethod("toString", (Class[])null); - Class declaringClass = toStringMethod.getDeclaringClass(); - if (declaringClass != Object.class - && !declaringClass.getName().startsWith("java.util")) - { - return true; - } - } - catch (Throwable t) - { - } - - return false; - } - - public Object copy() - { - return new BasicPrettyPrinter(); - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/ExceptionUtil.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/ExceptionUtil.java b/common/src/flex/messaging/util/ExceptionUtil.java deleted file mode 100644 index 595077a..0000000 --- a/common/src/flex/messaging/util/ExceptionUtil.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.NoSuchElementException; -import java.util.StringTokenizer; - -/** - * - */ -public class ExceptionUtil -{ - /** - * List of no-arg methods that are known to return a wrapped throwable. - **/ - public static String[] unwrapMethods = { "getRootCause", "getTargetException", - "getTargetError", "getException", - "getCausedByException", "getLinkedException" }; - - /** - * Get the wrapped Exception object from the Throwable object. - * @param t the Throwable object - * @return Throwable the wrapped exception object if any - */ - public static Throwable wrappedException(Throwable t) - { - // Handle these statically since they are core to Java - return (t instanceof InvocationTargetException)? - ((InvocationTargetException)t).getTargetException() : getRootCauseWithReflection(t); - } - - /** - * Get to the base exception (if any). - * @param t the Throwable object - * @return the base Exception object - */ - public static Throwable baseException(Throwable t) - { - Throwable wrapped = wrappedException(t); - return wrapped != null? baseException(wrapped) : t; - } - - /** - * Return the stack trace in a String. - * @param t the Throwable object - * @return String the String presentation of the Throwable object - */ - public static String toString(Throwable t) - { - StringWriter strWrt = new StringWriter(); - t.printStackTrace(new PrintWriter(strWrt)); - - return strWrt.toString(); - } - - /** - * Return the stack trace up to the first line that starts with prefix. - * - * <p>Example: ExceptionUtil.getStackTraceUpTo(exception, "jrunx.");</p> - * @param t the Throwable object - * @param prefix the prefix message that we are looking for - * @return String the String of stack trace lines till the prefix message is located - */ - public static String getStackTraceUpTo(Throwable t, String prefix) - { - StringTokenizer tokens = new StringTokenizer(toString(t), "\n\r"); - StringBuffer trace = new StringBuffer(); - boolean done = false; - - String lookingFor = "at " + prefix; - while (!done && tokens.hasMoreElements()) - { - String token = tokens.nextToken(); - if (token.indexOf(lookingFor) == -1) - trace.append(token); - else - done = true; - trace.append(StringUtils.NEWLINE); - } - - return trace.toString(); - } - - /** - * return the top n lines of this stack trace. - * - * <p>Example: ExceptionUtil.getStackTraceLines(exception, 10);</p> - * @param t the Throwable object - * @param numLines number of lines we should trace down - * @return String the String of stack trace lines - */ - public static String getStackTraceLines(Throwable t, int numLines) - { - StringTokenizer tokens = new StringTokenizer(toString(t), "\n\r"); - - StringBuffer trace = new StringBuffer(); - - for (int i=0; i<numLines; i++) - { - String token = tokens.nextToken(); - trace.append(token); - trace.append(StringUtils.NEWLINE); - } - - return trace.toString(); - } - - /** - * Return the "nth" method call from the stack trace of "t", where 0 is - * the top. - * @param t the Throwable object - * @param nth the line number of the message should we skip - * @return String the callAt String - */ - public static String getCallAt(Throwable t, int nth) - { - StringTokenizer tokens = new StringTokenizer(toString(t), "\n\r"); - try - { - // Skip the first line - the exception message - for(int i = 0; i <= nth; ++i) - tokens.nextToken(); - - // get the method name from the next token - String token = tokens.nextToken(); - int index1 = token.indexOf(' '); - int index2 = token.indexOf('('); - StringBuffer call = new StringBuffer(); - call.append(token.substring(index1 < 0 ? 0 : index1 + 1, index2 < 0 ? call.length() : index2)); - - int index3 = token.indexOf(':', index2 < 0 ? 0 : index2); - if(index3 >= 0) - { - int index4 = token.indexOf(')', index3); - call.append(token.substring(index3, index4 < 0 ? token.length() : index4)); - } - return call.toString(); - } - catch(NoSuchElementException e) {} - - return "unknown"; - } - - - /** - * Utility method for converting an exception into a string. This - * method unwinds all wrapped exceptions - * @param t The throwable exception - * @return The printable exception - */ - public static String exceptionToString(Throwable t) - { - StringWriter sw = new StringWriter(); - PrintWriter out = new PrintWriter(sw); - - //print out the exception stack. - printExceptionStack(t, out, 0); - return sw.toString(); - } - - /** - * Utility method for converting an exception and all chained root causes into a - * string. Unlike <code>exceptionToString(Throwable)</code> which prints the chain - * from most nested root cause down to the top-level exception, this method prints - * from the top-level exception down to the most nested root cause. - * - * @param t The throwable exception. - * @return The printable exception. - */ - public static String exceptionFollowedByRootCausesToString(Throwable t) - { - StringBuffer output = new StringBuffer(); - Throwable root = t; - while (root != null) - { - output.append((root == t) ? ((root instanceof Exception) ? " Exception: " : " Error: ") : " Root cause: "); - output.append(ExceptionUtil.toString(root)); - // Do not recurse if the root cause has already been printed; this will have happened if the root cause has - // been assigned to the current Throwable via initCause() or as a constructor argument. - Throwable cause = root.getCause(); - root = ExceptionUtil.wrappedException(root); - if (cause == root) - break; - } - return output.toString(); - } - - /** - * Recursively prints out a stack of wrapped exceptions. - * - * @param th the Throwable object - * @param out the output writer to print to - * @param depth the number of levels the stack should be printed - */ - protected static void printExceptionStack(Throwable th, PrintWriter out, int depth){ - //only print the stack depth if the depth is greater than 0 - boolean printStackDepth = depth>0; - - Throwable wrappedException = ExceptionUtil.wrappedException(th); - if (wrappedException != null) - { - printStackDepth = true; - printExceptionStack(wrappedException, out, depth + 1); - } - - if(printStackDepth){ - out.write("[" + depth + "]"); - } - - th.printStackTrace(out); - } - - private static Throwable getRootCauseWithReflection(Throwable t) - { - for(int i = 0; i < unwrapMethods.length; i++) - { - Method m = null; - - try - { - m = t.getClass().getMethod(unwrapMethods[i], (Class[])null); - return (Throwable) m.invoke(t, (Object[])null); - } - catch(Exception nsme) - { - // ignore - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/FileUtils.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/FileUtils.java b/common/src/flex/messaging/util/FileUtils.java deleted file mode 100644 index 31e8d30..0000000 --- a/common/src/flex/messaging/util/FileUtils.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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. - */ - -package flex.messaging.util; - -import java.io.IOException; -import java.io.InputStream; - -/** - * - */ -public class FileUtils -{ - public static final String UTF_8 = "UTF-8"; - public static final String UTF_16 = "UTF-16"; - - /** - * Sets a mark in the InputStream for 3 bytes to check for a BOM. If the BOM - * stands for UTF-8 encoded content then the stream will not be reset, otherwise - * for UTF-16 with a BOM or any other encoding situation the stream is reset to the - * mark (as for UTF-16 the parser will handle the BOM). - * - * @param in InputStream containing BOM and must support mark(). - * @param default_encoding The default character set encoding. null or "" => system default - * @return The file character set encoding. - * @throws IOException an IOException, if something went wrong. - */ - public static final String consumeBOM(InputStream in, String default_encoding) throws IOException - { - in.mark(3); - - // Determine file encoding... - // ASCII - no header (use the supplied encoding) - // UTF8 - EF BB BF - // UTF16 - FF FE or FE FF (decoder chooses endian-ness) - if (in.read() == 0xef && in.read() == 0xbb && in.read() == 0xbf) - { - // UTF-8 reader does not consume BOM, so do not reset - if (System.getProperty("flex.platform.CLR") != null) - { - return "UTF8"; - } - else - { - return UTF_8; - } - } - else - { - in.reset(); - int b0 = in.read(); - int b1 = in.read(); - if (b0 == 0xff && b1 == 0xfe || b0 == 0xfe && b1 == 0xff) - { - in.reset(); - // UTF-16 reader will consume BOM - if (System.getProperty("flex.platform.CLR") != null) - { - return "UTF16"; - } - else - { - return UTF_16; - } - } - else - { - // no BOM found - in.reset(); - if (default_encoding != null && default_encoding.length() != 0) - { - return default_encoding; - } - else - { - return System.getProperty("file.encoding"); - } - } - } - } - -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/LocaleUtils.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/LocaleUtils.java b/common/src/flex/messaging/util/LocaleUtils.java deleted file mode 100644 index 5800433..0000000 --- a/common/src/flex/messaging/util/LocaleUtils.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.util.Locale; - -/** - * - */ -public class LocaleUtils -{ - /** - * Builds a <code>Locale</code> instance from the passed string. If the string - * is <code>null</code> this method will return the default locale for the JVM. - * - * @param locale The locale as a string. - * @return The Locale instance built from the passed string. - */ - public static Locale buildLocale(String locale) - { - if (locale == null) - { - return Locale.getDefault(); - } - else - { - int index = locale.indexOf('_'); - if (index == -1) - { - return new Locale(locale); - } - String language = locale.substring(0, index); - String rest = locale.substring(index + 1); - index = rest.indexOf('_'); - if (index == -1) - { - return new Locale(language, rest); - } - String country = rest.substring(0, index); - rest = rest.substring(index + 1); - return new Locale(language, country, rest); - } - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/ObjectTrace.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/ObjectTrace.java b/common/src/flex/messaging/util/ObjectTrace.java deleted file mode 100644 index 646d72f..0000000 --- a/common/src/flex/messaging/util/ObjectTrace.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import flex.messaging.log.Log; - -/** - * Simple utility to trace an Object graph out to a StringBuffer. - * - * Note that new lines are NOT added after the individual values - * in complex type properties. - * - * - */ -public class ObjectTrace -{ - - - /* This boolean is used for suppressing debug output for selected properties. - * The logger will check this before printing a property. - */ - public boolean nextElementExclude; - - public ObjectTrace() - { - buffer = new StringBuffer(4096); - } - - public ObjectTrace(int bufferSize) - { - buffer = new StringBuffer(bufferSize); - } - - public String toString() - { - return buffer.toString(); - } - - public void write(Object o) - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append(String.valueOf(o)); - } - - public void writeNull() - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append("null"); - } - - public void writeRef(int ref) - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append("(Ref #").append(ref).append(")"); - } - - public void writeString(String s) - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append("\"").append(s).append("\""); - } - - public void startArray(String header) - { - if (header != null && header.length() > 0) - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append(header).append(newLine); - } - - m_indent++; - m_nested++; - } - - public void arrayElement(int index) - { - buffer.append(indentString()).append("[").append(index).append("] = "); - } - - public void endArray() - { - m_indent--; - m_nested--; - } - - public void startObject(String header) - { - if (header != null && header.length() > 0) - { - if (m_nested <= 0) - buffer.append(indentString()); - - buffer.append(header).append(newLine); - } - - m_indent++; - m_nested++; - } - - public void namedElement(String name) - { - if (Log.isExcludedProperty(name)) - { - nextElementExclude = true; - } - - buffer.append(indentString()).append(name).append(" = "); - } - - public void endObject() - { - m_indent--; - m_nested--; - } - - public void newLine() - { - boolean alreadyPadded = false; - int length = buffer.length(); - - if (length > 3) - { - String tail = buffer.substring(length - 3, length - 1); //Get last two chars in buffer - alreadyPadded = tail.equals(newLine); - } - - if (!alreadyPadded) - buffer.append(newLine); - } - - /** - * Uses the static member, m_indent to create a string of spaces of - * the appropriate indentation. - * - * @return the ident string. - */ - protected String indentString() - { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < m_indent; ++i) - { - sb.append(" "); - } - return sb.toString(); - } - - protected StringBuffer buffer; - protected int m_indent; - protected int m_nested; - public static String newLine = StringUtils.NEWLINE; -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/PrettyPrintable.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/PrettyPrintable.java b/common/src/flex/messaging/util/PrettyPrintable.java deleted file mode 100644 index 68fcc6e..0000000 --- a/common/src/flex/messaging/util/PrettyPrintable.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -/** - * Allows an Object to customize how it is pretty printed in - * logging/debugging output. - * - * - */ -public interface PrettyPrintable -{ - String toStringHeader(); - - String toStringCustomProperty(String name); -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/PrettyPrinter.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/PrettyPrinter.java b/common/src/flex/messaging/util/PrettyPrinter.java deleted file mode 100644 index d0f9de0..0000000 --- a/common/src/flex/messaging/util/PrettyPrinter.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -/** - * Implementations convert Object graphs to Strings for - * logging and debugging. - * - * - */ -public interface PrettyPrinter -{ - String prettify(Object o); - - Object copy(); -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/PropertyStringResourceLoader.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/PropertyStringResourceLoader.java b/common/src/flex/messaging/util/PropertyStringResourceLoader.java deleted file mode 100644 index 21c2f59..0000000 --- a/common/src/flex/messaging/util/PropertyStringResourceLoader.java +++ /dev/null @@ -1,378 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.io.InputStream; -import java.io.IOException; -import java.text.MessageFormat; -import java.util.Iterator; -import java.util.Locale; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.Set; -import java.util.TreeSet; - -import flex.messaging.log.Log; -import flex.messaging.log.Logger; -import flex.messaging.log.LogCategories; - -/** - * Implementation of <code>ResourceLoader</code> that loads string resources - * from property files. - * <p> - * This class uses <code>MessageFormat</code> to perform substitutions - * within parameterized strings. - * </p> - * - * @see MessageFormat - * - */ -public class PropertyStringResourceLoader implements ResourceLoader -{ - // The property file bundle that contains localized error strings for BlazeDS. - public static final String PROPERTY_BUNDLE = "flex/messaging/errors"; - - // The property file bundle that contains localized error strings for BlazeDS - // code specific to vendors (eg. LoginCommands for specific application serves) - public static final String VENDORS_BUNDLE = "flex/messaging/vendors"; - - // The property file bundle that contains localized error strings for LCDS. - public static final String LCDS_PROPERTY_BUNDLE = "flex/data/errors"; - - // The category to write log entries under. - private static final String LOG_CATEGORY = LogCategories.RESOURCE; - - // The property bundle names to use in string lookups. - private String[] propertyBundles; - - // The default FDS locale. - private Locale defaultLocale; - - // The set of locales that have strings loaded. - private Set loadedLocales = new TreeSet(); - - // A map of all loaded strings. - private Map strings = new HashMap(); - - // The logger for this instance. - private Logger logger; - - /** - * Constructs a <code>PropertyStringResourceLoader</code> using the default - * property bundles specified by the <code>PROPERTY_BUNDLE</code> and - * <code>LCDS_PROPERTY_BUNDLE</code> fields. - */ - public PropertyStringResourceLoader() - { - this(new String[] {PROPERTY_BUNDLE, LCDS_PROPERTY_BUNDLE}); - } - - /** - * Constructs a <code>PropertyStringResourceLoader</code> that will use the - * specified property bundle to use for string lookups. - * - * @param propertyBundle The property bundles to use for lookups. - */ - public PropertyStringResourceLoader(String propertyBundle) - { - this(new String[] {propertyBundle}); - } - - /** - * Constructs a <code>PropertyStringResourceLoader</code> that will use the - * specified property bundles to use for string lookups. - * - * @param propertyBundles The list of the property bundles to use for lookups. - */ - public PropertyStringResourceLoader(String[] propertyBundles) - { - this.propertyBundles = propertyBundles; - logger = Log.getLogger(LOG_CATEGORY); - } - - // Implements flex.messaging.util.ResourceLoader.init; inherits javadoc specification. - public void init(Map properties) - {} - - // Implements flex.messaging.util.ResourceLoader.getString; inherits javadoc specification. - public String getString(String key) - { - return getString(key, null, null); - } - - // Implements flex.messaging.util.ResourceLoader.getString; inherits javadoc specification. - public String getString(String key, Object[] arguments) - { - return getString(key, null, arguments); - } - - // Implements flex.messaging.util.ResourceLoader.getString; inherits javadoc specification. - public String getString(String key, Locale locale) - { - return getString(key, locale, null); - } - - // Implements flex.messaging.util.ResourceLoader.getString; inherits javadoc specification. - public String getString(String key, Locale locale, Object[] arguments) - { - synchronized(strings) - { - if (defaultLocale == null) - { - defaultLocale = getDefaultLocale(); - } - } - String value = null; - String stringKey = null; - String localeKey = (locale != null) ? - generateLocaleKey(locale) : - generateLocaleKey(defaultLocale); - String originalStringKey = generateStringKey(key, localeKey); - int trimIndex = 0; - - /* - * Attempt to get a string for the target locale - fail back to less specific - * versions of the locale. - */ - while (true) - { - loadStrings(localeKey); - stringKey = generateStringKey(key, localeKey); - synchronized(strings) - { - value = (String) strings.get(stringKey); - if (value != null) - { - if (!stringKey.equals(originalStringKey)) - { - strings.put(originalStringKey, value); - } - return substituteArguments(value, arguments); - } - } - trimIndex = localeKey.lastIndexOf('_'); - if (trimIndex != -1) - { - localeKey = localeKey.substring(0, trimIndex); - } - else - { - break; - } - } - - /* - * Attempt to get the string in our default locale if it is - * different than the requested locale. - */ - if ((locale != null) && (!locale.equals(defaultLocale))) - { - localeKey = generateLocaleKey(defaultLocale); - stringKey = generateStringKey(key, localeKey); - synchronized(strings) - { - value = (String) strings.get(stringKey); - if (value != null) - { - strings.put(originalStringKey, value); - return substituteArguments(value, arguments); - } - } - } - - // As a last resort, try to get a non-locale-specific string. - loadStrings(""); - stringKey = generateStringKey(key, ""); - synchronized(strings) - { - value = (String) strings.get(stringKey); - if (value != null) - { - strings.put(originalStringKey, value); - return substituteArguments(value, arguments); - } - } - - // No string is available. Return a formatted missing string value. - return ("???" + key + "???"); - } - - /** - * Sets the default locale to be used when locating resources. The - * string will be converted into a Locale. - * - * @param locale The default locale to be used. - */ - public void setDefaultLocale(String locale) - { - defaultLocale = LocaleUtils.buildLocale(locale); - } - - /** - * Sets the default locale to be used when locating resources. - * - * @param locale The default locale to be used. - */ - public void setDefaultLocale(Locale locale) - { - defaultLocale = locale; - } - - /** - * The default locale to be used when locating resources. - * @return Locale the default Locale object - */ - public Locale getDefaultLocale() - { - if (defaultLocale == null) - defaultLocale = Locale.getDefault(); - - return defaultLocale; - } - - /** - * Loads localized strings for the specified locale from a property file. - * - * @param localeKey The locale to load strings for. - */ - protected synchronized void loadStrings(String localeKey) - { - if (loadedLocales.contains(localeKey)) - { - return; - } - - if (propertyBundles != null) - { - for (int i = 0; i < propertyBundles.length; i++) - { - String propertyBundle = propertyBundles[i]; - loadProperties(localeKey, propertyBundle); - } - } - } - - protected InputStream loadFile(String filename) - { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - InputStream stream = loader.getResourceAsStream(filename); - - // Try the properties file in our classloader too - just in case - if (stream == null) - { - stream = PropertyStringResourceLoader.class.getClassLoader().getResourceAsStream(filename); - } - - return stream; - } - - // Helper method for loadStrings. - protected void loadProperties(String localeKey, String propertyBundle) - { - // Build the path to the target property file. - String filename = propertyBundle; - if (localeKey.length() > 0) - { - filename += "_" + localeKey; - } - filename += ".properties"; - // Load the property file. - InputStream stream = loadFile(filename); - - Properties props = new Properties(); - if (stream != null) - { - try - { - props.load(stream); - } - catch (IOException ioe) - { - logger.warn("There was a problem reading the string resource property file '" + filename + "' stream.", ioe); - } - catch (IllegalArgumentException iae) - { - logger.warn("The string resource property file '" + filename + "' contains a malformed Unicode escape sequence.", iae); - } - finally - { - try - { - stream.close(); - } - catch (IOException ioe) - { - logger.warn("The string resource property file '" + filename + "' stream failed to close.", ioe); - } - } - } - else - { - logger.warn("The class loader could not locate the string resource property file '" + filename + "'. This may not be an issue if a property file is available for a less specific locale or the default locale."); - } - // Move strings into string cache. - if (props.size() > 0) - { - synchronized(strings) - { - Iterator iter = props.keySet().iterator(); - while (iter.hasNext()) - { - String key = (String) iter.next(); - strings.put(generateStringKey(key, localeKey), props.getProperty(key)); - } - } - } - } - - /** - * Generates a locale cache key. - * - * @param locale The locale to generate a cache key for. - * @return The generated cache key. - */ - private String generateLocaleKey(Locale locale) - { - return (locale == null) ? "" : locale.toString(); - } - - /** - * Generates a cache key for a string resource. - * - * @param key The string to generate a cache key for. - * @param locale The locale to retrieve the string for. - * @return The generated cache key for the string resource. - */ - private String generateStringKey(String key, String locale) - { - return (key + "-" + locale); - } - - /** - * Substitutes the specified arguments into a parameterized string. - * - * @param parameterized The string containing parameter tokens for substitution. - * @param arguments The arguments to substitute into the parameterized string. - * @return The resulting substituted string. - */ - private String substituteArguments(String parameterized, Object[] arguments) - { - return MessageFormat.format(parameterized, arguments).trim(); - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/ResourceLoader.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/ResourceLoader.java b/common/src/flex/messaging/util/ResourceLoader.java deleted file mode 100644 index e980f4b..0000000 --- a/common/src/flex/messaging/util/ResourceLoader.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.util.Locale; -import java.util.Map; - -/** - * The root interface for classes that provide access to localized resources. - * - * - */ -public interface ResourceLoader -{ - /** - * Initializes the <code>ResourceLoader</code> using the specified properties. - * - * @param properties The initialization properties. - */ - void init(Map properties); - - /** - * Sets the default locale to be used when locating resources. The - * string will be converted into a Locale. - * - * @param locale The default locale to be used. - */ - void setDefaultLocale(String locale); - - /** - * Sets the default locale to be used when locating resources. - * - * @param locale The default locale to be used. - */ - void setDefaultLocale(Locale locale); - - /** - * The default locale to be used when locating resources. - * - * @return The default locale. - */ - Locale getDefaultLocale(); - - /** - * Gets a string for the given key. - * - * @param key The key for the target string. - * @return The string for the given key. - */ - String getString(String key); - - /** - * Gets a parameterized string for the given key and substitutes - * the parameters using the passed array of arguments. - * - * @param key The key for the target string. - * @param arguments The arguments to substitute into the parameterized string. - * @return The substituted string for the given key. - * @exception IllegalArgumentException If the parameterized string is invalid, - * or if an argument in the <code>arguments</code> array - * is not of the type expected by the format element(s) - * that use it. - */ - String getString(String key, Object[] arguments); - - /** - * Gets a string for the given key and locale. - * - * @param key The key for the target string. - * @param locale The target locale for the string. - * @return The localized string for the given key. - */ - String getString(String key, Locale locale); - - /** - * Gets a parameterized string for the given key and locale and substitutes the - * parameters using the passed array of arguments. - * - * @param key The key for the target string. - * @param locale The target locale for the string. - * @param arguments The arguments to substitute into the parameterized string. - * @return The substituted localized string for the given key. - * @exception IllegalArgumentException If the parameterized string is invalid, - * or if an argument in the <code>arguments</code> array - * is not of the type expected by the format element(s) - * that use it. - */ - String getString(String key, Locale locale, Object[] arguments); - -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/StringUtils.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/StringUtils.java b/common/src/flex/messaging/util/StringUtils.java deleted file mode 100644 index 5a33f2e..0000000 --- a/common/src/flex/messaging/util/StringUtils.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.io.IOException; -import java.io.StringReader; -import java.io.StringWriter; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -/** - * - */ -public class StringUtils -{ - /** - * The String to use for an OS specific line separator. - */ - public static final String NEWLINE = System.getProperty("line.separator"); - - public static String substitute(String str, String from, String to) - { - if (from == null || from.equals("") || to == null) - return str; - - int index = str.indexOf(from); - - if (index == -1) - return str; - - StringBuffer buf = new StringBuffer(str.length()); - int lastIndex = 0; - - while (index != -1) - { - buf.append(str.substring(lastIndex, index)); - buf.append(to); - lastIndex = index + from.length(); - index = str.indexOf(from, lastIndex); - } - - // add in last chunk - buf.append(str.substring(lastIndex)); - - return buf.toString(); - } - - public static boolean findMatchWithWildcard(char[] src, char[] pat) - { - if (src == null || pat == null) - return false; - - // we consider an empty pattern to be a don't-match-anything pattern - if (pat.length == 0) - return false; - - if (src.length == 0) - return (pat.length == 0 || (pat.length == 1 && (pat[0] == '*' || pat[0] == '?'))); - - boolean star = false; - - int srcLen = src.length; - int patLen = pat.length; - int srcIdx = 0; - int patIdx = 0; - - for (; srcIdx < srcLen; srcIdx++) - { - if (patIdx == patLen) - { - if (patLen < (srcLen - srcIdx)) - patIdx = 0; //Start the search again - else - return false; - } - - char s = src[srcIdx]; - char m = pat[patIdx]; - - switch (m) - { - case '*': - // star on the end - if (patIdx == pat.length - 1) - return true; - star = true; - ++patIdx; - break; - - case '?': - ++patIdx; - break; - - default: - if (s != m) - { - if (!star) - { - if (patLen < (srcLen - srcIdx)) - patIdx = 0; //Start the search again - else - return false; - } - } - else - { - star = false; - ++patIdx; - } - break; - } - } - - if (patIdx < patLen) - { - //read off the rest of the pattern and make sure it's all wildcard - for (; patIdx < patLen; patLen++) - { - if (pat[patIdx] != '*') - { - return false; - } - } - return true; - } - - - return !star; - } - - /** - * Returns a prettified version of the XML, with indentations and - * linefeeds. Returns the original string if there was an error. - * @param xml the xml string - * @return String the prettified xml string - */ - public static String prettifyXML(String xml) - { - String result = xml; - try - { - StringReader reader = new StringReader(xml); - StringWriter writer = new StringWriter(); - Transformer transformer = - TransformerFactory.newInstance().newTransformer(); - transformer.setOutputProperty(OutputKeys.METHOD, "xml"); - transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.transform - (new StreamSource(reader), new StreamResult(writer)); - writer.close(); - - result = writer.toString(); - } - catch (TransformerFactoryConfigurationError error) - { - // Ignore. - } - catch (TransformerException error) - { - // Ignore. - } - catch (IOException error) - { - // Ignore. - } - return result; - } - - /** - * Returns a prettified version of the string, or the original - * string if the operation is not possible. - * @param string the string to check - * @return String the prettified string - */ - public static String prettifyString(String string) - { - String result = string; - if (string.startsWith("<?xml")) - { - result = prettifyXML(string); - } - return result; - } - - /** - * Returns true if a string is null or empty. - * @param string the String to check - * @return boolean true if the string is an empty string - */ - public static boolean isEmpty(String string) - { - return string == null || string.length() == 0; - } -} - http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/flex/messaging/util/UUIDUtils.java ---------------------------------------------------------------------- diff --git a/common/src/flex/messaging/util/UUIDUtils.java b/common/src/flex/messaging/util/UUIDUtils.java deleted file mode 100644 index 9fd3c57..0000000 --- a/common/src/flex/messaging/util/UUIDUtils.java +++ /dev/null @@ -1,330 +0,0 @@ -/* - * 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. - */ -package flex.messaging.util; - -import java.util.Random; -import java.util.UUID; - -public class UUIDUtils -{ - private static Random _weakRand = new Random(); - - /** - * The spec indicates that our time value should be based on 100 nano - * second increments but our time granularity is in milliseconds. - * The spec also says we can approximate the time by doing an increment - * when we dole out new ids in the same millisecond. We can fit 10,000 - * 100 nanos into a single millisecond. - */ - private static final int MAX_IDS_PER_MILLI = 10000; - - /** - * Any given time-of-day value can only be used once; remember the last used - * value so we don't reuse them. - * <p>NOTE: this algorithm assumes the clock will not be turned back. - */ - private static long lastUsedTOD = 0; - /** Counter to use when we need more than one id in the same millisecond. */ - private static int numIdsThisMilli = 0; - - /** Hex digits, used for padding UUID strings with random characters. */ - private static final String alphaNum = "0123456789ABCDEF"; - - /** 4 bits per hex character. */ - private static final int BITS_PER_DIGIT = 4; - - private static final int BITS_PER_INT = 32; - private static final int BITS_PER_LONG = 64; - private static final int DIGITS_PER_INT = BITS_PER_INT / BITS_PER_DIGIT; - private static final int DIGITS_PER_LONG = BITS_PER_LONG / BITS_PER_DIGIT; - - /** - * @private - */ - private static char[] UPPER_DIGITS = new char[] { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', - }; - - /** - * Private constructor to prevent instances from being created. - */ - private UUIDUtils() - { - } - - /** - * - * Use the createUUID function when you need a unique string that you will - * use as a persistent identifier in a distributed environment. To a very - * high degree of certainty, this function returns a unique value; no other - * invocation on the same or any other system should return the same value. - * - * @return a Universally Unique Identifier (UUID) - * Proper Format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' - * where `X' stands for a hexadecimal digit (0-9 or A-F). - */ - public static String createUUID() - { - return createUUID(false); - } - - public static String createUUID(boolean secure) throws Error - { - Random rand = _weakRand; - if (secure) - throw new Error("Secure UUIDs not implemented"); - - StringBuffer s = new StringBuffer(36); - - appendHexString(uniqueTOD(), false, 11, s); - - // Just use random padding characters, but ensure that the high bit - // is set to eliminate chances of collision with an IEEE 802 address. - s.append( alphaNum.charAt( rand.nextInt(16) | 8 ) ); - - // Add random padding characters. - appendRandomHexChars(32 - s.length(), rand, s); - - //insert dashes in proper position. so the format matches CF - s.insert(8,"-"); - s.insert(13,"-"); - s.insert(18,"-"); - s.insert(23,"-"); - - return s.toString(); - } - - /** - * Converts a 128-bit UID encoded as a byte[] to a String representation. - * The format matches that generated by createUID. If a suitable byte[] - * is not provided, null is returned. - * - * @param ba byte[] 16 bytes in length representing a 128-bit UID. - * - * @return String representation of the UID, or null if an invalid - * byte[] is provided. - */ - public static String fromByteArray(byte[] ba) - { - if (ba == null || ba.length != 16) - return null; - - StringBuffer result = new StringBuffer(36); - for (int i = 0; i < 16; i++) - { - if (i == 4 || i == 6 || i == 8 || i == 10) - result.append('-'); - - result.append(UPPER_DIGITS[(ba[i] & 0xF0) >>> 4]); - result.append(UPPER_DIGITS[(ba[i] & 0x0F)]); - } - return result.toString(); - } - - - /** - * A utility method to check whether a String value represents a - * correctly formatted UID value. UID values are expected to be - * in the format generated by createUID(), implying that only - * capitalized A-F characters in addition to 0-9 digits are - * supported. - * - * @param uid The value to test whether it is formatted as a UID. - * - * @return Returns true if the value is formatted as a UID. - */ - public static boolean isUID(String uid) - { - if (uid == null || uid.length() != 36) - return false; - - char[] chars = uid.toCharArray(); - for (int i = 0; i < 36; i++) - { - char c = chars[i]; - - // Check for correctly placed hyphens - if (i == 8 || i == 13 || i == 18 || i == 23) - { - if (c != '-') - return false; - } - // We allow capital alpha-numeric hex digits only - else if (c < 48 || c > 70 || (c > 57 && c < 65)) - { - return false; - } - } - - return true; - } - - /** - * Converts a UID formatted String to a byte[]. The UID must be in the - * format generated by createUID, otherwise null is returned. - * - * @param uid String representing a 128-bit UID. - * - * @return byte[] 16 bytes in length representing the 128-bits of the - * UID or null if the uid could not be converted. - */ - public static byte[] toByteArray(String uid) - { - if (!isUID(uid)) - return null; - - byte[] result = new byte[16]; - char[] chars = uid.toCharArray(); - int r = 0; - - for (int i = 0; i < chars.length; i++) - { - if (chars[i] == '-') - continue; - int h1 = Character.digit(chars[i], 16); - i++; - int h2 = Character.digit(chars[i], 16); - result[r++] = (byte)(((h1 << 4) | h2) & 0xFF); - } - return result; - } - - private static void appendRandomHexChars(int n, Random rand, StringBuffer result) - { - int digitsPerInt = DIGITS_PER_INT; - while (n > 0) - { - int digitsToUse = Math.min(n, digitsPerInt); - n -= digitsToUse; - appendHexString(rand.nextInt(), true, digitsToUse, result); - } - } - - private static void appendHexString - (long value, boolean prependZeroes, int nLeastSignificantDigits, - StringBuffer result) - { - int bitsPerDigit = BITS_PER_DIGIT; - - long mask = (1L << bitsPerDigit) - 1; - - if (nLeastSignificantDigits < DIGITS_PER_LONG) - { - // Clear the bits that we don't care about. - value &= (1L << (bitsPerDigit * nLeastSignificantDigits)) - 1; - } - - // Reorder the sequence so that the first set of bits will become the - // last set of bits. - int i = 0; - long reorderedValue = 0; - if (value == 0) - { - // One zero is dumped. - i++; - } - else - { - do - { - reorderedValue = (reorderedValue << bitsPerDigit) | (value & mask); - value >>>= bitsPerDigit; - i++; - } while (value != 0); - } - - if (prependZeroes) - { - for (int j = nLeastSignificantDigits - i; j > 0; j--) - { - result.append('0'); - } - } - - - // Dump the reordered sequence, with the most significant character - // first. - for (; i > 0; i--) - { - result.append(alphaNum.charAt((int) (reorderedValue & mask))); - reorderedValue >>>= bitsPerDigit; - } - } - - private static String createInsecureUUID() - { - StringBuffer s = new StringBuffer(36); - - appendHexString(uniqueTOD(), false, 11, s); - - // Just use random padding characters, but ensure that the high bit - // is set to eliminate chances of collision with an IEEE 802 address. - s.append( alphaNum.charAt( _weakRand.nextInt(16) | 8 ) ); - - // Add random padding characters. - appendRandomHexChars(32 - s.length(), _weakRand, s); - - //insert dashes in proper position. so the format matches CF - s.insert(8,"-"); - s.insert(13,"-"); - s.insert(18,"-"); - s.insert(23,"-"); - - return s.toString(); - } - - /** - * @return a time value, unique for calls to this method loaded by the same classloader. - */ - private static synchronized long uniqueTOD() - { - long currentTOD = System.currentTimeMillis(); - - // Clock was set back... do not hang in this case waiting to catch up. - // Instead, rely on the random number part to differentiate the ids. - if (currentTOD < lastUsedTOD) - lastUsedTOD = currentTOD; - - if (currentTOD == lastUsedTOD) - { - numIdsThisMilli++; - /* - * Fall back to the old technique of sleeping if we allocate - * too many ids in one time interval. - */ - if (numIdsThisMilli >= MAX_IDS_PER_MILLI) - { - while ( currentTOD == lastUsedTOD ) - { - try { Thread.sleep(1); } catch ( Exception interrupt ) { /* swallow, wake up */ } - currentTOD = System.currentTimeMillis(); - } - lastUsedTOD = currentTOD; - numIdsThisMilli = 0; - } - } - else - { - // We have a new TOD, reset the counter - lastUsedTOD = currentTOD; - numIdsThisMilli = 0; - } - - return lastUsedTOD * MAX_IDS_PER_MILLI + (long)numIdsThisMilli; - } -} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/main/java/flex/graphics/ImageSnapshot.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/flex/graphics/ImageSnapshot.java b/common/src/main/java/flex/graphics/ImageSnapshot.java new file mode 100644 index 0000000..1dc97f0 --- /dev/null +++ b/common/src/main/java/flex/graphics/ImageSnapshot.java @@ -0,0 +1,147 @@ +/* + * 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. + */ + +package flex.graphics; + +import java.util.HashMap; +import java.util.Map; + +/** + * This class corresponds to mx.graphics.ImageSnapshot on the client. Clients may choose + * to capture images and send them to the server via a RemoteObject call. The PDF generation + * feature of LCDS may then be used to generate PDF's from these images. + * + */ +public class ImageSnapshot extends HashMap +{ + private static final long serialVersionUID = 7914317354403674061L; + + /** + * Default constructor. + */ + public ImageSnapshot() + { + } + + private Map properties; + private String contentType; + private byte[] data; + private int height; + private int width; + + /** + * The content type for the image encoding format that was used to capture + * this snapshot. + * + * @return content type of this image + */ + public String getContentType() + { + return contentType; + } + + /** + * Sets content type of this snapshot. + * + * @param value content type + */ + public void setContentType(String value) + { + contentType = value; + } + + /** + * The encoded data representing the image snapshot. + * + * @return encoded image data + */ + public byte[] getData() + { + return data; + } + + /** + * Set the encoded data representing the image snapshot. + * + * @param value byte array of image data + */ + public void setData(byte[] value) + { + data = value; + } + + /** + * The image height in pixels. + * + * @return image height in pixels + */ + public int getHeight() + { + return height; + } + + /** + * Set image height in pixels. + * + * @param value image height in pixels. + */ + public void setHeight(int value) + { + height = value; + } + + /** + * Additional properties of the image. + * + * @return a map containing the dynamically set properties on this snapshot + */ + public Map getProperties() + { + return properties; + } + + /** + * Sets the map of dynamic properties for this snapshot. + * + * @param value map containing dynamic properties for this snapshot + */ + public void setProperties(Map value) + { + properties = value; + } + + /** + * The image width in pixels. + * + * @return width in pixels + */ + public int getWidth() + { + return width; + } + + /** + * Set width in pixels. + * + * @param value width in pixels. + */ + public void setWidth(int value) + { + width = value; + } + +} http://git-wip-us.apache.org/repos/asf/flex-blazeds/blob/8315f8fa/common/src/main/java/flex/graphics/package-info.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/flex/graphics/package-info.java b/common/src/main/java/flex/graphics/package-info.java new file mode 100644 index 0000000..87093bf --- /dev/null +++ b/common/src/main/java/flex/graphics/package-info.java @@ -0,0 +1,18 @@ +/* + * 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. + */ + +package flex.graphics; \ No newline at end of file