/*
* SMART FP7 - Search engine for MultimediA enviRonment generated contenT
* Webpage: http://smartfp7.eu
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* The Original Code is Copyright (c) 2012-2013 of Telesto Technologies
* All Rights Reserved
*
* Contributor(s):
* Xristos Smailis <smailisxristos@yahoo.com>
* Thanos Alexiou <thanos@telesto.gr>
*/
package eu.smartfp7.SocialNetworkManager;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class DriverSpecificCall {
@XmlElement(name = "ClassName")
String ClassName = new String();
@XmlElement(name = "MethodName")
String MethodName = new String();
@XmlElement(name = "ArgTypes")
ArrayList<String> ArgTypes = new ArrayList();
@XmlElement(name = "ArgValues")
ArrayList<String> ArgValues = new ArrayList();
public Object invoke() {
Class DriverType;
try {
DriverType = Class.forName("eu.smartfp7.SocialNetworkDriver." + ClassName);
Object Driver = DriverType.newInstance();
Class[] types = new Class[ArgTypes.size()];
for (int i = 0; i < ArgTypes.size(); i++) {
types[i] = Class.forName(ArgTypes.get(i));
}
// get the method
Object[] Args = new Object[ArgTypes.size()];
Method method = DriverType.getMethod(MethodName, types);
for (int i = 0; i < ArgTypes.size(); i++) {
Constructor constructor = types[i].getConstructor(Class
.forName("java.lang.String"));
Args[i] = constructor.newInstance(ArgValues.get(i));
}
method.invoke(Driver, Args);
return Driver;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public Object invoke(Object Driver) {
Class DriverType;
try {
DriverType = Class.forName("eu.smartfp7.SocialNetworkDriver." + ClassName);
if (ArgTypes.size() > 0) {
Class[] types = new Class[ArgTypes.size()];
for (int i = 0; i < ArgTypes.size(); i++) {
types[i] = Class.forName(ArgTypes.get(i));
}
// get the method
Object[] Args = new Object[ArgTypes.size()];
Method method = DriverType.getMethod(MethodName, types);
for (int i = 0; i < ArgTypes.size(); i++) {
Constructor constructor = types[i].getConstructor(Class
.forName("java.lang.String"));
Args[i] = constructor.newInstance(ArgValues.get(i));
}
method.invoke(Driver, Args);
} else {
Method method = DriverType.getMethod(MethodName);
method.invoke(Driver);
}
return Driver;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}