View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.juddi.function;
17  
18  import java.util.Vector;
19  
20  import org.apache.juddi.datatype.CategoryBag;
21  import org.apache.juddi.datatype.IdentifierBag;
22  import org.apache.juddi.datatype.RegistryObject;
23  import org.apache.juddi.datatype.binding.BindingTemplate;
24  import org.apache.juddi.datatype.binding.BindingTemplates;
25  import org.apache.juddi.datatype.business.BusinessEntity;
26  import org.apache.juddi.datatype.request.ValidateValues;
27  import org.apache.juddi.datatype.response.DispositionReport;
28  import org.apache.juddi.datatype.response.Result;
29  import org.apache.juddi.datatype.service.BusinessService;
30  import org.apache.juddi.datatype.service.BusinessServices;
31  import org.apache.juddi.datatype.tmodel.TModel;
32  import org.apache.juddi.error.RegistryException;
33  import org.apache.juddi.registry.RegistryEngine;
34  import org.apache.juddi.util.Config;
35  
36  /***
37   * @author Steve Viens (sviens@apache.org)
38   */
39  public class ValidateValuesFunction extends AbstractFunction
40  {
41    /***
42     *
43     */
44    public ValidateValuesFunction(RegistryEngine registry)
45    {
46      super(registry);
47    }
48  
49    /***
50     *
51     * @param obj
52     * @return RegistryObject
53     * @throws RegistryException
54     */
55    public RegistryObject execute(RegistryObject obj)
56      throws RegistryException
57    {
58      ValidateValues request = (ValidateValues)obj;
59      String generic = request.getGeneric();
60  
61      Vector businessVector = request.getBusinessEntityVector();
62      if ((businessVector != null) && (businessVector.size() > 0))
63        validateBusinessVector(businessVector);
64  
65      Vector serviceVector = request.getBusinessServiceVector();
66      if ((serviceVector != null) && (serviceVector.size() > 0))
67        validateServiceVector(serviceVector);
68  
69      Vector tModelVector = request.getTModelVector();
70      if ((tModelVector != null) && (tModelVector.size() > 0))
71        validateTModelVector(tModelVector);
72  
73      // We don't currently support thh validate_values
74      // function so to keep things moving along let's 
75      // just return a successful DispositionReport.
76      
77      // We didn't encounter any problems so let's create an
78      // E_SUCCESS Result, embed it in a DispositionReport
79      // and return it.
80      Result result = new Result(Result.E_SUCCESS);
81      result.setErrCode(Result.lookupErrCode(Result.E_SUCCESS));    
82      DispositionReport dispRpt = new DispositionReport();
83      dispRpt.setGeneric(generic);
84      dispRpt.setOperator(Config.getOperator());
85      dispRpt.addResult(result);
86      
87      return dispRpt;
88    }
89  
90    /***
91     *
92     */
93    private RegistryObject validateBusinessVector(Vector businessVector)
94    {
95      if (businessVector == null)
96        return null;
97      
98      for (int i=0; i<businessVector.size(); i++)
99      {
100       BusinessEntity business = (BusinessEntity)businessVector.elementAt(i);
101       
102       CategoryBag catBag = business.getCategoryBag();
103       if (catBag != null)
104       {
105         Vector refs = catBag.getKeyedReferenceVector();
106         if ((refs != null) && (refs.size() > 0))
107           validate(refs);
108       }
109     
110       IdentifierBag idBag = business.getIdentifierBag();
111       if (idBag != null)
112       {
113         Vector refs = idBag.getKeyedReferenceVector();
114         if ((refs != null) && (refs.size() > 0))
115           validate(refs);
116       }
117       
118       BusinessServices services = business.getBusinessServices();
119       if (services != null)
120       {
121         Vector serviceVector = services.getBusinessServiceVector();
122         if (serviceVector != null)
123           validateServiceVector(serviceVector);
124       }
125     }
126     
127     return null;
128   }
129 
130   /***
131    *
132    */
133   private RegistryObject validateServiceVector(Vector serviceVector)
134   {
135     if (serviceVector == null)
136       return null;
137     
138     for (int i=0; i<serviceVector.size(); i++)
139     {
140       BusinessService service = (BusinessService)serviceVector.elementAt(i);
141       
142       CategoryBag catBag = service.getCategoryBag();
143       if (catBag != null)
144       {
145         Vector refs = catBag.getKeyedReferenceVector();
146         if ((refs != null) && (refs.size() > 0))
147           validate(refs);
148       }
149       
150       BindingTemplates templates = service.getBindingTemplates();
151       if (templates != null)
152       {
153         Vector bindings = templates.getBindingTemplateVector();
154         if (bindings != null)
155           validateBindingVector(bindings);
156       }
157     }
158     
159     return null;
160   }
161 
162   /***
163    *
164    */
165   private RegistryObject validateBindingVector(Vector bindingVector)
166   {
167     if (bindingVector == null)
168       return null;
169    
170     for (int i=0; i<bindingVector.size(); i++)
171     {
172       BindingTemplate binding = (BindingTemplate)bindingVector.elementAt(i);
173     
174       CategoryBag catBag = binding.getCategoryBag();
175       if (catBag != null)
176       {
177         Vector refs = catBag.getKeyedReferenceVector();
178         if ((refs != null) && (refs.size() > 0))
179           validate(refs);
180       }
181     }
182   
183     return null;
184   }
185  
186   /***
187    *
188    */
189   private RegistryObject validateTModelVector(Vector tModelVector)
190   {
191     if (tModelVector == null)
192       return null;
193     
194     for (int i=0; i<tModelVector.size(); i++)
195     {
196       TModel tModel = (TModel)tModelVector.elementAt(i);
197       
198       CategoryBag catBag = tModel.getCategoryBag();
199       if (catBag != null)
200       {
201         Vector refs = catBag.getKeyedReferenceVector();
202         if ((refs != null) && (refs.size() > 0))
203           validate(refs);
204       }
205       
206       IdentifierBag idBag = tModel.getIdentifierBag();
207       if (idBag != null)
208       {
209         Vector refs = idBag.getKeyedReferenceVector();
210         if ((refs != null) && (refs.size() > 0))
211           validate(refs);
212       }
213     }
214     
215     return null;
216   }
217   
218   /***
219    * 
220    * @param args
221    */
222   private RegistryObject validate(Vector refs)
223   {
224     if (refs == null)
225       return null;
226     
227     for (int i=0; i<refs.size(); i++)
228     {
229       //KeyedReference ref = (KeyedReference)refs.elementAt(i);
230      
231       // Perform the validation
232     }
233     
234     return null;
235   }
236 
237   /****************************************************************************/
238   /****************************** TEST DRIVER *********************************/
239   /****************************************************************************/
240 
241 
242   public static void main(String[] args)
243   {
244     // initialize the registry
245     RegistryEngine reg = new RegistryEngine();
246     reg.init();
247 
248     try
249     {
250     }
251     catch (Exception ex)
252     {
253       // write execption to the console
254       ex.printStackTrace();
255     }
256     finally
257     {
258       // destroy the registry
259       reg.dispose();
260     }
261   }
262 }