blob: 3b4083bbd296dc5ba22eaa11ee9ce4bd341c5afb [file] [log] [blame]
/*
* Copyright 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.adminconsole.hub;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXB;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.juddi.api_v3.AdminSaveBusiness;
import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
import org.apache.juddi.api_v3.AdminSaveSubscriptionRequest;
import org.apache.juddi.api_v3.AdminSaveTModel;
import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
import org.apache.juddi.api_v3.Clerk;
import org.apache.juddi.api_v3.ClientSubscriptionInfo;
import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
import org.apache.juddi.api_v3.SyncSubscription;
import org.apache.juddi.config.AppConfig;
import org.apache.juddi.config.Property;
import org.apache.juddi.v3.client.UDDIConstants;
import org.apache.juddi.v3.client.cryptor.XmlUtils;
import org.uddi.api_v3.BusinessEntity;
import org.uddi.api_v3.Contact;
import org.uddi.api_v3.FindBusiness;
import org.uddi.api_v3.FindQualifiers;
import org.uddi.api_v3.Name;
import org.uddi.api_v3.PersonName;
import org.uddi.api_v3.TModel;
import org.uddi.repl_v3.CommunicationGraph;
import org.uddi.repl_v3.Operator;
import org.uddi.repl_v3.OperatorStatusType;
import org.uddi.repl_v3.ReplicationConfiguration;
import org.uddi.sub_v3.CoveragePeriod;
import org.uddi.sub_v3.GetSubscriptionResults;
import org.uddi.sub_v3.Subscription;
import org.uddi.sub_v3.SubscriptionFilter;
/**
* This class generates XML as String objects for UDDI requests. This is used
* from the "advanced" web pages
*
* @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
*/
public class JUDDIRequestsAsXML {
private static String PrettyPrintXML(String input) {
if (input == null || input.length() == 0) {
return "";
}
try {
TransformerFactory transFactory = TransformerFactory.newInstance();
transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
transFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
//initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
StreamSource source = new StreamSource(new StringReader(input.trim()));
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
return (xmlString);
} catch (Exception ex) {
}
return null;
}
public static String getSampleXML(String method) {
StringWriter sw = new StringWriter();
if (method.equalsIgnoreCase("save_ClientSubscriptionInfo")) {
SaveClientSubscriptionInfo obj = new SaveClientSubscriptionInfo();
obj.getClientSubscriptionInfo().add(new ClientSubscriptionInfo());
obj.getClientSubscriptionInfo().get(0).setFromClerk(new Clerk());
obj.getClientSubscriptionInfo().get(0).setToClerk(new Clerk());
obj.getClientSubscriptionInfo().get(0).setSubscriptionKey("key");
JAXB.marshal(obj, sw);
}
if (method.equalsIgnoreCase("invoke_SyncSubscription")) {
SyncSubscription obj = new SyncSubscription();
obj.getGetSubscriptionResultsList().add(new GetSubscriptionResults());
obj.getGetSubscriptionResultsList().get(0).setSubscriptionKey("key");
obj.getGetSubscriptionResultsList().get(0).setCoveragePeriod(new CoveragePeriod());
DatatypeFactory newInstance;
try {
newInstance = DatatypeFactory.newInstance();
obj.getGetSubscriptionResultsList().get(0).getCoveragePeriod().setEndPoint(newInstance.newXMLGregorianCalendar(new GregorianCalendar()));
obj.getGetSubscriptionResultsList().get(0).getCoveragePeriod().setStartPoint(newInstance.newXMLGregorianCalendar(new GregorianCalendar()));
} catch (DatatypeConfigurationException ex) {
Logger.getLogger(JUDDIRequestsAsXML.class.getName()).log(Level.SEVERE, null, ex);
}
JAXB.marshal(obj, sw);
}
if (method.equalsIgnoreCase("admin_SaveBusiness")) {
AdminSaveBusiness obj = new AdminSaveBusiness();
obj.getValues().add(new AdminSaveBusinessWrapper());
obj.getValues().get(0).setPublisherID("username");
obj.getValues().get(0).getBusinessEntity().add(new BusinessEntity());
obj.getValues().get(0).getBusinessEntity().get(0).getName().add(new Name("Business Name", "en"));
JAXB.marshal(obj, sw);
}
if (method.equalsIgnoreCase("admin_SaveTModel")) {
AdminSaveTModel obj = new AdminSaveTModel();
obj.getValues().add(new AdminSaveTModelWrapper());
obj.getValues().get(0).setPublisherID("username");
obj.getValues().get(0).getTModel().add(new TModel());
obj.getValues().get(0).getTModel().get(0).setName(new Name("TModel Name", "en"));
JAXB.marshal(obj, sw);
}
if (method.equalsIgnoreCase("admin_SaveSubscription")) {
AdminSaveSubscriptionRequest obj = new AdminSaveSubscriptionRequest();
obj.setPublisherOrUsername("username");
obj.getSubscriptions().add(new Subscription());
obj.getSubscriptions().get(0).setSubscriptionFilter(new SubscriptionFilter());
obj.getSubscriptions().get(0).setBrief(Boolean.TRUE);
obj.getSubscriptions().get(0).getSubscriptionFilter().setFindBusiness(new FindBusiness());
obj.getSubscriptions().get(0).getSubscriptionFilter().getFindBusiness().getName().add(new Name(UDDIConstants.WILDCARD, null));
obj.getSubscriptions().get(0).getSubscriptionFilter().getFindBusiness().setFindQualifiers(new FindQualifiers());
obj.getSubscriptions().get(0).getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
obj.getSubscriptions().get(0).getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.CASE_INSENSITIVE_MATCH);
//obj.getSubscriptions().get(0).getSubscriptionFilter().getFindBusiness()
JAXB.marshal(obj, sw);
}
if (method.equalsIgnoreCase("set_ReplicationNodes")) {
ReplicationConfiguration replicationConfiguration = new ReplicationConfiguration();
replicationConfiguration.setCommunicationGraph(new CommunicationGraph());
String thisnode = "NODEID";
try {
thisnode = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
} catch (ConfigurationException ex) {
Logger.getLogger(JUDDIRequestsAsXML.class.getName()).log(Level.SEVERE, null, ex);
}
replicationConfiguration.getCommunicationGraph().getNode().add(thisnode);
Operator op = new Operator();
op.setOperatorNodeID(thisnode);
op.setOperatorStatus(OperatorStatusType.NORMAL);
String url = "http://localhost:8080/juddiv3/services/replication";
try {
url = AppConfig.getConfiguration().getString(Property.DEFAULT_BASE_URL_SECURE) + "/services/replication";
} catch (ConfigurationException ex) {
Logger.getLogger(JUDDIRequestsAsXML.class.getName()).log(Level.SEVERE, null, ex);
}
op.setSoapReplicationURL(url);
replicationConfiguration.getOperator().add(op);
replicationConfiguration.setRegistryContact(new ReplicationConfiguration.RegistryContact());
replicationConfiguration.getRegistryContact().setContact(new Contact());
replicationConfiguration.getRegistryContact().getContact().getPersonName().add(new PersonName("UNKNOWN", "en"));
JAXB.marshal(replicationConfiguration, sw);
}
return PrettyPrintXML(sw.toString());
}
public static Object getObjectJuddi(String method, String content) {
StringReader sr = new StringReader(content);
if (method.equalsIgnoreCase("save_ClientSubscriptionInfo")) {
return XmlUtils.unmarshal(sr, SaveClientSubscriptionInfo.class);
}
if (method.equalsIgnoreCase("invoke_SyncSubscription")) {
return XmlUtils.unmarshal(sr, SyncSubscription.class);
}
if (method.equalsIgnoreCase("admin_SaveBusiness")) {
return XmlUtils.unmarshal(sr, AdminSaveBusiness.class);
}
if (method.equalsIgnoreCase("admin_SaveTModel")) {
//System.out.println(content);
return XmlUtils.unmarshal(sr, AdminSaveTModel.class);
}
if (method.equalsIgnoreCase("admin_SaveSubscription")) {
return JAXB.unmarshal(sr, AdminSaveSubscriptionRequest.class);
}
if (method.equalsIgnoreCase("set_ReplicationNodes")) {
return JAXB.unmarshal(sr, ReplicationConfiguration.class);
}
return null;
}
}