Java 类com.mongodb.TagSet 实例源码
项目:lightblue-mongo
文件:MongoReadPreference.java
private static List<TagSet> parseArgs(String args) {
args = args.trim();
if (args.length() == 0) {
return null;
} else {
try {
return parseArgs(JsonUtils.json(args));
} catch (InvalidReadPreferenceArgs x) {
throw x;
} catch (Exception e) {
throw new InvalidReadPreferenceArgs(args);
}
}
}
项目:lightblue-mongo
文件:MongoReadPreference.java
private static List<TagSet> parseArgs(JsonNode args) {
List<TagSet> list = new ArrayList<>();
if (args instanceof ObjectNode) {
list.add(parseArg((ObjectNode) args));
} else if (args instanceof ArrayNode) {
ArrayNode array = (ArrayNode) args;
for (Iterator<JsonNode> itr = array.elements(); itr.hasNext();) {
list.add(parseArg((ObjectNode) itr.next()));
}
} else {
throw new InvalidReadPreferenceArgs(args.toString());
}
return list;
}
项目:lightblue-mongo
文件:MongoReadPreference.java
private static TagSet parseArg(ObjectNode arg) {
List<Tag> tags = new ArrayList<>();
for (Iterator<Map.Entry<String, JsonNode>> itr = arg.fields(); itr.hasNext();) {
Map.Entry<String, JsonNode> entry = itr.next();
tags.add(new Tag(entry.getKey(), entry.getValue().asText()));
}
return new TagSet(tags);
}
项目:vertx-mongo-client
文件:ReadPreferenceParser.java
ReadPreferenceParser(ConnectionString connectionString, JsonObject config) {
ReadPreference connStringReadPreference = connectionString != null ? connectionString.getReadPreference() : null;
if (connStringReadPreference != null) {
// Prefer connection string's read preference
readPreference = connStringReadPreference;
} else {
ReadPreference rp;
String rps = config.getString("readPreference");
if (rps != null) {
JsonArray readPreferenceTags = config.getJsonArray("readPreferenceTags");
if (readPreferenceTags == null) {
rp = ReadPreference.valueOf(rps);
if (rp == null) throw new IllegalArgumentException("Invalid ReadPreference " + rps);
} else {
// Support advanced ReadPreference Tags
List<TagSet> tagSet = new ArrayList<>();
readPreferenceTags.forEach(o -> {
String tagString = (String) o;
List<Tag> tags = Stream.of(tagString.trim().split(","))
.map(s -> s.split(":"))
.filter(array -> {
if (array.length != 2) {
throw new IllegalArgumentException("Invalid readPreferenceTags value '" + tagString + "'");
}
return true;
}).map(array -> new Tag(array[0], array[1])).collect(Collectors.toList());
tagSet.add(new TagSet(tags));
});
rp = ReadPreference.valueOf(rps, tagSet);
}
} else {
rp = null;
}
readPreference = rp;
}
}
项目:birt
文件:QueryProperties.java
private static TagSet toTags( DBObject tagsDocument )
{
List<Tag> tagList = new ArrayList<Tag>( );
for ( String key : tagsDocument.keySet( ) )
{
tagList.add( new Tag( key, tagsDocument.get( key ).toString( ) ) );
}
return new TagSet( tagList );
}
项目:lightblue-mongo
文件:MongoReadPreference.java
public static ReadPreference parse(String value) {
value = value.trim();
int paren = value.indexOf('(');
String pref;
List<TagSet> tags;
if (paren != -1) {
pref = value.substring(0, paren).trim();
String argsStr = value.substring(paren + 1).trim();
if (!argsStr.endsWith(")")) {
throw new InvalidReadPreference(value);
}
tags = parseArgs(argsStr.substring(0, argsStr.length() - 1));
} else {
pref = value;
tags = null;
}
switch (pref) {
case READ_PREFERENCE_NEAREST:
if (tags == null) {
return ReadPreference.nearest();
} else {
return ReadPreference.nearest(tags);
}
case READ_PREFERENCE_PRIMARY:
return ReadPreference.primary();
case READ_PREFERENCE_PRIMARY_PREFERRED:
if (tags == null) {
return ReadPreference.primaryPreferred();
} else {
return ReadPreference.primaryPreferred(tags);
}
case READ_PREFERENCE_SECONDARY:
if (tags == null) {
return ReadPreference.secondary();
} else {
return ReadPreference.secondary(tags);
}
case READ_PREFERENCE_SECONDARY_PREFERRED:
if (tags == null) {
return ReadPreference.secondaryPreferred();
} else {
return ReadPreference.secondaryPreferred(tags);
}
default:
throw new InvalidReadPreference(value);
}
}
项目:lightblue-mongo
文件:MongoReadPreferenceTest.java
@Test
public void testNearestArgs() {
TaggableReadPreference pref = (TaggableReadPreference) MongoReadPreference.parse("nearest ( {\"x\":1} )");
Assert.assertTrue(pref.equals(ReadPreference.nearest(new TagSet(Arrays.asList(new Tag("x", "1"))))));
}
项目:lightblue-mongo
文件:MongoReadPreferenceTest.java
@Test
public void testNearestArgs2() {
TaggableReadPreference pref = (TaggableReadPreference) MongoReadPreference.parse("nearest ( [ {\"x\":1}, {\"y\":\"a\"}] )");
Assert.assertTrue(pref.equals(ReadPreference.nearest(Arrays.asList(new TagSet(Arrays.asList(new Tag("x", "1"))),
new TagSet(Arrays.asList(new Tag("y", "a")))))));
}
项目:lightblue-mongo
文件:MongoReadPreferenceTest.java
@Test
public void testNearestArgs3() {
TaggableReadPreference pref = (TaggableReadPreference) MongoReadPreference.parse("nearest([ {\"x\":1}, {\"y\":\"a\"}])");
Assert.assertTrue(pref.equals(ReadPreference.nearest(Arrays.asList(new TagSet(Arrays.asList(new Tag("x", "1"))),
new TagSet(Arrays.asList(new Tag("y", "a")))))));
}
项目:birt
文件:QueryProperties.java
ReadPreference getTaggableReadPreference()
{
ReadPreference readPref = getQueryReadPreference();
if( readPref == ReadPreference.primary() )
return readPref; // primary read preference mode does not apply tags
DBObject tagObjects = getReadPreferenceTagsAsParsedObject();
if( tagObjects == null )
return readPref; // no tags in read preference
List<TagSet> tagsList = new ArrayList<TagSet>( );
if ( tagObjects instanceof BasicDBList )
{
BasicDBList tagObjectList = (BasicDBList) tagObjects;
for ( Object obj : tagObjectList )
{
if ( obj instanceof DBObject )
{
tagsList.add( toTags( (DBObject) obj ) );
}
else
{ // ignore elements that are not DBObject
logInvalidTagValue( obj );
}
}
}
else
{
tagsList.add( toTags( tagObjects ) );
}
if ( tagsList.size( ) == 0 )
{
return readPref;
}
try
{
return ReadPreference.valueOf( readPref.getName( ), tagsList );
}
catch( RuntimeException ex )
{
// log and ignore tags
getLogger().info( ex.getLocalizedMessage() );
}
return readPref;
}