blob: 164f5cb9a2e95ce57e77e3a0d39004f437ea9f39 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>JUDDIApiImpl.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">jUDDI Core - OpenJPA</a> &gt; <a href="index.source.html" class="el_package">org.apache.juddi.api.impl</a> &gt; <span class="el_source">JUDDIApiImpl.java</span></div><h1>JUDDIApiImpl.java</h1><pre class="source lang-java linenums">/*
* Copyright 2001-2008 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
* 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 &quot;AS IS&quot; 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.api.impl;
import java.io.StringWriter;
import java.math.BigInteger;
import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.ws.Holder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.ClassUtil;
import static org.apache.juddi.api.impl.JUDDIApiImpl.sub;
import org.apache.juddi.api.util.JUDDIQuery;
import org.apache.juddi.api.util.QueryStatus;
import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
import org.apache.juddi.api_v3.Clerk;
import org.apache.juddi.api_v3.ClerkDetail;
import org.apache.juddi.api_v3.ClerkList;
import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
import org.apache.juddi.api_v3.DeleteClerk;
import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
import org.apache.juddi.api_v3.DeleteNode;
import org.apache.juddi.api_v3.DeletePublisher;
import org.apache.juddi.api_v3.GetAllClientSubscriptionInfoDetail;
import org.apache.juddi.api_v3.GetAllPublisherDetail;
import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
import org.apache.juddi.api_v3.GetEntityHistoryMessageRequest;
import org.apache.juddi.api_v3.GetEntityHistoryMessageResponse;
import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageRequest;
import org.apache.juddi.api_v3.GetFailedReplicationChangeRecordsMessageResponse;
import org.apache.juddi.api_v3.GetPublisherDetail;
import org.apache.juddi.api_v3.NodeDetail;
import org.apache.juddi.api_v3.NodeList;
import org.apache.juddi.api_v3.PublisherDetail;
import org.apache.juddi.api_v3.SaveClerk;
import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
import org.apache.juddi.api_v3.SaveNode;
import org.apache.juddi.api_v3.SavePublisher;
import org.apache.juddi.api_v3.SubscriptionWrapper;
import org.apache.juddi.api_v3.SyncSubscription;
import org.apache.juddi.api_v3.SyncSubscriptionDetail;
import org.apache.juddi.config.AppConfig;
import org.apache.juddi.config.PersistenceManager;
import org.apache.juddi.config.Property;
import org.apache.juddi.mapping.MappingApiToModel;
import org.apache.juddi.mapping.MappingModelToApi;
import org.apache.juddi.model.BusinessEntity;
import org.apache.juddi.model.ChangeRecord;
import org.apache.juddi.model.ClientSubscriptionInfo;
import org.apache.juddi.model.Node;
import org.apache.juddi.model.Publisher;
import org.apache.juddi.model.ReplicationConfiguration;
import org.apache.juddi.model.Tmodel;
import org.apache.juddi.model.UddiEntityPublisher;
import org.apache.juddi.replication.ReplicationNotifier;
import org.apache.juddi.subscription.NotificationList;
import org.apache.juddi.subscription.notify.TemporaryMailContainer;
import org.apache.juddi.subscription.notify.USERFRIENDLYSMTPNotifier;
import org.apache.juddi.v3.client.transport.Transport;
import org.apache.juddi.v3.error.ErrorMessage;
import org.apache.juddi.v3.error.FatalErrorException;
import org.apache.juddi.v3.error.InvalidKeyPassedException;
import org.apache.juddi.v3.error.InvalidValueException;
import org.apache.juddi.v3.error.UserMismatchException;
import org.apache.juddi.v3_service.JUDDIApiPortType;
import org.apache.juddi.validation.ValidateClerk;
import org.apache.juddi.validation.ValidateClientSubscriptionInfo;
import org.apache.juddi.validation.ValidateNode;
import org.apache.juddi.validation.ValidatePublish;
import org.apache.juddi.validation.ValidatePublisher;
import org.apache.juddi.validation.ValidateReplication;
import org.uddi.api_v3.AuthToken;
import org.uddi.api_v3.BusinessInfo;
import org.uddi.api_v3.BusinessInfos;
import org.uddi.api_v3.Contact;
import org.uddi.api_v3.DeleteTModel;
import org.uddi.api_v3.DispositionReport;
import org.uddi.api_v3.GetRegisteredInfo;
import org.uddi.api_v3.InfoSelection;
import org.uddi.api_v3.PersonName;
import org.uddi.api_v3.RegisteredInfo;
import org.uddi.api_v3.Result;
import org.uddi.api_v3.SaveBusiness;
import org.uddi.api_v3.SaveTModel;
import org.uddi.api_v3.TModelInfo;
import org.uddi.api_v3.TModelInfos;
import org.uddi.repl_v3.ChangeRecords;
import org.uddi.repl_v3.CommunicationGraph;
import org.uddi.repl_v3.Operator;
import org.uddi.repl_v3.OperatorStatusType;
import org.uddi.sub_v3.GetSubscriptionResults;
import org.uddi.sub_v3.Subscription;
import org.uddi.sub_v3.SubscriptionResultsList;
import org.uddi.v3_service.DispositionReportFaultMessage;
import org.uddi.v3_service.UDDISubscriptionPortType;
/**
* Implements the jUDDI API service. These methods are outside of the UDDI spec
* and are specific to jUDDI. They are primarily used for administrative
* functions.
*
* @author &lt;a href=&quot;mailto:jfaath@apache.org&quot;&gt;Jeff Faath&lt;/a&gt;
* @author &lt;a href=&quot;mailto:kstam@apache.org&quot;&gt;Kurt T Stam&lt;/a&gt;
* @author &lt;a href=&quot;mailto:alexoree@apache.org&quot;&gt;Alex O'Ree&lt;/a&gt;
*/
@WebService(serviceName = &quot;JUDDIApiService&quot;,
endpointInterface = &quot;org.apache.juddi.v3_service.JUDDIApiPortType&quot;,
targetNamespace = &quot;urn:juddi-apache-org:v3_service&quot;
//, wsdlLocation = &quot;classpath:/juddi_api_v1.wsdl&quot;
)
<span class="fc" id="L141">public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortType {</span>
<span class="fc" id="L143"> private Log log = LogFactory.getLog(this.getClass());</span>
<span class="fc" id="L144"> private UDDIServiceCounter serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(this.getClass());</span>
/**
* Saves publisher(s) to the persistence layer. This method is specific
* to jUDDI. Administrative privilege required.
*
* @param body
* @return PublisherDetail
* @throws DispositionReportFaultMessage
*/
public PublisherDetail savePublisher(SavePublisher body)
throws DispositionReportFaultMessage {
<span class="fc" id="L156"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L157"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L158"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L160"> tx.begin();</span>
<span class="fc" id="L162"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L164"> new ValidatePublish(publisher).validateSavePublisher(em, body);</span>
<span class="fc" id="L166"> PublisherDetail result = new PublisherDetail();</span>
<span class="fc" id="L168"> List&lt;org.apache.juddi.api_v3.Publisher&gt; apiPublisherList = body.getPublisher();</span>
<span class="fc bfc" id="L169" title="All 2 branches covered."> for (org.apache.juddi.api_v3.Publisher apiPublisher : apiPublisherList) {</span>
<span class="fc" id="L171"> org.apache.juddi.model.Publisher modelPublisher = new org.apache.juddi.model.Publisher();</span>
<span class="fc" id="L173"> MappingApiToModel.mapPublisher(apiPublisher, modelPublisher);</span>
<span class="fc" id="L175"> Object existingUddiEntity = em.find(modelPublisher.getClass(), modelPublisher.getAuthorizedName());</span>
<span class="fc bfc" id="L176" title="All 2 branches covered."> if (existingUddiEntity != null) {</span>
<span class="fc" id="L177"> em.remove(existingUddiEntity);</span>
}
<span class="fc" id="L180"> em.persist(modelPublisher);</span>
<span class="fc" id="L182"> result.getPublisher().add(apiPublisher);</span>
<span class="fc" id="L183"> }</span>
<span class="fc" id="L185"> tx.commit();</span>
<span class="fc" id="L186"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L187"> serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L189"> return result;</span>
<span class="nc" id="L190"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L191"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L192"> serviceCounter.update(JUDDIQuery.SAVE_PUBLISHER,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L194"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L196" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L197"> tx.rollback();</span>
}
<span class="pc" id="L199"> em.close();</span>
}
}
/**
* Deletes publisher(s) from the persistence layer. This method is
* specific to jUDDI. Administrative privilege required. Also removes
* all registered business entities of the user and marks all created
* tModels as &quot;deleted&quot; but not does not remove the tModel from
* persistence. All subscriptions are also destroyed
*
* @param body
* @throws DispositionReportFaultMessage
*/
@Override
public void deletePublisher(DeletePublisher body)
throws DispositionReportFaultMessage {
<span class="fc" id="L216"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L217"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L218"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L220"> tx.begin();</span>
<span class="fc" id="L222"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L224"> new ValidatePublish(publisher).validateDeletePublisher(em, body);</span>
<span class="fc" id="L226"> List&lt;String&gt; entityKeyList = body.getPublisherId();</span>
<span class="fc" id="L227"> List&lt;Publisher&gt; deletedPubs = new ArrayList&lt;Publisher&gt;();</span>
<span class="fc bfc" id="L228" title="All 2 branches covered."> for (String entityKey : entityKeyList) {</span>
<span class="fc" id="L229"> Publisher obj = em.find(org.apache.juddi.model.Publisher.class, entityKey);</span>
<span class="fc" id="L230"> deletedPubs.add(obj);</span>
//get an authtoken for this publisher so that we can get its registeredInfo
<span class="fc" id="L232"> UDDISecurityImpl security = new UDDISecurityImpl();</span>
<span class="fc" id="L233"> AuthToken authToken = security.getAuthToken(entityKey);</span>
<span class="fc" id="L235"> GetRegisteredInfo r = new GetRegisteredInfo();</span>
<span class="fc" id="L236"> r.setAuthInfo(authToken.getAuthInfo());</span>
<span class="fc" id="L237"> r.setInfoSelection(InfoSelection.ALL);</span>
<span class="fc" id="L239"> log.info(&quot;removing all businesses owned by publisher &quot; + entityKey + &quot;.&quot;);</span>
<span class="fc" id="L240"> UDDIPublicationImpl publish = new UDDIPublicationImpl();</span>
<span class="fc" id="L241"> RegisteredInfo registeredInfo = publish.getRegisteredInfo(r);</span>
<span class="fc" id="L242"> BusinessInfos businessInfos = registeredInfo.getBusinessInfos();</span>
<span class="pc bpc" id="L243" title="3 of 4 branches missed."> if (businessInfos != null &amp;&amp; businessInfos.getBusinessInfo() != null) {</span>
<span class="nc" id="L244"> Iterator&lt;BusinessInfo&gt; iter = businessInfos.getBusinessInfo().iterator();</span>
<span class="nc bnc" id="L245" title="All 2 branches missed."> while (iter.hasNext()) {</span>
<span class="nc" id="L246"> BusinessInfo businessInfo = iter.next();</span>
<span class="nc" id="L247"> Object business = em.find(org.apache.juddi.model.BusinessEntity.class, businessInfo.getBusinessKey());</span>
<span class="nc" id="L248"> em.remove(business);</span>
<span class="nc" id="L249"> }</span>
}
<span class="fc" id="L252"> log.info(&quot;mark all tmodels for publisher &quot; + entityKey + &quot; as deleted.&quot;);</span>
<span class="fc" id="L253"> TModelInfos tmodelInfos = registeredInfo.getTModelInfos();</span>
<span class="pc bpc" id="L254" title="3 of 4 branches missed."> if (tmodelInfos != null &amp;&amp; tmodelInfos.getTModelInfo() != null) {</span>
<span class="nc" id="L255"> Iterator&lt;TModelInfo&gt; iter = tmodelInfos.getTModelInfo().iterator();</span>
<span class="nc bnc" id="L256" title="All 2 branches missed."> while (iter.hasNext()) {</span>
<span class="nc" id="L257"> TModelInfo tModelInfo = iter.next();</span>
<span class="nc" id="L258"> Tmodel tmodel = (Tmodel) em.find(org.apache.juddi.model.Tmodel.class, tModelInfo.getTModelKey());</span>
<span class="nc" id="L259"> tmodel.setDeleted(true);</span>
<span class="nc" id="L260"> em.persist(tmodel);</span>
<span class="nc" id="L261"> }</span>
}
<span class="fc" id="L263"> log.info(&quot;remove all persisted AuthTokens for publisher &quot; + entityKey + &quot;.&quot;);</span>
<span class="fc" id="L264"> Query q1 = em.createQuery(&quot;DELETE FROM AuthToken auth WHERE auth.authorizedName = ?1&quot;);</span>
<span class="fc" id="L265"> q1.setParameter(1, entityKey);</span>
<span class="fc" id="L266"> q1.executeUpdate();</span>
<span class="fc" id="L267"> log.info(&quot;remove all subscriptions for publisher &quot; + entityKey + &quot;.&quot;);</span>
<span class="fc" id="L268"> q1 = em.createQuery(&quot;DELETE FROM Subscription s WHERE s.authorizedName = ?1&quot;);</span>
<span class="fc" id="L269"> q1.setParameter(1, entityKey);</span>
<span class="fc" id="L270"> q1.executeUpdate();</span>
<span class="fc" id="L272"> log.info(&quot;removing publisher &quot; + entityKey + &quot;.&quot;);</span>
//delete the publisher
<span class="fc" id="L274"> em.remove(obj);</span>
<span class="fc" id="L275"> }</span>
<span class="fc" id="L277"> tx.commit();</span>
<span class="fc bfc" id="L278" title="All 2 branches covered."> for (Publisher p: deletedPubs){</span>
<span class="fc" id="L279"> USERFRIENDLYSMTPNotifier.notifyAccountDeleted(new TemporaryMailContainer(null, p, (Publisher) publisher));</span>
<span class="fc" id="L280"> }</span>
<span class="fc" id="L281"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L282"> serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L284"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L285"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L286"> serviceCounter.update(JUDDIQuery.DELETE_PUBLISHER,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L288"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L290" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L291"> tx.rollback();</span>
}
<span class="pc" id="L293"> em.close();</span>
<span class="fc" id="L294"> }</span>
<span class="fc" id="L295"> }</span>
/**
* Retrieves publisher(s) from the persistence layer. This method is
* specific to jUDDI. Administrative privilege required.
*
* @param body
* @return PublisherDetail
* @throws DispositionReportFaultMessage
*/
public PublisherDetail getPublisherDetail(GetPublisherDetail body)
throws DispositionReportFaultMessage {
<span class="fc" id="L307"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L308"> new ValidatePublisher(null).validateGetPublisherDetail(body);</span>
<span class="fc" id="L310"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L311"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L313"> tx.begin();</span>
<span class="fc" id="L315"> this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L317"> PublisherDetail result = new PublisherDetail();</span>
<span class="fc" id="L319"> List&lt;String&gt; publisherIdList = body.getPublisherId();</span>
<span class="fc bfc" id="L320" title="All 2 branches covered."> for (String publisherId : publisherIdList) {</span>
<span class="fc" id="L321"> org.apache.juddi.model.Publisher modelPublisher = null;</span>
try {
<span class="fc" id="L323"> modelPublisher = em.find(org.apache.juddi.model.Publisher.class, publisherId);</span>
<span class="nc" id="L324"> } catch (ClassCastException e) {</span>
<span class="fc" id="L325"> }</span>
<span class="fc bfc" id="L326" title="All 2 branches covered."> if (modelPublisher == null) {</span>
<span class="fc" id="L327"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.invalidkey.PublisherNotFound&quot;, publisherId));</span>
}
<span class="fc" id="L330"> org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();</span>
<span class="fc" id="L332"> MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);</span>
<span class="fc" id="L334"> result.getPublisher().add(apiPublisher);</span>
<span class="fc" id="L335"> }</span>
<span class="fc" id="L337"> tx.commit();</span>
<span class="fc" id="L338"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L339"> serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L341"> return result;</span>
<span class="fc" id="L342"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="fc" id="L343"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L344"> serviceCounter.update(JUDDIQuery.GET_PUBLISHER_DETAIL,</span>
QueryStatus.FAILED, procTime);
<span class="fc" id="L346"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L348" title="2 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="pc" id="L349"> tx.rollback();</span>
}
<span class="fc" id="L351"> em.close();</span>
}
}
/**
* Retrieves all publisher from the persistence layer. This method is
* specific to jUDDI. Administrative privilege required. Use caution
* when calling, result set is not bound. If there are many publishers,
* it is possible to have a result set that is too large
*
* @param body
* @return PublisherDetail
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
@SuppressWarnings(&quot;unchecked&quot;)
public PublisherDetail getAllPublisherDetail(GetAllPublisherDetail body)
throws DispositionReportFaultMessage, RemoteException {
<span class="nc" id="L370"> long startTime = System.currentTimeMillis();</span>
<span class="nc" id="L371"> new ValidatePublisher(null).validateGetAllPublisherDetail(body);</span>
<span class="nc" id="L373"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L374"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L376"> tx.begin();</span>
<span class="nc" id="L378"> this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="nc" id="L380"> PublisherDetail result = new PublisherDetail();</span>
<span class="nc" id="L382"> Query query = em.createQuery(&quot;SELECT p from Publisher as p&quot;);</span>
<span class="nc" id="L383"> List&lt;Publisher&gt; modelPublisherList = query.getResultList();</span>
<span class="nc bnc" id="L385" title="All 2 branches missed."> for (Publisher modelPublisher : modelPublisherList) {</span>
<span class="nc" id="L387"> org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();</span>
<span class="nc" id="L389"> MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);</span>
<span class="nc" id="L391"> result.getPublisher().add(apiPublisher);</span>
<span class="nc" id="L392"> }</span>
<span class="nc" id="L394"> tx.commit();</span>
<span class="nc" id="L395"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L396"> serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L398"> return result;</span>
<span class="nc" id="L399"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L400"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L401"> serviceCounter.update(JUDDIQuery.GET_ALL_PUBLISHER_DETAIL,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L403"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L405" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L406"> tx.rollback();</span>
}
<span class="nc" id="L408"> em.close();</span>
}
}
/**
* Completely deletes a tModel from the persistence layer.
* Administrative privilege required. All entities that reference this
* tModel will no longer be able to use the tModel if jUDDI Option
* Enforce referential Integrity is enabled.&lt;br&gt;
* Required permission, you must be am administrator
* {@link Property#JUDDI_ENFORCE_REFERENTIAL_INTEGRITY}. In addition,
* tModels that are owned by another node via replication cannot be
* deleted using this method and will throw an exception
*
*
* @param body
* @throws DispositionReportFaultMessage
*/
@Override
public void adminDeleteTModel(DeleteTModel body)
throws DispositionReportFaultMessage {
<span class="nc" id="L429"> long startTime = System.currentTimeMillis();</span>
<span class="nc" id="L430"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L431"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L433"> tx.begin();</span>
<span class="nc" id="L435"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="nc" id="L437"> new ValidatePublish(publisher).validateAdminDeleteTModel(em, body);</span>
//TODO if referiental integrity is turned on, check to see if this is referenced anywhere and prevent the delete
<span class="nc" id="L440"> List&lt;ChangeRecord&gt; changes = new ArrayList&lt;ChangeRecord&gt;();</span>
<span class="nc" id="L441"> List&lt;String&gt; entityKeyList = body.getTModelKey();</span>
<span class="nc bnc" id="L442" title="All 2 branches missed."> for (String entityKey : entityKeyList) {</span>
<span class="nc" id="L443"> org.apache.juddi.model.Tmodel obj = em.find(org.apache.juddi.model.Tmodel.class, entityKey);</span>
<span class="nc bnc" id="L445" title="All 2 branches missed."> if (obj == null) {</span>
<span class="nc" id="L446"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.invalidkey.TModelNotFound&quot;, entityKey));</span>
}
<span class="nc bnc" id="L448" title="All 2 branches missed."> if (!obj.getNodeId().equals(getNode())) {</span>
<span class="nc" id="L449"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.invalidkey.TModelNodeOwner&quot;, entityKey + &quot; this node &quot; + getNode() + &quot; owning node &quot; + obj.getNodeId()));</span>
}
<span class="nc" id="L451"> em.remove(obj);</span>
<span class="nc" id="L452"> changes.add(UDDIPublicationImpl.getChangeRecord_deleteTModelDelete(entityKey, getNode(), df));</span>
<span class="nc" id="L454"> }</span>
<span class="nc" id="L456"> tx.commit();</span>
<span class="nc bnc" id="L457" title="All 2 branches missed."> for (ChangeRecord cr : changes) {</span>
<span class="nc" id="L458"> ReplicationNotifier.enqueue(cr);</span>
<span class="nc" id="L459"> }</span>
<span class="nc" id="L460"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L461"> serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L463"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L464"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L465"> serviceCounter.update(JUDDIQuery.ADMIN_DELETE_TMODEL,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L467"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L469" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L470"> tx.rollback();</span>
}
<span class="nc" id="L472"> em.close();</span>
<span class="nc" id="L473"> }</span>
<span class="nc" id="L474"> }</span>
/**
* Delete's a client's subscription information. This is typically used
* for server to server subscriptions Administrative privilege required.
*
* @param body
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
public void deleteClientSubscriptionInfo(DeleteClientSubscriptionInfo body)
throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L486"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L487"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L488"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L490"> tx.begin();</span>
<span class="fc" id="L492"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L494"> new ValidateClientSubscriptionInfo(publisher).validateDeleteClientSubscriptionInfo(em, body);</span>
<span class="fc" id="L496"> List&lt;String&gt; entityKeyList = body.getSubscriptionKey();</span>
<span class="fc bfc" id="L497" title="All 2 branches covered."> for (String entityKey : entityKeyList) {</span>
<span class="fc" id="L498"> Object obj = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, entityKey);</span>
<span class="fc" id="L499"> em.remove(obj);</span>
<span class="fc" id="L500"> }</span>
<span class="fc" id="L502"> tx.commit();</span>
<span class="fc" id="L503"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L504"> serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L506"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L507"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L508"> serviceCounter.update(JUDDIQuery.DELETE_CLIENT_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L510"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L513" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L514"> tx.rollback();</span>
}
<span class="pc" id="L516"> em.close();</span>
<span class="fc" id="L517"> }</span>
<span class="fc" id="L519"> }</span>
/**
* Adds client subscription information. This effectively links a server
* to serverr subscription to clerk Administrative privilege required.
*
* @param body
* @return ClientSubscriptionInfoDetail
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(SaveClientSubscriptionInfo body)
throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L532"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L533"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L534"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L536"> tx.begin();</span>
<span class="fc" id="L538"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L540"> new ValidateClientSubscriptionInfo(publisher).validateSaveClientSubscriptionInfo(em, body);</span>
<span class="fc" id="L542"> ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();</span>
<span class="fc" id="L544"> List&lt;org.apache.juddi.api_v3.ClientSubscriptionInfo&gt; apiClientSubscriptionInfoList = body.getClientSubscriptionInfo();</span>
<span class="fc bfc" id="L545" title="All 2 branches covered."> for (org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo : apiClientSubscriptionInfoList) {</span>
<span class="fc" id="L547"> org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = new org.apache.juddi.model.ClientSubscriptionInfo();</span>
<span class="fc" id="L549"> MappingApiToModel.mapClientSubscriptionInfo(apiClientSubscriptionInfo, modelClientSubscriptionInfo);</span>
<span class="fc" id="L551"> Object existingUddiEntity = em.find(modelClientSubscriptionInfo.getClass(), modelClientSubscriptionInfo.getSubscriptionKey());</span>
<span class="pc bpc" id="L552" title="1 of 2 branches missed."> if (existingUddiEntity != null) {</span>
<span class="nc" id="L553"> em.remove(existingUddiEntity);</span>
}
<span class="fc" id="L556"> em.persist(modelClientSubscriptionInfo);</span>
<span class="fc" id="L558"> result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);</span>
<span class="fc" id="L559"> }</span>
<span class="fc" id="L561"> tx.commit();</span>
<span class="fc" id="L563"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L564"> serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L566"> return result;</span>
<span class="nc" id="L567"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L568"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L569"> serviceCounter.update(JUDDIQuery.SAVE_CLIENT_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L571"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L574" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L575"> tx.rollback();</span>
}
<span class="pc" id="L577"> em.close();</span>
}
}
/**
* Gets all client subscription information. This is used for server to
* server subscriptions Administrative privilege required.
*
* @param body
* @return ClientSubscriptionInfoDetail
* @throws DispositionReportFaultMessage
*/
@SuppressWarnings(&quot;unchecked&quot;)
public ClientSubscriptionInfoDetail getAllClientSubscriptionInfoDetail(GetAllClientSubscriptionInfoDetail body)
throws DispositionReportFaultMessage {
<span class="nc" id="L592"> long startTime = System.currentTimeMillis();</span>
<span class="nc" id="L593"> new ValidateClientSubscriptionInfo(null).validateGetAllClientSubscriptionDetail(body);</span>
<span class="nc" id="L595"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L596"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L598"> tx.begin();</span>
<span class="nc" id="L600"> this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="nc" id="L602"> ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();</span>
<span class="nc" id="L604"> Query query = em.createQuery(&quot;SELECT cs from ClientSubscriptionInfo as cs&quot;);</span>
<span class="nc" id="L605"> List&lt;org.apache.juddi.model.ClientSubscriptionInfo&gt; modelClientSubscriptionInfoList = query.getResultList();</span>
<span class="nc bnc" id="L607" title="All 2 branches missed."> for (ClientSubscriptionInfo modelClientSubscriptionInfo : modelClientSubscriptionInfoList) {</span>
<span class="nc" id="L609"> org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();</span>
<span class="nc" id="L611"> MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em);</span>
<span class="nc" id="L613"> result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);</span>
<span class="nc" id="L614"> }</span>
<span class="nc" id="L616"> tx.commit();</span>
<span class="nc" id="L617"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L618"> serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L620"> return result;</span>
<span class="nc" id="L621"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L622"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L623"> serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L625"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L628" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L629"> tx.rollback();</span>
}
<span class="nc" id="L631"> em.close();</span>
}
}
/**
* Retrieves clientSubscriptionKey(s) from the persistence layer. This
* method is specific to jUDDI. Used for server to server subscriptions
* Administrative privilege required.
*
* @param body
* @return ClientSubscriptionInfoDetail
* @throws DispositionReportFaultMessage
*/
public ClientSubscriptionInfoDetail getClientSubscriptionInfoDetail(GetClientSubscriptionInfoDetail body)
throws DispositionReportFaultMessage {
<span class="fc" id="L647"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L648"> new ValidateClientSubscriptionInfo(null).validateGetClientSubscriptionInfoDetail(body);</span>
<span class="fc" id="L650"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L651"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L653"> tx.begin();</span>
<span class="fc" id="L655"> this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L657"> ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();</span>
<span class="fc" id="L659"> List&lt;String&gt; subscriptionKeyList = body.getClientSubscriptionKey();</span>
<span class="fc bfc" id="L660" title="All 2 branches covered."> for (String subscriptionKey : subscriptionKeyList) {</span>
<span class="fc" id="L662"> org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;</span>
try {
<span class="fc" id="L665"> modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);</span>
<span class="nc" id="L666"> } catch (ClassCastException e) {</span>
<span class="fc" id="L667"> }</span>
<span class="fc bfc" id="L668" title="All 2 branches covered."> if (modelClientSubscriptionInfo == null) {</span>
<span class="fc" id="L669"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.invalidkey.SubscripKeyNotFound&quot;, subscriptionKey));</span>
}
<span class="fc" id="L672"> org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();</span>
<span class="fc" id="L674"> MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em);</span>
<span class="fc" id="L676"> result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);</span>
<span class="fc" id="L677"> }</span>
<span class="fc" id="L679"> tx.commit();</span>
<span class="fc" id="L681"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L682"> serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L684"> return result;</span>
<span class="fc" id="L685"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="fc" id="L686"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L687"> serviceCounter.update(JUDDIQuery.GET_CLIENT_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="fc" id="L689"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L691" title="2 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="pc" id="L692"> tx.rollback();</span>
}
<span class="fc" id="L694"> em.close();</span>
}
}
/**
* Saves clerk(s) to the persistence layer. This method is specific to
* jUDDI. This is used for server to server subscriptions and for future
* use with replication. Administrative privilege required.
*
* @param body
* @return ClerkDetail
* @throws DispositionReportFaultMessage
*/
@Override
public ClerkDetail saveClerk(SaveClerk body)
throws DispositionReportFaultMessage {
<span class="fc" id="L711"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L712"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L713"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L715"> tx.begin();</span>
<span class="fc" id="L717"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L719"> new ValidateClerk(publisher).validateSaveClerk(em, body);</span>
<span class="fc" id="L721"> ClerkDetail result = new ClerkDetail();</span>
<span class="fc" id="L723"> List&lt;org.apache.juddi.api_v3.Clerk&gt; apiClerkList = body.getClerk();;</span>
<span class="fc bfc" id="L724" title="All 2 branches covered."> for (org.apache.juddi.api_v3.Clerk apiClerk : apiClerkList) {</span>
<span class="fc" id="L726"> org.apache.juddi.model.Clerk modelClerk = new org.apache.juddi.model.Clerk();</span>
<span class="fc" id="L728"> MappingApiToModel.mapClerk(apiClerk, modelClerk);</span>
<span class="fc" id="L729"> org.apache.juddi.model.Node node2 = em.find(org.apache.juddi.model.Node.class, apiClerk.getNode().getName());</span>
<span class="fc bfc" id="L730" title="All 2 branches covered."> if (node2 == null) {</span>
//it doesn't exist yet
<span class="fc" id="L732"> node2 = new Node();</span>
<span class="fc" id="L733"> MappingApiToModel.mapNode(apiClerk.getNode(), node2);</span>
<span class="fc" id="L734"> em.persist(node2);</span>
}
<span class="fc" id="L737"> modelClerk.setNode(node2.getName());</span>
<span class="fc" id="L738"> Object existingUddiEntity = em.find(modelClerk.getClass(), modelClerk.getClerkName());</span>
<span class="pc bpc" id="L739" title="1 of 2 branches missed."> if (existingUddiEntity != null) {</span>
<span class="nc" id="L741"> em.merge(modelClerk);</span>
} else {
<span class="fc" id="L743"> em.persist(modelClerk);</span>
}
<span class="fc" id="L746"> result.getClerk().add(apiClerk);</span>
<span class="fc" id="L747"> }</span>
<span class="fc" id="L749"> tx.commit();</span>
<span class="fc" id="L750"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L751"> serviceCounter.update(JUDDIQuery.SAVE_CLERK,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L753"> return result;</span>
<span class="nc" id="L754"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L755"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L756"> serviceCounter.update(JUDDIQuery.SAVE_CLERK,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L758"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L761" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L762"> tx.rollback();</span>
}
<span class="pc" id="L764"> em.close();</span>
}
}
/**
* Saves nodes(s) to the persistence layer. This method is specific to
* jUDDI. Administrative privilege required. This is used for server to
* server subscriptions and for future use with replication.
* Administrative privilege required.
*
* @param body
* @return NodeDetail
* @throws DispositionReportFaultMessage
*/
public NodeDetail saveNode(SaveNode body)
throws DispositionReportFaultMessage {
<span class="fc" id="L780"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L781"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L782"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L784"> tx.begin();</span>
<span class="fc" id="L786"> UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="fc" id="L788"> new ValidateNode(publisher).validateSaveNode(em, body);</span>
<span class="fc" id="L790"> NodeDetail result = new NodeDetail();</span>
<span class="fc" id="L792"> List&lt;org.apache.juddi.api_v3.Node&gt; apiNodeList = body.getNode();</span>
<span class="fc bfc" id="L793" title="All 2 branches covered."> for (org.apache.juddi.api_v3.Node apiNode : apiNodeList) {</span>
<span class="fc" id="L795"> org.apache.juddi.model.Node modelNode = new org.apache.juddi.model.Node();</span>
<span class="fc" id="L797"> MappingApiToModel.mapNode(apiNode, modelNode);</span>
<span class="fc" id="L799"> Object existingUddiEntity = em.find(modelNode.getClass(), modelNode.getName());</span>
<span class="pc bpc" id="L800" title="1 of 2 branches missed."> if (existingUddiEntity != null) {</span>
<span class="nc" id="L801"> em.merge(modelNode);</span>
} else {
<span class="fc" id="L803"> em.persist(modelNode);</span>
}
<span class="fc" id="L806"> result.getNode().add(apiNode);</span>
<span class="fc" id="L807"> }</span>
<span class="fc" id="L809"> tx.commit();</span>
<span class="fc" id="L810"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L811"> serviceCounter.update(JUDDIQuery.SAVE_NODE,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L813"> return result;</span>
<span class="fc" id="L814"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="fc" id="L815"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L816"> serviceCounter.update(JUDDIQuery.SAVE_NODE,</span>
QueryStatus.FAILED, procTime);
<span class="fc" id="L818"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L821" title="2 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="pc" id="L822"> tx.rollback();</span>
}
<span class="fc" id="L824"> em.close();</span>
}
}
/**
* Instructs the registry to perform a synchronous subscription
* response.
*
* @param body
* @return SyncSubscriptionDetail
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
@SuppressWarnings(&quot;unchecked&quot;)
@Override
public SyncSubscriptionDetail invokeSyncSubscription(
SyncSubscription body) throws DispositionReportFaultMessage,
RemoteException {
<span class="nc" id="L842"> long startTime = System.currentTimeMillis();</span>
//validate
<span class="nc" id="L844"> SyncSubscriptionDetail syncSubscriptionDetail = new SyncSubscriptionDetail();</span>
<span class="nc" id="L846"> Map&lt;String, org.apache.juddi.api_v3.ClientSubscriptionInfo&gt; clientSubscriptionInfoMap</span>
= new HashMap&lt;String, org.apache.juddi.api_v3.ClientSubscriptionInfo&gt;();
//find the clerks to go with these subscriptions
<span class="nc" id="L849"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L850"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L852"> tx.begin();</span>
<span class="nc" id="L854"> this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="nc bnc" id="L855" title="All 2 branches missed."> for (GetSubscriptionResults getSubscriptionResult : body.getGetSubscriptionResultsList()) {</span>
<span class="nc" id="L856"> String subscriptionKey = getSubscriptionResult.getSubscriptionKey();</span>
<span class="nc" id="L857"> org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;</span>
try {
<span class="nc" id="L860"> modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);</span>
<span class="nc" id="L861"> } catch (ClassCastException e) {</span>
<span class="nc" id="L862"> }</span>
<span class="nc bnc" id="L863" title="All 2 branches missed."> if (modelClientSubscriptionInfo == null) {</span>
<span class="nc" id="L864"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.invalidkey.SubscripKeyNotFound&quot;, subscriptionKey));</span>
}
<span class="nc" id="L866"> org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();</span>
<span class="nc" id="L867"> MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo, em);</span>
<span class="nc" id="L868"> clientSubscriptionInfoMap.put(apiClientSubscriptionInfo.getSubscriptionKey(), apiClientSubscriptionInfo);</span>
<span class="nc" id="L869"> }</span>
<span class="nc" id="L871"> tx.commit();</span>
<span class="nc" id="L872"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L873"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L874"> serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L876"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L879" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L880"> tx.rollback();</span>
}
<span class="nc" id="L882"> em.close();</span>
<span class="nc" id="L883"> }</span>
<span class="nc bnc" id="L885" title="All 2 branches missed."> for (GetSubscriptionResults getSubscriptionResult : body.getGetSubscriptionResultsList()) {</span>
try {
<span class="nc" id="L887"> String subscriptionKey = getSubscriptionResult.getSubscriptionKey();</span>
<span class="nc" id="L888"> Clerk fromClerk = clientSubscriptionInfoMap.get(subscriptionKey).getFromClerk();</span>
<span class="nc" id="L889"> Clerk toClerk = clientSubscriptionInfoMap.get(subscriptionKey).getToClerk();</span>
<span class="nc" id="L890"> String clazz = fromClerk.getNode().getProxyTransport();</span>
<span class="nc" id="L891"> Class&lt;?&gt; transportClass = ClassUtil.forName(clazz, this.getClass());</span>
<span class="nc" id="L892"> Transport transport = (Transport) transportClass.getConstructor(String.class</span>
<span class="nc" id="L893"> ).newInstance(fromClerk.getNode().getName());</span>
<span class="nc" id="L894"> UDDISubscriptionPortType subscriptionService = transport.getUDDISubscriptionService(fromClerk.getNode().getSubscriptionUrl());</span>
<span class="nc" id="L895"> SubscriptionResultsList list = subscriptionService.getSubscriptionResults(getSubscriptionResult);</span>
<span class="nc" id="L897"> JAXBContext context = JAXBContext.newInstance(list.getClass());</span>
<span class="nc" id="L898"> Marshaller marshaller = context.createMarshaller();</span>
<span class="nc" id="L899"> StringWriter sw = new StringWriter();</span>
<span class="nc" id="L901"> marshaller.marshal(list, sw);</span>
<span class="nc" id="L903"> log.info(</span>
<span class="nc" id="L904"> &quot;Notification received by UDDISubscriptionListenerService : &quot; + sw.toString());</span>
<span class="nc" id="L906"> NotificationList&lt;String&gt; nl = NotificationList.getInstance();</span>
<span class="nc" id="L908"> nl.getNotifications()</span>
<span class="nc" id="L909"> .add(sw.toString());</span>
//update the registry with the notification list.
<span class="nc" id="L912"> XRegisterHelper.handle(fromClerk, toClerk, list);</span>
<span class="nc" id="L914"> syncSubscriptionDetail.getSubscriptionResultsList()</span>
<span class="nc" id="L915"> .add(list);</span>
<span class="nc" id="L916"> } catch (Exception ce) {</span>
<span class="nc" id="L917"> log.error(ce.getMessage(), ce);</span>
<span class="nc" id="L918"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L919"> serviceCounter.update(JUDDIQuery.SAVE_NODE,</span>
QueryStatus.FAILED, procTime);
<span class="nc bnc" id="L921" title="All 2 branches missed."> if (ce instanceof DispositionReportFaultMessage) {</span>
<span class="nc" id="L922"> throw (DispositionReportFaultMessage) ce;</span>
}
<span class="nc bnc" id="L924" title="All 2 branches missed."> if (ce instanceof RemoteException) {</span>
<span class="nc" id="L925"> DispositionReportFaultMessage x = new FatalErrorException(new ErrorMessage(&quot;errors.subscriptionnotifier.client&quot;, ce.getMessage()));</span>
<span class="nc" id="L926"> throw x;</span>
}
<span class="nc" id="L928"> }</span>
<span class="nc" id="L929"> }</span>
//for now sending a clean object back
<span class="nc" id="L932"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L933"> serviceCounter.update(JUDDIQuery.INVOKE_SYNCSUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L935"> return syncSubscriptionDetail;</span>
}
@Override
public NodeList getAllNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L940"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L941"> NodeList r = new NodeList();</span>
<span class="fc" id="L943"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L944"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L946"> tx.begin();</span>
<span class="fc" id="L948"> UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);</span>
<span class="fc" id="L950"> new ValidatePublish(publisher).validateGetAllNodes();</span>
<span class="fc" id="L952"> StringBuilder sql = new StringBuilder();</span>
<span class="fc" id="L953"> sql.append(&quot;select distinct c from Node c &quot;);</span>
<span class="fc" id="L954"> sql.toString();</span>
<span class="fc" id="L955"> Query qry = em.createQuery(sql.toString());</span>
<span class="fc" id="L956"> List&lt;org.apache.juddi.model.Node&gt; resultList = qry.getResultList();</span>
<span class="fc bfc" id="L957" title="All 2 branches covered."> for (int i = 0; i &lt; resultList.size(); i++) {</span>
<span class="fc" id="L958"> org.apache.juddi.api_v3.Node api = new org.apache.juddi.api_v3.Node();</span>
<span class="fc" id="L959"> MappingModelToApi.mapNode(resultList.get(i), api);</span>
<span class="fc" id="L960"> r.getNode().add(api);</span>
}
<span class="fc" id="L964"> tx.commit();</span>
<span class="fc" id="L965"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L966"> serviceCounter.update(JUDDIQuery.GET_ALL_NODES,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L968"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L969"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L970"> serviceCounter.update(JUDDIQuery.GET_ALL_NODES,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L972"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L974" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L975"> tx.rollback();</span>
}
<span class="pc" id="L977"> em.close();</span>
<span class="fc" id="L978"> }</span>
<span class="fc" id="L980"> return r;</span>
}
@Override
public ClerkList getAllClerks(String authInfo) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L985"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L986"> ClerkList ret = new ClerkList();</span>
<span class="fc" id="L987"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L988"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L990"> tx.begin();</span>
<span class="fc" id="L992"> UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);</span>
<span class="fc" id="L994"> new ValidatePublish(publisher).validateGetAllNodes();</span>
<span class="fc" id="L996"> StringBuilder sql = new StringBuilder();</span>
<span class="fc" id="L997"> sql.append(&quot;select distinct c from Clerk c &quot;);</span>
<span class="fc" id="L998"> sql.toString();</span>
<span class="fc" id="L999"> Query qry = em.createQuery(sql.toString());</span>
<span class="fc" id="L1000"> List&lt;org.apache.juddi.model.Clerk&gt; resultList = qry.getResultList();</span>
<span class="fc bfc" id="L1001" title="All 2 branches covered."> for (int i = 0; i &lt; resultList.size(); i++) {</span>
<span class="fc" id="L1002"> Clerk api = new Clerk();</span>
<span class="fc" id="L1003"> MappingModelToApi.mapClerk(resultList.get(i), api, em);</span>
<span class="fc" id="L1004"> ret.getClerk().add(api);</span>
}
<span class="fc" id="L1007"> tx.commit();</span>
<span class="fc" id="L1008"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1009"> serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1011"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1012"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1013"> serviceCounter.update(JUDDIQuery.GET_ALL_CLERKS,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1015"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1018" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1019"> tx.rollback();</span>
}
<span class="pc" id="L1021"> em.close();</span>
<span class="fc" id="L1022"> }</span>
<span class="fc" id="L1024"> return ret;</span>
}
@Override
public void deleteNode(DeleteNode req) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1030"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1031"> boolean found = false;</span>
<span class="fc" id="L1032"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1033"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1035"> tx.begin();</span>
//TODO if the given node is in the replication config, prevent deletion
<span class="fc" id="L1037"> UddiEntityPublisher publisher = this.getEntityPublisher(em, req.getAuthInfo());</span>
<span class="fc" id="L1038"> new ValidatePublish(publisher).validateDeleteNode(em, req, getReplicationNodes(req.getAuthInfo()));</span>
<span class="fc" id="L1040"> org.apache.juddi.model.Node existingUddiEntity = em.find(org.apache.juddi.model.Node.class, req.getNodeID());</span>
<span class="pc bpc" id="L1041" title="1 of 2 branches missed."> if (existingUddiEntity != null) {</span>
//cascade delete all clerks tied to this node, confirm that it works
<span class="fc" id="L1044"> Query createQuery = em.createQuery(&quot;delete from Clerk c where c.node = :nodename&quot;);</span>
<span class="fc" id="L1045"> createQuery.setParameter(&quot;nodename&quot;, req.getNodeID());</span>
<span class="fc" id="L1046"> createQuery.executeUpdate();</span>
<span class="fc" id="L1048"> em.remove(existingUddiEntity);</span>
<span class="fc" id="L1049"> found = true;</span>
<span class="fc" id="L1050"> } else {</span>
<span class="nc" id="L1051"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.deleteNode.NotFound&quot;));</span>
}
<span class="fc" id="L1054"> tx.commit();</span>
<span class="fc" id="L1055"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1056"> serviceCounter.update(JUDDIQuery.DELETE_NODE,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1058"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1059"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1060"> serviceCounter.update(JUDDIQuery.DELETE_NODE,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1062"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1065" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1066"> tx.rollback();</span>
}
<span class="pc" id="L1068"> em.close();</span>
<span class="fc" id="L1069"> }</span>
<span class="pc bpc" id="L1071" title="1 of 2 branches missed."> if (!found) {</span>
<span class="nc" id="L1073"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.deleteNode.NotFound&quot;, req.getNodeID()));</span>
}
<span class="fc" id="L1075"> }</span>
@Override
public void deleteClerk(DeleteClerk req) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1079"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1080"> boolean found = false;</span>
<span class="fc" id="L1081"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1082"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1084"> tx.begin();</span>
<span class="fc" id="L1086"> UddiEntityPublisher publisher = this.getEntityPublisher(em, req.getAuthInfo());</span>
<span class="fc" id="L1088"> new ValidatePublish(publisher).validateDeleteClerk(em, req);</span>
<span class="fc" id="L1090"> org.apache.juddi.model.Clerk existingUddiEntity = em.find(org.apache.juddi.model.Clerk.class, req.getClerkID());</span>
<span class="pc bpc" id="L1091" title="1 of 2 branches missed."> if (existingUddiEntity</span>
!= null) {
<span class="fc" id="L1093"> em.remove(existingUddiEntity);</span>
<span class="fc" id="L1094"> found = true;</span>
}
<span class="fc" id="L1097"> tx.commit();</span>
<span class="fc" id="L1098"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1099"> serviceCounter.update(JUDDIQuery.DELETE_CLERK,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1101"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1102"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1103"> serviceCounter.update(JUDDIQuery.DELETE_CLERK,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1105"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1108" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1109"> tx.rollback();</span>
}
<span class="pc" id="L1111"> em.close();</span>
<span class="fc" id="L1112"> }</span>
<span class="pc bpc" id="L1114" title="1 of 2 branches missed."> if (!found) {</span>
<span class="nc" id="L1115"> throw new InvalidKeyPassedException(new ErrorMessage(&quot;errors.deleteClerk.NotFound&quot;));</span>
}
<span class="fc" id="L1118"> }</span>
/*
* enables tmodel owners to setup valid values for tmodel instance infos
* to use?
*
* @param authInfo
* @param values
* @return
* @throws DispositionReportFaultMessage
@Override
public DispositionReport setAllValidValues(String authInfo, List&lt;ValidValues&gt; values) throws DispositionReportFaultMessage, RemoteException {
throw new UnsupportedOperationException(&quot;Not supported yet.&quot;); //To change body of generated methods, choose Tools | Templates.
/* EntityManager em = PersistenceManager.getEntityManager();
UddiEntityPublisher entityPublisher = getEntityPublisher(em, authInfo);
new ValidateValueSetValidation(entityPublisher).validateSetAllValidValues(values);
EntityTransaction tx = em.getTransaction();
try {
// is this tModel used anywhere?, if so, validate all instances against the new rule?
tx.begin();
//each tmodel/value set
for (int i = 0; i &lt; values.size(); i++) {
//remove any existing references to the key
ValueSetValues find = em.find(ValueSetValues.class, values.get(i).getTModekKey());
if (find != null) {
find.setValidatorClass(values.get(i).getValidationClass());
em.persist(find);
} else {
org.apache.juddi.model.ValueSetValues vv = new ValueSetValues();
vv.setTModelKey(values.get(i).getTModekKey());
vv.setValidatorClass(values.get(i).getValidationClass());
em.persist(vv);
}
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
em.close();
}
DispositionReport r = new DispositionReport();
r.getResult().add(new Result());
return r;
}*/
@Override
public void adminDeleteSubscription(String authInfo, List&lt;String&gt; subscriptionKey) throws DispositionReportFaultMessage, RemoteException {
<span class="nc" id="L1174"> long startTime = System.currentTimeMillis();</span>
<span class="nc" id="L1176"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L1177"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L1179"> tx.begin();</span>
<span class="nc" id="L1181"> UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);</span>
<span class="nc bnc" id="L1182" title="All 2 branches missed."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="nc" id="L1183"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
//new ValidateSubscription(publisher).validateDeleteSubscription(em, body);
<span class="nc" id="L1186"> List&lt;TemporaryMailContainer&gt; notifications = new ArrayList&lt;TemporaryMailContainer&gt;();</span>
<span class="nc" id="L1187"> List&lt;String&gt; subscriptionKeyList = subscriptionKey;</span>
<span class="nc bnc" id="L1188" title="All 2 branches missed."> for (String key : subscriptionKeyList) {</span>
<span class="nc bnc" id="L1189" title="All 4 branches missed."> if (key != null &amp;&amp; key.length() &gt; 0) {</span>
<span class="nc" id="L1190"> org.apache.juddi.model.Subscription obj = em.find(org.apache.juddi.model.Subscription.class, key);</span>
<span class="nc" id="L1191"> Publisher publisher = em.find(Publisher.class, obj.getAuthorizedName());</span>
<span class="nc" id="L1192"> notifications.add(new TemporaryMailContainer(obj, publisher, (Publisher) requestor));</span>
<span class="nc" id="L1193"> em.remove(obj);</span>
}
<span class="nc" id="L1195"> }</span>
<span class="nc" id="L1197"> tx.commit();</span>
<span class="nc bnc" id="L1198" title="All 2 branches missed."> for (TemporaryMailContainer t : notifications) {</span>
<span class="nc" id="L1199"> USERFRIENDLYSMTPNotifier.notifySubscriptionDeleted(t);</span>
<span class="nc" id="L1200"> }</span>
<span class="nc" id="L1201"> notifications.clear();</span>
<span class="nc" id="L1202"> notifications = null;</span>
<span class="nc" id="L1203"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1204"> serviceCounter.update(JUDDIQuery.ADMIN_DELETE_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1206"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1207"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1208"> serviceCounter.update(JUDDIQuery.ADMIN_DELETE_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1210"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L1212" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1213"> tx.rollback();</span>
}
<span class="nc" id="L1215"> em.close();</span>
<span class="nc" id="L1216"> }</span>
<span class="nc" id="L1218"> }</span>
@Override
public DispositionReport adminSaveBusiness(String authInfo, List&lt;AdminSaveBusinessWrapper&gt; values) throws DispositionReportFaultMessage, RemoteException {
<span class="nc" id="L1222"> long startTime = System.currentTimeMillis();</span>
<span class="nc" id="L1223"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L1224"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L1226"> tx.begin();</span>
<span class="nc" id="L1227"> UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);</span>
<span class="nc bnc" id="L1228" title="All 2 branches missed."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="nc" id="L1229"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="nc bnc" id="L1232" title="All 2 branches missed."> for (int i = 0; i &lt; values.size(); i++) {</span>
//impersonate the user
<span class="nc" id="L1234"> AuthToken authToken = sec.getAuthToken(values.get(i).getPublisherID());</span>
<span class="nc" id="L1236"> SaveBusiness stm = new SaveBusiness();</span>
<span class="nc" id="L1238"> stm.setAuthInfo(authToken.getAuthInfo());</span>
<span class="nc" id="L1239"> stm.getBusinessEntity().addAll(values.get(i).getBusinessEntity());</span>
<span class="nc" id="L1240"> pub.saveBusiness(stm);</span>
}
<span class="nc" id="L1243"> tx.commit();</span>
<span class="nc" id="L1244"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1245"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_BUSINESS,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1247"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1248"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1249"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_BUSINESS,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1251"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L1254" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1255"> tx.rollback();</span>
}
<span class="nc" id="L1257"> em.close();</span>
<span class="nc" id="L1258"> }</span>
<span class="nc" id="L1260"> DispositionReport r = new DispositionReport();</span>
<span class="nc" id="L1261"> return r;</span>
}
@Override
public DispositionReport adminSaveTModel(String authInfo, List&lt;AdminSaveTModelWrapper&gt; values) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1267"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1268"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1269"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1271"> tx.begin();</span>
<span class="fc" id="L1272"> UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);</span>
<span class="pc bpc" id="L1273" title="1 of 2 branches missed."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="nc" id="L1274"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="pc bpc" id="L1277" title="1 of 2 branches missed."> for (int i = 0; i &lt; values.size(); i++) {</span>
//impersonate the user
<span class="nc" id="L1279"> AuthToken authToken = sec.getAuthToken(values.get(i).getPublisherID());</span>
<span class="nc" id="L1280"> SaveTModel stm = new SaveTModel();</span>
<span class="nc" id="L1281"> stm.setAuthInfo(authToken.getAuthInfo());</span>
<span class="nc" id="L1282"> stm.getTModel().addAll(values.get(i).getTModel());</span>
<span class="nc" id="L1283"> pub.saveTModel(stm);</span>
}
<span class="fc" id="L1285"> tx.commit();</span>
<span class="fc" id="L1286"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1287"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1289"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1290"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1291"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_TMODEL,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1293"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1296" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1297"> tx.rollback();</span>
}
<span class="pc" id="L1299"> em.close();</span>
<span class="fc" id="L1300"> }</span>
<span class="fc" id="L1302"> DispositionReport r = new DispositionReport();</span>
<span class="fc" id="L1303"> return r;</span>
}
@Override
public List&lt;SubscriptionWrapper&gt; getAllClientSubscriptionInfo(String authInfo) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1308"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1310"> List&lt;SubscriptionWrapper&gt; r = new ArrayList&lt;SubscriptionWrapper&gt;();</span>
<span class="fc" id="L1312"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1313"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1315"> tx.begin();</span>
<span class="fc" id="L1317"> UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);</span>
<span class="pc bpc" id="L1318" title="1 of 2 branches missed."> if (!((Publisher) publisher).isAdmin()) {</span>
<span class="nc" id="L1319"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="fc" id="L1322"> StringBuilder sql = new StringBuilder();</span>
<span class="fc" id="L1323"> sql.append(&quot;select distinct c from Subscription c &quot;);</span>
<span class="fc" id="L1324"> Query qry = em.createQuery(sql.toString());</span>
<span class="fc" id="L1325"> List&lt;org.apache.juddi.model.Subscription&gt; resultList = qry.getResultList();</span>
<span class="pc bpc" id="L1326" title="1 of 2 branches missed."> for (int i = 0; i &lt; resultList.size(); i++) {</span>
<span class="nc" id="L1327"> Subscription sub = new Subscription();</span>
<span class="nc" id="L1328"> MappingModelToApi.mapSubscription(resultList.get(i), sub);</span>
<span class="nc" id="L1329"> SubscriptionWrapper x = new SubscriptionWrapper();</span>
<span class="nc" id="L1330"> x.getSubscription().add(sub);</span>
<span class="nc" id="L1331"> x.setPublisherIdOrUsername(resultList.get(i).getAuthorizedName());</span>
<span class="nc" id="L1332"> r.add(x);</span>
}
<span class="fc" id="L1335"> tx.commit();</span>
<span class="fc" id="L1336"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1337"> serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1339"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1340"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1341"> serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1343"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1345" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1346"> tx.rollback();</span>
}
<span class="pc" id="L1348"> em.close();</span>
<span class="fc" id="L1349"> }</span>
<span class="fc" id="L1351"> return r;</span>
}
@Override
public synchronized DispositionReport setReplicationNodes(String authInfo, org.uddi.repl_v3.ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1356"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1358"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1359"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1361"> tx.begin();</span>
<span class="fc" id="L1363"> org.uddi.repl_v3.ReplicationConfiguration oldConfig = null;</span>
<span class="fc" id="L1364"> UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);</span>
<span class="pc bpc" id="L1365" title="1 of 2 branches missed."> if (!((Publisher) publisher).isAdmin()) {</span>
<span class="nc" id="L1366"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="fc" id="L1368"> new ValidateReplication(publisher).validateSetReplicationNodes(replicationConfiguration, em, getNode(), AppConfig.getConfiguration());</span>
<span class="fc" id="L1370"> org.apache.juddi.model.ReplicationConfiguration model = null;</span>
<span class="fc" id="L1371"> logger.info(publisher.getAuthorizedName() + &quot; is setting the replication config from &quot; + getRequestorsIPAddress());// + &quot; &quot; + sw.toString());</span>
try {
<span class="fc" id="L1373"> model = (ReplicationConfiguration) em.createQuery(&quot;select c FROM ReplicationConfiguration c order by c.serialNumber desc&quot;).getSingleResult();</span>
<span class="fc" id="L1374"> } catch (Exception ex) {</span>
<span class="fc" id="L1375"> }</span>
<span class="fc" id="L1376"> SimpleDateFormat sdf = new SimpleDateFormat(&quot;yyyyMMddkkmmZ&quot;);</span>
<span class="fc bfc" id="L1377" title="All 2 branches covered."> if (model == null) {</span>
//this is a brand new configuration and we didn't have one before
<span class="fc" id="L1379"> model = new ReplicationConfiguration();</span>
<span class="fc" id="L1380"> MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model, em);</span>
<span class="fc" id="L1381"> model.setSerialNumber(System.currentTimeMillis());</span>
<span class="fc" id="L1382"> model.setTimeOfConfigurationUpdate(sdf.format(new Date()));</span>
<span class="fc" id="L1383"> em.persist(model);</span>
//if (newReplicationNode(model)){
//tell the replication notifier to start transfering with
//the first change record
//}
} else {
//a config exists, remove it, add the new one
//spec doesn't appear to mention if recording a change history on the config is required
//assuming we'll keep it for now, might be useful later.
//em.remove(model);
<span class="fc" id="L1394"> oldConfig = new org.uddi.repl_v3.ReplicationConfiguration();</span>
<span class="fc" id="L1395"> MappingModelToApi.mapReplicationConfiguration(model, oldConfig);</span>
<span class="fc" id="L1397"> ReplicationConfiguration model2 = new ReplicationConfiguration();</span>
<span class="fc" id="L1398"> MappingApiToModel.mapReplicationConfiguration(replicationConfiguration, model2, em);</span>
<span class="fc" id="L1399"> model2.setSerialNumber(System.currentTimeMillis());</span>
<span class="fc" id="L1401"> model2.setTimeOfConfigurationUpdate(sdf.format(new Date()));</span>
<span class="fc" id="L1402"> em.persist(model2);</span>
}
<span class="fc" id="L1406"> tx.commit();</span>
<span class="fc" id="L1407"> UDDIReplicationImpl.notifyConfigurationChange(oldConfig, replicationConfiguration, this);</span>
<span class="fc" id="L1408"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1409"> serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1411"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1412"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1413"> serviceCounter.update(JUDDIQuery.SET_REPLICATION_NODES,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1415"> throw drfm;</span>
<span class="nc" id="L1416"> } catch (Exception ex) {</span>
<span class="nc" id="L1417"> logger.error(ex, ex);</span>
<span class="nc" id="L1418"> throw new FatalErrorException(new ErrorMessage(&quot;E_fatalError&quot;, ex.getMessage()));</span>
} finally {
<span class="pc bpc" id="L1420" title="3 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1421"> tx.rollback();</span>
}
<span class="pc" id="L1423"> em.close();</span>
<span class="fc" id="L1424"> }</span>
<span class="fc" id="L1425"> DispositionReport d = new DispositionReport();</span>
<span class="fc" id="L1426"> Result res = new Result();</span>
<span class="fc" id="L1428"> d.getResult().add(res);</span>
<span class="fc" id="L1429"> return d;</span>
}
@Override
public synchronized org.uddi.repl_v3.ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1434"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1435"> org.uddi.repl_v3.ReplicationConfiguration r = new org.uddi.repl_v3.ReplicationConfiguration();</span>
<span class="fc" id="L1437"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1438"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1440"> tx.begin();</span>
<span class="fc" id="L1442"> UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);</span>
<span class="pc bpc" id="L1443" title="1 of 2 branches missed."> if (!((Publisher) publisher).isAdmin()) {</span>
<span class="nc" id="L1444"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="fc" id="L1447"> StringBuilder sql = new StringBuilder();</span>
<span class="fc" id="L1448"> sql.append(&quot;select c from ReplicationConfiguration c order by c.serialNumber desc&quot;);</span>
//sql.toString();
<span class="fc" id="L1450"> Query qry = em.createQuery(sql.toString());</span>
<span class="fc" id="L1451"> qry.setMaxResults(1);</span>
<span class="fc" id="L1453"> org.apache.juddi.model.ReplicationConfiguration resultList = (org.apache.juddi.model.ReplicationConfiguration) qry.getSingleResult();</span>
<span class="fc" id="L1454"> MappingModelToApi.mapReplicationConfiguration(resultList, r);</span>
<span class="fc" id="L1455"> tx.commit();</span>
<span class="fc" id="L1456"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1457"> serviceCounter.update(JUDDIQuery.GET_ALL_NODES,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1459"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1460"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1461"> serviceCounter.update(JUDDIQuery.GET_ALL_NODES,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1463"> throw drfm;</span>
<span class="nc" id="L1464"> } catch (Exception ex) {</span>
//possible that there is no config to return
<span class="nc" id="L1466"> logger.debug(&quot;Error caught, is there a replication config is avaiable? Returning a default config (no replication): &quot;, ex);</span>
<span class="nc" id="L1468"> r.setCommunicationGraph(new CommunicationGraph());</span>
<span class="nc" id="L1469"> Operator op = new Operator();</span>
<span class="nc" id="L1470"> op.setOperatorNodeID(getNode());</span>
<span class="nc" id="L1471"> op.setSoapReplicationURL(baseUrlSSL + &quot;replication/services/replication&quot;);</span>
<span class="nc" id="L1473"> op.getContact().add(new Contact());</span>
<span class="nc" id="L1474"> op.getContact().get(0).getPersonName().add(new PersonName(&quot;Unknown&quot;, null));</span>
<span class="nc" id="L1475"> op.setOperatorStatus(OperatorStatusType.NORMAL);</span>
<span class="nc" id="L1477"> r.getOperator().add(op);</span>
<span class="nc" id="L1478"> r.getCommunicationGraph().getNode().add(getNode());</span>
<span class="nc" id="L1479"> r.getCommunicationGraph().getControlledMessage().add(&quot;*&quot;);</span>
<span class="nc" id="L1480"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1481"> r.setSerialNumber(0);</span>
<span class="nc" id="L1482"> SimpleDateFormat sdf = new SimpleDateFormat(&quot;yyyyMMddkkmmZ&quot;);</span>
<span class="nc" id="L1483"> r.setTimeOfConfigurationUpdate(sdf.format(new Date()));</span>
<span class="nc" id="L1484"> r.setRegistryContact(new org.uddi.repl_v3.ReplicationConfiguration.RegistryContact());</span>
try {
// pull from root business
<span class="nc bnc" id="L1487" title="All 2 branches missed."> if (!tx.isActive()) {</span>
<span class="nc" id="L1488"> tx = em.getTransaction();</span>
}
<span class="nc" id="L1491"> BusinessEntity rootbiz = em.find(BusinessEntity.class, AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ROOT_BUSINESS));</span>
<span class="nc bnc" id="L1492" title="All 2 branches missed."> if (rootbiz != null) {</span>
<span class="nc bnc" id="L1494" title="All 2 branches missed."> for (int i = 0; i &lt; rootbiz.getContacts().size(); i++) {</span>
<span class="nc" id="L1495"> Contact c = new Contact();</span>
<span class="nc" id="L1496"> MappingModelToApi.mapContact(rootbiz.getContacts().get(i), c);</span>
<span class="nc" id="L1497"> r.getRegistryContact().setContact(c);</span>
<span class="nc" id="L1498"> break;</span>
}
}
<span class="nc" id="L1502"> tx.rollback();</span>
<span class="nc" id="L1504"> } catch (Exception ex1) {</span>
<span class="nc" id="L1505"> logger.warn(&quot;unexpected error&quot;, ex1);</span>
<span class="nc" id="L1506"> }</span>
<span class="nc bnc" id="L1507" title="All 2 branches missed."> if (r.getRegistryContact().getContact() == null) {</span>
<span class="nc" id="L1508"> r.getRegistryContact().setContact(new Contact());</span>
<span class="nc" id="L1509"> r.getRegistryContact().getContact().getPersonName().add(new PersonName(&quot;Unknown&quot;, null));</span>
}
<span class="nc" id="L1511"> serviceCounter.update(JUDDIQuery.GET_REPLICATION_NODES,</span>
QueryStatus.SUCCESS, procTime);
} finally {
<span class="pc bpc" id="L1515" title="5 of 6 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1516"> tx.rollback();</span>
}
<span class="pc" id="L1518"> em.close();</span>
<span class="pc" id="L1519"> }</span>
<span class="fc" id="L1521"> r.setMaximumTimeToGetChanges(BigInteger.ONE);</span>
<span class="fc" id="L1522"> r.setMaximumTimeToSyncRegistry(BigInteger.ONE);</span>
//StringWriter sw = new StringWriter();
//JAXB.marshal(r, sw);
//logger.info(&quot;dumping returned replication config &quot; + sw.toString());
<span class="fc" id="L1526"> return r;</span>
}
<span class="fc" id="L1529"> static UDDISubscriptionImpl sub = new UDDISubscriptionImpl();</span>
<span class="fc" id="L1530"> static UDDISecurityImpl sec = new UDDISecurityImpl();</span>
<span class="fc" id="L1531"> static UDDIPublicationImpl pub = new UDDIPublicationImpl();</span>
@Override
public void adminSaveSubscription(String authInfo, String publisherOrUsername, Holder&lt;List&lt;Subscription&gt;&gt; subscriptions) throws DispositionReportFaultMessage {
<span class="fc" id="L1535"> long startTime = System.currentTimeMillis();</span>
<span class="fc" id="L1536"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1537"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1539"> tx.begin();</span>
<span class="fc" id="L1540"> UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo);</span>
<span class="fc bfc" id="L1541" title="All 2 branches covered."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="fc" id="L1542"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
//impersonate the user
<span class="fc" id="L1545"> AuthToken authToken = sec.getAuthToken(publisherOrUsername);</span>
<span class="fc" id="L1546"> sub.saveSubscription(authToken.getAuthInfo(), subscriptions);</span>
<span class="fc" id="L1547"> tx.commit();</span>
<span class="fc" id="L1548"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1549"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L1551"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="fc" id="L1552"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1553"> serviceCounter.update(JUDDIQuery.ADMIN_SAVE_SUB,</span>
QueryStatus.FAILED, procTime);
<span class="fc" id="L1555"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1558" title="2 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="pc" id="L1559"> tx.rollback();</span>
}
<span class="fc" id="L1561"> em.close();</span>
<span class="fc" id="L1562"> }</span>
<span class="fc" id="L1564"> }</span>
/**
* {@inheritDoc }
*
* @param body
* @return item history or null if not found
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
@Override
public GetEntityHistoryMessageResponse getEntityHistory(GetEntityHistoryMessageRequest body) throws DispositionReportFaultMessage, RemoteException {
<span class="fc" id="L1576"> long startTime = System.currentTimeMillis();</span>
<span class="fc bfc" id="L1577" title="All 2 branches covered."> if (body == null) {</span>
<span class="fc" id="L1578"> throw new InvalidValueException(new ErrorMessage(&quot;errors.NullInput&quot;));</span>
}
<span class="fc" id="L1580"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="fc" id="L1581"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="fc" id="L1583"> tx.begin();</span>
<span class="fc" id="L1584"> UddiEntityPublisher requestor = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="pc bpc" id="L1585" title="1 of 2 branches missed."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="nc" id="L1586"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="pc bpc" id="L1588" title="1 of 2 branches missed."> if (body.getMaxRecords() &lt;= 0) {</span>
<span class="fc" id="L1589"> body.setMaxRecords(20);</span>
}
<span class="pc bpc" id="L1591" title="1 of 2 branches missed."> if (body.getOffset() &lt; 0) {</span>
<span class="nc" id="L1592"> body.setOffset(0);</span>
}
<span class="fc" id="L1594"> Query createQuery = em.createQuery(&quot;select m from ChangeRecord m where m.entityKey = :key order by m.id DESC&quot;);</span>
<span class="fc" id="L1595"> createQuery.setMaxResults((int) body.getMaxRecords());</span>
<span class="fc" id="L1596"> createQuery.setParameter(&quot;key&quot;, body.getEntityKey());</span>
<span class="fc" id="L1597"> createQuery.setFirstResult((int) body.getOffset());</span>
<span class="fc" id="L1598"> List&lt;ChangeRecord&gt; resultList = createQuery.getResultList();</span>
<span class="fc" id="L1599"> GetEntityHistoryMessageResponse res = new GetEntityHistoryMessageResponse();</span>
<span class="fc" id="L1600"> res.setChangeRecords(new ChangeRecords());</span>
<span class="fc bfc" id="L1601" title="All 2 branches covered."> for (ChangeRecord cr : resultList) {</span>
<span class="fc" id="L1602"> res.getChangeRecords().getChangeRecord().add(MappingModelToApi.mapChangeRecord(cr));</span>
<span class="fc" id="L1603"> }</span>
<span class="fc" id="L1605"> tx.rollback();</span>
<span class="fc" id="L1606"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1607"> serviceCounter.update(JUDDIQuery.ADMIN_GET_HISTORY,</span>
QueryStatus.SUCCESS, procTime);
<span class="fc" id="L1609"> return res;</span>
<span class="fc" id="L1610"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="fc" id="L1611"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="fc" id="L1612"> serviceCounter.update(JUDDIQuery.ADMIN_GET_HISTORY,</span>
QueryStatus.FAILED, procTime);
<span class="fc" id="L1614"> throw drfm;</span>
} finally {
<span class="pc bpc" id="L1617" title="2 of 4 branches missed."> if (tx.isActive()) {</span>
<span class="pc" id="L1618"> tx.rollback();</span>
}
<span class="fc" id="L1620"> em.close();</span>
}
}
/**
* {@inheritDoc }
*
* @param body
* @return
* @throws DispositionReportFaultMessage
* @throws RemoteException
*/
@Override
public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(
GetFailedReplicationChangeRecordsMessageRequest body)
throws DispositionReportFaultMessage, RemoteException {
//public GetFailedReplicationChangeRecordsMessageResponse getFailedReplicationChangeRecords(GetFailedReplicationChangeRecordsMessageRequest body) throws DispositionReportFaultMessage, RemoteException {
<span class="nc" id="L1637"> long startTime = System.currentTimeMillis();</span>
<span class="nc bnc" id="L1638" title="All 2 branches missed."> if (body == null) {</span>
<span class="nc" id="L1639"> throw new InvalidValueException(new ErrorMessage(&quot;errors.NullInput&quot;));</span>
}
<span class="nc" id="L1641"> EntityManager em = PersistenceManager.getEntityManager();</span>
<span class="nc" id="L1642"> EntityTransaction tx = em.getTransaction();</span>
try {
<span class="nc" id="L1644"> tx.begin();</span>
<span class="nc" id="L1645"> UddiEntityPublisher requestor = this.getEntityPublisher(em, body.getAuthInfo());</span>
<span class="nc bnc" id="L1646" title="All 2 branches missed."> if (!((Publisher) requestor).isAdmin()) {</span>
<span class="nc" id="L1647"> throw new UserMismatchException(new ErrorMessage(&quot;errors.AdminReqd&quot;));</span>
}
<span class="nc bnc" id="L1649" title="All 2 branches missed."> if (body.getMaxRecords() &lt;= 0) {</span>
<span class="nc" id="L1650"> body.setMaxRecords(20);</span>
}
<span class="nc bnc" id="L1652" title="All 2 branches missed."> if (body.getOffset() &lt; 0) {</span>
<span class="nc" id="L1653"> body.setOffset(0);</span>
}
<span class="nc" id="L1655"> Query createQuery = em.createQuery(&quot;select m from ChangeRecord m where m.isAppliedLocally=false order by m.id DESC &quot;);</span>
<span class="nc" id="L1656"> createQuery.setMaxResults((int) body.getMaxRecords());</span>
<span class="nc" id="L1657"> createQuery.setFirstResult((int) body.getOffset());</span>
<span class="nc" id="L1658"> List&lt;ChangeRecord&gt; resultList = createQuery.getResultList();</span>
<span class="nc" id="L1659"> GetFailedReplicationChangeRecordsMessageResponse res = new GetFailedReplicationChangeRecordsMessageResponse();</span>
<span class="nc" id="L1660"> res.setChangeRecords(new ChangeRecords());</span>
<span class="nc bnc" id="L1661" title="All 2 branches missed."> for (ChangeRecord cr : resultList) {</span>
<span class="nc" id="L1662"> res.getChangeRecords().getChangeRecord().add(MappingModelToApi.mapChangeRecord(cr));</span>
<span class="nc" id="L1663"> }</span>
<span class="nc" id="L1665"> tx.rollback();</span>
<span class="nc" id="L1666"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1667"> serviceCounter.update(JUDDIQuery.ADMIN_GET_FAILED_CRS,</span>
QueryStatus.SUCCESS, procTime);
<span class="nc" id="L1669"> return res;</span>
<span class="nc" id="L1670"> } catch (DispositionReportFaultMessage drfm) {</span>
<span class="nc" id="L1671"> long procTime = System.currentTimeMillis() - startTime;</span>
<span class="nc" id="L1672"> serviceCounter.update(JUDDIQuery.ADMIN_GET_FAILED_CRS,</span>
QueryStatus.FAILED, procTime);
<span class="nc" id="L1674"> throw drfm;</span>
} finally {
<span class="nc bnc" id="L1677" title="All 4 branches missed."> if (tx.isActive()) {</span>
<span class="nc" id="L1678"> tx.rollback();</span>
}
<span class="nc" id="L1680"> em.close();</span>
}
}
}
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.7.9.201702052155</span></div></body></html>