private String analyseWmsConfigurations( HashMap<String, List<FeatureLayer>> map ) throws XMLStreamException { String crs = null; OwsManager mgr = workspace.getResourceManager( OwsManager.class ); XMLInputFactory infac = XMLInputFactory.newInstance(); List<OWS> wmss = mgr.getByOWSClass( WMSController.class ); for ( OWS ows : wmss ) { StreamSource streamSource = new StreamSource( ows.getMetadata().getLocation().getAsStream() ); XMLStreamReader reader = infac.createXMLStreamReader( streamSource ); reader.next(); while ( reader.hasNext() ) { if ( crs == null && reader.isStartElement() && reader.getLocalName().equals( "CRS" ) ) { crs = reader.getElementText(); } if ( reader.isStartElement() && ( reader.getLocalName().equals( "RequestableLayer" ) || reader.getLocalName().equals( "LogicalLayer" ) ) ) { extractLayer( reader, map ); } reader.next(); } } return crs; }
private void watchTimeout( final OWS ows, final String requestName ) { if ( requestWatchdog != null ) { final String serviceId = ows.getMetadata().getIdentifier().getId(); requestWatchdog.watchCurrentThread( serviceId, requestName ); } }
public void transform() throws TransformerException, XMLStreamException { OwsManager mgr = workspace.getResourceManager( OwsManager.class ); List<OWS> wmss = mgr.getByOWSClass( WMSController.class ); for ( OWS ows : wmss ) { ResourceMetadata<? extends Resource> md = ows.getMetadata(); ResourceIdentifier<? extends Resource> id = md.getIdentifier(); File loc = md.getLocation().resolveToFile( id.getId() + ".xml" ); ByteArrayOutputStream bos = new ByteArrayOutputStream(); transformer.transform( new StreamSource( loc ), new StreamResult( bos ) ); ThemeXmlStreamEncoder.writeOut( bos ); WorkspaceUtils.activateSynthetic( workspace, ThemeProvider.class, id.getId(), new String( bos.toByteArray(), Charset.forName( "UTF-8" ) ) ); } }
/** * Return all active {@link OWS}. * * @return the instance of the requested service used by OGCFrontController, or null if the service is not * registered. */ public Map<String, List<OWS>> getAll() { List<ResourceIdentifier<OWS>> list = workspace.getResourcesOfType( OWSProvider.class ); Map<String, List<OWS>> services = new HashMap<String, List<OWS>>(); for ( ResourceIdentifier<OWS> id : list ) { OWS ows = workspace.getResource( OWSProvider.class, id.getId() ); if ( ows == null ) { continue; } String[] names = ( (OWSProvider) ows.getMetadata().getProvider() ).getImplementationMetadata().getImplementedServiceName(); for ( String name : names ) { List<OWS> owss = services.get( name ); if ( owss == null ) { owss = new ArrayList<OWS>(); services.put( name, owss ); } owss.add( ows ); } } return services; }
/** * Determines the {@link OWS} instance that is responsible for handling XML requests in the given namespace. * * @param ns * XML namespace * @return responsible <code>OWS</code> or null, if no responsible service was found */ public List<OWS> getByRequestNS( String ns ) { List<ResourceIdentifier<OWS>> list = workspace.getResourcesOfType( OWSProvider.class ); List<OWS> services = new ArrayList<OWS>(); for ( ResourceIdentifier<OWS> id : list ) { OWS ows = workspace.getResource( OWSProvider.class, id.getId() ); if ( ows == null ) { continue; } for ( String name : ( (OWSProvider) ows.getMetadata().getProvider() ).getImplementationMetadata().getHandledNamespaces() ) { if ( name.equalsIgnoreCase( ns ) ) { services.add( ows ); } } } return services; }
/** * Returns the {@link OWS} instance that is responsible for handling requests with a certain name, e.g. GetMap, * GetFeature. * * @param requestName * request name, e.g. "GetMap" or "GetFeature" * @return responsible <code>OWS</code> or null, if no responsible service was found */ public List<OWS> getByRequestName( String requestName ) { List<ResourceIdentifier<OWS>> list = workspace.getResourcesOfType( OWSProvider.class ); List<OWS> services = new ArrayList<OWS>(); for ( ResourceIdentifier<OWS> id : list ) { OWS ows = workspace.getResource( OWSProvider.class, id.getId() ); if ( ows == null ) { continue; } for ( String name : ( (OWSProvider) ows.getMetadata().getProvider() ).getImplementationMetadata().getHandledRequests() ) { if ( name.equalsIgnoreCase( "GetCapabilities" ) ) { continue; } if ( name.equalsIgnoreCase( requestName ) ) { services.add( ows ); } } } return services; }
/** * Returns the {@link OWS} instance that is responsible for handling requests to a certain service type, e.g. WMS, * WFS. * * @param serviceType * service type code, e.g. "WMS" or "WFS" * @return responsible <code>OWS</code> or null, if no responsible service was found */ public List<OWS> getByServiceType( String serviceType ) { List<ResourceIdentifier<OWS>> list = workspace.getResourcesOfType( OWSProvider.class ); List<OWS> services = new ArrayList<OWS>(); for ( ResourceIdentifier<OWS> id : list ) { OWS ows = workspace.getResource( OWSProvider.class, id.getId() ); if ( ows == null ) { continue; } for ( String name : ( (OWSProvider) ows.getMetadata().getProvider() ).getImplementationMetadata().getImplementedServiceName() ) { if ( name.equalsIgnoreCase( serviceType ) ) { services.add( ows ); } } } return services; }
public String getMetadataURLTemplate() { // TODO handle this properly in init(), needs service level dependency management if ( metadataURLTemplate == null ) { OwsManager mgr = workspace.getResourceManager( OwsManager.class ); Map<String, List<OWS>> ctrls = mgr.getAll(); for ( List<OWS> lists : ctrls.values() ) { for ( OWS o : lists ) { ImplementationMetadata<?> md = ( (OWSProvider) o.getMetadata().getProvider() ).getImplementationMetadata(); for ( String s : md.getImplementedServiceName() ) { if ( s.equalsIgnoreCase( "csw" ) && md.getImplementedVersions().contains( new Version( 2, 0, 2 ) ) ) { this.metadataURLTemplate = ""; // special case to use requested address } } } } } return metadataURLTemplate; }
OWS o = workspace.getResource( OWSProvider.class, id.getId() ); if ( o != null ) { ImplementationMetadata<?> md = ( (OWSProvider) o.getMetadata().getProvider() ).getImplementationMetadata(); for ( String s : md.getImplementedServiceName() ) { if ( s.equalsIgnoreCase( "csw" ) ) {
&& !( ( (OWSProvider) ows.getMetadata().getProvider() ).getImplementationMetadata().getImplementedServiceName()[0].equalsIgnoreCase( "WMS" ) ) ) { OWSException ex = new OWSException( "The 'SERVICE' parameter is missing.", "MissingParameterValue", "service" );