-
-
Notifications
You must be signed in to change notification settings - Fork 68
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #40 from netplex/v2.3
R V2.3
- Loading branch information
Showing
48 changed files
with
3,183 additions
and
305 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/target/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,259 @@ | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<!-- this POM is released under an Apache 2.0 license --> | ||
<parent> | ||
<groupId>net.minidev</groupId> | ||
<artifactId>minidev-parent</artifactId> | ||
<version>2.3-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
<artifactId>json-smart-action</artifactId> | ||
<name>JSON Small and Fast Parser</name> | ||
<description> | ||
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language. | ||
</description> | ||
<packaging>bundle</packaging> | ||
<url>http://www.minidev.net/</url> | ||
<organization> | ||
<name>Chemouni Uriel</name> | ||
<url>http://www.minidev.net/</url> | ||
</organization> | ||
<developers> | ||
<developer> | ||
<id>uriel</id> | ||
<name>Uriel Chemouni</name> | ||
<email>uchemouni@gmail.com</email> | ||
<timezone>GMT-7</timezone> | ||
<roles> | ||
</roles> | ||
</developer> | ||
<developer> | ||
<id>erav</id> | ||
<name>Eitan Raviv</name> | ||
<email>adoneitan@gmail.com</email> | ||
<timezone>GMT+2</timezone> | ||
</developer> | ||
</developers> | ||
<licenses> | ||
<license> | ||
<name>The Apache Software License, Version 2.0</name> | ||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> | ||
<distribution>repo</distribution> | ||
<comments>All files under Apache 2</comments> | ||
</license> | ||
</licenses> | ||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<maven.compiler.source>1.5</maven.compiler.source> | ||
<maven.compiler.target>1.5</maven.compiler.target> | ||
</properties> | ||
<dependencies> | ||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.minidev</groupId> | ||
<artifactId>json-smart</artifactId> | ||
</dependency> | ||
</dependencies> | ||
<scm> | ||
<!-- ON GIT HUB --> | ||
<connection>scm:git:https://github.com/netplex/json-smart-v2.git</connection> | ||
<developerConnection>scm:git:https://github.com/netplex/json-smart-v2.git</developerConnection> | ||
<url>https://github.com/netplex/json-smart-v2</url> | ||
</scm> | ||
<distributionManagement> | ||
<snapshotRepository> | ||
<id>ossrh</id> | ||
<url>https://oss.sonatype.org/content/repositories/snapshots</url> | ||
</snapshotRepository> | ||
<repository> | ||
<id>ossrh</id> | ||
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> | ||
</repository> | ||
</distributionManagement> | ||
<profiles> | ||
<profile> | ||
<id>release-sign-artifacts</id> | ||
<activation> | ||
<property> | ||
<!-- will be set by the release plugin upon performing mvn release:perform --> | ||
<name>performRelease</name> | ||
<value>true</value> | ||
</property> | ||
</activation> | ||
<properties> | ||
<!-- My old Is back --> | ||
<gpg.keyname>2C8DF6EC</gpg.keyname> | ||
<!-- <gpg.keyname>8E322ED0</gpg.keyname> --> | ||
<!-- <gpg.keyname>Uriel Chemouni (dev) <uchemouni@gmail.com></gpg.keyname> --> | ||
<!-- GPG Key ID to use for signing --> | ||
</properties> | ||
<build> | ||
<plugins> | ||
<!-- Enable signing of the artifacts For gpg:sign-and-deploy-file it's | ||
necessary to have a <server> with the repositoryId provided or id="remote-repository" | ||
defined in settings.xml (it contains the repository's login, psw) Signing: | ||
mvn gpg:sign-and-deploy-file -DpomFile=target/myapp-1.0.pom -Dfile=target/myapp-1.0.jar | ||
-Durl=http://oss.sonatype.org/content/repositories/malyvelky/ -DrepositoryId=sonatype_oss | ||
Note normally it uses the defaul key but we can ovveride it by either setting | ||
the property gpg.keyname (done in this POM) or by providing -Dkeyname=66AE163A | ||
on the command line. OR directly w/ gpg (remove space in - -): gpg -u 66AE163A | ||
- -sign - -detach-sign -a target/dbunit-embeddedderby-parenttest.jar Note: | ||
"mvn gpg:sign" results in NPE with v 1.o-a.-4, use "mvn package gpg:sign" | ||
instead; see the issue MGPG-18 --> | ||
<plugin> | ||
<!-- updated on 29/07/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-gpg-plugin</artifactId> | ||
<version>1.6</version> | ||
<executions> | ||
<execution> | ||
<id>sign-artifacts</id> | ||
<phase>verify</phase> | ||
<goals> | ||
<goal>sign</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<!-- Publish also javadocs when releasing - required by Sonatype --> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-javadoc-plugin</artifactId> | ||
<executions> | ||
<execution> | ||
<id>attach-javadocs</id> | ||
<goals> | ||
<goal>jar</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<!-- Release Plugin (Update version in POM before/after release, create | ||
tag, deploy) to try: mvn release:prepare -DdryRun=true && mvn release:clean | ||
to perform: mvn release:prepare release:perform Read http://nexus.sonatype.org/oss-repository-hosting.html#3 | ||
for instructions on releasing to this project's Sonatype repository --> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-release-plugin</artifactId> | ||
<version>2.5.2</version> | ||
<configuration> | ||
<mavenExecutorId>forked-path</mavenExecutorId> | ||
<arguments>-Psonatype-oss-release</arguments> | ||
<autoVersionSubmodules>false</autoVersionSubmodules> | ||
<useReleaseProfile>false</useReleaseProfile> | ||
<releaseProfiles>release</releaseProfiles> | ||
<goals>deploy</goals> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</profile> | ||
<profile> | ||
<id>include-sources</id> | ||
<build> | ||
<resources> | ||
<resource> | ||
<targetPath>/</targetPath> | ||
<filtering>true</filtering> | ||
<directory>src/main/java</directory> | ||
<includes> | ||
<include>**/*.java</include> | ||
</includes> | ||
</resource> | ||
</resources> | ||
</build> | ||
</profile> | ||
</profiles> | ||
<build> | ||
<plugins> | ||
<plugin> | ||
<!-- updated on 29/07/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-source-plugin</artifactId> | ||
<version>2.4</version> | ||
<executions> | ||
<execution> | ||
<id>bind-sources</id> | ||
<goals> | ||
<goal>jar-no-fork</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<!-- updated on 29/10/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.3</version> | ||
<configuration> | ||
<encoding>UTF-8</encoding> | ||
<source>1.6</source> | ||
<target>1.6</target> | ||
<excludes> | ||
<exclude>**/.svn/*</exclude> | ||
<exclude>**/.svn</exclude> | ||
</excludes> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<!-- updated on 29/10/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-resources-plugin</artifactId> | ||
<version>2.7</version> | ||
<configuration> | ||
<encoding>UTF-8</encoding> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<!-- updated on 29/10/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-jar-plugin</artifactId> | ||
<version>2.6</version> | ||
<configuration> | ||
<excludes> | ||
<exclude>**/.svn/*</exclude> | ||
<exclude>**/.svn</exclude> | ||
</excludes> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<!-- updated on 29/07/2015 --> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-javadoc-plugin</artifactId> | ||
<version>2.10.3</version> | ||
<!-- ONLY NEEDED With jdk 1.7+ --> | ||
<configuration> | ||
<failOnError>false</failOnError> | ||
<!-- <additionalparam>-Xdoclint:none</additionalparam> --> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<id>attach-javadocs</id> | ||
<goals> | ||
<goal>jar</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.felix</groupId> | ||
<artifactId>maven-bundle-plugin</artifactId> | ||
<version>3.0.0</version> | ||
<extensions>true</extensions> | ||
<configuration> | ||
<instructions> | ||
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> | ||
<Bundle-Name>${project.artifactId}</Bundle-Name> | ||
<Bundle-Version>${project.version}</Bundle-Version> | ||
<Export-Package> | ||
net.minidev.json, net.minidev.json.annotate, net.minidev.json.parser, net.minidev.json.reader, net.minidev.json.writer | ||
</Export-Package> | ||
</instructions> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</project> |
46 changes: 46 additions & 0 deletions
46
json-smart-action/src/main/java/net/minidev/json/actions/ElementRemover.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package net.minidev.json.actions; | ||
|
||
import net.minidev.json.JSONObject; | ||
import net.minidev.json.actions.traverse.JSONTraverser; | ||
import net.minidev.json.actions.traverse.RemoveElementsJsonAction; | ||
import net.minidev.json.actions.traverse.JSONTraverseAction; | ||
|
||
import java.util.*; | ||
|
||
/** | ||
* <b>Removes key:value elements from every node of a {@link JSONObject} matching the list of user-specified elements.</b> | ||
* <p> | ||
* An element to remove must be specified as a key:value pair | ||
* <p> | ||
* <b>Usage Example:</b> | ||
* <p> | ||
* To remove the element k2:v2 from the {@link JSONObject} {k0:{k2:v2, k3:v3}, k1:{k2:v2, k4:v4}} use the remover like so: | ||
* <pre> | ||
* PathRemover pr = new PathRemover("k2.v2"); | ||
* JSONObject cleanObject = pr.remove(new JSONObject(...)); | ||
* </pre> | ||
* The resulting object 'cleanObject' would be {k0:{k3:v3}, k1:{k4:v4}} | ||
* <p> | ||
* See unit tests for more examples | ||
* | ||
* @author adoneitan@gmail.com | ||
* | ||
*/ | ||
public class ElementRemover { | ||
private Map<String, Object> elementsToRemove; | ||
|
||
public ElementRemover(Map<String, Object> elementsToRemove) { | ||
this.elementsToRemove = elementsToRemove == null ? Collections.<String, Object> emptyMap() : elementsToRemove; | ||
} | ||
|
||
public ElementRemover(JSONObject elementsToRemove) { | ||
this.elementsToRemove = elementsToRemove == null ? Collections.<String, Object> emptyMap() : elementsToRemove; | ||
} | ||
|
||
public JSONObject remove(JSONObject objectToClean) { | ||
JSONTraverseAction strategy = new RemoveElementsJsonAction(this.elementsToRemove); | ||
JSONTraverser traversal = new JSONTraverser(strategy); | ||
traversal.traverse(objectToClean); | ||
return (JSONObject) strategy.result(); | ||
} | ||
} |
Oops, something went wrong.