Skip to content

Instantly share code, notes, and snippets.

@yulgit1
Created September 3, 2014 17:47
Show Gist options
  • Save yulgit1/41ddafc5831cb4f125c6 to your computer and use it in GitHub Desktop.
Save yulgit1/41ddafc5831cb4f125c6 to your computer and use it in GitHub Desktop.
semantic handle creation using java Web Service client (another example) (using Netbeans wizard to create client methods)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.yale.library.ilts.findingaids;
//import edu.yale.library.ilts.handles.linktest.HandleMap.Map.Entry;
//import edu.yale.library.ilts.handles.linktest.ResultMap;
import java.util.HashMap;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import java.util.Properties;
import java.io.FileInputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class HandleService {
private String endpoint;
private Service service;
private Call call;
private Map<String, String> locations;
private String group;
private String netid;
private String ticket;
private String truststore;
private String OperationQNamePrefix;
private String OperationQNameLocalPart;
private String modendpoint;
private String modOperationQNameLocalPart;
public HandleService() throws Exception {
// Read properties
String handleProperties = System.getProperty("user.dir") + "/handle.properties";
Properties p = new Properties();
p.load(new FileInputStream(handleProperties));
truststore = p.getProperty("truststore");
group = p.getProperty("group");
netid = p.getProperty("netid");
ticket = p.getProperty("ticket");
endpoint = p.getProperty("endpoint");
OperationQNamePrefix= p.getProperty("OperationQNamePrefix");
OperationQNameLocalPart=p.getProperty("OperationQNameLocalPart");
modendpoint = p.getProperty("modendpoint");
modOperationQNameLocalPart = p.getProperty("modOperationQNameLocalPart");
/*
System.out.println("HandleService: truststore = " + truststore);
System.out.println("HandleService: group = " + group);
System.out.println("HandleService: netid = " + netid);
System.out.println("HandleService: ticket = " + ticket);
System.out.println("HandleService: endpoint = " + endpoint);
System.out.println("HandleService: OperationQNamePrefix = " + OperationQNamePrefix);
System.out.println("HandleService: OperationQNameLocalPart = " + OperationQNameLocalPart);
*/
//===================================================
/* Set truststore */
File trust = new File(truststore);
System.setProperty("javax.net.ssl.trustStore",truststore);
String trustStore = System.getProperty("javax.net.ssl.trustStore");
if(trustStore == null) System.out.println("javax.net.ssl.trustStore is not defined");
System.out.println("Handle Service: endpoint = " + endpoint);
service = new Service();
call = (Call) service.createCall();
call.setTimeout(Integer.MAX_VALUE);
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName(OperationQNamePrefix, OperationQNameLocalPart));
}
public Map createHandle(String handle, String url) {
Map handleMap = new HashMap<String, String>();
//========================= F O R T E S T I N G ======================
// handle = "10079/fa/divinity.999";
//========================================================================
handleMap.put(handle, url);
System.out.println("in createHandle: handle = " + handle);
System.out.println("in createHandle: url = " + url);
try {
Map retHandles = (Map) call.invoke( new Object[] {handleMap, group, netid, ticket});
if (retHandles == null) System.out.println("ret = null");
for(Object oneRetHandle : retHandles.keySet())
{
System.out.println("One Returned Handle: " + oneRetHandle);
}
return retHandles;
} catch (Exception e) {
System.err.println("Error registering handle: " + e.toString());
}
return null;
}
public Map createModHandle(String handle, String url,String mode) {
edu.yale.library.ilts.handles.linktest.HandleMap handleMap = new edu.yale.library.ilts.handles.linktest.HandleMap();
edu.yale.library.ilts.handles.linktest.HandleMap.Map map = new edu.yale.library.ilts.handles.linktest.HandleMap.Map();
edu.yale.library.ilts.handles.linktest.HandleMap.Map.Entry entry = new edu.yale.library.ilts.handles.linktest.HandleMap.Map.Entry();
entry.setKey(handle);
entry.setValue(url);
map.getEntry().add(entry);
handleMap.setMap(map);
System.out.println("in createModHandle: handle = " + handle);
System.out.println("in createModHandle: url = " + url);
System.out.println("in createModHandle: group = " + group);
System.out.println("in createModHandle: netid = " + netid);
System.out.println("in createModHandle: ticket = " + ticket);
edu.yale.library.ilts.handles.linktest.ResultMap resultMap = null;
if (mode.equals("create")) {
System.out.println("create handle");
resultMap = createBatchSemantic(handleMap,group,netid,ticket);//netid=user ticket=credential
}
if (mode.equals("modify")) {
System.out.println("modify handle");
resultMap = modifyBatch(handleMap,netid,ticket);//netid=user ticket=credential
}
Map retHandles = printLinktestResult(resultMap);
if (retHandles == null) System.out.println("ret = null");
for(Object oneRetHandle : retHandles.keySet())
{
System.out.println("One Returned Handle: " + oneRetHandle);
System.out.println("value:"+retHandles.get(oneRetHandle));
}
return retHandles;
}
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
HandleService svc;
try {
svc = new HandleService();
} catch (Exception e) {
//System.out.println("Error creating HandleService: " + e.getMessage());
e.printStackTrace(System.err);
return;
}
Map handleMap = new HashMap<String, String>();
//for (int i = 0; i < 5; i++) {
// handleMap.put("10079.1/fatest" + i + System.currentTimeMillis(), "http://www.yale.edu/handlestest/");
//}
String h = "10079.1/FA/mssa.ru.1113";
String r = "http://drs.library.yale.edu:8083/HLTransformer/HLTransServlet?stylename=yul.ead2002.xhtml.xsl&pid=mssa:ru.1113&big=y";
//String r = "http://google.com";
//handleMap.put(h,r);
//Map handles = svc.createHandle(handleMap, "10079.1/FA", "10079.1/FA", "L3@iok");
Map handles = svc.createHandle(h,r);
//Map handles = svc.createHandle(handleMap);
System.out.println("back from createHandle");
//if (handles == null) System.out.println("ret = null");
for (Object handle : handles.keySet()) {
if (handles.get(handle).equals("HANDLE ALREADY EXISTS")) {
System.out.println("Handle already exists, modify existing handle");
svc.modifyHandle(h,r);
//svc.deleteHandle(h);
//svc.createHandle(h,r);
}
}
//handles = svc.modifyHandle(handles,h,r);
//svc.revertCall();
//for(Object handle : handles.keySet())
//{
// System.out.println(handle);
// System.out.println(handles.get(handle));
//}
}
};
Thread t1 = new Thread(runnable);
t1.start();
}
public Map modifyHandle(String handle, String url) {
//for (Object output1 : output.keySet()) {
// if (output.get(output1).equals("HANDLE ALREADY EXISTS")) {
//Map handleMap = new HashMap<String, String>();
//handleMap.put(handle, url);
List handleMap = new ArrayList();
handleMap.add(handle+":"+url);
//System.out.println("modHandle = " + handle);
//System.out.println("modUrl = " + url);
//System.out.println("modendpoint:"+modendpoint);
//System.out.println("modOperationQNamePrefix:"+OperationQNamePrefix);
//System.out.println("modOperationQNameLocalPart:"+modOperationQNameLocalPart);
//System.out.println("modNetid:"+netid);
//System.out.println("modTicket:"+ticket);
try {
Service service2 = new Service();
Call call2 = (Call) service2.createCall();
call2.setTimeout(Integer.MAX_VALUE);
call2.setTargetEndpointAddress(new java.net.URL(modendpoint));
call2.setOperationName(new QName(OperationQNamePrefix,modOperationQNameLocalPart));
Map retHandles = (Map) call2.invoke( new Object[] {handleMap,netid,ticket});
if (retHandles == null) {
System.out.println("ret = null");
return null;
} else {
for(Object oneRetHandle : retHandles.keySet()) {
System.out.println("One modified handle: " + oneRetHandle);
System.out.println("Modified response: " + retHandles.get(oneRetHandle));
}
return retHandles;
}
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
// }
//}
return null;
}
private static edu.yale.library.ilts.handles.linktest.ResultMap createBatchSemantic(edu.yale.library.ilts.handles.linktest.HandleMap handlesToValues, java.lang.String group, java.lang.String user, java.lang.String credential) {
edu.yale.library.ilts.handles.linktest.PersistentLinkingService service = new edu.yale.library.ilts.handles.linktest.PersistentLinkingService();
edu.yale.library.ilts.handles.linktest.IPersistentLinking port = service.getPersistentLinkingPort();
return port.createBatchSemantic(handlesToValues, group, user, credential);
}
/*
public Map deleteHandle(String handle) {
System.out.println("delHandle = " + handle);
System.out.println("delendpoint:"+delendpoint);
System.out.println("delOperationQNamePrefix:"+OperationQNamePrefix);
System.out.println("delOperationQNameLocalPart:"+delOperationQNameLocalPart);
System.out.println("delNetid:"+netid);
System.out.println("delTicket:"+ticket);
try {
Service service2 = new Service();
Call call2 = (Call) service2.createCall();
call2.setTimeout(Integer.MAX_VALUE);
call2.setTargetEndpointAddress(new java.net.URL(delendpoint));
call2.setOperationName(new QName(OperationQNamePrefix,delOperationQNameLocalPart));
Map retHandles = (Map) call2.invoke( new Object[] {handle,netid,ticket});
if (retHandles == null) {
System.out.println("ret = null");
return null;
} else {
for(Object oneRetHandle : retHandles.keySet()) {
System.out.println("One deleted handle: " + oneRetHandle);
System.out.println("value:"+retHandles.get(oneRetHandle));
}
return retHandles;
}
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
return null;
}
*
*/
/*
public void revertCall() {
try {
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName(OperationQNamePrefix, OperationQNameLocalPart));
} catch (MalformedURLException ex) {
System.err.println("Error resetting call to CreateHandleService: " + ex.toString());
}
}
*
*/
private Map printLinktestResult(edu.yale.library.ilts.handles.linktest.ResultMap hm) {
//ArrayList<String> results = new ArrayList();
Map results = new HashMap();
List<edu.yale.library.ilts.handles.linktest.ResultMap.SuccessMap.Entry> arr = hm.getSuccessMap().getEntry();
if(arr!=null){
//System.out.println("SUCCESS:");
for(edu.yale.library.ilts.handles.linktest.ResultMap.SuccessMap.Entry et0 : arr){
//results.add("SUCCESS:"+et0.getKey()+":"+et0.getValue());
results.put(et0.getKey(),et0.getValue());
}
}
List<edu.yale.library.ilts.handles.linktest.ResultMap.FailMap.Entry> arr2 = hm.getFailMap().getEntry();
if(arr2!=null){
//System.out.println("FAILED:");
for(edu.yale.library.ilts.handles.linktest.ResultMap.FailMap.Entry et0 : arr2){
results.put(et0.getKey(),et0.getValue());
}
}
return results;
}
private static edu.yale.library.ilts.handles.linktest.ResultMap modifyBatch(edu.yale.library.ilts.handles.linktest.HandleMap handlesToValues, java.lang.String user, java.lang.String credential) {
edu.yale.library.ilts.handles.linktest.PersistentLinkingService service = new edu.yale.library.ilts.handles.linktest.PersistentLinkingService();
edu.yale.library.ilts.handles.linktest.IPersistentLinking port = service.getPersistentLinkingPort();
return port.modifyBatch(handlesToValues, user, credential);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment