-
Notifications
You must be signed in to change notification settings - Fork 517
/
AbstractBackendStore.java
58 lines (48 loc) · 2 KB
/
AbstractBackendStore.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
* Copyright 2017 HugeGraph Authors
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.baidu.hugegraph.backend.store;
import com.baidu.hugegraph.type.HugeType;
public abstract class AbstractBackendStore implements BackendStore {
private final MetaDispatcher dispatcher;
public AbstractBackendStore() {
this.dispatcher = new MetaDispatcher();
}
protected MetaDispatcher metaDispatcher() {
return this.dispatcher;
}
public <Session extends BackendSession>
void registerMetaHandler(String name, MetaHandler<Session> handler) {
this.dispatcher.registerMetaHandler(name, handler);
}
// Get metadata by key
public <R> R metadata(HugeType type, String meta, Object[] args) {
BackendSession session = this.session(type);
MetaDispatcher dispatcher = null;
if (type == null) {
dispatcher = this.metaDispatcher();
} else {
BackendTable table = this.table(type);
dispatcher = table.metaDispatcher();
}
return dispatcher.dispatchMetaHandler(session, meta, args);
}
protected abstract BackendTable table(HugeType type);
// NOTE: Need to support passing null
protected abstract BackendSession session(HugeType type);
}