/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.server.headlessclient;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import javax.servlet.ServletRequest;
import com.servoy.j2db.ISessionClient;
/**
* Factory for headless clients
* @author jblok
*/
public class HeadlessClientFactory
{
public static ISessionBean createSessionBean(ServletRequest req, String solutionname) throws Exception
{
return createSessionBean(req, solutionname, null, null, null);
}
public static ISessionBean createSessionBean(ServletRequest req, String solutionname, String username, String password) throws Exception
{
return createSessionBean(req, solutionname, username, password, null);
}
public static ISessionBean createSessionBean(ServletRequest req, String solutionname, Object[] solutionOpenMethodArgs) throws Exception
{
return createSessionBean(req, solutionname, null, null, solutionOpenMethodArgs);
}
public static ISessionBean createSessionBean(ServletRequest req, String solutionname, String username, String password, Object[] solutionOpenMethodArgs)
throws Exception
{
final ISessionClient sb = HeadlessClientFactoryInternal.createSessionBean(req, solutionname, username, password, solutionOpenMethodArgs);
return (ISessionBean)Proxy.newProxyInstance(HeadlessClientFactory.class.getClassLoader(), new Class[] { ISessionBean.class }, new InvocationHandler()
{
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
return method.invoke(sb, args);
}
});
}
public static IHeadlessClient createHeadlessClient(String solutionname) throws Exception
{
return createHeadlessClient(solutionname, null, null, null);
}
public static IHeadlessClient createHeadlessClient(String solutionname, String username, String password) throws Exception
{
return createHeadlessClient(solutionname, username, password, null);
}
public static IHeadlessClient createHeadlessClient(String solutionname, Object[] solutionOpenMethodArgs) throws Exception
{
return createHeadlessClient(solutionname, null, null, solutionOpenMethodArgs);
}
public static IHeadlessClient createHeadlessClient(String solutionname, String username, String password, Object[] solutionOpenMethodArgs) throws Exception
{
final ISessionClient sb = HeadlessClientFactoryInternal.createHeadlessClient(solutionname, username, password, solutionOpenMethodArgs);
return (IHeadlessClient)Proxy.newProxyInstance(HeadlessClientFactory.class.getClassLoader(),
new Class[] { IHeadlessClient.class, ISessionClient.class }, new InvocationHandler()
{
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
return method.invoke(sb, args);
}
});
}
}