package org.rhq.coregui.client.util.enhanced;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.layout.Layout;
/**
* Utilities for assisting with Selenium Automation
*
* @author Jay Shaughnessy
*/
public class EnhancedUtility {
static public String getSimpleClassName(final Object widget) {
String className = widget.getClass().getName();
return className.substring(className.lastIndexOf(".") + 1);
}
static public String getSmallStackTrace(Throwable t) {
StringBuilder smallStack = new StringBuilder();
StackTraceElement[] stack = (null == t) ? new Exception().getStackTrace() : t.getStackTrace();
for (int i = 1; i < stack.length; i++) {
StackTraceElement ste = stack[i];
if (ste.getClassName().startsWith("org.rhq")) {
smallStack.append(ste.toString());
smallStack.append("\n");
}
}
return smallStack.toString();
}
/**
* Currently performs the following:
* <pre>
* - removes spaces
* - removes dots
* - converts '-' to '_'
* </pre>
* @param unsafeId The desired Id but with potential problems
* @param defaultId
* @return a safe version of unsafeId, or, if unsafeId is null or empty, defaultId
*/
static public String getSafeId(String unsafeId, String defaultId) {
if ((null == unsafeId || unsafeId.trim().isEmpty())) {
return defaultId;
}
String safeId = unsafeId.replace(" ", "").replace(".", "").replace("-", "_");
return safeId;
}
/**
* Use only if you are sure the unsafeId is not null or empty, or if DEFAULT_ID is acceptable.
* <pre>
* Equivalent to:
*
* getSafeId( unsafeId, DEFAULT_ID );
* </pre>
* @param unsafeId The desired Id but with potential problems
* @return a safe version of unsafeId, or, if unsafeId is null or empty, DEFAULT_ID
*/
static public String getSafeId(String unsafeId) {
return getSafeId(unsafeId, "DEFAULTID");
}
/**
* Like Layout.removeMembers() but ensures a synchronous destroy of each member.
* @param <T>
* @param layout
*/
static public <T extends Layout> void destroyMembers(T layout) {
if (null == layout) {
return;
}
Canvas[] members = layout.getMembers();
if (null == members) {
return;
}
for (Canvas currentMember : members) {
layout.removeMember(currentMember);
currentMember.destroy();
}
}
}