6
6
import com .lowtuna .dropwizard .extras .heroku .RequestIdFilter ;
7
7
import com .lowtuna .dropwizard .extras .view .handlebars .ConfiguredHandlebarsViewBundle ;
8
8
import com .lowtuna .jsonblob .config .JsonBlobConfiguration ;
9
- import com .lowtuna .jsonblob .core .BlobManager ;
9
+ import com .lowtuna .jsonblob .core .BlobMigrationJob ;
10
+ import com .lowtuna .jsonblob .core .FileSystemJsonBlobManager ;
11
+ import com .lowtuna .jsonblob .core .MongoDbJsonBlobManager ;
10
12
import com .lowtuna .jsonblob .healthcheck .CreateDeleteBlobHealthCheck ;
11
13
import com .lowtuna .jsonblob .healthcheck .MongoHealthCheck ;
12
14
import com .lowtuna .jsonblob .resource .ApiResource ;
28
30
import org .joda .time .format .PeriodFormatterBuilder ;
29
31
30
32
import javax .ws .rs .core .MultivaluedMap ;
33
+ import java .util .concurrent .ScheduledExecutorService ;
34
+ import java .util .concurrent .TimeUnit ;
31
35
32
36
@ Slf4j
33
37
public class JsonBlobApplication extends Application <JsonBlobConfiguration > {
@@ -82,22 +86,26 @@ public String getValue() {
82
86
83
87
DB mongoDBInstance = configuration .getMongoDbConfig ().instance ();
84
88
85
- BlobManager blobManager = new BlobManager (
89
+ ScheduledExecutorService scheduledExecutorService = configuration .getBlobManagerConfig ().getScheduledExecutorService ().instance (environment );
90
+
91
+ MongoDbJsonBlobManager mongoDbBlobManager = new MongoDbJsonBlobManager (
86
92
mongoDBInstance ,
87
93
configuration .getBlobManagerConfig ().getBlobCollectionName (),
88
- configuration . getBlobManagerConfig (). getScheduledExecutorService (). instance ( environment ) ,
94
+ scheduledExecutorService ,
89
95
configuration .getBlobManagerConfig ().getBlobCleanupFrequency (),
90
96
configuration .getBlobManagerConfig ().getBlobAccessTtl (),
91
97
environment .metrics (),
92
98
configuration .getBlobManagerConfig ().isDeleteEnabled ()
93
99
);
94
- environment .lifecycle ().manage (blobManager );
100
+ environment .lifecycle ().manage (mongoDbBlobManager );
101
+
102
+ FileSystemJsonBlobManager fileSystemBlobManager = new FileSystemJsonBlobManager (configuration .getBlobManagerConfig ().getFileSystemBlogDataDirectory ());
95
103
96
104
environment .healthChecks ().register ("MongoDB" , new MongoHealthCheck (mongoDBInstance ));
97
- environment .healthChecks ().register ("BlobManager " , new CreateDeleteBlobHealthCheck (blobManager ));
105
+ environment .healthChecks ().register ("MongoDbJsonBlobManager " , new CreateDeleteBlobHealthCheck (fileSystemBlobManager ));
98
106
99
- environment .jersey ().register (new ApiResource (blobManager , configuration .getGoogleAnalyticsConfig ()));
100
- environment .jersey ().register (new JsonBlobEditorResource (blobManager , configuration .getGoogleAnalyticsConfig ()));
107
+ environment .jersey ().register (new ApiResource (mongoDbBlobManager , fileSystemBlobManager , configuration .getGoogleAnalyticsConfig ()));
108
+ environment .jersey ().register (new JsonBlobEditorResource (fileSystemBlobManager , mongoDbBlobManager , configuration .getGoogleAnalyticsConfig ()));
101
109
environment .jersey ().getResourceConfig ().getContainerResponseFilters ().add (new GitTipHeaderFilter ());
102
110
environment .jersey ().getResourceConfig ().getContainerRequestFilters ().add (new RequestIdFilter ("X-Request-ID" ));
103
111
@@ -118,6 +126,8 @@ public ContainerResponse filter(ContainerRequest request, ContainerResponse resp
118
126
return response ;
119
127
}
120
128
});
129
+
130
+ scheduledExecutorService .scheduleWithFixedDelay (new BlobMigrationJob (mongoDbBlobManager , fileSystemBlobManager ), 0 , 1 , TimeUnit .MINUTES );
121
131
}
122
132
123
133
}
0 commit comments