/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.test.petstore.extension;
import static org.mule.runtime.api.util.Preconditions.checkArgument;
import static org.mule.runtime.api.util.Preconditions.checkState;
import org.mule.runtime.api.tls.TlsContextFactory;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
public class PetStoreClient {
private String username;
private String password;
private TlsContextFactory tlsContext;
private String configName;
private int disconnectCount;
private Date openingDate;
private List<Date> closedForHolidays;
private List<LocalDateTime> discountDates;
public PetStoreClient(String username, String password, TlsContextFactory tlsContextFactory, String configName,
Date openingDate, List<Date> closedForHolidays, List<LocalDateTime> discountDates) {
this.username = username;
this.password = password;
this.tlsContext = tlsContextFactory;
this.configName = configName;
this.openingDate = openingDate;
this.closedForHolidays = closedForHolidays;
this.discountDates = discountDates;
}
public List<String> getPets(String ownerName, PetStoreConnector config) {
checkArgument(ownerName.equals(username), "config doesn't match");
return config.getPets();
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void disconnect() {
disconnectCount++;
}
public int getDisconnectCount() {
return disconnectCount;
}
public boolean hasActiveConnection() {
checkState(disconnectCount >= 0, "negative disconnectCount");
return disconnectCount == 0;
}
public TlsContextFactory getTlsContext() {
return tlsContext;
}
public String getConfigName() {
return configName;
}
public Date getOpeningDate() {
return openingDate;
}
public List<Date> getClosedForHolidays() {
return closedForHolidays;
}
public List<LocalDateTime> getDiscountDates() {
return discountDates;
}
}