/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.tools.workbench.ant; | |
import java.io.PrintStream; | |
import org.apache.tools.ant.BuildException; | |
import org.eclipse.persistence.exceptions.DatabaseException; | |
import org.eclipse.persistence.internal.security.PrivilegedAccessHelper; | |
import org.eclipse.persistence.sessions.DatabaseLogin; | |
import org.eclipse.persistence.sessions.DatabaseSession; | |
import org.eclipse.persistence.sessions.factories.SessionManager; | |
import org.eclipse.persistence.sessions.factories.XMLSessionConfigLoader; | |
public class SessionValidator extends ProjectRunner implements SessionValidatorInterface { | |
private DatabaseSession databaseSession; | |
public SessionValidator() { | |
super(); | |
} | |
public SessionValidator( PrintStream log) { | |
super( log); | |
} | |
/** | |
* Test TopLink deployment descriptor XML by running TopLink | |
* | |
* @return 0 if the there is no error in the project. | |
*/ | |
public int execute( String sessionName, String sessionsFileName, String url, String driverclass, String user, String password) { | |
int status = 0; | |
try { | |
this.login( sessionName, sessionsFileName, url, driverclass, user, password); | |
} | |
catch ( DatabaseException e) { | |
String msg = ( e.getMessage() == null) ? e.toString() : e.getMessage(); | |
throw new BuildException( this.stringRepository.getString( "couldNotLogin", msg), e); | |
} | |
catch( Throwable e) { | |
Throwable t = ( e.getCause() == null) ? e : e.getCause(); | |
String msg = ( t.getMessage() == null) ? t.toString() : t.getMessage(); | |
throw new BuildException( this.stringRepository.getString( "errorWhileValidating", msg), e); | |
} | |
finally { | |
this.logout(); | |
} | |
return status; | |
} | |
private void login( String sessionName, String sessionsFileName, String url, String driverclass, String user, String password) { | |
this.databaseSession = ( DatabaseSession)SessionManager.getManager(). | |
getSession( | |
new XMLSessionConfigLoader( sessionsFileName), | |
sessionName, PrivilegedAccessHelper.getClassLoaderForClass( getClass()), false, false, false); | |
DatabaseLogin sessionLogin = this.databaseSession.getLogin(); | |
if( url != "") { | |
if( url != "") sessionLogin.setDatabaseURL( url); | |
if( driverclass != "") sessionLogin.setDriverClassName( driverclass); | |
if( user != "") sessionLogin.setUserName( user); | |
if( password != "") sessionLogin.setPassword( password); | |
} | |
this.databaseSession.login( sessionLogin); | |
} | |
private void logout() { | |
if( this.databaseSession != null) { | |
this.databaseSession.logout(); | |
} | |
} | |
} |