001 /*
002 * file AuthenticationDemo.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM - you are allowed to copy, modify and
006 * redistribute this file as part of any program that interfaces with
007 * IBM Rational CM API.
008 *
009 * com.ibm.rational.stp.client.samples.cc.AuthenticationDemo
010 *
011 * © Copyright IBM Corporation 2008. All Rights Reserved.
012 * Note to U.S. Government Users Restricted Rights: Use, duplication or
013 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
014 */
015
016 package com.ibm.rational.stp.client.samples.cc;
017
018 import javax.wvcm.ProviderFactory;
019 import javax.wvcm.WvcmException;
020 import javax.wvcm.ProviderFactory.Callback;
021 import javax.wvcm.WvcmException.ReasonCode;
022
023 import com.ibm.rational.wvcm.stp.StpProvider;
024 import com.ibm.rational.wvcm.stp.cc.CcProvider;
025
026 /**
027 * Demonstrate basic CM Server authentication, including use of the
028 * javax.wvcm.ProviderFactory.Callback authentication callback interface.
029 */
030 public class AuthenticationDemo extends CcDemoBase {
031
032 public class DemoCallback implements Callback {
033
034 public Authentication getAuthentication(String realm, int retryCount)
035 throws WvcmException
036 {
037 trace("Getting credentials for: " + realm);
038 if (retryCount > 0) {
039 throw new WvcmException("Invalid credentials", ReasonCode.UNAUTHORIZED);
040 }
041 return new Authentication() {
042 public String loginName() {
043 return props().getLoginNameAndDomain();
044 }
045 public String password() {
046 return props().getPassword();
047 }
048 };
049 }
050 }
051
052 /* (non-Javadoc)
053 * @see junit.framework.TestCase#setUp()
054 */
055 protected void setUp() throws Exception {
056 super.setUp();
057 }
058
059 /* (non-Javadoc)
060 * @see junit.framework.TestCase#tearDown()
061 */
062 protected void tearDown() throws Exception {
063 super.tearDown();
064 }
065
066 public void testCallback() throws Exception {
067
068 // Instantiate our own authentication callback.
069 Callback callback = new DemoCallback();
070
071 // Instantiate our own CcProvider so we can specify our own callback.
072 StpProvider stpProvider =
073 (StpProvider) ProviderFactory.createProvider(
074 CcProvider.CC_ONLY_PROVIDER_CLASS, callback);
075 stpProvider.setServerUrl(props().getCmServerUrl());
076
077 // Now perform an operation that requires a CM server connection.
078 // This will cause our authentication callback to be invoked.
079 CcProvider ccProvider = stpProvider.ccProvider();
080 ccProvider.doGetDefaultCcRegistryRegion(null);
081 }
082 }