All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jrebirth.af.rest.service.CRUDRestService Maven / Gradle / Ivy

package org.jrebirth.af.rest.service;

import java.util.List;

import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.jrebirth.af.api.wave.Wave;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CRUDRestService extends AbstractRestService {

    // /** The Wave Item ALL_EXPRESSIONS. */
    // public static final WaveItem> PLANETS = new WaveItemBase>() {
    // };
    //
    // /** The WaveType return action name. */
    // public static final String PLANETS_LIST = "PLANETS_LIST";
    //
    // /** The Wave Type DO_BUILD_TABLES. */
    // public static final WaveType DO_GET_PLANETS = Builders.waveType("GET_PLANETS")
    // .returnAction(PLANETS_LIST)
    // .returnItem(PLANETS);

    /** The class logger. */
    private static final Logger LOGGER = LoggerFactory.getLogger(CRUDRestService.class);

    private final String crudPath = "planets";

    private final GenericType genericSingle = new GenericType() {
    };
    private final GenericType> genericList = new GenericType>() {
    };

    /**
     * {@inheritDoc}
     */
    @Override
    protected WebTarget getWebTarget() {
        return super.getWebTarget().path(getCRUDPath());
    }

    public String getCRUDPath() {
        return crudPath;
    }

    /**
     * .
     * 
     * @param wave the source wave
     */
    public boolean doCreateObject(O object, final Wave wave) {
        final Response updateResponse = getWebTarget()
                                                      .request(MediaType.APPLICATION_XML)
                                                      .post(Entity.xml(object));

        return updateResponse.getStatusInfo() == Status.OK;
    }

    /**
     * .
     * 
     * @param wave the source wave
     */
    public boolean doUpdateObject(O object, final Wave wave) {

        final Response updateResponse = getWebTarget()
                                                      .request(MediaType.APPLICATION_XML)
                                                      .put(Entity.xml(object));

        return updateResponse.getStatusInfo() == Status.OK;
    }

    /**
     * .
     * 
     * @param wave the source wave
     */
    public boolean doDeleteObject(O object, final Wave wave) {

        LOGGER.trace("Delete Object.");

        final Response deleteResponse = getWebTarget().path("1"/* object.id() */)
                                                      .request(MediaType.APPLICATION_XML)
                                                      .delete();

        return deleteResponse.getStatusInfo() == Status.OK;
    }

    /**
     * .
     * 
     * @param wave the source wave
     */
    public O doGetObject(Integer id, final Wave wave) {

        LOGGER.trace("Get Planet.");

        final O object = getWebTarget()
                                       .request(MediaType.APPLICATION_XML)
                                       .get(genericSingle);

        return object;

    }

    /**
     * .
     * 
     * @param wave the source wave
     */
    public List doGetObjects(final Wave wave) {

        LOGGER.trace("Get Planets.");

        final List objects = getWebTarget()
                                              .request(MediaType.APPLICATION_XML)
                                              .get(genericList);

        return objects;

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy