All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.juddi.v2.tck.TckTModel Maven / Gradle / Ivy

There is a newer version: 3.3.10
Show newest version
/*
 * Copyright 2001-2009 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.v2.tck;

import java.util.HashSet;
import java.util.Iterator;
import static junit.framework.Assert.assertEquals;

import java.util.List;
import java.util.Set;
import javax.xml.bind.JAXB;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.jaxb.EntityCreator;
import org.junit.Assert;
import org.uddi.api_v2.DeleteTModel;
import org.uddi.api_v2.FindTModel;
import org.uddi.api_v2.GetTModelDetail;
import org.uddi.api_v2.OverviewDoc;
import org.uddi.api_v2.SaveTModel;
import org.uddi.api_v2.TModel;
import org.uddi.api_v2.TModelDetail;
import org.uddi.api_v2.TModelList;
import org.uddi.v2_service.Inquire;
import org.uddi.v2_service.Publish;

/**
 * @author Kurt T Stam
 * @author Jeff Faath
 * @author Alex O'Ree
 */
public class TckTModel {

        public static final String JOE_PUBLISHER_TMODEL_XML = "uddi_data_v2/joepublisher/tModelKeyGen.xml";
        
        
        final static String JOE_PUBLISHER_TMODEL_KEY = "uuid:c537997c-e082-461d-94e6-ec7935a3b18e";
        final static String MARY_PUBLISHER_TMODEL_XML = "uddi_data_v2/marypublisher/tModelKeyGen.xml";
        
        final static String MARY_PUBLISHER_TMODEL_KEY = "uuid:333f6466-3de7-4532-849f-7354eb842e6a";
        final static String SAM_SYNDICATOR_TMODEL_XML = "uddi_data_v2/samsyndicator/tModelKeyGen.xml";
        
        final static String SAM_SYNDICATOR_TMODEL_KEY = "uuid:c1e003d3-cb43-42f0-905f-aa8a92870bf6";
        final static String TMODEL_PUBLISHER_TMODEL_XML = "uddi_data_v2/tmodels/tModelKeyGen.xml";
        final static String TMODEL_PUBLISHER_TMODEL_KEY = "uuid:0ebf9f1d-4b81-4554-87b0-f4af21b6b569";
        
        
        final static String FIND_TMODEL_XML = "uddi_data_v2/find/findTModel1.xml";
        final static String FIND_TMODEL_XML_BY_CAT = "uddi_data_v2/find/findTModelByCategoryBag.xml";
        public final static String TMODELS_XML = "uddi_data_v2/tmodels/tmodels.xml";
        
        private Log logger = LogFactory.getLog(this.getClass());
        private Publish publication = null;
        private Inquire inquiry = null;
        private Set keyscreated = new HashSet();

        public TckTModel(Publish publication,
             Inquire inquiry) {
                super();
                this.publication = publication;
                this.inquiry = inquiry;
        }

        /**
         * saves a tmodel using the tModelXml parameter as a file path
         *
         * @param authInfo
         * @param tModelXml this is a relative file path
         */
        public void saveTModels(String authInfo, String tModelXml) {

                // Add tModels
                try {
                        SaveTModel st = (org.uddi.api_v2.SaveTModel) EntityCreator.buildFromDoc(tModelXml, "org.uddi.api_v2");
                        st.setGeneric("2.0");

                        for (int i = 0; i < st.getTModel().size(); i++) {
                                 saveTModel(authInfo, st.getTModel().get(i), false);
                        }
                        //st.setAuthInfo(authInfo);
                        //publication.saveTModel(st);

                } catch (Exception e) {
                        logger.error(e.getMessage(), e);
                        Assert.fail("No exception should be thrown");
                }
        }

        private TModel saveTModel(String authInfo, TModel tmIn, boolean force) {
                boolean exists = false;
                GetTModelDetail gt1 = new GetTModelDetail();
                gt1.setGeneric("2.0");
                gt1.getTModelKey().add(tmIn.getTModelKey());
                try {
                        TModelDetail td1 = inquiry.getTModelDetail(gt1);
                        if (td1 != null && !td1.getTModel().isEmpty()) {
                                        exists = true;
                        }
                } catch (Exception ex) {
                }

                if (!exists || force) // Add the tModel
                {
                        try {
                                SaveTModel st = new SaveTModel();
                                st.setAuthInfo(authInfo);

                                st.setGeneric("2.0");
                                st.getTModel().add(tmIn);
                                publication.saveTModel(st);

                                keyscreated.add(tmIn.getTModelKey());
                                // Now get the entity and check the values
                                GetTModelDetail gt = new GetTModelDetail();
                                gt.setGeneric("2.0");
                                gt.getTModelKey().add(tmIn.getTModelKey());
                                TModelDetail td = inquiry.getTModelDetail(gt);
                                List tmOutList = td.getTModel();
                                org.uddi.api_v2.TModel tmOut = tmOutList.get(0);

                                assertEquals(tmIn.getTModelKey().toLowerCase(), tmOut.getTModelKey());
                                assertEquals(tmIn.getName().getLang(), tmOut.getName().getLang());
                                assertEquals(tmIn.getName().getValue(), tmOut.getName().getValue());
                                TckValidator.checkDescriptions(tmIn.getDescription(), tmOut.getDescription());
                                TckValidator.checkCategories(tmIn.getCategoryBag(), tmOut.getCategoryBag());
                                
                                        TckValidator.checkOverviewDocs(tmIn.getOverviewDoc(), tmOut.getOverviewDoc());
                                
                                logger.info("The TModel " + tmIn.getTModelKey() + " saved");

                                if (TckCommon.isDebug()) {
                                        JAXB.marshal(tmOut, System.out);
                                }
                                return tmOut;

                        } catch (Exception e) {
                                logger.error(e.getMessage(), e);
                                Assert.fail("No exception should be thrown");
                        }

                } else {
                        logger.info("The TModel " + tmIn.getTModelKey() + " exists already, skipping");
                }
                return tmIn;
        }

        public TModel saveTModel(String authInfo, String tModelXml, String tModelKey) {
                return saveTModel(authInfo, tModelXml, tModelKey, false);
        }

        public TModel saveTModel(String authInfo, String tModelXml, String tModelKey, boolean force) {
                logger.info("Loading tModel from " + tModelXml);
                org.uddi.api_v2.TModel tmIn = null;
                try {
                        tmIn = (org.uddi.api_v2.TModel) EntityCreator.buildFromDoc(tModelXml, "org.uddi.api_v2");
                } catch (Exception ex) {
                        Assert.fail("unable to load tmodel from file!");
                }
                if (tmIn == null) {
                        Assert.fail("unable to load tmodel from file!");
                }
                return saveTModel(authInfo, tmIn, force);
        }

        public synchronized void deleteTModel(String authInfo, String tModelXml, String tModelKey, boolean force) {
                if (keyscreated.contains(tModelKey) || force) {
                        try {
                                keyscreated.remove(tModelKey);
                                //Now deleting the TModel
                                // Delete the entity and make sure it is removed
                                DeleteTModel dt = new DeleteTModel();
                                dt.setGeneric("2.0");
                                dt.setAuthInfo(authInfo);

                                logger.info("deleting tmodel " + tModelKey);
                                dt.getTModelKey().add(tModelKey);
                                publication.deleteTModel(dt);

                        } catch (Exception e) {
                                logger.error(e.getMessage(), e);
                                Assert.fail("No exception should be thrown");
                        }
                } else {
                        logger.info("skipping the deletion of tmodel " + tModelKey + " since it wasn't created by the tck");
                }
        }

        public synchronized void deleteTModel(String authInfo, String tModelXml, String tModelKey) {

                deleteTModel(authInfo, tModelXml, tModelKey, false);
        }

        public TModelDetail getTModelDetail(String authInfo, String tModelXml, String tModelKey) {
                try {
                        //Try to get the TModel
                        GetTModelDetail tmodelDetail = new GetTModelDetail();
                        tmodelDetail.setGeneric("2.0");
                        //tmodelDetail.setAuthInfo(authInfo);
                        tmodelDetail.getTModelKey().add(tModelKey);

                        return inquiry.getTModelDetail(tmodelDetail);

                } catch (Exception e) {
                        logger.error(e.getMessage(), e);
                        Assert.fail("No exception should be thrown");
                }
                Assert.fail("We should already have returned");
                return null;
        }

        public TModelList findJoeTModelDetail() {
                try {

                        FindTModel body = (FindTModel) EntityCreator.buildFromDoc(FIND_TMODEL_XML, "org.uddi.api_v2");
                        body.setGeneric("2.0");
                        TModelList result = inquiry.findTModel(body);

                        return result;

                } catch (Exception e) {
                        logger.error(e.getMessage(), e);
                        Assert.fail("No exception should be thrown");
                }
                Assert.fail("We should already have returned");
                return null;
        }

        public TModelList findJoeTModelDetailByCategoryBag() {
                try {

                        FindTModel body = (FindTModel) EntityCreator.buildFromDoc(FIND_TMODEL_XML_BY_CAT, "org.uddi.api_v2");
                        TModelList result = inquiry.findTModel(body);

                        return result;

                } catch (Exception e) {
                        logger.error(e.getMessage(), e);
                        Assert.fail("No exception should be thrown");
                }
                Assert.fail("We should already have returned");
                return null;
        }

        public TModel saveJoePublisherTmodel(String authInfoJoe) {
                return saveTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY, false);
        }

        public TModel saveJoePublisherTmodel(String authInfoJoe, boolean force) {
                return saveTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY, force);
        }

        public void saveUDDIPublisherTmodel(String authInfoTM) {
                saveTModel(authInfoTM, TMODEL_PUBLISHER_TMODEL_XML, TMODEL_PUBLISHER_TMODEL_KEY, false);
        }

        public void saveTmodels(String authInfoJoe) {
                saveTModels(authInfoJoe, TMODELS_XML);
        }

        public void deleteJoePublisherTmodel(String authInfoJoe) {
                deleteTModel(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY);
        }

        public TModelDetail getJoePublisherTmodel(String authInfoJoe) {
                return getTModelDetail(authInfoJoe, JOE_PUBLISHER_TMODEL_XML, JOE_PUBLISHER_TMODEL_KEY);
        }

        public TModelList findJoePublisherTmodel(String authInfoJoe) {
                return findJoeTModelDetail();
        }

        public TModel saveMaryPublisherTmodel(String authInfoMary) {
                return saveTModel(authInfoMary, MARY_PUBLISHER_TMODEL_XML, MARY_PUBLISHER_TMODEL_KEY, false);
        }

        public void deleteMaryPublisherTmodel(String authInfoMary) {
                deleteTModel(authInfoMary, MARY_PUBLISHER_TMODEL_XML, MARY_PUBLISHER_TMODEL_KEY);
        }

        public TModel saveSamSyndicatorTmodel(String authInfoSam) {
                return saveTModel(authInfoSam, SAM_SYNDICATOR_TMODEL_XML, SAM_SYNDICATOR_TMODEL_KEY, false);
        }

        public void deleteSamSyndicatorTmodel(String authInfoSam) {
                deleteTModel(authInfoSam, SAM_SYNDICATOR_TMODEL_XML, SAM_SYNDICATOR_TMODEL_KEY);
        }

        /**
         * deletes at tmodels created usign the tck tool, tmodels that were
         * previously present (before running) are not deleted no exception is
         * thrown if an error occurs, but it will be logged
         *
         * @param authinfo
         */
        public void deleteCreatedTModels(String authinfo) {
                if (this.keyscreated != null) {
                        Iterator iterator = keyscreated.iterator();
                        while (iterator.hasNext()) {
                                DeleteTModel dtm = new DeleteTModel();
                                dtm.setGeneric("2.0");
                                dtm.setAuthInfo(authinfo);
                                String s = iterator.next();
                                logger.info("cleanup tModel " + s);
                                dtm.getTModelKey().add(s);
                                try {
                                        publication.deleteTModel(dtm);
                                } catch (Exception ex) {
                                        logger.warn("failed to delete tmodel " + s + " " + ex.getMessage());
                                        logger.debug("failed to delete tmodel " + s + " " + ex.getMessage(), ex);
                                }
                        }
                }

        }
}
	




© 2015 - 2025 Weber Informatics LLC | Privacy Policy