gpt4 book ai didi

java - 无法在 Google Cloud Endpoints 的 Endpoint 类中创建多个方法

转载 作者:行者123 更新时间:2023-12-03 06:07:22 28 4
gpt4 key购买 nike

我一直在尝试在生成的 Endpoint 类中创建一些新方法,但发现了这种奇怪的行为:我可以向生成的类添加一个方法,但我无法添加其中两个方法,无论我选择这两个方法中的哪一个添加。这是我生成的类的代码,我在其中添加了两个添加方法的代码:

  package it.raffaele.bills;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;

import javax.annotation.Nullable;
import javax.inject.Named;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.persistence.EntityExistsException;
import javax.persistence.EntityNotFoundException;

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.response.CollectionResponse;
import com.google.appengine.api.datastore.Cursor;
import com.google.appengine.datanucleus.query.JDOCursorHelper;

@Api(name = "utenteendpoint")
public class UtenteEndpoint {

/**
* This method lists all the entities inserted in datastore.
* It uses HTTP GET method and paging support.
*
* @return A CollectionResponse class containing the list of all entities
* persisted and a cursor to the next page.
*/
@SuppressWarnings({ "unchecked", "unused" })
public CollectionResponse<Utente> listUtente(
@Nullable @Named("cursor") String cursorString,
@Nullable @Named("limit") Integer limit) {

PersistenceManager mgr = null;
Cursor cursor = null;
List<Utente> execute = null;

try {
mgr = getPersistenceManager();
Query query = mgr.newQuery(Utente.class);
if (cursorString != null && cursorString != "") {
cursor = Cursor.fromWebSafeString(cursorString);
HashMap<String, Object> extensionMap = new HashMap<String, Object>();
extensionMap.put(JDOCursorHelper.CURSOR_EXTENSION, cursor);
query.setExtensions(extensionMap);
}

if (limit != null) {
query.setRange(0, limit);
}

execute = (List<Utente>) query.execute();
cursor = JDOCursorHelper.getCursor(execute);
if (cursor != null)
cursorString = cursor.toWebSafeString();

// Tight loop for fetching all entities from datastore and accomodate
// for lazy fetch.
for (Utente obj : execute)
;
} finally {
mgr.close();
}

return CollectionResponse.<Utente> builder().setItems(execute)
.setNextPageToken(cursorString).build();
}

/**
* This method gets the entity having primary key id. It uses HTTP GET method.
*
* @param id the primary key of the java bean.
* @return The entity with primary key id.
*/
public Utente getUtente(@Named("id") Long id) {
PersistenceManager mgr = getPersistenceManager();
Utente utente = null;
try {
utente = mgr.getObjectById(Utente.class, id);
} finally {
mgr.close();
}
return utente;
}

/**
* This inserts a new entity into App Engine datastore. If the entity already
* exists in the datastore, an exception is thrown.
* It uses HTTP POST method.
*
* @param utente the entity to be inserted.
* @return The inserted entity.
*/
public Utente insertUtente(Utente utente) {
PersistenceManager mgr = getPersistenceManager();
try {
if (containsUtente(utente)) {
throw new EntityExistsException("Object already exists");
}
mgr.makePersistent(utente);
} finally {
mgr.close();
}
return utente;
}

/**
* This method is used for updating an existing entity. If the entity does not
* exist in the datastore, an exception is thrown.
* It uses HTTP PUT method.
*
* @param utente the entity to be updated.
* @return The updated entity.
*/
public Utente updateUtente(Utente utente) {
PersistenceManager mgr = getPersistenceManager();
try {
if (!containsUtente(utente)) {
throw new EntityNotFoundException("Object does not exist");
}
mgr.makePersistent(utente);
} finally {
mgr.close();
}
return utente;
}

/**
* This method removes the entity with primary key id.
* It uses HTTP DELETE method.
*
* @param id the primary key of the entity to be deleted.
* @return The deleted entity.
*/
public Utente removeUtente(@Named("id") Long id) {
PersistenceManager mgr = getPersistenceManager();
Utente utente = null;
try {
utente = mgr.getObjectById(Utente.class, id);
mgr.deletePersistent(utente);
} finally {
mgr.close();
}
return utente;
}


/********************************ADDED CODE*********************************************/

@SuppressWarnings({"cast", "unchecked"})
public List<Bill> getUserBillsByTag(@Named("tag") String tag){
PersistenceManager mgr = getPersistenceManager();
Utente utente = null;
List<Bill> list = new LinkedList<Bill>();
try {
Query q = mgr.newQuery(Utente.class);
q.setFilter("nfcID == '" + tag +"'");
List<Utente> utenti = (List<Utente>) q.execute();
if (!utenti.isEmpty()){
for (Utente u : utenti){
list.addAll(u.getBollettini());
break; //fake loop.
}

}else{
//handle error

}


} finally {
mgr.close();
}
return list;


}


@SuppressWarnings({"cast", "unchecked"})
public List<Bill> getUserBills(@Named("id") Long id){
Utente utente = getUtente(id);
System.out.println(utente);
List<Bill> list = utente.getBollettini();
return list;
}


/*******************************************************************************/


private boolean containsUtente(Utente utente) {
PersistenceManager mgr = getPersistenceManager();
boolean contains = true;
try {
mgr.getObjectById(Utente.class, utente.getId());
} catch (javax.jdo.JDOObjectNotFoundException ex) {
contains = false;
} finally {
mgr.close();
}
return contains;
}

private static PersistenceManager getPersistenceManager() {
return PMF.get().getPersistenceManager();
}

}

你知道如何帮助我吗?我错过了什么吗?

最佳答案

您的方法具有相同的 API 描述 (path="utenteendpoint/{param}")。给其中一个不同的路径:

@ApiMethod(path="utenteendpoint/tag/{tag}/")
public List<Bill> getUserBillsByTag(@Named("tag") String tag) { ... }

@ApiMethod(path="utenteendpoint/user/{id}/")
public List<Bill> getUserBills(@Named("id") Long id) { ... }

关于java - 无法在 Google Cloud Endpoints 的 Endpoint 类中创建多个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com