Skip to content

Commit

Permalink
Issue postmanlabs#155 - pure java codegen. Adding new code generator …
Browse files Browse the repository at this point in the history
…using java 8.
  • Loading branch information
virenderm01 committed May 28, 2020
1 parent e08a9eb commit d626d78
Show file tree
Hide file tree
Showing 23 changed files with 2,891 additions and 65 deletions.
29 changes: 0 additions & 29 deletions .vscode/launch.json

This file was deleted.

41 changes: 41 additions & 0 deletions codegens/java-native/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.DS_Store
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Coverage directory used by tools like istanbul
.coverage

# node-waf configuration
.lock-wscript


# Dependency directories
node_modules/
jspm_packages/

# Typescript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

out/
76 changes: 76 additions & 0 deletions codegens/java-native/.npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
### NPM Specific: Disregard recursive project files
### ===============================================
/.editorconfig
/.gitmodules
/test

### Borrowed from .gitignore
### ========================

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Prevent IDE stuff
.idea
.vscode
*.sublime-*

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
.coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Typescript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

snippet.swift

out/
73 changes: 73 additions & 0 deletions codegens/java-native/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# codegen-java-okhttp

> Converts Postman-SDK Request into code snippet for Java.
#### Prerequisites
To run Code-Gen, ensure that you have NodeJS >= v6. A copy of the NodeJS installable can be downloaded from https://nodejs.org/en/download/package-manager.

## Using the Module
The module will expose an object which will have property `convert` which is the function for converting the Postman-SDK request to java-okhttp code snippet and `getOptions` function which returns an array of supported options.

### convert function
Convert function will take three parameters
* `request`- Postman-SDK Request object

* `options`- options is an object which can have following properties
* `indentType`- string representing type of indentation for code snippet. eg: 'Space', 'Tab'
* `indentCount`- positiveInteger representing count of indentation required.
* `includeBoilerplate`- boolean representing whether to include class definition in code snippet
* `requestTimeout` : Integer denoting time after which the request will bail out in milli-seconds
* `trimRequestBody` : Trim request body fields
* `followRedirect` : Boolean denoting whether to redirect a request

* `callback`- callback function with first parameter as error and second parameter as string for code snippet

##### Example:
```js
var request = new sdk.Request('www.google.com'), //using postman sdk to create request
options = {
indentType: 'Space',
indentCount: 2,
includeBoilerplate: false
};
convert(request, options, function(error, snippet) {
if (error) {
// handle error
}
// handle snippet
});
```

### getOptions function

This function returns a list of options supported by this codegen.

#### Example
```js
var options = getOptions();

console.log(options);
// output
// [
// {
// name: 'Set indentation count',
// id: 'indentCount',
// type: 'positiveInteger',
// default: 2,
// description: 'Set the number of indentation characters to add per code level'
// },
// ...
// ]
```

### Guideline for using generated snippet

* Generated snippet uses `.setRequestMethod(nameOfMethod)` from `HttpURLConnection` class to form HTTP request. If the `method` doesn't require body then the value of `con.setDoOutput()` will be `false`.

* Generated snippet creates a BiConsumer for handling Form Data `BiConsumer<String, String> uploadFileFunction` when `multipart/formdata` is used otherwise it uses `DataOutputStream` in order to add body to request.

* Since Postman-SDK Request object doesn't provide complete path of the file, it needs to be manually inserted in case of uploading a file.

* `content-type` needs to be specified in order to add body to the request. So if no `content-type` is specified then `text/plain` will be used as default. **In case of `multipart/formdata` `content-type` is generated by snippet itself**.

* This module doesn't support cookies.
1 change: 1 addition & 0 deletions codegens/java-native/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('./lib');
5 changes: 5 additions & 0 deletions codegens/java-native/lib/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
convert: require('./javanative').convert,
getOptions: require('./javanative').getOptions
};

Loading

0 comments on commit d626d78

Please sign in to comment.