package com.highway2urhell.collector;
import com.highway2urhell.CoreEngine;
import com.highway2urhell.domain.EntryPathData;
import com.highway2urhell.domain.EntryPathParam;
import com.highway2urhell.domain.TypeParam;
import org.apache.struts.action.Action;
import org.springframework.web.context.WebApplicationContext;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class Struts1WithSpringCollector {
public static void collectBody(WebApplicationContext webApplicationContext) {
List listEntryPath = new ArrayList();
if (webApplicationContext != null &&
webApplicationContext.getBeanDefinitionNames() != null &&
webApplicationContext.getBeanDefinitionNames().length > 0) {
for (int i = 0; i < webApplicationContext.getBeanDefinitionNames().length; i++) {
String tmp = webApplicationContext.getBeanDefinitionNames()[i];
if (tmp.startsWith("/")) {
Action toAdd = (Action) webApplicationContext.getBean(tmp, Action.class);
try {
Class c = Class.forName(toAdd.getClass().getName());
Method[] tabDeclared = c.getDeclaredMethods();
for (int m = 0; i < tabDeclared.length; i++) {
EntryPathData entry = new EntryPathData();
String resSignature = org.objectweb.asm.Type.getMethodDescriptor(tabDeclared[i]);
entry.setUri(tmp);
entry.setClassName(toAdd.getClass().getName());
entry.setMethodName(tabDeclared[m].getName());
entry.setSignatureName(resSignature);
List listEntryPathData = new ArrayList();
for (int j = 0; j < tabDeclared[m].getParameterTypes().length; j++) {
EntryPathParam param = new EntryPathParam();
param.setKey("");
param.setTypeParam(TypeParam.PARAM_DATA);
param.setValue(tabDeclared[m].getParameterTypes()[j].getName());
listEntryPathData.add(param);
}
entry.setListEntryPathData(listEntryPathData);
System.err.println(entry.toString());
listEntryPath.add(entry);
}
} catch (ClassNotFoundException e) {
System.err.println("Error on invoke " + toAdd.getClass().getName());
e.printStackTrace();
}
}
}
}
CoreEngine.getInstance().getFramework("STRUTS_SPRING_1").receiveData(listEntryPath);
}
}