test_class.declarator: logger = LoggerFactory.getLogger(GraphNameTest.class)
test_class.modifier: private static final
test_class.original_string: private static final Logger logger = LoggerFactory.getLogger(GraphNameTest.class);
test_class.type: Logger
test_class.var_name: logger
test_class.file: rcljava/src/test/java/org/ros2/rcljava/namespace/GraphNameTest.java
test_class.identifier: GraphNameTest
test_class.superclass: extends AbstractRosTest
test_case.body: @Test
      public final void testIsTopicFQN() {
          logger.debug(new Object(){}.getClass().getEnclosingMethod().getName());
  
          // must start with a forward slash (/), i.e. they must be absolute
          Assert.assertTrue("FQN must start with a forward slash.", GraphName.isValidFQDN("/foo"));
          Assert.assertFalse("FQN must start with a forward slash.", GraphName.isValidFQDN("foo"));
  
          // must not contain tilde (~) or curly braces ({})
          Assert.assertFalse("FQN must not contain tilde.", GraphName.isValidFQDN("~foo"));
          Assert.assertFalse("FQN must not contain curly braces.", GraphName.isValidFQDN("foo/{bar}"));
  
          Assert.assertTrue(GraphName.isValidFQDN("/foo"));
          Assert.assertTrue(GraphName.isValidFQDN("/bar/baz"));
          Assert.assertTrue(GraphName.isValidFQDN(Topics.SCHEME + "/ping"));
          Assert.assertTrue(GraphName.isValidFQDN("/_private/thing"));
          Assert.assertTrue(GraphName.isValidFQDN("/public_namespace/_private/thing"));
      }
test_case.class_method_signature: GraphNameTest.testIsTopicFQN()
test_case.full_signature: @Test public final void testIsTopicFQN()
test_case.identifier: testIsTopicFQN
test_case.invocations: debug getName getEnclosingMethod getClass assertTrue isValidFQDN assertFalse isValidFQDN assertFalse isValidFQDN assertFalse isValidFQDN assertTrue isValidFQDN assertTrue isValidFQDN assertTrue isValidFQDN assertTrue isValidFQDN assertTrue isValidFQDN
test_case.modifiers: @Test public final
test_case.parameters: ()
test_case.return: void
test_case.signature: void testIsTopicFQN()
focal_class.declarator: EMPTY = ""
focal_class.modifier: private static final
focal_class.original_string: private static final String EMPTY = "";
focal_class.type: String
focal_class.var_name: EMPTY
focal_class.declarator: PRIVATE = "_"
focal_class.modifier: private static final
focal_class.original_string: private static final String PRIVATE = "_";
focal_class.type: String
focal_class.var_name: PRIVATE
focal_class.declarator: SEPARATOR = "/"
focal_class.modifier: private static final
focal_class.original_string: private static final String SEPARATOR = "/";
focal_class.type: String
focal_class.var_name: SEPARATOR
focal_class.declarator: RELATIVE = "~"
focal_class.modifier: private static final
focal_class.original_string: private static final String RELATIVE = "~";
focal_class.type: String
focal_class.var_name: RELATIVE
focal_class.declarator: PARAMETER = "{}"
focal_class.modifier: private static final
focal_class.original_string: private static final String PARAMETER = "{}";
focal_class.type: String
focal_class.var_name: PARAMETER
focal_class.declarator: RELATIVE_TOPIC = RELATIVE + SEPARATOR
focal_class.modifier: private static final
focal_class.original_string: private static final String RELATIVE_TOPIC = RELATIVE + SEPARATOR;
focal_class.type: String
focal_class.var_name: RELATIVE_TOPIC
focal_class.declarator: FORMAT_TOPIC = "%s" + SEPARATOR + "%s"
focal_class.modifier: private static final
focal_class.original_string: private static final String FORMAT_TOPIC = "%s" + SEPARATOR + "%s";
focal_class.type: String
focal_class.var_name: FORMAT_TOPIC
focal_class.declarator: nodes = new LinkedBlockingQueue<Node>()
focal_class.modifier: private static
focal_class.original_string: private static Queue<Node> nodes = new LinkedBlockingQueue<Node>();
focal_class.type: Queue<Node>
focal_class.var_name: nodes
focal_class.file: rcljava/src/main/java/org/ros2/rcljava/namespace/GraphName.java
focal_class.identifier: GraphName
focal_class.class_method_signature: GraphName.GraphName()
focal_class.full_signature: private  GraphName()
focal_class.identifier: GraphName
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.signature:  GraphName()
focal_class.class_method_signature: GraphName.addNode(final Node node)
focal_class.full_signature: public static void addNode(final Node node)
focal_class.identifier: addNode
focal_class.modifiers: public static
focal_class.parameters: (final Node node)
focal_class.return: void
focal_class.signature: void addNode(final Node node)
focal_class.class_method_signature: GraphName.removeNode(final Node node)
focal_class.full_signature: public static void removeNode(final Node node)
focal_class.identifier: removeNode
focal_class.modifiers: public static
focal_class.parameters: (final Node node)
focal_class.return: void
focal_class.signature: void removeNode(final Node node)
focal_class.class_method_signature: GraphName.dispose()
focal_class.full_signature: public static void dispose()
focal_class.identifier: dispose
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void dispose()
focal_class.class_method_signature: GraphName.removeSheme(final String url)
focal_class.full_signature: private static String removeSheme(final String url)
focal_class.identifier: removeSheme
focal_class.modifiers: private static
focal_class.parameters: (final String url)
focal_class.return: String
focal_class.signature: String removeSheme(final String url)
focal_class.class_method_signature: GraphName.getFullName(final String nameSpace, final String nodeName)
focal_class.full_signature: public static String getFullName(final String nameSpace, final String nodeName)
focal_class.identifier: getFullName
focal_class.modifiers: public static
focal_class.parameters: (final String nameSpace, final String nodeName)
focal_class.return: String
focal_class.signature: String getFullName(final String nameSpace, final String nodeName)
focal_class.class_method_signature: GraphName.getFullName(final Node node, final String name, final List<String> options)
focal_class.full_signature: public static String getFullName(final Node node, final String name, final List<String> options)
focal_class.identifier: getFullName
focal_class.modifiers: public static
focal_class.parameters: (final Node node, final String name, final List<String> options)
focal_class.return: String
focal_class.signature: String getFullName(final Node node, final String name, final List<String> options)
focal_class.class_method_signature: GraphName.isValidTopic(final String name)
focal_class.full_signature: public static boolean isValidTopic(final String name)
focal_class.identifier: isValidTopic
focal_class.modifiers: public static
focal_class.parameters: (final String name)
focal_class.return: boolean
focal_class.signature: boolean isValidTopic(final String name)
focal_class.class_method_signature: GraphName.isValidSubstitution(final String substitution)
focal_class.full_signature: public static boolean isValidSubstitution(final String substitution)
focal_class.identifier: isValidSubstitution
focal_class.modifiers: public static
focal_class.parameters: (final String substitution)
focal_class.return: boolean
focal_class.signature: boolean isValidSubstitution(final String substitution)
focal_class.class_method_signature: GraphName.isValidFQDN(final String fqn)
focal_class.full_signature: public static boolean isValidFQDN(final String fqn)
focal_class.identifier: isValidFQDN
focal_class.modifiers: public static
focal_class.parameters: (final String fqn)
focal_class.return: boolean
focal_class.signature: boolean isValidFQDN(final String fqn)
focal_method.body: public static boolean isValidFQDN(final String fqn) {
          boolean result = fqn != null;
  
          if (result) {
              final String topicName = GraphName.removeSheme(fqn);
  
              result = GraphName.isValidTopic(topicName) &&
                       topicName.startsWith(SEPARATOR) &&
                       !topicName.contains(RELATIVE) &&
                       !topicName.contains(PARAMETER);
          }
  
          return result;
      }
focal_method.class_method_signature: GraphName.isValidFQDN(final String fqn)
focal_method.full_signature: public static boolean isValidFQDN(final String fqn)
focal_method.identifier: isValidFQDN
focal_method.invocations: removeSheme isValidTopic startsWith contains contains
focal_method.modifiers: public static
focal_method.parameters: (final String fqn)
focal_method.return: boolean
focal_method.signature: boolean isValidFQDN(final String fqn)