0

This code

private AlternatorDBClientV2 Client;

@Before
public void setUp() throws Exception {
    this.Client = new AlternatorDBClientV2();
}

gives me this exception

java.lang.IllegalStateException: Unrecognized prefix for the AWS http client class name AlternatorDBClientV2
    at com.amazonaws.AmazonWebServiceClient.computeServiceName(AmazonWebServiceClient.java:546)
    at com.amazonaws.AmazonWebServiceClient.getServiceNameIntern(AmazonWebServiceClient.java:509)
    at com.amazonaws.AmazonWebServiceClient.configSigner(AmazonWebServiceClient.java:202)
    at com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:135)
    at com.michelboudreau.alternatorv2.AlternatorDBClientV2.setEndpoint(AlternatorDBClientV2.java:273)
    at com.michelboudreau.alternatorv2.AlternatorDBClientV2.init(AlternatorDBClientV2.java:109)
    at com.michelboudreau.alternatorv2.AlternatorDBClientV2.<init>(AlternatorDBClientV2.java:96)
    at com.michelboudreau.alternatorv2.AlternatorDBClientV2.<init>(AlternatorDBClientV2.java:91)
    at com.salesfront.test.CreateUserTest.setUp(CreateUserTest.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Anon21
  • 2,961
  • 6
  • 37
  • 46

3 Answers3

1

The stack trace line numbers indicate you have configured version 1.6.8 of the AWS Java SDK on your application's pom.xml file.

I reviewed successive Git tags for the AWS Java SDK project which I cloned to my workstation from its GitHub site:

https://github.com/aws/aws-sdk-java

The Alternator project is built and regression tested using version 1.6.4 of the AWS Java SDK.

Since version 1.6.4 of the AWS Java SDK Amazon has been adding logic to auto-detect the data center region and service to connect to based on parsing the endpoint URL and the actual name of the specific sub-class of AmazonWebServiceClient.java

The Alternator emulator clients are just such sub-classes of AmazonWebServiceClient but they do not follow the expected naming conventions.

To use the current version of Alternator you should revise your pom.xml to reference version 1.6.4 of the AWS Java SDK. You can experiment with using version 1.6.5, 1.6.6, or 1.6.7, but definitely 1.6.8 is incompatible with Alternator.

Rick Rutt
  • 86
  • 6
0

There is a pending Pull Request at the Alternator GitHub repository that resolves this issue.

https://github.com/mboudreau/Alternator/pull/84

Rick Rutt
  • 86
  • 6
0

Since the original answer, newer versions of Alternator have been created that allow use of higher versions 1.6 and 1.7 of the AWS SDK for Java.

Refer to the Issues and Pull Requests sections of the Alternator GitHub repository:

https://github.com/mboudreau/Alternator

Rick Rutt
  • 86
  • 6