/*!
* Copyright 2010 - 2015 Pentaho Corporation. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.pentaho.di.services;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Ignore;
import org.pentaho.di.repository.pur.PurRepositoryRestService;
import org.pentaho.di.repository.pur.WebServiceManager;
import org.pentaho.platform.plugin.services.importexport.InitializationException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
/**
* This class is an integrated test, not a unit test. Assuming there is a running pdi/merges server on localhost, this
* class will test rest service connectivity. The first test will see if the generated code from Wadl2java can run a web
* service. The second test will test if our WebServiceManager can do the same.
*
* @author tkafalas
*
*/
@Ignore
public class Wadl2JavaRestConnectivetyCheck {
private Client client = null;
private static String uri = "http://localHost:8080/pentaho";
public static void main( String[] args ) {
Wadl2JavaRestConnectivetyCheck test = new Wadl2JavaRestConnectivetyCheck();
try {
test.initRestService1();
test.initRestService2();
} catch ( InitializationException e ) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Test stand alone generated code web service connectivity
*/
private void initRestService1() throws InitializationException {
// get information about the remote connection
String username = "admin";
String password = "password";
ClientConfig clientConfig = new DefaultClientConfig();
client = Client.create( clientConfig );
client.addFilter( new HTTPBasicAuthFilter( username, password ) );
URI baseUri = null;
try {
baseUri = new URI( uri + "/plugin/" );
} catch ( URISyntaxException e ) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PentahoDiPlugin.PurRepositoryPluginApiRevision revisionService =
PentahoDiPlugin.purRepositoryPluginApiRevision( client, baseUri );
PentahoDiPlugin.PurRepositoryPluginApiRevision.PathIdVersioningConfiguration versioningConfigurationMethod =
revisionService.pathIdVersioningConfiguration( "foo.ktr" );
FileVersioningConfiguration fileVersioningConfiguration =
versioningConfigurationMethod.getAsXml( FileVersioningConfiguration.class );
System.out.println( "Test1: " + fileVersioningConfiguration.isVersioningEnabled() );
}
/**
* Test web service connectivity using the the WebServiceManager
*
* @throws InitializationException
*/
private void initRestService2() throws InitializationException {
// simulate the registration of web service classes
String username = "admin";
String password = "password";
WebServiceManager webServiceManager = new WebServiceManager( uri, username );
// Now get a class representing the services in the class
// PentahoDiPlugin
PurRepositoryRestService.PurRepositoryPluginApiRevision servicePort = null;
try {
servicePort =
webServiceManager.createService( username, password,
PurRepositoryRestService.PurRepositoryPluginApiRevision.class );
} catch ( MalformedURLException e ) {
// Should never happen
e.printStackTrace();
}
// Call any of the web services here
FileVersioningConfiguration fileVersioningConfiguration =
servicePort.pathIdVersioningConfiguration( "foo.ktr" ).getAsFileVersioningConfigurationXml();
System.out.println( "Test2: " + fileVersioningConfiguration.isVersioningEnabled() );
webServiceManager.close();
}
}