[Geoserver-devel] More on wps scripting: allows processes to expose a custom namespace

Hi,
right now all scripting processes are basically using the file extension as the
namespace for the process, the code reads:

WpsHook hook = scriptMgr.lookupWpsHook(f);
if (hook == null) {
LOGGER.fine("Skipping " + f.getName() + “, no hook found”);
} else {
//use the extension as the namespace, and the basename as the process name
names.add(new NameImpl(getExtension(f.getName()), getBaseName(f.getName())));

//TODO: support the process defining its namespace
}

All right, let’s talk about that TODO, cause I have time to work on it :-p
My guess is that we probably want to delegate the creation of the name
to the WPSHook:

names.add(hook.getName(f));

And internally the default implementation would just do what the current code does,
but allowing each scripting extension to have its own way to declare namespaces.

In terms of the python one, the natural thing to do would be, imho, to add a namespace
or prefix property inside @process:

@process(
title=‘Buffer’,
description=‘Buffers a geometry’,
prefix = ‘myPrefix’
inputs={‘geom’: (Geometry, ‘The geometry to buffer’),
‘distance’:(float,‘The buffer distance’)},
outputs={‘result’: (Geometry, ‘The buffered geometry’)}
)

and this would result in the process to be exposed as myPrefix:Buffer.
Of course, it would be the process developer responsibility to ensure
the full name is unique

Opinions?

Cheers
Andrea

==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Right now we enable/disable processes using the user interface, it may be wise to enable/disable on a per workspace basis - and make use of workspace namespace like the rest of GeoServer?

However if we introduced process namespace to prevent conflicts between process factories this idea won’t fly.

···

Jody Garnett

On Wed, May 21, 2014 at 8:48 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

Hi,
right now all scripting processes are basically using the file extension as the
namespace for the process, the code reads:

WpsHook hook = scriptMgr.lookupWpsHook(f);
if (hook == null) {
LOGGER.fine("Skipping " + f.getName() + “, no hook found”);
} else {
//use the extension as the namespace, and the basename as the process name
names.add(new NameImpl(getExtension(f.getName()), getBaseName(f.getName())));

//TODO: support the process defining its namespace
}

All right, let’s talk about that TODO, cause I have time to work on it :-p
My guess is that we probably want to delegate the creation of the name
to the WPSHook:

names.add(hook.getName(f));

And internally the default implementation would just do what the current code does,
but allowing each scripting extension to have its own way to declare namespaces.

In terms of the python one, the natural thing to do would be, imho, to add a namespace
or prefix property inside @process:

@process(
title=‘Buffer’,
description=‘Buffers a geometry’,
prefix = ‘myPrefix’
inputs={‘geom’: (Geometry, ‘The geometry to buffer’),
‘distance’:(float,‘The buffer distance’)},
outputs={‘result’: (Geometry, ‘The buffered geometry’)}
)

and this would result in the process to be exposed as myPrefix:Buffer.
Of course, it would be the process developer responsibility to ensure
the full name is unique

Opinions?

Cheers
Andrea

==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Wed, May 21, 2014 at 3:58 PM, Jody Garnett <jody.garnett@anonymised.com>wrote:

Right now we enable/disable processes using the user interface, it may be
wise to enable/disable on a per workspace basis - and make use of workspace
namespace like the rest of GeoServer?

There is no notion of workspaces in WPS, they are completely separate
ideas.
Workspaces are just for data, processes are not data, and not contained in
workspaces.

However if we introduced process namespace to prevent conflicts between
process factories this idea won't fly.

Not between factories, just between processes. A factory can generate
processes in different namespaces,
each process has a Name

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Wed, May 21, 2014 at 6:48 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

Hi,
right now all scripting processes are basically using the file extension
as the
namespace for the process, the code reads:

                WpsHook hook = scriptMgr.lookupWpsHook(f);
                if (hook == null) {
                    LOGGER.fine("Skipping " + f.getName() + ", no hook
found");
                } else {
                    //use the extension as the namespace, and the basename
as the process name
                    names.add(new NameImpl(getExtension(f.getName()),
getBaseName(f.getName())));

                    *//TODO: support the process defining its namespace*
                }

All right, let's talk about that TODO, cause I have time to work on it :-p

Nice!

My guess is that we probably want to delegate the creation of the name
to the WPSHook:

names.add(hook.getName(f));

And internally the default implementation would just do what the current
code does,
but allowing each scripting extension to have its own way to declare
namespaces.

In terms of the python one, the natural thing to do would be, imho, to add
a namespace
or prefix property inside @process:

@process(
   title='Buffer',
   description='Buffers a geometry',
   prefix = 'myPrefix'
   inputs={'geom': (Geometry, 'The geometry to buffer'),
           'distance':(float,'The buffer distance')},
   outputs={'result': (Geometry, 'The buffered geometry')}
)

and this would result in the process to be exposed as myPrefix:Buffer.
Of course, it would be the process developer responsibility to ensure
the full name is unique

Opinions?

Works for me. Do we need to add the namespace uri as well? If so I would
say let's change the parameter to "namespace" and make it a (prefix,uri)
tuple.

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform
available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

--
*Justin Deoliveira*
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive <https://twitter.com/j_deolive&gt;

Our workspaces are exposed as separate “virtual services”, there is some benefit to controlling visibility of WPS processes on a workspace by workspace level.

···

Jody Garnett

On Wed, May 21, 2014 at 10:02 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Wed, May 21, 2014 at 3:58 PM, Jody Garnett <jody.garnett@anonymised.com> wrote:

Right now we enable/disable processes using the user interface, it may be wise to enable/disable on a per workspace basis - and make use of workspace namespace like the rest of GeoServer?

There is no notion of workspaces in WPS, they are completely separate ideas.
Workspaces are just for data, processes are not data, and not contained in workspaces.

However if we introduced process namespace to prevent conflicts between process factories this idea won’t fly.

Not between factories, just between processes. A factory can generate processes in different namespaces,
each process has a Name

Cheers

Andrea

==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


On Wed, May 21, 2014 at 4:07 PM, Jody Garnett <jody.garnett@anonymised.com>wrote:

Our workspaces are exposed as separate "virtual services", there is some
benefit to controlling visibility of WPS processes on a workspace by
workspace level.

But processes are not part of workspaces, there is no containment
relationship.

If you want to have different workspaces expose different process, all you
have to do is to roll
a custom WPS configuration per workspace, which is already there.

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Wed, May 21, 2014 at 4:06 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

@process(

   title='Buffer',
   description='Buffers a geometry',
   prefix = 'myPrefix'
   inputs={'geom': (Geometry, 'The geometry to buffer'),
           'distance':(float,'The buffer distance')},
   outputs={'result': (Geometry, 'The buffered geometry')}
)

and this would result in the process to be exposed as myPrefix:Buffer.
Of course, it would be the process developer responsibility to ensure
the full name is unique

Opinions?

Works for me. Do we need to add the namespace uri as well? If so I would
say let's change the parameter to "namespace" and make it a (prefix,uri)
tuple.

Hum... nope, in processing land we use "namespace" as the prefix, and we
don't really have a namespace.
E.g.:

public GeometryProcessFactory() {
        super(new SimpleInternationalString("Geometry processes"), "geo",
GeometryFunctions.class);
    }

where the base class is:

public StaticMethodsProcessFactory(InternationalString title, String
namespace,
            Class<T> targetClass) {
        super(title, namespace);
        this.targetClass = targetClass;
    }

public Set<Name> getNames() {
        // look for the methods that have the DescribeProcess annotation.
use
        // a linkedHashSet to make sure we don't report duplicate names
        Set<Name> names = new LinkedHashSet<Name>();
        for (Method method : targetClass.getMethods()) {
            DescribeProcess dp =
method.getAnnotation(DescribeProcess.class);
            if (dp != null) {
               * Name name = new NameImpl(namespace, method.getName());*
                if (names.contains(name)) {
                    throw new IllegalStateException(targetClass.getName()
                            + " has two methods named " + method.getName()
                            + ", both annotated with DescribeProcess, this
is an ambiguity. "
                            + "Please a different name");
                }
                names.add(name);
            }
        }
        return names;
    }

I'd keep it that way. Better to call it namespace, for uniformity with the
rest,
or just prefix? (since that's what it is really)

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

Hi,
so here is my first stab at this:
https://github.com/geoserver/geoserver/pull/598

I've added a way for the hook to get the prefix from inside the script,
mimicking the other methods that do require a engine to run (since that's
the only way you get access to the file contents).

Now... stuff works, and the build times do not seem affected, but I have
a little concern that if there are loads of scripts in the scripts
directory,
the change might result in a slowdown, just not sure if significant.

The main reason for it is that to list the names we cannot just pick
the file name anymore, we also have to parse it via the script engine,
to allow the hook to fetch the extra metadata in it, so listing
the names is going to be affected (and createProcess in a way too,
although less since it normally deals with a single file).

If this is cause for concern maybe ScriptProcessFactory could be reworked
so that we have a cache from file path to ScriptFileWatcher, which would
be shared between getNames and createProcess

Let me know

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

Right... now I remember why we didn't implement support the namespace right
away :slight_smile: I do think having to actually load the script engine just to list
processes is going to be problematic... but perhaps the caching that takes
place after that will make it acceptable.

The only other two approaches to this problem i can see would be:

1. A sidecar file
2. A file naming convention

With (1) basically the idea would be to support an "index like" file that
declared stuff about the script files. I have resisted this in the past
because I didn't like the idea of having to maintain this file in addition
to the script. It seemed much more convenient to just have a single file.

For (2) in this case perhaps we could adopt a naming convention, for
example something like "topp:foo.py". Or perhaps even creating sub
directories under the scripts/wps directory:

  /scripts/wps/
     topp/
        foo.py

On Tue, May 27, 2014 at 11:52 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

Hi,
so here is my first stab at this:
https://github.com/geoserver/geoserver/pull/598

I've added a way for the hook to get the prefix from inside the script,
mimicking the other methods that do require a engine to run (since that's
the only way you get access to the file contents).

Now... stuff works, and the build times do not seem affected, but I have
a little concern that if there are loads of scripts in the scripts
directory,
the change might result in a slowdown, just not sure if significant.

The main reason for it is that to list the names we cannot just pick
the file name anymore, we also have to parse it via the script engine,
to allow the hook to fetch the extra metadata in it, so listing
the names is going to be affected (and createProcess in a way too,
although less since it normally deals with a single file).

If this is cause for concern maybe ScriptProcessFactory could be reworked
so that we have a cache from file path to ScriptFileWatcher, which would
be shared between getNames and createProcess

Let me know

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
*Justin Deoliveira*
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive <https://twitter.com/j_deolive&gt;

On Wed, May 28, 2014 at 4:25 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

For (2) in this case perhaps we could adopt a naming convention, for
example something like "topp:foo.py". Or perhaps even creating sub
directories under the scripts/wps directory:

  /scripts/wps/
     topp/
        foo.py

Uuh, nice one. Simple and to the point, and work across all scripting
languages.
I'll start over with this one

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Wed, May 28, 2014 at 11:07 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Wed, May 28, 2014 at 4:25 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

For (2) in this case perhaps we could adopt a naming convention, for
example something like "topp:foo.py". Or perhaps even creating sub
directories under the scripts/wps directory:

  /scripts/wps/
     topp/
        foo.py

Uuh, nice one. Simple and to the point, and work across all scripting
languages.
I'll start over with this one

Cool, thanks Andrea and sorry I didn't think of that earlier... hope you

didn't waste too much time on it.

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
*Justin Deoliveira*
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive <https://twitter.com/j_deolive&gt;

On Wed, May 28, 2014 at 8:01 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

Cool, thanks Andrea and sorry I didn't think of that earlier... hope you

didn't waste too much time on it.

No worries, it's not the end of the world, and I could have thought about
it myself as well, but did not.

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Wed, May 28, 2014 at 8:04 PM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Wed, May 28, 2014 at 8:01 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

Cool, thanks Andrea and sorry I didn't think of that earlier... hope you

didn't waste too much time on it.

No worries, it's not the end of the world, and I could have thought about
it myself as well, but did not.

Here we go, with test for all languages (besides javascript, that is
missing some the wps process tests altogheter
and is using an incompatible resource package name, which is probably the
reason why they are not there):

https://github.com/geoserver/geoserver/pull/602

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Thu, May 29, 2014 at 4:55 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Wed, May 28, 2014 at 8:04 PM, Andrea Aime <andrea.aime@anonymised.com
> wrote:

On Wed, May 28, 2014 at 8:01 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

Cool, thanks Andrea and sorry I didn't think of that earlier... hope

you didn't waste too much time on it.

No worries, it's not the end of the world, and I could have thought about
it myself as well, but did not.

Here we go, with test for all languages (besides javascript, that is
missing some the wps process tests altogheter
and is using an incompatible resource package name, which is probably the
reason why they are not there):

https://github.com/geoserver/geoserver/pull/602

Pull request looks great Andrea. Re javascript i am not 100% sure I

understand what you mean? I see wps tests in the script-js module... not
sure what incompatible package name means...

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
*Justin Deoliveira*
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive <https://twitter.com/j_deolive&gt;

On Thu, May 29, 2014 at 4:35 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

On Thu, May 29, 2014 at 4:55 AM, Andrea Aime <andrea.aime@anonymised.com
> wrote:

On Wed, May 28, 2014 at 8:04 PM, Andrea Aime <
andrea.aime@anonymised.com> wrote:

On Wed, May 28, 2014 at 8:01 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

Cool, thanks Andrea and sorry I didn't think of that earlier... hope

you didn't waste too much time on it.

No worries, it's not the end of the world, and I could have thought
about it myself as well, but did not.

Here we go, with test for all languages (besides javascript, that is
missing some the wps process tests altogheter
and is using an incompatible resource package name, which is probably the
reason why they are not there):

https://github.com/geoserver/geoserver/pull/602

Pull request looks great Andrea.

Excellent

Re javascript i am not 100% sure I understand what you mean? I see wps
tests in the script-js module... not sure what incompatible package name
means...

I mean ScriptProcessTest and ScriptProcessIntTest test subclasses are
missing in the js module, and they cannot be added because
the js scripts used in those tests would have to be in
org.geoserver.script.js, instead they are in org.geoserver.script.js.scripts

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

On Thu, May 29, 2014 at 8:39 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Thu, May 29, 2014 at 4:35 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

On Thu, May 29, 2014 at 4:55 AM, Andrea Aime <
andrea.aime@anonymised.com> wrote:

On Wed, May 28, 2014 at 8:04 PM, Andrea Aime <
andrea.aime@anonymised.com> wrote:

On Wed, May 28, 2014 at 8:01 PM, Justin Deoliveira <
jdeolive@anonymised.com> wrote:

Cool, thanks Andrea and sorry I didn't think of that earlier... hope

you didn't waste too much time on it.

No worries, it's not the end of the world, and I could have thought
about it myself as well, but did not.

Here we go, with test for all languages (besides javascript, that is
missing some the wps process tests altogheter
and is using an incompatible resource package name, which is probably
the reason why they are not there):

https://github.com/geoserver/geoserver/pull/602

Pull request looks great Andrea.

Excellent

Re javascript i am not 100% sure I understand what you mean? I see wps
tests in the script-js module... not sure what incompatible package name
means...

I mean ScriptProcessTest and ScriptProcessIntTest test subclasses are
missing in the js module, and they cannot be added because
the js scripts used in those tests would have to be in
org.geoserver.script.js, instead they are in org.geoserver.script.js.scripts

Ahh right. Cool. So yeah, merge pr at your discretion.

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
*Justin Deoliveira*
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive <https://twitter.com/j_deolive&gt;