Skip to content

Commit 04fb34b

Browse files
first working poc
Former-commit-id: e8f3ec0497242edf66ca0d0503e588721e48cbb7
1 parent 667d14b commit 04fb34b

23 files changed

+837
-116
lines changed

pom.xml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,11 @@
1919
<artifactId>httpclient</artifactId>
2020
<version>4.5.6</version>
2121
</dependency>
22-
2322
<dependency>
2423
<groupId>org.apache.httpcomponents</groupId>
2524
<artifactId>fluent-hc</artifactId>
2625
<version>4.5.6</version>
2726
</dependency>
28-
<!--<dependency>-->
29-
<!--<groupId>commons-cli</groupId>-->
30-
<!--<artifactId>commons-cli</artifactId>-->
31-
<!--<version>1.3.1</version>-->
32-
<!--</dependency>-->
3327
<dependency>
3428
<groupId>org.apache.httpcomponents</groupId>
3529
<artifactId>httpmime</artifactId>
@@ -41,9 +35,9 @@
4135
<version>3.8.0</version>
4236
</dependency>
4337
<dependency>
44-
<groupId>net.sourceforge.argparse4j</groupId>
45-
<artifactId>argparse4j</artifactId>
46-
<version>0.8.1</version>
38+
<groupId>org.hibernate.validator</groupId>
39+
<artifactId>hibernate-validator</artifactId>
40+
<version>6.0.13.Final</version>
4741
</dependency>
4842
</dependencies>
4943
</project>

src/main/java/com/oracle/weblogicx/imagebuilder/builder/meta/MetaDataResolver.java renamed to src/main/java/com/oracle/weblogicx/imagebuilder/builder/api/meta/MetaDataResolver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oracle.weblogicx.imagebuilder.builder.meta;
1+
package com.oracle.weblogicx.imagebuilder.builder.api.meta;
22

33
import java.util.Map;
44
import java.util.Optional;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.model;
2+
3+
public enum CachePolicy {
4+
first,
5+
only,
6+
never
7+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.model;
2+
3+
public class CommandResponse {
4+
5+
int status;
6+
String message;
7+
8+
public CommandResponse(int status, String message) {
9+
this.status = status;
10+
this.message = message;
11+
}
12+
13+
public int getStatus() {
14+
return status;
15+
}
16+
17+
public void setStatus(int status) {
18+
this.status = status;
19+
}
20+
21+
public String getMessage() {
22+
return message;
23+
}
24+
25+
public void setMessage(String message) {
26+
this.message = message;
27+
}
28+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.model;
2+
3+
/**
4+
* Supported installer type. WebLogic Server and FMW Infrastructure.
5+
*/
6+
@SuppressWarnings("unused")
7+
public enum InstallerType {
8+
wls,
9+
fmw
10+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.model;
2+
3+
import javax.validation.constraints.Email;
4+
5+
public class User {
6+
7+
@Email(message = "A valid email id is required")
8+
private String email;
9+
10+
private char[] password;
11+
12+
public static User newUser(String email, String password) {
13+
return new User().setEmail(email).setPassword(password.toCharArray());
14+
}
15+
16+
private User() {
17+
//restrict access
18+
}
19+
20+
public String getEmail() {
21+
return email;
22+
}
23+
24+
private User setEmail(String email) {
25+
this.email = email;
26+
return this;
27+
}
28+
29+
public char[] getPassword() {
30+
return password;
31+
}
32+
33+
private User setPassword(char[] password) {
34+
this.password = password;
35+
return this;
36+
}
37+
38+
@Override
39+
public boolean equals(Object obj) {
40+
if (obj != null) {
41+
if (obj == this || User.class.isAssignableFrom(obj.getClass())) {
42+
return email.equalsIgnoreCase(((User) obj).getEmail());
43+
}
44+
}
45+
return false;
46+
}
47+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.model;
2+
3+
import org.apache.http.auth.AuthScope;
4+
import org.apache.http.auth.UsernamePasswordCredentials;
5+
import org.apache.http.client.CookieStore;
6+
import org.apache.http.client.CredentialsProvider;
7+
import org.apache.http.client.HttpClient;
8+
import org.apache.http.client.config.RequestConfig;
9+
import org.apache.http.impl.client.BasicCookieStore;
10+
import org.apache.http.impl.client.BasicCredentialsProvider;
11+
import org.apache.http.impl.client.HttpClientBuilder;
12+
import org.apache.http.impl.cookie.BasicClientCookie;
13+
14+
import java.util.Objects;
15+
16+
public class UserSession {
17+
18+
private User user;
19+
private HttpClient oraClient;
20+
private boolean isUserValidated = false;
21+
22+
public UserSession(String email, String password) {
23+
this(User.newUser(email, password));
24+
}
25+
26+
public UserSession(User user) {
27+
Objects.requireNonNull(user);
28+
this.user = user;
29+
oraClient = createOraClient();
30+
}
31+
32+
public UserSession(User user, HttpClient oraClient) {
33+
this.user = user;
34+
this.oraClient = oraClient;
35+
}
36+
37+
public UserSession(UserSession userSession) {
38+
this.user = userSession.getUser();
39+
this.oraClient = userSession.getOraClient();
40+
}
41+
42+
private HttpClient createOraClient() {
43+
RequestConfig.Builder config = RequestConfig.custom();
44+
config.setCircularRedirectsAllowed(true);
45+
46+
CookieStore cookieStore = new BasicCookieStore();
47+
BasicClientCookie cc = new BasicClientCookie("oraclelicense", "a");
48+
cc.setDomain("edelivery.oracle.com");
49+
cookieStore.addCookie(cc);
50+
51+
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
52+
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(
53+
user.getEmail(), String.valueOf(user.getPassword())));
54+
55+
return HttpClientBuilder.create().setDefaultRequestConfig(config.build())
56+
.setDefaultCookieStore(cookieStore).useSystemProperties()
57+
.setDefaultCredentialsProvider(credentialsProvider).build();
58+
}
59+
60+
@Override
61+
public boolean equals(Object obj) {
62+
if (obj != null) {
63+
if (obj == this || UserSession.class.isAssignableFrom(obj.getClass())) {
64+
return this.getUser().equals(((UserSession) obj).getUser());
65+
}
66+
}
67+
return false;
68+
}
69+
70+
public User getUser() {
71+
return user;
72+
}
73+
74+
public void setUser(User user) {
75+
this.user = user;
76+
}
77+
78+
public HttpClient getOraClient() {
79+
return oraClient;
80+
}
81+
82+
public void setOraClient(HttpClient oraClient) {
83+
this.oraClient = oraClient;
84+
}
85+
86+
public boolean isUserValidated() {
87+
return isUserValidated;
88+
}
89+
90+
public void setUserValidated(boolean userValidated) {
91+
isUserValidated = userValidated;
92+
}
93+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.service;
2+
3+
public interface DownloadService {
4+
void downloadFile(String url);
5+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.oracle.weblogicx.imagebuilder.builder.api.service;
2+
3+
import com.oracle.weblogicx.imagebuilder.builder.api.model.User;
4+
import com.oracle.weblogicx.imagebuilder.builder.api.model.UserSession;
5+
import org.apache.http.client.HttpClient;
6+
7+
import java.io.IOException;
8+
9+
public interface UserService {
10+
11+
/**
12+
* Gets a UserSession with http client for this user with all the required plumbing done
13+
* to handle Oracle download cookies.
14+
* @param user should have email and password set
15+
* @return a UserSession or null if validation fails
16+
*/
17+
UserSession getUserSession(User user) throws IOException;
18+
19+
boolean addUserSession(UserSession userSession);
20+
21+
boolean deleteUserSession(UserSession userSession);
22+
23+
}

src/main/java/com/oracle/weblogicx/imagebuilder/builder/cli/Arg4jDriver.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)