@VisibleForTesting public static Optional<Tablespace> addTableSpaceForTest(Tablespace space) { Tablespace existing; synchronized (SPACES_URIS_MAP) { String scheme = UriUtil.getScheme(space.getUri()); if (!TABLE_SPACE_HANDLERS.containsKey(scheme)) { TABLE_SPACE_HANDLERS.put(scheme, space.getClass()); } // Remove existing one SPACES_URIS_MAP.remove(space.getName()); existing = TABLE_SPACES.remove(space.getUri()); // Add anotherone for test registerTableSpace(space.name, space.uri, space.getConfig(), true, true); } // if there is an existing one, return it. return Optional.fromNullable(existing); }
private static Tablespace initializeTableSpace(String spaceName, URI uri, JSONObject spaceDesc) { final String scheme = UriUtil.getScheme(uri); Class<? extends Tablespace> clazz = TABLE_SPACE_HANDLERS.get(scheme); if (clazz == null) { throw new TajoRuntimeException(new UndefinedTablespaceHandlerException(scheme)); } try { Constructor<? extends Tablespace> constructor = (Constructor<? extends Tablespace>) CONSTRUCTORS.get(clazz); if (constructor == null) { constructor = clazz.getDeclaredConstructor(TABLESPACE_PARAM); constructor.setAccessible(true); CONSTRUCTORS.put(clazz, constructor); } return constructor.newInstance(new Object[] {spaceName, uri, spaceDesc}); } catch (Exception e) { throw new RuntimeException(e); } }