org.apache.juddi.samples.UddiReplication.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.juddi.samples.UddiReplication.java

Source

/*
 * Copyright 2014 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.juddi.samples;

import java.math.BigInteger;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.bind.JAXB;
import javax.xml.ws.BindingProvider;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.juddi.v3.client.UDDIService;
import org.apache.juddi.v3.client.config.UDDIClient;
import org.uddi.repl_v3.ChangeRecord;
import org.uddi.repl_v3.ChangeRecordIDType;
import org.uddi.repl_v3.ChangeRecords;
import org.uddi.repl_v3.DoPing;
import org.uddi.repl_v3.GetChangeRecords;
import org.uddi.repl_v3.HighWaterMarkVectorType;
import org.uddi.v3_service.UDDIReplicationPortType;

/**
 *
 * @author Alex O'Ree
 */
class UddiReplication {

    public UddiReplication(UDDIClient client, String nodename) throws ConfigurationException {

        uddiReplicationPort = new UDDIService().getUDDIReplicationPort();
        ((BindingProvider) uddiReplicationPort).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                client.getClientConfig().getUDDINode(nodename).getReplicationUrl());
    }

    UDDIReplicationPortType uddiReplicationPort = null;

    String DoPing() {
        try {
            String doPing = uddiReplicationPort.doPing(new DoPing());
            System.out.println("Ping Success, remote node's id is " + doPing);
            return doPing;
        } catch (Exception ex) {
            Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    void GetHighWatermarks() {
        try {
            List<ChangeRecordIDType> highWaterMarks = uddiReplicationPort.getHighWaterMarks();
            System.out.println("Success....");
            System.out.println("Node, USN");
            for (int i = 0; i < highWaterMarks.size(); i++) {
                System.out.println(
                        highWaterMarks.get(i).getNodeID() + ", " + highWaterMarks.get(i).getOriginatingUSN());
            }
        } catch (Exception ex) {
            Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    void GetChangeRecords(Long record, String sourcenode) {
        try {
            HighWaterMarkVectorType highWaterMarkVectorType = new HighWaterMarkVectorType();

            highWaterMarkVectorType.getHighWaterMark().add(new ChangeRecordIDType(DoPing(), record));
            GetChangeRecords req = new GetChangeRecords();
            req.setRequestingNode(sourcenode);
            req.setChangesAlreadySeen(highWaterMarkVectorType);
            req.setResponseLimitCount(BigInteger.valueOf(100));
            ChangeRecords res = uddiReplicationPort.getChangeRecords(req);
            List<ChangeRecord> changeRecords = res.getChangeRecord();
            System.out.println("Success...." + changeRecords.size() + " records returned");
            System.out.println("Node, USN, type");
            for (int i = 0; i < changeRecords.size(); i++) {
                System.out.println(changeRecords.get(i).getChangeID().getNodeID() + ", "
                        + changeRecords.get(i).getChangeID().getOriginatingUSN() + ": "
                        + GetChangeType(changeRecords.get(i)));
                JAXB.marshal(changeRecords.get(i), System.out);
            }
        } catch (Exception ex) {
            Logger.getLogger(UddiReplication.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private String GetChangeType(ChangeRecord get) {
        if (get.getChangeRecordAcknowledgement() != null) {
            return "ACK";
        }
        if (get.getChangeRecordConditionFailed() != null) {
            return "ConditionFailed";
        }
        if (get.getChangeRecordCorrection() != null) {
            return "Correction";
        }
        if (get.getChangeRecordDelete() != null) {
            return "Deletion";
        }
        if (get.getChangeRecordDeleteAssertion() != null) {
            return "Delete Assertion";
        }
        if (get.getChangeRecordHide() != null) {
            return "Hide tmodel";
        }
        if (get.getChangeRecordNewData() != null) {
            return "New Data";
        }
        if (get.getChangeRecordNewDataConditional() != null) {
            return "New data conditional";
        }
        if (get.getChangeRecordNull() != null) {
            return "Null";
        }
        if (get.getChangeRecordPublisherAssertion() != null) {
            return "New publisher assertion";
        }
        return null;
    }

}