org.italiangrid.voms.request.impl.LegacyVOMSResponse Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of voms-api-java Show documentation
Show all versions of voms-api-java Show documentation
Java APIs to validate and request VOMS attribute certificates
/**
* Copyright (c) Istituto Nazionale di Fisica Nucleare, 2006-2012.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.italiangrid.voms.request.impl;
import java.util.ArrayList;
import java.util.List;
import org.italiangrid.voms.request.VOMSErrorMessage;
import org.italiangrid.voms.request.VOMSResponse;
import org.italiangrid.voms.request.VOMSWarningMessage;
import org.italiangrid.voms.util.VOMSBase64Decoder;
import org.italiangrid.voms.util.XMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class LegacyVOMSResponse implements VOMSResponse {
private static int ERROR_OFFSET = 1000;
protected Document xmlResponse;
/**
* Builds a VOMSResponse starting from a DOM an XML document (see
* {@link Document}).
*
* @param res
*/
public LegacyVOMSResponse(Document res) {
xmlResponse = res;
}
/*
* (non-Javadoc)
*
* @see org.glite.voms.contact.VOMSResponseIF#getVersion()
*/
public int getVersion() {
Element versionElement = (Element) xmlResponse.getElementsByTagName("version").item(0);
if (versionElement == null) {
return 0;
}
return Integer.parseInt(versionElement.getFirstChild().getNodeValue());
}
/*
* (non-Javadoc)
*
* @see org.glite.voms.contact.VOMSResponseIF#hasErrors()
*/
public boolean hasErrors() {
return errorMessages() != null;
}
/*
* (non-Javadoc)
*
* @see org.glite.voms.contact.VOMSResponseIF#hasWarnings()
*/
public boolean hasWarnings() {
return warningMessages() != null;
}
/*
* (non-Javadoc)
*
* @see org.glite.voms.contact.VOMSResponseIF#getAC()
*/
public byte[] getAC() {
Element acElement = (Element) xmlResponse.getElementsByTagName("ac").item(0);
byte[] ac = VOMSBase64Decoder.decode(acElement.getFirstChild().getNodeValue());
if (ac == null)
ac = new GoodACDecodingStrategy().decode(acElement.getFirstChild().getNodeValue());
return ac;
}
/*
* (non-Javadoc)
*
* @see org.glite.voms.contact.VOMSResponseIF#errorMessages()
*/
public VOMSErrorMessage[] errorMessages() {
NodeList nodes = xmlResponse.getElementsByTagName("item");
if (nodes.getLength() == 0)
return null;
List errorList = new ArrayList();
for (int i = 0; i < nodes.getLength(); i++) {
Element itemElement = (Element) nodes.item(i);
Element numberElement = (Element) itemElement.getElementsByTagName("number").item(0);
Element messageElement = (Element) itemElement.getElementsByTagName("message").item(0);
int number = Integer.parseInt(numberElement.getFirstChild().getNodeValue());
if (number >= ERROR_OFFSET)
errorList.add(new VOMSErrorMessage(number, messageElement.getFirstChild()
.getNodeValue()));
}
if (errorList.isEmpty())
return null;
return errorList.toArray(new VOMSErrorMessage[errorList.size()]);
}
public VOMSWarningMessage[] warningMessages() {
NodeList nodes = xmlResponse.getElementsByTagName("item");
if (nodes.getLength() == 0)
return null;
List warningList = new ArrayList();
for (int i = 0; i < nodes.getLength(); i++) {
Element itemElement = (Element) nodes.item(i);
Element numberElement = (Element) itemElement.getElementsByTagName("number").item(0);
Element messageElement = (Element) itemElement.getElementsByTagName("message").item(0);
int number = Integer.parseInt(numberElement.getFirstChild().getNodeValue());
if (number < ERROR_OFFSET)
warningList.add(new VOMSWarningMessage(number, messageElement.getFirstChild()
.getNodeValue()));
}
if (warningList.isEmpty())
return null;
return warningList.toArray(new VOMSWarningMessage[warningList.size()]);
}
public String getXMLAsString() {
return XMLUtils.documentAsString(xmlResponse);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy