blob: 3f06d6d5b5f49a8110835afaa2cdffc087689899 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2008 Oracle Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package instrument;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.util.Iterator;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.component.UIOutput;
import org.eclipse.jst.jsf.common.runtime.internal.debug.JSFMonitorMessage;
import org.eclipse.jst.jsf.common.runtime.internal.model.component.ComponentFactory;
import org.eclipse.jst.jsf.common.runtime.internal.model.component.ComponentInfo;
import org.eclipse.jst.jsf.common.runtime.internal.model.component.FacetInfo;
import org.eclipse.jst.jsf.common.runtime.internal.model.component.UIInputInfo;
import org.eclipse.jst.jsf.common.runtime.internal.model.component.UIOutputInfo;
public class MyMonitorMessageFactory
{
public static JSFMonitorMessage createJSFMonitorMessage(InputStream inStream) throws IOException, ClassCastException, ClassNotFoundException
{
ObjectInputStream objectStream = new ObjectInputStream(inStream);
Object nextObject = objectStream.readObject();
return (JSFMonitorMessage) nextObject;
}
static ComponentInfo buildComponentTree(UIComponent component, boolean isFacet)
{
final ComponentInfo componentInfo = getComponentData(component, isFacet);
for (Iterator it = component.getChildren().iterator(); it.hasNext();)
{
UIComponent child = (UIComponent) it.next();
componentInfo.getChildren().add(buildComponentTree(child, false));
}
for (Iterator it = component.getFacets().values().iterator(); it.hasNext();)
{
UIComponent facet = (UIComponent) it.next();
componentInfo.getChildren().add(buildComponentTree(facet, true));
}
return componentInfo;
}
private static ComponentInfo getComponentData(final UIComponent component, boolean isFacet)
{
if (isFacet)
{
return calculateFacetInfo(component);
}
else if (component instanceof UIInput)
{
return calculateUIInput((UIInput)component);
}
else if (component instanceof UIOutput)
{
return calculateUIOutput((UIOutput)component);
}
// default; just make a component
return calculateComponentInfo(component);
}
private static ComponentInfo calculateComponentInfo(UIComponent component)
{
final String id = component.getId();
final String parentId = component.getParent() == null ? null : component.getParent().getId();
final String componentFamily = component.getFamily();
final String renderFamily = component.getRendererType();
final String componentType = null;
final String componentClass = component.getClass().getCanonicalName();
return ComponentFactory.createComponentInfo
(id, parentId, componentFamily, renderFamily, componentType, componentClass);
}
private static FacetInfo calculateFacetInfo(UIComponent component)
{
final String id = component.getId();
final String parentId = component.getParent() == null ? null : component.getParent().getId();
final String componentFamily = component.getFamily();
final String renderFamily = component.getRendererType();
final String componentType = null;
final String componentClass = component.getClass().getCanonicalName();
return ComponentFactory.createFacetInfo
(id, parentId, componentFamily, renderFamily, componentType, componentClass);
}
private static UIInputInfo calculateUIInput(UIInput uiInput)
{
final String id = uiInput.getId();
final String parentId = uiInput.getParent() == null ? null : uiInput.getParent().getId();
final String componentFamily = uiInput.getFamily();
final String renderFamily = uiInput.getRendererType();
final String componentType = null;
final String componentClass = uiInput.getClass().getCanonicalName();
final String isValid = Boolean.toString(uiInput.isValid());
final String isImmediate = Boolean.toString(uiInput.isImmediate());
final String isRequired = Boolean.toString(uiInput.isRequired());
final String isRendered = Boolean.toString(uiInput.isRendered());
return ComponentFactory.createUIInputInfo
(id, parentId, componentFamily, renderFamily, isValid, isImmediate, isRequired, isRendered, componentType, componentClass);
}
private static UIOutputInfo calculateUIOutput(UIOutput uiOutput)
{
final String id = uiOutput.getId();
final String parentId = uiOutput.getParent() == null ? null : uiOutput.getParent().getId();
final String componentFamily = uiOutput.getFamily();
final String renderFamily = uiOutput.getRendererType();
final String componentType = null;
final String componentClass = uiOutput.getClass().getCanonicalName();
final String isRendered = Boolean.toString(uiOutput.isRendered());
return ComponentFactory.createUIOutputInfo
(id, parentId, componentFamily, renderFamily, isRendered, componentType, componentClass);
}
}