blob: e2a1814cebbeb5cd87103c6eeaefe568e8c1a90e [file] [log] [blame]
/*
* Copyright 2001-2013 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.juddi.samples;
import de.svenjacobs.loremipsum.LoremIpsum;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.apache.juddi.api_v3.AccessPointType;
import org.apache.juddi.v3.client.UDDIConstants;
import org.apache.juddi.v3.client.config.UDDIClient;
import org.apache.juddi.v3.client.transport.Transport;
import org.uddi.api_v3.*;
import org.uddi.v3_service.UDDIPublicationPortType;
import org.uddi.v3_service.UDDISecurityPortType;
/**
* This class was used to identify performance issues when a given node has a
* large number of UDDI entities. It may not work on some commercial UDDI nodes
* due to licensing restrictions (some limit the number of business, services,
* etc)
*
* @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
*/
public class UddiCreatebulk {
private UDDISecurityPortType security = null;
private UDDIPublicationPortType publish = null;
private String curretNode = null;
public UddiCreatebulk(String node) {
try {
// create a manager and read the config in the archive;
// you can use your config file name
UDDIClient clerkManager = new UDDIClient("META-INF/simple-publish-uddi.xml");
Transport transport = clerkManager.getTransport(node);
curretNode = node;
// Now you create a reference to the UDDI API
security = transport.getUDDISecurityService();
publish = transport.getUDDIPublishService();
} catch (Exception e) {
e.printStackTrace();
}
}
public UddiCreatebulk(Transport transport, boolean notused, String node) {
try {
curretNode = node;
security = transport.getUDDISecurityService();
publish = transport.getUDDIPublishService();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* bulk creates businesses, services and binding templates
*
* @param token if null, root/root will be used to authenticate
* @param businesses
* @param servicesPerBusiness
* @param user purely for display purposes
*/
public void publishBusiness(String token, int businesses, int servicesPerBusiness, String user) {
try {
// Setting up the values to get an authentication token for the 'root' user ('root' user has admin privileges
// and can save other publishers).
if (token == null) {
GetAuthToken getAuthTokenRoot = new GetAuthToken();
getAuthTokenRoot.setUserID("root");
getAuthTokenRoot.setCred("root");
// Making API call that retrieves the authentication token for the 'root' user.
AuthToken rootAuthToken = security.getAuthToken(getAuthTokenRoot);
System.out.println("root AUTHTOKEN = " + "don't log auth tokens!");
token = rootAuthToken.getAuthInfo();
}
LoremIpsum textgen = new LoremIpsum();
DatatypeFactory df = DatatypeFactory.newInstance();
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTimeInMillis(System.currentTimeMillis());
XMLGregorianCalendar xcal = df.newXMLGregorianCalendar(gcal);
for (int i = 0; i < businesses; i++) {
// Creating the parent business entity that will contain our service.
BusinessEntity myBusEntity = new BusinessEntity();
Name myBusName = new Name();
myBusName.setLang("en");
myBusName.setValue(user + "'s Business " + curretNode + " " + i + " " + xcal.toString() + " " + textgen.getWords(5, 2));
myBusEntity.getDescription().add(new Description(textgen.getWords(10, 2), null));
myBusEntity.getName().add(myBusName);
// Adding the business entity to the "save" structure, using our publisher's authentication info and saving away.
SaveBusiness sb = new SaveBusiness();
sb.getBusinessEntity().add(myBusEntity);
sb.setAuthInfo(token);
BusinessDetail bd = publish.saveBusiness(sb);
String myBusKey = bd.getBusinessEntity().get(0).getBusinessKey();
System.out.println("saved: Business key: " + myBusKey);
for (int k = 0; k < servicesPerBusiness; k++) {
// Creating a service to save. Only adding the minimum data: the parent business key retrieved from saving the business
// above and a single name.
BusinessService myService = new BusinessService();
myService.setBusinessKey(myBusKey);
Name myServName = new Name();
myServName.setLang("en");
myServName.setValue(user + "'s Service " + curretNode + " " + i + " " + k + " " + xcal.toString() + " " + textgen.getWords(5, 2));
myService.getName().add(myServName);
myService.getDescription().add(new Description(textgen.getWords(10, 2), null));
// Add binding templates, etc...
BindingTemplate myBindingTemplate = new BindingTemplate();
myBindingTemplate.setCategoryBag(new CategoryBag());
KeyedReference kr = new KeyedReference();
kr.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
kr.setKeyName("keyname1");
kr.setKeyValue("myvalue1");
myBindingTemplate.getCategoryBag().getKeyedReference().add(kr);
KeyedReferenceGroup krg = new KeyedReferenceGroup();
krg.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
kr = new KeyedReference();
kr.setTModelKey(UDDIConstants.PROTOCOL_SSLv3);
kr.setKeyName("keyname1grp");
kr.setKeyValue("myvalue1grp");
krg.getKeyedReference().add(kr);
myBindingTemplate.getCategoryBag().getKeyedReferenceGroup().add(krg);
myService.setCategoryBag(new CategoryBag());
kr = new KeyedReference();
kr.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
kr.setKeyName("Servicekeyname2grp");
kr.setKeyValue("Servicemyvalue2grp");
myService.getCategoryBag().getKeyedReference().add(kr);
krg = new KeyedReferenceGroup();
krg.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
kr = new KeyedReference();
kr.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
kr.setKeyName("keyname1grp");
kr.setKeyValue("myvalue1grp");
krg.getKeyedReference().add(kr);
myService.getCategoryBag().getKeyedReferenceGroup().add(krg);
AccessPoint accessPoint = new AccessPoint();
accessPoint.setUseType(AccessPointType.WSDL_DEPLOYMENT.toString());
accessPoint.setValue("http://example.org/services/myservice" + i + k + "?wsdl");
myBindingTemplate.setAccessPoint(accessPoint);
myBindingTemplate.setTModelInstanceDetails(new TModelInstanceDetails());
TModelInstanceInfo tii = new TModelInstanceInfo();
Description d = new Description();
d.setValue("Tmodel instance description");
tii.getDescription().add(d);
tii.setTModelKey(UDDIConstants.TRANSPORT_HTTP);
tii.setInstanceDetails(new InstanceDetails());
tii.getInstanceDetails().setInstanceParms("heres some useful stuff describing this endpoint, up to 4KB of data" + " " + textgen.getWords(20, 2));
tii.getInstanceDetails().getDescription().add(d);
OverviewDoc od = new OverviewDoc();
d = new Description();
d.setValue("ovweview doc description" + " " + textgen.getWords(5, 2));
od.getDescription().add(d);
od.setOverviewURL(new OverviewURL());
od.getOverviewURL().setUseType("www");
od.getOverviewURL().setValue("www.apache.org");
tii.getInstanceDetails().getOverviewDoc().add(od);
myBindingTemplate.getTModelInstanceDetails().getTModelInstanceInfo().add(tii);
BindingTemplates myBindingTemplates = new BindingTemplates();
myBindingTemplate = UDDIClient.addSOAPtModels(myBindingTemplate);
myBindingTemplates.getBindingTemplate().add(myBindingTemplate);
myService.setBindingTemplates(myBindingTemplates);
try {
// Adding the service to the "save" structure, using our publisher's authentication info and saving away.
SaveService ss = new SaveService();
ss.getBusinessService().add(myService);
ss.setAuthInfo(token);
ServiceDetail sd = publish.saveService(ss);
String myServKey = sd.getBusinessService().get(0).getServiceKey();
System.out.println("saved: service key: " + myServKey);
} catch (Exception x) {
x.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
UddiCreatebulk sp = new UddiCreatebulk(null);
sp.publishBusiness(null, 15, 20, "root");
}
}