Polarion의 작업 기록 정보를 가져와 나중에 사용하기 위해 DAT 파일에 기록하는 Java 프로그램을 작성하려고합니다.null을 리턴하는 Polarion WorkItem 클래스 getter 메소드
내가 성공적으로 서버에 연결 한과 WorkItem
객체를 검색 한하지만 요구 사항을 충족하기 위해 WorkItem
클래스의 getWorkRecords()
방법을 사용할 필요가 있기 때문에 (getUri()
이외)를 취득 메소드의 어느 것도 문제를 야기하는, 제대로 작동하지 프로젝트의
나는 우리 주 Polarion 서버와 우리가 쓰려고하는 프로그램과 같은 것들을 테스트하기위한 일종의 테스트 영역으로 사용하는 '준비'서버 모두에서 클래스에 대한 getter 메소드를 모두 시도했다. 나는 전체 권한을 가지고있다.
권한에 관계없이 나는 자신 만의 작업 항목을보고자 시도하고 있으므로 사용 권한 문제가 있어서는 안되므로 내가 만든 더미 작업 항목을 쿼리하고 있습니다.
package test;
//stg= 10.4.1.50
//main= 10.4.1.10
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import javax.xml.rpc.ServiceException;
import com.polarion.alm.ws.client.WebServiceFactory;
import com.polarion.alm.ws.client.session.SessionWebService;
import com.polarion.alm.ws.client.tracker.TrackerWebService;
import com.polarion.alm.ws.client.types.tracker.WorkItem;
import com.polarion.alm.ws.client.types.tracker.WorkRecord;
public class WorkrecordImporter {
private WebServiceFactory factory;
private TrackerWebService trackerService;
private SessionWebService sessionService;
private WorkItem[] workItems;
private ArrayList<WorkRecord> workRecords;
private String password = //insertpasswordhere;//no peaking
public WorkrecordImporter()throws ServiceException, IOException, ClassNotFoundException{
initializeFields();//initializes all of the Web Services and arrays
//step one
getWorkItems();
//readDATFile();
//step two
getWorkRecords();
//$$$
printWorkRecords();
//$$$$$
writeDATFile();
}
//you know what this does.
public void printWorkRecords(){
for(int temp = 0; temp < workItems.length; temp++){
System.out.println(workItems[temp].getUri().toString());
}
}
public void writeDATFile() throws IOException{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\Users\\sweidenkopf\\workspace\\test\\filename.dat"));
try {
out.writeObject(workRecords);
} finally {
// Make sure to close the file when done
out.close();
}
}
/**
* This method sets up the WebServiceFactory at the specified URL. It then initializes the web services, logs in the
* session service, and initializes the arrays.
* @throws MalformedURLException
* @throws ServiceException
* @throws RemoteException
*/
public void initializeFields() throws MalformedURLException, ServiceException, RemoteException{
factory = new WebServiceFactory("//insert url here");
trackerService = factory.getTrackerService();
sessionService = factory.getSessionService();
sessionService.logIn("sweidenkopf", password);
workRecords = new ArrayList<>();
}
public void getWorkItems()throws MalformedURLException, ServiceException, RemoteException{
sessionService.beginTransaction();
workItems = trackerService.queryWorkItems("workRecords.user.id:sweidenkopf", null, null);
sessionService.endTransaction(false);
}
public void getWorkRecords()throws MalformedURLException, ServiceException, RemoteException{
sessionService.beginTransaction();
for(int k = 0; k < workItems.length; k++)
{System.out.println("This is working");
try{//not every work item has work records
System.out.println(workItems[k].getWorkRecords());
WorkRecord[] temp;
temp = workItems[k].getWorkRecords();
for(int x = 0; x < temp.length; x++){
System.out.println("This is working fine");
workRecords.add(temp[x]);
}
}catch(NullPointerException e){
System.out.println("I must regretfully inform you that I have grave news; your endeavors have not been successfull.");
continue;
}
}
System.out.println(workRecords.toString());
sessionService.endTransaction(false);
}
public void readDATFile() throws FileNotFoundException, IOException, ClassNotFoundException{
ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\Users\\sweidenkopf\\workspace\\test\\filename.dat"));
try{
Object temp = in.readObject();
workRecords = (ArrayList) temp;
}
finally{
in.close();
}
}
}
가장 중요한 부분은 물론 내 코드 내에서 getWorkRecords()
방법 : 여기
System.out.println(workItems[k].getWorkRecords());
이 포함되어 있습니다. 이 문은
null
을 반환하며 해당 문에서 대체 될 때 null을 반환하지 않는 메서드는
WorkItem
이며
getUri()
입니다. 또한
for
루프에
temp.length
이 포함되어 있기 때문에 해당 메서드의 try-catch 블록은 항상
NullPointerException
을 포착합니다. 임시 변수는
getWorkRecords()
메서드의 반환을 포함해야하는 변수입니다.
주요 문제는 여기에 내가 getWorkRecords()
또는 WorkItem
클래스의 다른 getter 메소드에서 아무것도 반환 할 수없는 생각이다을 요약합니다. 내 코드의 printWorkRecords()
메서드가 내 쿼리의 모든 WorkItem
개체의 URI를 성공적으로 인쇄하기 때문에 getUri()
메서드가 성공적으로 실행되기 때문에 문제가 해결되지 않습니다.
이전에이 문제가 발생한 Polarion 전문가가 있습니까? 아무도 내가 뭘 잘못하고 있는지 알아? 상황에 따라 버그라고 생각하는 경향이 있습니다.