From: Adina S. <as...@us...> - 2006-07-28 06:18:40
|
Update of /cvsroot/wsmx/components/discovery/src/main/ie/deri/wsmx/discovery In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv30253/discovery/src/main/ie/deri/wsmx/discovery Modified Files: DiscoveryFactory.java WSMODiscovery.java DiscoveryFramework.java Added Files: DiscoveryRequestFactory.java Log Message: First integration of keyword and lightweight discovery; the framework now uses an array of discovery engines --- NEW FILE: DiscoveryRequestFactory.java --- /** * Copyright (c) 2006, University of Innsbruck, Austria. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * This library 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 Lesser General Public License for more * details. * You should have received a copy of the GNU Lesser General Public License along * with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package ie.deri.wsmx.discovery; import java.util.List; import org.wsml.reasoner.UnsupportedFeatureException; import org.wsmo.service.Goal; import org.wsmo.service.WebService; import ie.deri.wsmx.discovery.dummy.DummyDiscovery; import ie.deri.wsmx.discovery.io.DiscoveryRequest; import ie.deri.wsmx.discovery.keyword.KeywordDiscovery; import ie.deri.wsmx.discovery.keyword.KeywordDiscoveryRequest; import ie.deri.wsmx.discovery.keyword.KeywordRequestFactory; import ie.deri.wsmx.discovery.lightweight.LightweightDiscoveryRequest; import ie.deri.wsmx.discovery.lightweight.LightweightDiscovery; import ie.deri.wsmx.discovery.lightweight.LightweightRequestFactory; import ie.deri.wsmx.discovery.util.Constants; /** * Uses the abstract factory pattern as a way of creating discovery requests. * * @author Adina Sirbu * @version $Revision: 1.1 $ */ public abstract class DiscoveryRequestFactory { public static DiscoveryRequestFactory getFactory(WSMODiscovery engine) throws UnsupportedOperationException { DiscoveryRequestFactory factory; if (engine instanceof KeywordDiscovery) factory = new KeywordRequestFactory(); else if (engine instanceof LightweightDiscovery) factory = new LightweightRequestFactory(); else throw new UnsupportedOperationException(); return factory; } public abstract DiscoveryRequest createDiscoveryRequest(Goal goal); public abstract DiscoveryRequest createDiscoveryRequest(Goal goal, List<WebService> searchSpace); } Index: DiscoveryFactory.java =================================================================== RCS file: /cvsroot/wsmx/components/discovery/src/main/ie/deri/wsmx/discovery/DiscoveryFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DiscoveryFactory.java 14 Jun 2006 11:38:50 -0000 1.1 --- DiscoveryFactory.java 26 Jul 2006 12:42:03 -0000 1.2 *************** *** 32,41 **** public class DiscoveryFactory { ! public static Discovery createDiscoveryEngine() { return new DummyDiscovery(); } /** ! * Returns a the discovery engine of the specified type, if the type is known/supported. * @throws UnsupportedOperationException */ --- 32,41 ---- public class DiscoveryFactory { ! public static WSMODiscovery createDiscoveryEngine() { return new DummyDiscovery(); } /** ! * Returns a discovery engine of the specified type, if the type is known/supported. * @throws UnsupportedOperationException */ Index: WSMODiscovery.java =================================================================== RCS file: /cvsroot/wsmx/components/discovery/src/main/ie/deri/wsmx/discovery/WSMODiscovery.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WSMODiscovery.java 14 Jun 2006 11:38:50 -0000 1.1 --- WSMODiscovery.java 26 Jul 2006 12:42:03 -0000 1.2 *************** *** 17,20 **** --- 17,23 ---- package ie.deri.wsmx.discovery; + import ie.deri.wsmx.discovery.io.DiscoveryRequest; + import ie.deri.wsmx.discovery.io.DiscoveryResult; + import java.util.Set; *************** *** 53,55 **** --- 56,59 ---- public void removeWebService(Set<WebService> services); + public DiscoveryResult discover(DiscoveryRequest request) throws DiscoveryException; } Index: DiscoveryFramework.java =================================================================== RCS file: /cvsroot/wsmx/components/discovery/src/main/ie/deri/wsmx/discovery/DiscoveryFramework.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DiscoveryFramework.java 24 Jun 2006 09:03:12 -0000 1.2 --- DiscoveryFramework.java 26 Jul 2006 12:42:03 -0000 1.3 *************** *** 19,27 **** --- 19,31 ---- import ie.deri.wsmx.core.configuration.annotation.Exposed; import ie.deri.wsmx.core.configuration.annotation.WSMXComponent; + import ie.deri.wsmx.discovery.io.DiscoveryRequest; + import ie.deri.wsmx.discovery.io.DiscoveryResult; import ie.deri.wsmx.discovery.util.Constants; import ie.deri.wsmx.discovery.util.DefaultLocator; + import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; + import java.util.Iterator; import java.util.List; import java.util.Map; *************** *** 57,67 **** protected static Logger logger = Logger.getLogger(DiscoveryFramework.class); ! private Parser parser; private WsmoFactory wsmoFactory; ! private WSMODiscovery discoveryEngine; public DiscoveryFramework() { wsmoFactory = Factory.createWsmoFactory(new HashMap()); --- 61,74 ---- protected static Logger logger = Logger.getLogger(DiscoveryFramework.class); ! private Parser parser; private WsmoFactory wsmoFactory; ! private int[] types = {Constants.KEYWORD_DISCOVERY, ! Constants.LIGHTWEIGHT_DISCOVERY}; + private List<WSMODiscovery> discoveryEngines; + public DiscoveryFramework() { wsmoFactory = Factory.createWsmoFactory(new HashMap()); *************** *** 75,80 **** Factory.getLocatorManager().addLocator(new DefaultLocator()); ! discoveryEngine = DiscoveryFactory.createDiscoveryEngine( ! Constants.LIGHTWEIGHT_DISCOVERY); } --- 82,89 ---- Factory.getLocatorManager().addLocator(new DefaultLocator()); ! discoveryEngines = new ArrayList<WSMODiscovery>(); ! for (int type : types) ! discoveryEngines.add(DiscoveryFactory.createDiscoveryEngine(type)); ! } *************** *** 129,139 **** } ! /* ! * (non-Javadoc) ! * @see org.wsmo.execution.common.component.Discovery#discover(org.wsmo.service.Goal) */ public List<WebService> discover(Goal goal) throws ComponentException, UnsupportedOperationException { ! return discoveryEngine.discover(goal); } --- 138,171 ---- } ! /** ! * Matches the goal with the available Web service descriptions in two steps. ! * The first (optional) step is a non-semantic pre-filtering that reduces ! * the set of Web services. The technique used in this step is keyword-based matching, ! * the filtering parameters being set such as to ensure that no potentially matching ! * Web services are filtered out. ! * The second step corresponds to lightweight semantic discovery. The resulting set ! * of matching Web services is then returned to the framework. */ public List<WebService> discover(Goal goal) throws ComponentException, UnsupportedOperationException { ! List<WebService> webServices = new ArrayList<WebService>(); ! ! try { ! for (WSMODiscovery engine : discoveryEngines) { ! DiscoveryRequestFactory factory = DiscoveryRequestFactory.getFactory(engine); ! ! DiscoveryRequest request = null; ! if (discoveryEngines.indexOf(engine) == 0) ! request = factory.createDiscoveryRequest(goal); ! else ! request = factory.createDiscoveryRequest(goal, webServices); ! ! DiscoveryResult result = engine.discover(request); ! webServices = new ArrayList<WebService>(result); ! } ! } catch (DiscoveryException e) { ! throw new ComponentException(e); ! } ! return webServices; } *************** *** 229,237 **** private void addWebService(WebService service) throws DiscoveryException { ! discoveryEngine.addWebService(service); } private void removeWebService(WebService service) { ! discoveryEngine.removeWebService(service); } --- 261,271 ---- private void addWebService(WebService service) throws DiscoveryException { ! for (WSMODiscovery engine : discoveryEngines) ! engine.addWebService(service); } private void removeWebService(WebService service) { ! for (WSMODiscovery engine : discoveryEngines) ! engine.removeWebService(service); } |