Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG-2459: cache GrammarCache
[controller.git]
/
opendaylight
/
netconf
/
netconf-netty-util
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
netconf
/
nettyutil
/
handler
/
NetconfEXICodec.java
diff --git
a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXICodec.java
b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXICodec.java
index 30867bcd186390ff6d73c737a02d457c60955f92..8f67da670a9231369cc8914dfb490b02428d88a5 100644
(file)
--- a/
opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXICodec.java
+++ b/
opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXICodec.java
@@
-30,13
+30,19
@@
public final class NetconfEXICodec {
}
};
}
};
+ /**
+ * Grammar cache acts as a template and is duplicated by the Transmogrifier and the Reader
+ * before use. It is safe to reuse a single instance.
+ */
+ private final GrammarCache exiGrammarCache;
private final EXIOptions exiOptions;
public NetconfEXICodec(final EXIOptions exiOptions) {
this.exiOptions = Preconditions.checkNotNull(exiOptions);
private final EXIOptions exiOptions;
public NetconfEXICodec(final EXIOptions exiOptions) {
this.exiOptions = Preconditions.checkNotNull(exiOptions);
+ this.exiGrammarCache = createGrammarCache(exiOptions);
}
}
- private
GrammarCache getGrammarCache(
) {
+ private
static GrammarCache createGrammarCache(final EXIOptions exiOptions
) {
short go = GrammarOptions.DEFAULT_OPTIONS;
if (exiOptions.getPreserveComments()) {
go = GrammarOptions.addCM(go);
short go = GrammarOptions.DEFAULT_OPTIONS;
if (exiOptions.getPreserveComments()) {
go = GrammarOptions.addCM(go);
@@
-51,13
+57,13
@@
public final class NetconfEXICodec {
go = GrammarOptions.addPI(go);
}
go = GrammarOptions.addPI(go);
}
- return new GrammarCache(
null,
go);
+ return new GrammarCache(go);
}
EXIReader getReader() throws EXIOptionsException {
final EXIReader r = new EXIReader();
r.setPreserveLexicalValues(exiOptions.getPreserveLexicalValues());
}
EXIReader getReader() throws EXIOptionsException {
final EXIReader r = new EXIReader();
r.setPreserveLexicalValues(exiOptions.getPreserveLexicalValues());
- r.setGrammarCache(
getGrammarCache()
);
+ r.setGrammarCache(
exiGrammarCache
);
r.setEntityResolver(ENTITY_RESOLVER);
return r;
}
r.setEntityResolver(ENTITY_RESOLVER);
return r;
}
@@
-66,7
+72,7
@@
public final class NetconfEXICodec {
final Transmogrifier transmogrifier = new Transmogrifier();
transmogrifier.setAlignmentType(exiOptions.getAlignmentType());
transmogrifier.setBlockSize(exiOptions.getBlockSize());
final Transmogrifier transmogrifier = new Transmogrifier();
transmogrifier.setAlignmentType(exiOptions.getAlignmentType());
transmogrifier.setBlockSize(exiOptions.getBlockSize());
- transmogrifier.setGrammarCache(
getGrammarCache()
);
+ transmogrifier.setGrammarCache(
exiGrammarCache
);
transmogrifier.setOutputCookie(OUTPUT_EXI_COOKIE);
transmogrifier.setOutputOptions(HeaderOptionsOutputType.all);
transmogrifier.setResolveExternalGeneralEntities(false);
transmogrifier.setOutputCookie(OUTPUT_EXI_COOKIE);
transmogrifier.setOutputOptions(HeaderOptionsOutputType.all);
transmogrifier.setResolveExternalGeneralEntities(false);