Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package edu.suffolk.litlab.efsp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ConfigurationLoader {

private static final String LOG_KEY = "edu.suffolk.litlab.efsp.enableReqLog";

public static Properties loadConfig() {
ServerEnv env = ServerEnv.fromEnvVar();
String propertiesFile = "application." + env.getName() + ".properties";
var props = new Properties();
try (var is = new FileInputStream(propertiesFile)) {
props.load(is);
} catch (FileNotFoundException ex) {
try (var secondIs =
ConfigurationLoader.class.getClassLoader().getResourceAsStream(propertiesFile)) {
if (secondIs == null) {
throw new RuntimeException(
"Couldn't load config file as file in current dir or as class resource. "
+ propertiesFile);
}
props.load(secondIs);
} catch (IOException e) {
throw new RuntimeException(
"Failed to load properties file as class resource " + propertiesFile, e);
}
} catch (IOException e) {
throw new RuntimeException("Failed to load properties file: " + propertiesFile, e);
}
return props;
}

// TODO(#394): start handling this with Spring cache
public static boolean shouldLogRequests() {
var props = loadConfig();
return Boolean.parseBoolean(props.getProperty(LOG_KEY));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,18 @@ public enum Jurisdiction {
CALIFORNIA("california", Api.ECF_4, Vendor.TYLER),
INDIANA("indiana", Api.ECF_4, Vendor.TYLER),
ILLINOIS("illinois", Api.ECF_4_Schedule, Vendor.TYLER),
LOUISIANA("louisiana", Api.JEFFNET, Vendor.JEFFERSON_PARISH),
MASSACHUSETTS("massachusetts", Api.ECF_4, Vendor.TYLER),
TEXAS("texas", Api.ECF_4, Vendor.TYLER),
VERMONT("vermont", Api.ECF_4, Vendor.TYLER);

public enum Api {
JEFFNET,
ECF_4,
// Illinois uses a custom Tyler ECF4 version, which includes a pre-release ECF 5
// version of the Court Scheduling MDE.
ECF_4_Schedule;
}

public enum Vendor {
JEFFERSON_PARISH,
TYLER;
}

Expand Down
55 changes: 55 additions & 0 deletions EfspCommons/src/main/java/edu/suffolk/litlab/efsp/ServerEnv.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package edu.suffolk.litlab.efsp;

import static edu.suffolk.litlab.efsp.stdlib.StdLib.GetEnv;

import java.util.Optional;

/** The server software environments that we (Suffolk) have set up. */
public enum ServerEnv {
/// i.e. the production / live environment
PROD("prod"),
/// where we do integration, development, and testing.
TEST("test");

private String name;

private ServerEnv(String name) {
this.name = name;
}

public String getName() {
return name;
}

public static ServerEnv parse(String value) {
for (var env : ServerEnv.values()) {
if (value.equalsIgnoreCase(env.getName())) {
return env;
}
}
throw new IllegalArgumentException("Can't make a `ServerEnv` from: `" + value + "`");
}

public static ServerEnv fromEnvVar() {
return GetEnv("SERVER_ENV")
.map(ServerEnv::parse)
.or(
() -> {
var tylerEnv = GetEnv("TYLER_ENV").map(e -> e.toLowerCase());
Optional<ServerEnv> maybeServer =
tylerEnv.map(
e -> {
return switch (e) {
case "prod" -> ServerEnv.PROD;
case "stage" -> ServerEnv.TEST;
default -> ServerEnv.TEST;
};
});
return maybeServer;
})
.orElseThrow(
() ->
new IllegalArgumentException(
"The Env vars 'SERVER_ENV' ('test' or 'prod') or 'TYLER_ENV' ('stage' or 'prod') needs to be defined"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,48 +59,44 @@ public static void setupServicePort(BindingProvider bp) {
public static void main(String args[]) {
// TODO(brycew): add easy checks to look for client-sign.properties, Suffolk.pfx, and
// X509_PASSWORD in env.
System.out.println("Getting versions for all " + TylerClients.getTylerEnv() + " servers");
for (Jurisdiction j : Jurisdiction.values()) {
for (TylerEnv env : TylerEnv.values()) {
var domain = new TylerDomain(j, env);
System.out.println(domain.toString());
try {
var review =
SoapClientChooser.getFilingReviewFactory(domain).get().getFilingReviewMDEPort();
setupServicePort((BindingProvider) review);
var test = new PrintVersions();
ClientProxy.getClient(review).getInInterceptors().add(test);
System.out.println(j.toString());
try {
var review = SoapClientChooser.getFilingReviewFactory(j).get().getFilingReviewMDEPort();
setupServicePort((BindingProvider) review);
var test = new PrintVersions();
ClientProxy.getClient(review).getInInterceptors().add(test);

var query = new CourtPolicyQueryMessageType();
var court = new CourtType();
var niemCoreObjFac = new ecf4.latest.gov.niem.niem.niem_core._2.ObjectFactory();
var adamsId = niemCoreObjFac.createIdentificationType();
var adamsStr = new ecf4.latest.gov.niem.niem.proxy.xsd._2.String();
adamsStr.setValue("adams");
adamsId.setIdentificationID(adamsStr);
var idType = niemCoreObjFac.createOrganizationIdentification(adamsId);
court.setOrganizationIdentification(idType);
var text = new TextType();
text.setValue("adams");
court.setCourtName(text);
query.setCaseCourt(court);
var id = new IdentificationType();
EntityType typ = new EntityType();
var commonObjFac = new ObjectFactory();
JAXBElement<PersonType> elem2 = commonObjFac.createEntityPerson(new PersonType());
typ.setEntityRepresentation(elem2);
query.setQuerySubmitter(typ);
var string = new ecf4.latest.gov.niem.niem.proxy.xsd._2.String();
string.setValue("http://localhost");
id.setIdentificationID(string);
query.setSendingMDELocationID(id);
query.setSendingMDEProfileCode(
"urn:oasis:names:tc:legalxml-courtfiling:schema:xsd:WebServicesMessaging-2.0");
review.getPolicy(query);
} catch (Exception ex) {
System.err.println(
"Error making call: " + ex.getLocalizedMessage() + ", " + ex.toString());
// continue
}
var query = new CourtPolicyQueryMessageType();
var court = new CourtType();
var niemCoreObjFac = new ecf4.latest.gov.niem.niem.niem_core._2.ObjectFactory();
var adamsId = niemCoreObjFac.createIdentificationType();
var adamsStr = new ecf4.latest.gov.niem.niem.proxy.xsd._2.String();
adamsStr.setValue("adams");
adamsId.setIdentificationID(adamsStr);
var idType = niemCoreObjFac.createOrganizationIdentification(adamsId);
court.setOrganizationIdentification(idType);
var text = new TextType();
text.setValue("adams");
court.setCourtName(text);
query.setCaseCourt(court);
var id = new IdentificationType();
EntityType typ = new EntityType();
var commonObjFac = new ObjectFactory();
JAXBElement<PersonType> elem2 = commonObjFac.createEntityPerson(new PersonType());
typ.setEntityRepresentation(elem2);
query.setQuerySubmitter(typ);
var string = new ecf4.latest.gov.niem.niem.proxy.xsd._2.String();
string.setValue("http://localhost");
id.setIdentificationID(string);
query.setSendingMDELocationID(id);
query.setSendingMDEProfileCode(
"urn:oasis:names:tc:legalxml-courtfiling:schema:xsd:WebServicesMessaging-2.0");
review.getPolicy(query);
} catch (Exception ex) {
System.err.println("Error making call: " + ex.getLocalizedMessage() + ", " + ex.toString());
// continue
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,36 @@ private static URL getRes(TylerDomain domain, TylerVersion version, String suffi
return url;
}

public static Optional<FilingReviewMDEService> getFilingReviewFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
return version.map(v -> new FilingReviewMDEService(getRes(domain, v, REVIEW_SUFFIX)));
public static Optional<FilingReviewMDEService> getFilingReviewFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.map(
v -> {
URL url = getRes(domain, v, REVIEW_SUFFIX);
return new FilingReviewMDEService(url);
});
}

public static Optional<ServiceMDEService> getServiceFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
public static Optional<ServiceMDEService> getServiceFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());

return version.map(v -> new ServiceMDEService(getRes(domain, v, SERVICE_SUFFIX)));
}

public static Optional<CourtRecordMDEService> getCourtRecordFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
public static Optional<CourtRecordMDEService> getCourtRecordFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.map(v -> new CourtRecordMDEService(getRes(domain, v, RECORD_SUFFIX)));
}

public static Optional<CourtSchedulingMDE_Service> getCourtSchedulingFactory(TylerDomain domain) {
if (domain.jurisdiction().getApi() != Jurisdiction.Api.ECF_4_Schedule) {
public static Optional<CourtSchedulingMDE_Service> getCourtSchedulingFactory(
Jurisdiction jurisdiction) {
if (jurisdiction.getApi() != Jurisdiction.Api.ECF_4_Schedule) {
return Optional.empty();
}
var version = TylerClients.getVersion(domain);
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.map(v -> new CourtSchedulingMDE_Service(getRes(domain, v, SCHEDULE_SUFFIX)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import ecf5.TylerCourtSchedulingMDEService;
import ecf5.TylerFilingAssemblyMDEService;
import ecf5.TylerFilingReviewMDEService;
import edu.suffolk.litlab.efsp.Jurisdiction;
import edu.suffolk.litlab.efsp.tyler.TylerClients;
import edu.suffolk.litlab.efsp.tyler.TylerDomain;
import edu.suffolk.litlab.efsp.tyler.TylerVersion;
Expand All @@ -34,8 +35,9 @@ public class SoapClientChooserV5 {
private static final String TYLER_FILING_REVIEW_WSDL = "-ECF5-TylerFilingReviewMDEService.wsdl";

public static Optional<Function<Consumer<BindingProvider>, CourtPolicyClient>>
getCourtPolicyFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getCourtPolicyFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, COURT_POLICY_WSDL);
Expand All @@ -45,8 +47,9 @@ public class SoapClientChooserV5 {
}

public static Optional<Function<Consumer<BindingProvider>, CourtRecordClient>>
getCourtRecordFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getCourtRecordFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, COURT_RECORD_WSDL);
Expand All @@ -56,8 +59,9 @@ public class SoapClientChooserV5 {
}

public static Optional<Function<Consumer<BindingProvider>, CourtSchedulingClient>>
getCourtSchedulingFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getCourtSchedulingFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, COURT_SCHED_WSDL);
Expand All @@ -69,8 +73,9 @@ public class SoapClientChooserV5 {
}

public static Optional<Function<Consumer<BindingProvider>, FilingReviewClient>>
getFilingReviewClientFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getFilingReviewClientFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, FILING_REVIEW_WSDL);
Expand All @@ -80,8 +85,9 @@ public class SoapClientChooserV5 {
}

public static Optional<Function<Consumer<BindingProvider>, ServiceClient>> getServiceFactory(
TylerDomain domain) {
var version = TylerClients.getVersion(domain);
Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, SERVICE_WSDL);
Expand All @@ -90,8 +96,9 @@ public static Optional<Function<Consumer<BindingProvider>, ServiceClient>> getSe
}

public static Optional<Function<Consumer<BindingProvider>, TylerCourtRecordClient>>
getTylerCourtRecordFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getTylerCourtRecordFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, TYLER_COURT_RECORD_WSDL);
Expand All @@ -103,8 +110,9 @@ public static Optional<Function<Consumer<BindingProvider>, ServiceClient>> getSe
}

public static Optional<Function<Consumer<BindingProvider>, TylerCourtSchedulingClient>>
getTylerCourtSchedulingFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getTylerCourtSchedulingFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, TYLER_COURT_SCHED_WSDL);
Expand All @@ -117,8 +125,9 @@ public static Optional<Function<Consumer<BindingProvider>, ServiceClient>> getSe
}

public static Optional<Function<Consumer<BindingProvider>, TylerFilingAssemblyClient>>
getTylerFilingAssemblyFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getTylerFilingAssemblyFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, TYLER_FILING_ASSEM_WSDL);
Expand All @@ -131,8 +140,9 @@ public static Optional<Function<Consumer<BindingProvider>, ServiceClient>> getSe
}

public static Optional<Function<Consumer<BindingProvider>, TylerFilingReviewClient>>
getTylerFilingReviewFactory(TylerDomain domain) {
var version = TylerClients.getVersion(domain);
getTylerFilingReviewFactory(Jurisdiction jurisdiction) {
var version = TylerClients.getVersion(jurisdiction);
var domain = new TylerDomain(jurisdiction, TylerClients.getTylerEnv());
return version.flatMap(
v -> {
var url = createLocalWsdlUrl(domain, v, TYLER_FILING_REVIEW_WSDL);
Expand Down
5 changes: 5 additions & 0 deletions TylerEfmClient/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@
<version>3.27.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Loading
Loading