Repository: juddi Updated Branches: refs/heads/master aa0d7b5ab -> 8c61d91b7
JUDDI-879 adding new test functions to the admin console, including email tests. Altered the email sending notifier to throw in case the destination email wasn't available Project: http://git-wip-us.apache.org/repos/asf/juddi/repo Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/8c61d91b Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/8c61d91b Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/8c61d91b Branch: refs/heads/master Commit: 8c61d91b7631eb419db5be726eb1ef852cca56f1 Parents: aa0d7b5 Author: Alex <[email protected]> Authored: Sat May 3 08:14:32 2014 -0400 Committer: Alex <[email protected]> Committed: Sat May 3 08:14:32 2014 -0400 ---------------------------------------------------------------------- .../org/apache/juddi/api/impl/JUDDIApiImpl.java | 136 +++++++++++++++++-- .../juddi/subscription/notify/SMTPNotifier.java | 1 + .../notify/USERFRIENDLYSMTPNotifier.java | 17 +-- juddi-gui/src/main/webapp/home.jsp | 2 +- .../juddi/adminconsole/hub/UddiAdminHub.java | 61 ++++++++- juddiv3-war/src/main/webapp/admin/admin.jsp | 47 +++++++ 6 files changed, 228 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java index 7b0331f..a52a66e 100644 --- a/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java +++ b/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java @@ -18,6 +18,7 @@ package org.apache.juddi.api.impl; import java.io.StringWriter; import java.rmi.RemoteException; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -38,6 +39,7 @@ 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.util.SubscriptionQuery; import org.apache.juddi.api_v3.AdminSaveBusinessWrapper; import org.apache.juddi.api_v3.AdminSaveTModelWrapper; import org.apache.juddi.api_v3.Clerk; @@ -1099,11 +1101,43 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy }*/ @Override public void adminDeleteSubscription(String authInfo, List<String> subscriptionKey) throws DispositionReportFaultMessage, RemoteException { + long startTime = System.currentTimeMillis(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(JUDDIQuery.ADMIN_DELETE_SUB, - QueryStatus.SUCCESS, procTime); - ValidatePublish.unsupportedAPICall(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher requestor = this.getEntityPublisher(em, authInfo); + if (!((Publisher) requestor).isAdmin()) { + throw new UserMismatchException(new ErrorMessage("errors.AdminReqd")); + } + //new ValidateSubscription(publisher).validateDeleteSubscription(em, body); + + List<String> subscriptionKeyList = subscriptionKey; + for (String key : subscriptionKeyList) { + if (key != null && key.length() > 0) { + Object obj = em.find(org.apache.juddi.model.Subscription.class, key); + em.remove(obj); + } + } + + tx.commit(); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(SubscriptionQuery.DELETE_SUBSCRIPTION, + QueryStatus.SUCCESS, procTime); + } catch (DispositionReportFaultMessage drfm) { + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(SubscriptionQuery.DELETE_SUBSCRIPTION, + QueryStatus.FAILED, procTime); + throw drfm; + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } } @@ -1161,12 +1195,51 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy @Override public List<SubscriptionWrapper> getAllClientSubscriptionInfo(String authInfo) throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, - QueryStatus.SUCCESS, procTime); - //returns ALL client subscriptions - ValidatePublish.unsupportedAPICall(); - return null; + + List<SubscriptionWrapper> r = new ArrayList<SubscriptionWrapper>(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo); + if (!((Publisher) publisher).isAdmin()) { + throw new UserMismatchException(new ErrorMessage("errors.AdminReqd")); + } + + StringBuilder sql = new StringBuilder(); + sql.append("select distinct c from ReplicationConfiguration c "); + sql.toString(); + Query qry = em.createQuery(sql.toString()); + List<org.apache.juddi.model.Subscription> resultList = qry.getResultList(); + for (int i = 0; i < resultList.size(); i++) { + Subscription sub = new Subscription(); + MappingModelToApi.mapSubscription(resultList.get(i), sub); + SubscriptionWrapper x = new SubscriptionWrapper(); + x.getSubscription().add(sub); + x.setPublisherIdOrUsername(resultList.get(i).getAuthorizedName()); + r.add(x); + } + + + tx.commit(); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, + QueryStatus.SUCCESS, procTime); + } catch (DispositionReportFaultMessage drfm) { + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.GET_ALL_CLIENT_SUB, + QueryStatus.FAILED, procTime); + throw drfm; + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + + return r; } @Override @@ -1182,11 +1255,44 @@ public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortTy @Override public org.uddi.repl_v3.ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage, RemoteException { long startTime = System.currentTimeMillis(); - long procTime = System.currentTimeMillis() - startTime; - serviceCounter.update(JUDDIQuery.GET_REPLICATION_NODES, - QueryStatus.SUCCESS, procTime); - ValidatePublish.unsupportedAPICall(); - return null; + org.uddi.repl_v3.ReplicationConfiguration r = new org.uddi.repl_v3.ReplicationConfiguration(); + + EntityManager em = PersistenceManager.getEntityManager(); + EntityTransaction tx = em.getTransaction(); + try { + tx.begin(); + + UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo); + if (!((Publisher) publisher).isAdmin()) { + throw new UserMismatchException(new ErrorMessage("errors.AdminReqd")); + } + + StringBuilder sql = new StringBuilder(); + sql.append("select distinct c from ReplicationConfiguration c "); + sql.toString(); + Query qry = em.createQuery(sql.toString()); + org.apache.juddi.model.ReplicationConfiguration resultList = (org.apache.juddi.model.ReplicationConfiguration) qry.getSingleResult(); + //for (int i = 0; i < resultList.size(); i++) { + MappingModelToApi.mapReplicationConfiguration(resultList, r); + //} + + tx.commit(); + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.GET_ALL_NODES, + QueryStatus.SUCCESS, procTime); + } catch (DispositionReportFaultMessage drfm) { + long procTime = System.currentTimeMillis() - startTime; + serviceCounter.update(JUDDIQuery.GET_ALL_NODES, + QueryStatus.FAILED, procTime); + throw drfm; + } finally { + if (tx.isActive()) { + tx.rollback(); + } + em.close(); + } + + return r; } static UDDISubscriptionImpl sub = new UDDISubscriptionImpl(); http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java index b0c684c..50659b1 100644 --- a/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java +++ b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/SMTPNotifier.java @@ -147,6 +147,7 @@ public class SMTPNotifier implements Notifier { + body.getSubscriptionResultsList().getSubscription().getSubscriptionKey()); Transport.send(message); } + else throw new DispositionReportFaultMessage("Session is null!", null); } catch (Exception e) { log.error(e.getMessage(),e); throw new DispositionReportFaultMessage(e.getMessage(), null); http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/USERFRIENDLYSMTPNotifier.java ---------------------------------------------------------------------- diff --git a/juddi-core/src/main/java/org/apache/juddi/subscription/notify/USERFRIENDLYSMTPNotifier.java b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/USERFRIENDLYSMTPNotifier.java index d0d7bd2..2c85655 100644 --- a/juddi-core/src/main/java/org/apache/juddi/subscription/notify/USERFRIENDLYSMTPNotifier.java +++ b/juddi-core/src/main/java/org/apache/juddi/subscription/notify/USERFRIENDLYSMTPNotifier.java @@ -3,19 +3,9 @@ package org.apache.juddi.subscription.notify; import java.io.StringWriter; import java.net.URISyntaxException; import java.rmi.RemoteException; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.util.Properties; - -import javax.crypto.BadPaddingException; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; import javax.mail.Address; import javax.mail.Message.RecipientType; import javax.mail.Multipart; -import javax.mail.PasswordAuthentication; -import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; @@ -23,18 +13,12 @@ import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.xml.bind.JAXB; -import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.lang.StringEscapeUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.juddi.api_v3.AccessPointType; import org.apache.juddi.config.AppConfig; import org.apache.juddi.config.Property; import org.apache.juddi.config.ResourceConfig; -import org.apache.juddi.cryptor.CryptorFactory; import org.apache.juddi.jaxb.JAXBMarshaller; import org.apache.juddi.model.BindingTemplate; -import org.apache.juddi.v3.error.ErrorMessage; import org.uddi.api_v3.DispositionReport; import org.uddi.api_v3.Result; import org.uddi.sub_v3.SubscriptionFilter; @@ -101,6 +85,7 @@ public class USERFRIENDLYSMTPNotifier extends SMTPNotifier { + body.getSubscriptionResultsList().getSubscription().getSubscriptionKey()); Transport.send(message); } + else throw new DispositionReportFaultMessage("Session is null!", null); } catch (Exception e) { log.error(e.getMessage(), e); throw new DispositionReportFaultMessage(e.getMessage(), null); http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddi-gui/src/main/webapp/home.jsp ---------------------------------------------------------------------- diff --git a/juddi-gui/src/main/webapp/home.jsp b/juddi-gui/src/main/webapp/home.jsp index 2c52cd7..be7e2e7 100644 --- a/juddi-gui/src/main/webapp/home.jsp +++ b/juddi-gui/src/main/webapp/home.jsp @@ -14,7 +14,7 @@ <div class="hero-unit"> <h1>jUDDI</h1> <p><%=ResourceLoader.GetResource(session, "index.juddi")%></p> - <p><a href="#" class="btn btn-primary btn-large"><%=ResourceLoader.GetResource(session, "learnmore")%> »</a></p> + <p><a href="http://juddi.apache.org" class="btn btn-primary btn-large"><%=ResourceLoader.GetResource(session, "learnmore")%> »</a></p> </div> <!-- Example row of columns --> http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java ---------------------------------------------------------------------- diff --git a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java index 1de9172..b764e77 100644 --- a/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java +++ b/juddiv3-war/src/main/java/org/apache/juddi/adminconsole/hub/UddiAdminHub.java @@ -62,6 +62,8 @@ import org.apache.juddi.v3_service.JUDDIApiPortType; import org.apache.juddi.adminconsole.AES; import org.apache.juddi.adminconsole.resources.ResourceLoader; import org.apache.juddi.api_v3.ClientSubscriptionInfo; +import org.apache.juddi.model.BindingTemplate; +import org.apache.juddi.subscription.notify.SMTPNotifier; import org.uddi.api_v3.AuthToken; import org.uddi.api_v3.DeleteTModel; import org.uddi.api_v3.DiscardAuthToken; @@ -70,6 +72,9 @@ import org.uddi.api_v3.FindBusiness; import org.uddi.api_v3.FindQualifiers; import org.uddi.api_v3.GetAuthToken; import org.uddi.api_v3.Name; +import org.uddi.sub_v3.Subscription; +import org.uddi.sub_v3.SubscriptionResultsList; +import org.uddi.subr_v3.NotifySubscriptionListener; import org.uddi.v3_service.DispositionReportFaultMessage; import org.uddi.v3_service.UDDISecurityPortType; @@ -341,6 +346,32 @@ public class UddiAdminHub { if (action.equalsIgnoreCase("save_publisher")) { return save_publisher(parameters); } + + if (action.equalsIgnoreCase("send_EmailTest")) { + return sendTestEmail(parameters); + } + /*if (action.equalsIgnoreCase("get_AllNodes")) { + } + if (action.equalsIgnoreCase("get_AllClerks")) { + } + if (action.equalsIgnoreCase("delete_Node")) { + } + if (action.equalsIgnoreCase("delete_Clerk")) { + } + if (action.equalsIgnoreCase("admin_DeleteSubscription")) { + } + if (action.equalsIgnoreCase("admin_SaveBusiness")) { + } + if (action.equalsIgnoreCase("admin_SaveTModel")) { + } + if (action.equalsIgnoreCase("get_AllClientSubscriptionInfo")) { + } + if (action.equalsIgnoreCase("set_ReplicationNodes")) { + } + if (action.equalsIgnoreCase("get_ReplicationNodes")) { + } + if (action.equalsIgnoreCase("admin_SaveSubscription")) { + }*/ } catch (Exception ex) { return "Error!" + HandleException(ex); } @@ -432,6 +463,26 @@ public class UddiAdminHub { return "Success"; } + private String sendTestEmail(HttpServletRequest parameters) { + try { + + String to = parameters.getParameter("send_EmailTestEMAIL"); + if (!to.startsWith("mailto:")) + to = "mailto:" + to; + BindingTemplate modellbt = new BindingTemplate("test", null, "endpoint", to, null, null, null, null, null); + org.apache.juddi.subscription.notify.SMTPNotifier smtp = new SMTPNotifier(modellbt); + NotifySubscriptionListener body = new NotifySubscriptionListener(); + + body.setSubscriptionResultsList(new SubscriptionResultsList()); + body.getSubscriptionResultsList().setSubscription(new Subscription()); + body.getSubscriptionResultsList().getSubscription().setSubscriptionKey("TEST"); + smtp.notifySubscriptionListener(body); + return "Success"; + } catch (Exception ex) { + return "Failure!" + HandleException(ex); + } + } + public enum AuthStyle { /** @@ -654,7 +705,7 @@ public class UddiAdminHub { return null; } - public static String getSampleSave_ClientSubscriptionInfo(){ + public static String getSampleSave_ClientSubscriptionInfo() { SaveClientSubscriptionInfo x = new SaveClientSubscriptionInfo(); x.setAuthInfo(""); x.getClientSubscriptionInfo().add(new ClientSubscriptionInfo()); @@ -677,7 +728,7 @@ public class UddiAdminHub { x.getClientSubscriptionInfo().get(0).getFromClerk().getNode().setSubscriptionListenerUrl("http://localhost:8080/juddiv3/services/subscription-listener"); x.getClientSubscriptionInfo().get(0).getFromClerk().getNode().setJuddiApiUrl("http://localhost:8080/juddiv3/services/juddi-api"); x.getClientSubscriptionInfo().get(0).getFromClerk().getNode().setReplicationUrl("http://localhost:8080/juddiv3/services/replication"); - + x.getClientSubscriptionInfo().get(0).getToClerk().setName("ClerkName"); x.getClientSubscriptionInfo().get(0).getToClerk().setPublisher("username"); x.getClientSubscriptionInfo().get(0).getToClerk().setPassword("password"); @@ -696,12 +747,14 @@ public class UddiAdminHub { JAXB.marshal(x, sw); return sw.toString(); } + private String save_ClientSubscriptionInfo(HttpServletRequest parameters) { StringBuilder ret = new StringBuilder(); SaveClientSubscriptionInfo sb = new SaveClientSubscriptionInfo(); - if (parameters.getParameter("ClientSubscriptionInfoDetailXML")==null) + if (parameters.getParameter("ClientSubscriptionInfoDetailXML") == null) { return "No input!"; + } ClientSubscriptionInfoDetail d = null; try { StringReader sr = new StringReader(parameters.getParameter("ClientSubscriptionInfoDetailXML").trim()); @@ -788,7 +841,7 @@ public class UddiAdminHub { p.setIsEnabled(Boolean.parseBoolean(parameters.getParameter("savePublisherIsEnabled"))); } catch (Exception ex) { } - + PublisherDetail d = null; sb.setAuthInfo(GetToken()); try { http://git-wip-us.apache.org/repos/asf/juddi/blob/8c61d91b/juddiv3-war/src/main/webapp/admin/admin.jsp ---------------------------------------------------------------------- diff --git a/juddiv3-war/src/main/webapp/admin/admin.jsp b/juddiv3-war/src/main/webapp/admin/admin.jsp index 79867cc..269539b 100644 --- a/juddiv3-war/src/main/webapp/admin/admin.jsp +++ b/juddiv3-war/src/main/webapp/admin/admin.jsp @@ -33,6 +33,7 @@ <div class="span12"> <% UddiAdminHub x = UddiAdminHub.getInstance(application, session); + %> <%=ResourceLoader.GetResource(session, "pages.admin.content")%> <br> @@ -47,6 +48,19 @@ <option>save_ClientSubscriptionInfo</option> <option>save_Node</option> <option>save_publisher</option> + + <option>send_EmailTest</option> + <option>get_AllNodes</option> + <option>get_AllClerks</option> + <option>delete_Node</option> + <option>delete_Clerk</option> + <option>admin_DeleteSubscription</option> + <option>admin_SaveBusiness</option> + <option>admin_SaveTModel</option> + <option>get_AllClientSubscriptionInfo</option> + <option>set_ReplicationNodes</option> + <option>get_ReplicationNodes</option> + <option>admin_SaveSubscription</option> </select> <div> @@ -129,6 +143,23 @@ jUDDI API <input type="text" id="CLERKNODEsetJuddiApiUrl" class="forminput" placeholder="http://localhost:8080/juddiv3/services/juddi-api" value="http://localhost:8080/juddiv3/services/juddi-api"><br> </div> + + + + <div id="send_EmailTest" style="display:none"> + <%=ResourceLoader.GetResource(session, "items.email")%> <input type="text" id="send_EmailTestEMAIL" class="forminput" placeholder="Enter email"><br> + </div> + <div id="get_AllNodes" style="display:none"></div> + <div id="get_AllClerks" style="display:none"></div> + <div id="delete_Node" style="display:none"></div> + <div id="delete_Clerk" style="display:none"></div> + <div id="admin_DeleteSubscription" style="display:none"></div> + <div id="admin_SaveBusiness" style="display:none"></div> + <div id="admin_SaveTModel" style="display:none"></div> + <div id="get_AllClientSubscriptionInfo" style="display:none"></div> + <div id="set_ReplicationNodes" style="display:none"></div> + <div id="get_ReplicationNodes" style="display:none"></div> + <div id="admin_SaveSubscription" style="display:none"></div> </div> <script type="text/javascript"> @@ -146,6 +177,22 @@ $("#save_publisher").hide(); $("#save_Clerk").hide(); $("#save_Node").hide(); + + + $("#send_EmailTest").hide(); + $("#get_AllNodes").hide(); + $("#get_AllClerks").hide(); + $("#delete_Node").hide(); + $("#delete_Clerk").hide(); + $("#admin_DeleteSubscription").hide(); + $("#admin_SaveBusiness").hide(); + $("#admin_SaveTModel").hide(); + $("#get_AllClientSubscriptionInfo").hide(); + $("#set_ReplicationNodes").hide(); + $("#get_ReplicationNodes").hide(); + $("#admin_SaveSubscription").hide(); + + $("#" + x).show(); } toggledivs();//run when the page loads --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
