Nuno:

1) This is very similar to GeoServer 1.0 functionality that allowed
attribute to be named, described, or hidden, ...
2)  Do you need more information to handle the query efficiently? I had for
some time wished to see a "java view" created with a UI similar to "sql
view" making use of the transform process. Sadly this is a little complex
due to the need to reverse any transformation, mapping a query back to the
original data source. Does your " RetypeFeatureTypeCallback" also need to
process queries?
--
Jody Garnett


On Mon, 20 Jan 2020 at 14:31, Nuno Oliveira <nuno.olive...@geo-solutions.it>
wrote:

> Dear all,
> long story short, I would like to propose adding a new extension point in
> ResourcePool that would allow extensions to retype a feature type, and
> consequently change the associated features.
> In practice it would allow us to create extensions that would be able to
> add\hide attributes, generate new attributes or even just change the values
> of existing attributes.
>
> For those wondering if the current FeatureTypeCallbacl [2] doesn't allow
> us already to do that, the answer is no :)
> FeatureTypeCallBack allow extensions to initiate, and manage, feature
> types that are generated based on user provided information, for example,
> SQL views or Solr feature types, but not to change existing types or
> features.
>
> The extensions code would be executed here [3] and here [4], when a
> feature type is build  (buildFeatureType) and when the source for a feature
> type is returned (getFeatureSource).
> The later would allow us to wrap a feature source, setting the feature
> type we want and\or apply the wrappers we want to the future stream of
> features.
>
> I'm proposing the following interface for the extension point:
>
> /**
>  * Extension point for {@link ResourcePool} allowing us to retype an
> existing {@link FeatureType},
>  * and to rearrange the features produced by the correspondent {@link
> FeatureSource} by wrapping it.
>  * This extension point can be, for example, used to add a new attribute
> or remove an existing one.
>  * If the intend is instead to create a new feature type, the existing
> {@link FeatureTypeCallback}
>  * extension point should be used.
>  */
> public interface RetypeFeatureTypeCallback {
>
>     /**
>      * Gives a chance to this callback to retype the provided feature
> type, if this callback has no
>      * interest in retyping the provided feature type, then the unchanged
> provided feature type
>      * should be returned. NULL should never be returned.
>      *
>      * @param featureTypeInfo non NULL GeoServer feature type info
>      * @param featureType non NULL GeoTools data source feature type
>      * @return retyped feature type or the unchanged provided feature type
>      */
>     FeatureType retypeFeatureType(FeatureTypeInfo featureTypeInfo,
> FeatureType featureType);
>
>     /**
>      * Gives a chance to this callback to wrap the provided feature
> source, if this callback has no
>      * interest in wrapping the provided feature source, then the
> unchanged provided feature source
>      * should be returned. NULL should never be returned.
>      *
>      * @param featureTypeInfo non NULL GeoServer feature type info
>      * @param featureSource non NULL GeoTools feature source
>      * @return wrapped feature source or the unchanged provided feature
> source
>      */
>     <T extends FeatureType, U extends Feature> FeatureSource<T, U>
> wrapFeatureSource(
>             FeatureTypeInfo featureTypeInfo, FeatureSource<T, U>
> featureSource);
> }
>
> If this extension point is accepted, we would also like to backport it to
> 2.16.x, opinions are welcome :)
>
> Kind regards,
> Nuno Oliveira
>
> [1]
> https://github.com/geoserver/geoserver/blob/master/src/main/src/main/java/org/geoserver/catalog/ResourcePool.java
> [2]
> https://github.com/geoserver/geoserver/blob/master/src/main/src/main/java/org/geoserver/catalog/FeatureTypeCallback.java
> [3]
> https://github.com/geoserver/geoserver/blob/master/src/main/src/main/java/org/geoserver/catalog/ResourcePool.java#L1114
> [4]
> https://github.com/geoserver/geoserver/blob/master/src/main/src/main/java/org/geoserver/catalog/ResourcePool.java#L1393
>
> --
> Regards,
> Nuno Oliveira
> ==
> GeoServer Professional Services from the
> experts!
> Visit http://goo.gl/it488V for more information.
> ==
>
> Nuno Miguel Carvalho Oliveira
> @nmcoliveira
> Software Engineer
>
> GeoSolutions S.A.S.
> Via di Montramito 3/A
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax:      +39 0584 1660272
> http://www.geo-solutions.ithttp://twitter.com/geosolutions_it
>
> -------------------------------------------------------
>
> Con riferimento alla normativa sul trattamento dei dati
> personali (Reg. UE 2016/679 - Regolamento generale sulla
> protezione dei dati “GDPR”), si precisa che ogni
> circostanza inerente alla presente email (il suo contenuto,
> gli eventuali allegati, etc.) è un dato la cui conoscenza
> è riservata al/i solo/i destinatario/i indicati dallo
> scrivente. Se il messaggio Le è giunto per errore, è
> tenuta/o a cancellarlo, ogni altra operazione è illecita.
> Le sarei comunque grato se potesse darmene notizia.
>
> This email is intended only for the person or entity to
> which it is addressed and may contain information that
> is privileged, confidential or otherwise protected from
> disclosure. We remind that - as provided by European
> Regulation 2016/679 “GDPR” - copying, dissemination or
> use of this e-mail or the information herein by anyone
> other than the intended recipient is prohibited. If you
> have received this email by mistake, please notify
> us immediately by telephone or e-mail.
>
> _______________________________________________
> Geoserver-devel mailing list
> Geoserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
>
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to