/*
* Copyright 2001-2008 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.juddi.validation;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.api_v3.ValidValues;
import org.apache.juddi.config.PersistenceManager;
import org.apache.juddi.mapping.MappingModelToApi;
import org.apache.juddi.model.Tmodel;
import org.apache.juddi.model.UddiEntityPublisher;
import org.apache.juddi.v3.error.ErrorMessage;
import org.apache.juddi.v3.error.ValueNotAllowedException;
import org.uddi.api_v3.TModel;
import org.uddi.v3_service.DispositionReportFaultMessage;
/**
* @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
* @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
*/
public class ValidateValueSetValidation extends ValidateUDDIApi {
private static Log log = LogFactory.getLog(ValidateValueSetValidation.class);
public ValidateValueSetValidation(UddiEntityPublisher publisher) {
super(publisher); }
/**
* called from jUDDI API SetAllValidValues
*
* @param values
*/
public void validateSetAllValidValues(List<ValidValues> values) throws ValueNotAllowedException {
if (values == null || values.isEmpty()) { throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput"));
}
for (int i = 0; i < values.size(); i++) { String key = values.get(i).getTModekKey(); if (key == null || key.trim().length() == 0) { throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "tModel key"));
}
//ensure tmodel exists
Tmodel tm = GetTModel_MODEL_IfExists(values.get(i).getTModekKey()); if (tm == null) { throw new ValueNotAllowedException(new ErrorMessage("errors.invalidkey.TModelNotFound", key));
}
//ensure caller owns the tModel
if (!this.publisher.isOwner(tm)) { throw new ValueNotAllowedException(new ErrorMessage("errors.usermismatch.InvalidOwner", key ));
}
//if we have no values, it may be to simply unset any values
/*//validate that we have values
if (values.get(i).getValue() == null || values.get(i).getValue().isEmpty()) {
throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "value[]"));
}
//and that they aren't empty
for (int k = 0; k < values.get(i).getValue().size(); k++) {
if (values.get(i).getValue().get(k) == null || values.get(i).getValue().get(k).trim().length() == 0) {
throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "value[" + i + "].value"));
}
}*/
}
}
/**
* return the publisher
*
* @param tmodelKey
* @return
* @throws ValueNotAllowedException
*/
public static TModel GetTModel_API_IfExists(String tmodelKey) throws ValueNotAllowedException {
EntityManager em = PersistenceManager.getEntityManager(); TModel apitmodel = null; if (em == null) {
//this is normally the Install class firing up
log.warn(new ErrorMessage("errors.tmodel.ReferentialIntegrityNullEM")); return null;
} else {
EntityTransaction tx = em.getTransaction();
try {
Tmodel modelTModel = null; tx.begin(); modelTModel = em.find(org.apache.juddi.model.Tmodel.class, tmodelKey); if (modelTModel != null) { apitmodel = new TModel();
try {
MappingModelToApi.mapTModel(modelTModel, apitmodel); } catch (DispositionReportFaultMessage ex) { log.warn(ex); apitmodel=null; }
}
tx.commit();
} finally {
if (tx.isActive()) { tx.rollback();
}
em.close(); }
}
return apitmodel;
}
public static Tmodel GetTModel_MODEL_IfExists(String tmodelKey) throws ValueNotAllowedException {
EntityManager em = PersistenceManager.getEntityManager(); Tmodel model = null; if (em == null) {
//this is normally the Install class firing up
log.warn(new ErrorMessage("errors.tmodel.ReferentialIntegrityNullEM")); return null;
} else {
EntityTransaction tx = em.getTransaction();
try {
tx.begin(); model = em.find(org.apache.juddi.model.Tmodel.class, tmodelKey); tx.commit();
} finally {
if (tx.isActive()) { tx.rollback();
}
em.close(); }
}
return model;
}
}