diff options
author | Endi S. Dewata <edewata@redhat.com> | 2013-09-24 10:10:02 -0400 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2013-10-01 19:25:51 -0400 |
commit | 565741cc9aa0e3f1e056c9c79dc1bec35bbbcc92 (patch) | |
tree | ffc9431f543c0ff652000fcbe9d735d37fce091a /base/common/src/com/netscape/certsrv/tps | |
parent | e339952dfad45bc0ba1768a9386817eadd49b9dc (diff) | |
download | pki-565741cc9aa0e3f1e056c9c79dc1bec35bbbcc92.tar.gz pki-565741cc9aa0e3f1e056c9c79dc1bec35bbbcc92.tar.xz pki-565741cc9aa0e3f1e056c9c79dc1bec35bbbcc92.zip |
Added TPS authenticator service implementation.
The implementation of the TPS authenticator service has been modified to
use the configuration database to read and write the configuration file.
Ticket #652
Diffstat (limited to 'base/common/src/com/netscape/certsrv/tps')
6 files changed, 78 insertions, 351 deletions
diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorClient.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorClient.java index 82a76cc16..8f4d4fe2b 100644 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorClient.java +++ b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorClient.java @@ -64,12 +64,6 @@ public class AuthenticatorClient extends Client { return client.getEntity(response); } - public AuthenticatorData modifyAuthenticator(String authenticatorID, AuthenticatorModification authenticatorModification) { - @SuppressWarnings("unchecked") - ClientResponse<AuthenticatorData> response = (ClientResponse<AuthenticatorData>)resource.modifyAuthenticator(authenticatorID, authenticatorModification); - return client.getEntity(response); - } - public void removeAuthenticator(String authenticatorID) { resource.removeAuthenticator(authenticatorID); } diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorCollection.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorCollection.java index e1978c8d3..ea9223603 100644 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorCollection.java +++ b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorCollection.java @@ -29,10 +29,10 @@ import com.netscape.certsrv.base.DataCollection; * @author Endi S. Dewata */ @XmlRootElement(name="Authenticators") -public class AuthenticatorCollection extends DataCollection<AuthenticatorInfo> { +public class AuthenticatorCollection extends DataCollection<AuthenticatorData> { @XmlElementRef - public Collection<AuthenticatorInfo> getEntries() { + public Collection<AuthenticatorData> getEntries() { return super.getEntries(); } } diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorData.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorData.java index 609d24132..95fb5fefb 100644 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorData.java +++ b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorData.java @@ -20,6 +20,11 @@ package com.netscape.certsrv.tps.authenticator; import java.io.StringReader; import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; @@ -27,6 +32,9 @@ import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.XmlAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.jboss.resteasy.plugins.providers.atom.Link; @@ -51,7 +59,7 @@ public class AuthenticatorData { String id; String status; - String contents; + Map<String, String> properties = new LinkedHashMap<String, String>(); Link link; @@ -73,13 +81,67 @@ public class AuthenticatorData { this.status = status; } - @XmlElement(name="Contents") - public String getContents() { - return contents; + @XmlElement(name="Properties") + @XmlJavaTypeAdapter(MapAdapter.class) + public Map<String, String> getProperties() { + return properties; } - public void setContents(String contents) { - this.contents = contents; + public void setProperties(Map<String, String> properties) { + this.properties.clear(); + this.properties.putAll(properties); + } + + public Collection<String> getPropertyNames() { + return properties.keySet(); + } + + public String getProperty(String name) { + return properties.get(name); + } + + public void setProperty(String name, String value) { + properties.put(name, value); + } + + public String removeProperty(String name) { + return properties.remove(name); + } + + public static class MapAdapter extends XmlAdapter<PropertyList, Map<String, String>> { + + public PropertyList marshal(Map<String, String> map) { + PropertyList list = new PropertyList(); + for (Map.Entry<String, String> entry : map.entrySet()) { + Property property = new Property(); + property.name = entry.getKey(); + property.value = entry.getValue(); + list.properties.add(property); + } + return list; + } + + public Map<String, String> unmarshal(PropertyList list) { + Map<String, String> map = new LinkedHashMap<String, String>(); + for (Property property : list.properties) { + map.put(property.name, property.value); + } + return map; + } + } + + public static class PropertyList { + @XmlElement(name="Property") + public List<Property> properties = new ArrayList<Property>(); + } + + public static class Property { + + @XmlAttribute + public String name; + + @XmlValue + public String value; } @XmlElement(name="Link") @@ -95,9 +157,9 @@ public class AuthenticatorData { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((contents == null) ? 0 : contents.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((link == null) ? 0 : link.hashCode()); + result = prime * result + ((properties == null) ? 0 : properties.hashCode()); result = prime * result + ((status == null) ? 0 : status.hashCode()); return result; } @@ -111,11 +173,6 @@ public class AuthenticatorData { if (getClass() != obj.getClass()) return false; AuthenticatorData other = (AuthenticatorData) obj; - if (contents == null) { - if (other.contents != null) - return false; - } else if (!contents.equals(other.contents)) - return false; if (id == null) { if (other.id != null) return false; @@ -126,6 +183,11 @@ public class AuthenticatorData { return false; } else if (!link.equals(other.link)) return false; + if (properties == null) { + if (other.properties != null) + return false; + } else if (!properties.equals(other.properties)) + return false; if (status == null) { if (other.status != null) return false; @@ -158,7 +220,8 @@ public class AuthenticatorData { AuthenticatorData before = new AuthenticatorData(); before.setID("authenticator1"); before.setStatus("ENABLED"); - before.setContents("name=authenticator1\nparam=value"); + before.setProperty("param1", "value1"); + before.setProperty("param2", "value2"); String string = before.toString(); System.out.println(string); diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorInfo.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorInfo.java deleted file mode 100644 index 55ce9b4f3..000000000 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorInfo.java +++ /dev/null @@ -1,152 +0,0 @@ -// --- BEGIN COPYRIGHT BLOCK --- -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program; if not, write to the Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -// -// (C) 2013 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- - -package com.netscape.certsrv.tps.authenticator; - -import java.io.StringReader; -import java.io.StringWriter; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import org.jboss.resteasy.plugins.providers.atom.Link; - -/** - * @author Endi S. Dewata - */ -@XmlRootElement(name="Authenticator") -public class AuthenticatorInfo { - - public static Marshaller marshaller; - public static Unmarshaller unmarshaller; - - static { - try { - marshaller = JAXBContext.newInstance(AuthenticatorInfo.class).createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - unmarshaller = JAXBContext.newInstance(AuthenticatorInfo.class).createUnmarshaller(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - String id; - String status; - - Link link; - - @XmlAttribute(name="id") - public String getID() { - return id; - } - - public void setID(String id) { - this.id = id; - } - - @XmlElement(name="Status") - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - @XmlElement(name="Link") - public Link getLink() { - return link; - } - - public void setLink(Link link) { - this.link = link; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((link == null) ? 0 : link.hashCode()); - result = prime * result + ((status == null) ? 0 : status.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AuthenticatorInfo other = (AuthenticatorInfo) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (link == null) { - if (other.link != null) - return false; - } else if (!link.equals(other.link)) - return false; - if (status == null) { - if (other.status != null) - return false; - } else if (!status.equals(other.status)) - return false; - return true; - } - - public String toString() { - try { - StringWriter sw = new StringWriter(); - marshaller.marshal(this, sw); - return sw.toString(); - - } catch (Exception e) { - return super.toString(); - } - } - - public static AuthenticatorInfo valueOf(String string) throws Exception { - try { - return (AuthenticatorInfo)unmarshaller.unmarshal(new StringReader(string)); - } catch (Exception e) { - return null; - } - } - - public static void main(String args[]) throws Exception { - - AuthenticatorInfo before = new AuthenticatorInfo(); - before.setID("authenticator1"); - before.setStatus("ENABLED"); - - String string = before.toString(); - System.out.println(string); - - AuthenticatorInfo after = AuthenticatorInfo.valueOf(string); - System.out.println(before.equals(after)); - } -} diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorModification.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorModification.java deleted file mode 100644 index fb78415e3..000000000 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorModification.java +++ /dev/null @@ -1,169 +0,0 @@ -// --- BEGIN COPYRIGHT BLOCK --- -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program; if not, write to the Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -// -// (C) 2013 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- - -package com.netscape.certsrv.tps.authenticator; - -import java.io.StringReader; -import java.io.StringWriter; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import org.jboss.resteasy.plugins.providers.atom.Link; - -/** - * @author Endi S. Dewata - */ -@XmlRootElement(name="AuthenticatorModifyRequest") -public class AuthenticatorModification { - - public static Marshaller marshaller; - public static Unmarshaller unmarshaller; - - static { - try { - marshaller = JAXBContext.newInstance(AuthenticatorModification.class).createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - unmarshaller = JAXBContext.newInstance(AuthenticatorModification.class).createUnmarshaller(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - String id; - String status; - String contents; - - Link link; - - @XmlAttribute(name="id") - public String getID() { - return id; - } - - public void setID(String id) { - this.id = id; - } - - @XmlElement(name="Status") - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - @XmlElement(name="Contents") - public String getContents() { - return contents; - } - - public void setContents(String contents) { - this.contents = contents; - } - - @XmlElement(name="Link") - public Link getLink() { - return link; - } - - public void setLink(Link link) { - this.link = link; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((contents == null) ? 0 : contents.hashCode()); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((link == null) ? 0 : link.hashCode()); - result = prime * result + ((status == null) ? 0 : status.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AuthenticatorModification other = (AuthenticatorModification) obj; - if (contents == null) { - if (other.contents != null) - return false; - } else if (!contents.equals(other.contents)) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (link == null) { - if (other.link != null) - return false; - } else if (!link.equals(other.link)) - return false; - if (status == null) { - if (other.status != null) - return false; - } else if (!status.equals(other.status)) - return false; - return true; - } - - public String toString() { - try { - StringWriter sw = new StringWriter(); - marshaller.marshal(this, sw); - return sw.toString(); - - } catch (Exception e) { - return super.toString(); - } - } - - public static AuthenticatorModification valueOf(String string) throws Exception { - try { - return (AuthenticatorModification)unmarshaller.unmarshal(new StringReader(string)); - } catch (Exception e) { - return null; - } - } - - public static void main(String args[]) throws Exception { - - AuthenticatorModification before = new AuthenticatorModification(); - before.setID("authenticator1"); - before.setStatus("ENABLED"); - before.setContents("name=authenticator1\nparam=value"); - - String string = before.toString(); - System.out.println(string); - - AuthenticatorModification after = AuthenticatorModification.valueOf(string); - System.out.println(before.equals(after)); - } -} diff --git a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorResource.java b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorResource.java index 3a99a01d1..8e9f7284a 100644 --- a/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorResource.java +++ b/base/common/src/com/netscape/certsrv/tps/authenticator/AuthenticatorResource.java @@ -64,15 +64,6 @@ public interface AuthenticatorResource { @PathParam("authenticatorID") String authenticatorID, AuthenticatorData authenticatorData); - @POST - @Path("{authenticatorID}") - @ClientResponseType(entityType=AuthenticatorData.class) - @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public Response modifyAuthenticator( - @PathParam("authenticatorID") String authenticatorID, - AuthenticatorModification request); - @DELETE @Path("{authenticatorID}") @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) |