以前、作成したRestAPIがVersionUpにより動かなくなったため、
修正しました。修正した結果をメモします。
過去Entryはこちら

目次

参考サイト

Githubへのリンクになります。
* core/wicketstuff-restannotations-parent at master · wicketstuff/core

1. pomに以下の記述を追加する

        <dependency>
            <groupId>org.wicketstuff</groupId>
            <artifactId>wicketstuff-restannotations</artifactId>
            <version>7.3.0</version>
        </dependency>
                <dependency>
            <groupId>org.wicketstuff</groupId>
            <artifactId>wicketstuff-restannotations-json</artifactId>
            <version>7.3.0</version>
        </dependency>

2. AbstractRestResourceの継承クラスを作成する

GsonRestResourceが削除されたので、
継承クラスを、AbstractRestResourceに変更しました。
GsonかJacksonどちらのライブラリを使用するのか切り替え可能になっています。

Gsonを使用する場合は、Constructor内で以下記述をすれば、使うことができます。

    public FestivalApis() {
        super(new JsonWebSerialDeserial(new GsonObjectSerialDeserial()));
    }

  • 削除した記述

import org.wicketstuff.rest.resource.gson.GsonRestResource;

  • 変更したRestサービスAPI
    package xyz.monotalk.web.apis;
    
    import java.util.List;
    
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    
    import org.wicketstuff.rest.annotations.MethodMapping;
    import org.wicketstuff.rest.contenthandling.json.objserialdeserial.JacksonObjectSerialDeserial;
    import org.wicketstuff.rest.contenthandling.json.webserialdeserial.JsonWebSerialDeserial;
    import org.wicketstuff.rest.resource.AbstractRestResource;
    
    import xyz.monotalk.models.entity.Festival;
    
    public class FestivalApis extends AbstractRestResource<JsonWebSerialDeserial> {
    
        public FestivalApis() {
            super(new JsonWebSerialDeserial(new JacksonObjectSerialDeserial()));
        }
    
        private static final long serialVersionUID = -7863247209549049518L;
    
        @MethodMapping("/festivals")
        @SuppressWarnings("unchecked")
        public List<Festival> getAllFestivals() {
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("POfDM_Local");
            EntityManager em = null;
            List<Festival> festivals = null;
            try {
                em = emf.createEntityManager();
                festivals = (List<Festival>) em.createNamedQuery("findAllFestivals").getResultList();
            } finally {
                if (em != null) {
                    em.close();
                }
            }
            return festivals;
        }
    }
    

上記の修正で動作するようになりました。
以上です。

コメント