// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/Authentication.java
// public interface Authentication {
// 	
// 	String getUsername();
// 	
// 	String getPassword();
// 
// }
// 
// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/TokenAuthentication.java
// public class TokenAuthentication implements Authentication {
// 
//     private final String token;
// 
//     /**
//      * Token auth constructor.
//      * 
//      * @param token
//      *            authentication token
//      */
//     public TokenAuthentication(final String token) {
//         this.token = token;
//     }
// 
// 	@Override
// 	public String getUsername() {
// 		return "apiKey";
// 	}
// 
// 	@Override
// 	public String getPassword() {
// 		return token;
// 	}
// 
// }
// 
// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/UsernamePasswordAuthentication.java
// public class UsernamePasswordAuthentication implements Authentication {
// 
//     private final String username;
//     private final String password;
// 
//     /**
//      * Constructor
//      * 
//      * @param username
//      *            for basic HTTP authentication
//      * @param password
//      *            for basic HTTP authentication
//      */
//     public UsernamePasswordAuthentication(final String username, final String password) {
//         this.username = username;
//         this.password = password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return username;
//     }
// 
//     @Override
//     public String getPassword() {
//         return password;
//     }
// 
// }


import com.labs64.netlicensing.provider.auth.UsernamePasswordAuthentication;
import com.labs64.netlicensing.provider.auth.Authentication;
import com.labs64.netlicensing.provider.auth.TokenAuthentication;
/* 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
 *
 *      https://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.labs64.netlicensing.provider;


/**
 */
public abstract class AbstractRestProvider implements RestProvider {

    private Authentication authentication;

    private RestProvider.Configuration configuration;

    @Override
    public RestProvider authenticate(final Authentication authentication) {
        this.authentication = authentication;
        return this;
    }

    @Override
    public RestProvider authenticate(final String username, final String password) {
        authentication = new UsernamePasswordAuthentication(username, password);
        return this;
    }

// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/Authentication.java
// public interface Authentication {
// 	
// 	String getUsername();
// 	
// 	String getPassword();
// 
// }
// 
// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/TokenAuthentication.java
// public class TokenAuthentication implements Authentication {
// 
//     private final String token;
// 
//     /**
//      * Token auth constructor.
//      * 
//      * @param token
//      *            authentication token
//      */
//     public TokenAuthentication(final String token) {
//         this.token = token;
//     }
// 
// 	@Override
// 	public String getUsername() {
// 		return "apiKey";
// 	}
// 
// 	@Override
// 	public String getPassword() {
// 		return token;
// 	}
// 
// }
// 
// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/auth/UsernamePasswordAuthentication.java
// public class UsernamePasswordAuthentication implements Authentication {
// 
//     private final String username;
//     private final String password;
// 
//     /**
//      * Constructor
//      * 
//      * @param username
//      *            for basic HTTP authentication
//      * @param password
//      *            for basic HTTP authentication
//      */
//     public UsernamePasswordAuthentication(final String username, final String password) {
//         this.username = username;
//         this.password = password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return username;
//     }
// 
//     @Override
//     public String getPassword() {
//         return password;
//     }
// 
// }


// Path: NetLicensingClient/src/main/java/com/labs64/netlicensing/provider/AbstractRestProvider.java
import com.labs64.netlicensing.provider.auth.UsernamePasswordAuthentication;
import com.labs64.netlicensing.provider.auth.Authentication;
import com.labs64.netlicensing.provider.auth.TokenAuthentication;

/* 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
 *
 *      https://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.labs64.netlicensing.provider;


/**
 */
public abstract class AbstractRestProvider implements RestProvider {

    private Authentication authentication;

    private RestProvider.Configuration configuration;

    @Override
    public RestProvider authenticate(final Authentication authentication) {
        this.authentication = authentication;
        return this;
    }

    @Override
    public RestProvider authenticate(final String username, final String password) {
        authentication = new UsernamePasswordAuthentication(username, password);
        return this;
    }

    @Override