public void handle()

in asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/CreateBrokerStatement.java [94:118]


    public void handle(IHyracksClientConnection hcc, IStatementExecutor statementExecutor,
            IRequestParameters requestParameters, MetadataProvider metadataProvider, int resultSetId)
            throws HyracksDataException, AlgebricksException {
        DataverseName dataverse = statementExecutor.getActiveDataverseName(dataverseName);
        MetadataTransactionContext mdTxnCtx = null;
        try {
            mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
            metadataProvider.setMetadataTxnContext(mdTxnCtx);
            Broker broker = BADLangExtension.getBroker(mdTxnCtx, dataverse, brokerName.getValue());
            if (broker != null) {
                throw new AlgebricksException("A broker with this name " + brokerName + " already exists.");
            }
            broker = new Broker(dataverse, brokerName.getValue(), endPointName, brokerType);
            MetadataManager.INSTANCE.addEntity(mdTxnCtx, broker);
            MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
        } catch (Exception e) {
            if (mdTxnCtx != null) {
                QueryTranslator.abort(e, e, mdTxnCtx);
            }
            LOGGER.log(Level.WARNING, "Failed creating a broker", e);
            throw HyracksDataException.create(e);
        } finally {
            metadataProvider.getLocks().unlock();
        }
    }