grsf-publisher-ws/src/test/java/org/gcube/data_catalogue/grsf_publish_ws/JTests.java

217 lines
8.2 KiB
Java
Raw Normal View History

package org.gcube.data_catalogue.grsf_publish_ws;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group;
import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.Common;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.DatabaseSource;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.FisheryRecord;
import org.gcube.data_catalogue.grsf_publish_ws.json.input.StockRecord;
import org.gcube.data_catalogue.grsf_publish_ws.utils.HelperMethods;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Abundance_Level;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status;
import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Type;
import eu.trentorise.opendata.jackan.internal.org.apache.http.HttpResponse;
import eu.trentorise.opendata.jackan.internal.org.apache.http.client.methods.HttpGet;
import eu.trentorise.opendata.jackan.internal.org.apache.http.impl.client.CloseableHttpClient;
import eu.trentorise.opendata.jackan.internal.org.apache.http.impl.client.HttpClientBuilder;
public class JTests {
private static final String TEST_TOKEN = "";
//@Test
public void test() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException {
FisheryRecord recordFishery = new FisheryRecord();
recordFishery.setType(Type.Fishing_Description);
recordFishery.setDatabaseSources(new ArrayList<DatabaseSource>());
recordFishery.setStatus(Status.Pending);
List<String> tags = new ArrayList<String>();
List<String> groupsTitles = new ArrayList<String>();
Map<String, Object> extras = new HashMap<String, Object>();
// bottom up, looks up for Tag/Group fields
Class<?> current = recordFishery.getClass();
do{
System.out.println("Class is " + current.getCanonicalName());
Field[] fields = current.getDeclaredFields();
for (Field field : fields) {
if(field.isAnnotationPresent(Tag.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
tags.add(f.toString());
}
}
if(field.isAnnotationPresent(Group.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
groupsTitles.add(f.toString());
}
}
if(field.isAnnotationPresent(CustomField.class)){
Object f = new PropertyDescriptor(field.getName(), current).getReadMethod().invoke(recordFishery);
if(f != null){
// get the key to put into the map first
extras.put(field.getAnnotation(CustomField.class).key(), f);
}
}
}
}
while((current = current.getSuperclass())!=null);
// print
System.out.println("TAGS " + tags);
System.out.println("GROUPS " + groupsTitles);
System.out.println("EXTRAS " + extras);
}
//@Test
public void testJsonSerializer(){
//
// String pendingAsString = "pending";
// Status resSatus = Status.onDeserialize(pendingAsString);
// System.out.println("Res is " + resSatus);
//
// System.out.println("To string is " + resSatus.onSerialize());
Abundance_Level type = Abundance_Level.onDeserialize("Uncertain Not assessed");
System.out.println("Res is " + type.onSerialize());
}
//@Test
public void testNameToStringEnum(){
Abundance_Level elem = Abundance_Level.Uncertain_Not_Assessed;
System.out.println("Enum name is = " + elem.name() + ", enum to string is = " + elem.toString() + ", enum on serialize = " + elem.onSerialize());
// try deserializer
String deserialize = "uncertain not assessed";
Abundance_Level res = Abundance_Level.onDeserialize(deserialize);
System.out.println(res.name());
}
//@Test
public void testJSONMapping() throws IOException{
StockRecord recordStock = new StockRecord();
recordStock.setType(Type.Fishing_Description);
ArrayList<DatabaseSource> list = new ArrayList<DatabaseSource>();
list.add(new DatabaseSource("http", null, Source.onDeserialize("s")));
recordStock.setDatabaseSources(list);
recordStock.setAuthor("Costantino Perciante");
recordStock.setMaintainer("Costantino Perciante");
recordStock.setAuthorContact("costantino.perciante@isti.cnr.it");
recordStock.setStatus(Status.Pending);
recordStock.setVersion(new Long(1));
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Common>> violations = validator.validate((Common)recordStock);
for (ConstraintViolation<Common> constraintViolation : violations) {
System.out.println("Violation is about " + constraintViolation.getPropertyPath() + ", message error is " + constraintViolation.getMessage());
}
// check database_sources and source_of_information (they are not null nor empty at this point)
List<DatabaseSource> databaseSources = recordStock.getDatabaseSources();
for (DatabaseSource databaseSource : databaseSources) {
Set<ConstraintViolation<DatabaseSource>> violationsDatabaseSourcesBean = validator.validate(databaseSource);
for (ConstraintViolation<DatabaseSource> constraintViolation : violationsDatabaseSourcesBean) {
System.out.println("Violation is about " + constraintViolation.getPropertyPath() + ", message error is " + constraintViolation.getMessage());
}
}
// List<Resource> sourcesOfInformation = recordStock.getSourceOfInformation();
// for (Resource sourceOfinformation : sourcesOfInformation) {
// Set<ConstraintViolation<Resource>> violationsSourceOfinformationsBean = validator.validate(sourceOfinformation);
// for (ConstraintViolation<Resource> constraintViolation : violationsSourceOfinformationsBean) {
// System.out.println("Violation is about " + constraintViolation.getPropertyPath() + ", message error is " + constraintViolation.getMessage());
// }
// }
//
//
// ObjectMapper mapper = new ObjectMapper();
//
// //Object to JSON in String
// String jsonInString = mapper.writeValueAsString(recordStock);
// System.out.println(jsonInString);
//
// // JSON back to object
// StockRecord converted = mapper.readValue(jsonInString, recordStock.getClass());
// System.out.println(converted);
}
//@Test
public void instanciateGCoreReader() throws Exception{
String baseUrl = org.gcube.data_catalogue.grsf_publish_ws.utils.GcoreEndpointReaderSocialWS.getUrlSocialWS("/gcube/devNext/NextNext");
System.out.println("Base url is " + baseUrl);
try(CloseableHttpClient client = HttpClientBuilder.create().build();){
String url = baseUrl.replace("80", "") + "/users/getUserEmail?gcube-token=" + TEST_TOKEN;
System.out.println("Request url is " + url);
HttpGet getRequest = new HttpGet(url);
HttpResponse response = client.execute(getRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
System.out.println(response.toString());
}catch(Exception e){
System.err.println("error while performing post method " + e.toString());
}
}
//@Test
public void testFromScopeToOrgName(){
System.out.println("Valid ? " + HelperMethods.isValid("this is not valid"));
// System.out.println(HelperMethods.retrieveOrgNameFromScope("/gcube/devNext/NextNext"));
}
}