Giter Site home page Giter Site logo

touwolf / bridje-framework Goto Github PK

View Code? Open in Web Editor NEW
14.0 10.0 6.0 6.36 MB

Bridje Java Framework

Home Page: http://www.bridje.org/

License: Apache License 2.0

Java 94.69% FreeMarker 4.54% JavaScript 0.77%
java-framework java dsl ioc-container orm freemarker netty minimum http-server maven

bridje-framework's Introduction

Build Status Maven Central Codacy Badge

Introduction

This package contains the Bridje Java Applications Framework. A project that provides a set of Java APIs to be use in Java projects. Bridje can be compared to Spring but it´s more simplistic and lightweight. The project brings you a way of doing things that is not compromised by any JSR. The goals for this project are:

  • Simple: We try to follow the KISS principle, we avoid providing too much ways of resolving the same problem.
  • Reuse: We try to reuse concepts as much as possible in the framework internals and in your apps, so they both use the same things .
  • Minimal: We try to reduce the dependencies of both the framework and your application to the minimum necessary. This means that for many things we make our own implementations instead of using a third-party APIs.
  • Multipurpose: The framework is mean to be use in CLI, desktop and web apps.
  • Standalone: Your applications can run by themselves, no further server or container is needed besides the Java Virtual Machine.
  • Embedded: The APIs are designed to be embedded in your applications and not the other way around.
  • Modular: You must use what you need, and in some case some unavoidable dependencies but you are not force by any means to put in your classpath any library that it´s not absolutely necessary, for the framework or your app.
  • Performance: We try to reduce to the maximum the overhead of the framework and enforce you to use good practices in your app to gain maximum performance
  • Low Memory: By reducing the amount of classes and code, and by enforcing good architectural patterns in your app the memory consumption can decrease a lot.
  • Productivity: We try to reduce to the minimum possible the code that it´s not part of your applications domain logic, without taking away from you the control that you need as a software developer over your code.
  • Robust: We try to enforce encapsulation, static typing and all the nice features that Java as a language has to offer. So not your code, nor the framework itself it´s easily broken.
  • Scalable: We try to enforce practices and patterns that cost you the same amount of hardware resources (more or less) no matter the amount of users you will handle in production.

All of these goals are really ambitious, and at many times one or more of them need to be sacrificed in favor of the others, but we think that is a matter of balance and priorities. So the framework will orbit around these principles.

See Changelog See The Framework´s Wiki

LICENSE

The project is licensed under the Apache License:

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Installation and Usage

Bridje libraries are available on the Maven Central Repository

    <properties>
        ....
        <bridje.version>0.4.2</bridje.version>
    </properties>

    <dependencies>
	....
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-ioc</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-vfs</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-http</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-web</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-el</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-jdbc</artifactId>
            <version>${bridje.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bridje</groupId>
            <artifactId>bridje-orm</artifactId>
            <version>${bridje.version}</version>
        </dependency>
	....
    </dependencies>

    <build>
        <plugins>
            ....
            <plugin>
                <groupId>org.bridje</groupId>
                <artifactId>bridje-maven-plugin</artifactId>
                <version>${bridje.version}</version>
		<executions>
			<execution>
			    <id>generate-bridje-sources</id>
			    <goals>
				<goal>generate-sources</goal>
			    </goals>
			    <phase>generate-sources</phase>
			</execution>
		</executions>
		<dependencies>
			<dependency>
			    <groupId>org.bridje</groupId>
			    <artifactId>bridje-web-srcgen</artifactId>
			    <version>${bridje.version}</version>
			</dependency>
			<dependency>
			    <groupId>org.bridje</groupId>
			    <artifactId>bridje-orm-srcgen</artifactId>
			    <version>${bridje.version}</version>
			</dependency>
		</dependencies>
            <plugin>
            ....
        <plugins>
     </build>

Dependencies

Runtime Dependencies

Your application will include the framework's librarys as well as this dependencies at runtime

Compile Dependencies

Your application does not need to depend on this libraries unless you specifically include then

  • Freemarker 2.0.23 The template engine used in the bridje-maven-plugin for generating code.
  • JavaParser 3.2.2 For java source code parsing in the source generation API.

Framework Build Dependencies

The libraries that the framework uses in the build process.

  • Apache Maven 3.3+ The framework is build with maven, it´s mean to be use with it but nothing stop you from using it from gradle, ivy, ant, or whatever build system you choose, that supports the JVM languages.
  • Junit 4 The framework is tested with junit.

bridje-framework's People

Contributors

acostaadael avatar amatosg avatar cocuyo avatar dependabot[bot] avatar gilbva avatar gorums avatar lrdluis avatar matozoid avatar zp1ke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bridje-framework's Issues

Create a new docking framework for javafx

Implement a new version of the docking framework for javafx, this time add support for doc/undock panels, also create services for persisting the windows sizes and position. Create a more easy to use and decouple docking patterns by using annotations insteag of having the need to extend from a class.

Change the scope concepto to a class in the Bridje Ioc

The @component("SOMESCOPE") must be changed to a class like this
@component(MyClass.class) and when the users creates a new child context it should call the method as this. ctx.createChildContext(new MyClass()). the MyClass will become a component of the context available to all components of the scope that what to inject it.

Replace the regular expressions querys in the VFS.

The functions listFolders and listFiles in the VfsService and VfsResource requires that the user pass a regex to it, The regex could be replaced with a more standard way of serach in a file tree, The needed wilcard characters are.

      • cero or more characters except for \
  • ? - a single character except for \
  • ** - cero or more characters including \

Add support for get and post parameters in the bridje-web

An annotation for the request parameters is needed, if the user mades a request to the server lets say

http://myserver/mypage?param=value&param2=value2
// or via POST
param=value&param2=value2

The user can specify that he whants the parameters from the request injected into the component he choose like this.

@Component(scope = WebRequestScope.class)
public MyController
{
     @Param
     private String param;

     //Or with the specific name.
     @Param("param2")
     private String otherParam;
}

For now is only required that the framework handles native types like numers, dates, and strings. More complex objects mappings will be provided later with a new feature.

Configuration contexts in bridje-cfg

Create a feature to allow configurations contexts in bridje-cfg. This means ConfigRepositories must especify when ever they can create a nuew ConfigContextRepository and the ConfigService must use this to create a configuration context with all the ConfigContextRepository availables for the given context.

Migrate Source Code Generation

  • Step 1: Create JAXB classes for mapping xml source files for code generation, like they are now in the web, and the orm frameworks, The corresponding xsd schemas are in the projectes in BRIDJE-INF/srcgen/orm/model.xsd and BRIDJE-INF/srcgen/web/theme.xsd
  • Step 2: Remove the xsd files and configure the xsd generation out of the classes for each module.
  • Step 3: Define and implement the mecanism used to generate code in the srcgen module, so that the orm and the web modules can use it to generate the code they whant. The mecanism must provide the gest module (orm or web) with the necesary feature to lookup for the source xml file they whant and also to create the classes and resources they whant.
  • Step 4: Implement the code generation in each module by implementing and using the classes and interfaces that the srcgen projects provides.
  • Step 5: Remove old generation mecanism in groovy, and replace it using the srcgen module to generate the source code in the bridje-maven-plugin
  • Step 6: Test the code generation with several doomy projects, and see that all features are there.

Add support for injecting cookies in the bridje-web

An annotation for injecting the cookies is needed, if the user made a request to the server with cookies

myCookie=somevalue

The user can specify that he whants the cookie injected from the request into the component he choose like this.

@Component(scope = WebRequestScope.class)
public MyController
{
     @Cookie
     private String myCookie;

     //Or with the specific name.
     @Cookie("myCookie")
     private String otherCookie;
}

For now is only required that the framework handles native types like numers, dates, and strings. More complex objects mappings will be provided later with a new feature.

Important

The Cookie annotation must also specify the path, and expiration data like this

@Cookie("myCookie", path="/", exp=-1)

The framework must check when ever the cooke change his value during the request and if that the case the cookie must be updated back to the client. The cookie will be left untouch if it has the same value that the client send.

The IocContext is not being injected.

This code

    @Inject
    private IocContext appCtx;

or this

    @Inject
    private IocContext<Application> appCtx;

is not working. The problem arise on the change of the concept scope, the ContextImpl is not being passed to the Instanciator as a created object, and the framework cannot find any component that implements it.

handler priority in http

the root handler component of http server has priority 0, so if i implements a handler with priority lower than 0, is never called.
so, why not this root handler of http has Integer.MIN_VALUE instead than 0?

File listing may be not supported

In the VFS API not all file systems may support file listing, (E.g. HTTP, etc..) so the API must take this into account and provides a method like canList on the VirtualFolder interface so the user of the API can tell if any given folder may list his files.

Implement a new generics tools for bridje ioc

Java Parametized type is being used for service right now, but the java generics framework does not provide some funtionality, for example create a ParameterizedType at runtime, and other limitations as well, this is way a new generics tools are required to handle the services in the bridje ioc. The idea is that instead of storing the types for the service the framework implements his own type storage class that need to be hashable and comparable and created at runtime, so the services lookup mecanism can be more consistent and usefull to the user and the framework.

Component superclass interface mapping

Given:
Interfaz X
Class Y implements X
Component Z extends Y
On:
Ioc.context().findAll(X.class);
Result:
returns empty array.
Expected result:
returns [Z]

Test the performance of the http server

The http server needs to be tested with some application and some http testing solution like jmeter to ensure that is fast, that can scale well and to find any bugs that may have.

Inject handler

We need separate inject handler for other annotation.

Virtual File System API

Create a virtual file systema API with capabilities for mount diferent file systems and search through the files tree with file expresiones with wildacards (*, ?). Be able to parse files with a mecanism that allows you to create parsers and then ask for direct classes.

java.lang.NullPointerException in the VFS API

Exception in thread "main" java.lang.NullPointerException
at org.bridje.vfs.FileVfsSource.listFolders(FileVfsSource.java:59)
at org.bridje.vfs.FileVfsSource.listFolders(FileVfsSource.java:34)
at org.bridje.vfs.impl.PhysicalFolder.listFolders(PhysicalFolder.java:106)
at org.bridje.vfs.impl.PhysicalFolder.listFolders(PhysicalFolder.java:89)
at org.bridje.vfs.impl.AbstractResource.travel(AbstractResource.java:95)
at org.bridje.vfs.impl.AbstractResource.travel(AbstractResource.java:98)
at org.bridje.vfs.impl.AbstractResource.travel(AbstractResource.java:98)
at org.bridje.vfs.impl.AbstractResource.travel(AbstractResource.java:98)
at org.bridje.vfs.impl.PhysicalFolder.travel(PhysicalFolder.java:196)
at org.bridje.examples.simple.config.Main.main(Main.java:34)

Improve memory usage and performance for the ioc api

Be able to load classes dinamically and not all at one at the begening for the components.
Profile the api to see how much memory is using and how fast it is, and improve the api in general by creating cache maps for must common tasks.

Enhances to the ORM

  • Allow fetching the original table on a join, when the user uses a join in a query, the query becomes the relation query but if the user wishes to retrieve the original table it must save the original query, a new method is needed that takes the result table.
  • Add joinOn method that takes the on condition for the join.
  • Support for insert update and delete queries.
  • Allow fixing more than one table in the fixTable method.

Usage manual missing

I want to test bridje but there is no help about the ussage. Please provide a few simple examples on how to use the framework, this way I could report any issue (if any) 😉

Implement first version of bridje sip

Create a new api that allows you to add a sip server in your application. the sip server will use netty like the http server does. The sip messages need to be parsed and passed to the user in a similar way as the http messages.

Implement first version of the web framework

Create a web framework that allows you to especify the content of the pages in xml, an render the pages with a template engine, It must allow you to control the pages flow as well and to develop your views in a way that is easy to call events on the server.

Refactor ORM API

Put all the informatinon of entityes, fields and relations the public Table and Column classes so the orm dont need to use internal structures like EnityInf, FieldInf and RelationInf and avoid the use of map to find the necesary information for querying entitys.

Add mime type descover to the VFiles in the VFS

private synchronized void initMimeTypes()
{
    Map<String,String> map = new HashMap<>();

    map.put("3dm","x-world/x-3dmf");
    map.put("3dmf","x-world/x-3dmf");
    map.put("a","application/octet-stream");
    map.put("aab","application/x-authorware-bin");
    map.put("aam","application/x-authorware-map");
    map.put("aas","application/x-authorware-seg");
    map.put("abc","text/vnd.abc");
    map.put("acgi","text/html");
    map.put("afl","video/animaflex");
    map.put("ai","application/postscript");
    map.put("aif","audio/aiff");
    map.put("aif","audio/x-aiff");
    map.put("aifc","audio/aiff");
    map.put("aifc","audio/x-aiff");
    map.put("aiff","audio/aiff");
    map.put("aiff","audio/x-aiff");
    map.put("aim","application/x-aim");
    map.put("aip","text/x-audiosoft-intra");
    map.put("ani","application/x-navi-animation");
    map.put("aos","application/x-nokia-9000-communicator-add-on-software");
    map.put("aps","application/mime");
    map.put("arc","application/octet-stream");
    map.put("arj","application/arj");
    map.put("arj","application/octet-stream");
    map.put("art","image/x-jg");
    map.put("asf","video/x-ms-asf");
    map.put("asm","text/x-asm");
    map.put("asp","text/asp");
    map.put("asx","application/x-mplayer2");
    map.put("asx","video/x-ms-asf");
    map.put("asx","video/x-ms-asf-plugin");
    map.put("au","audio/basic");
    map.put("au","audio/x-au");
    map.put("avi","application/x-troff-msvideo");
    map.put("avi","video/avi");
    map.put("avi","video/msvideo");
    map.put("avi","video/x-msvideo");
    map.put("avs","video/avs-video");
    map.put("bcpio","application/x-bcpio");
    map.put("bin","application/mac-binary");
    map.put("bin","application/macbinary");
    map.put("bin","application/octet-stream");
    map.put("bin","application/x-binary");
    map.put("bin","application/x-macbinary");
    map.put("bm","image/bmp");
    map.put("bmp","image/bmp");
    map.put("bmp","image/x-windows-bmp");
    map.put("boo","application/book");
    map.put("book","application/book");
    map.put("boz","application/x-bzip2");
    map.put("bsh","application/x-bsh");
    map.put("bz","application/x-bzip");
    map.put("bz2","application/x-bzip2");
    map.put("c","text/plain");
    map.put("c","text/x-c");
    map.put("c++","text/plain");
    map.put("cat","application/vnd.ms-pki.seccat");
    map.put("cc","text/plain");
    map.put("cc","text/x-c");
    map.put("ccad","application/clariscad");
    map.put("cco","application/x-cocoa");
    map.put("cdf","application/cdf");
    map.put("cdf","application/x-cdf");
    map.put("cdf","application/x-netcdf");
    map.put("cer","application/pkix-cert");
    map.put("cer","application/x-x509-ca-cert");
    map.put("cha","application/x-chat");
    map.put("chat","application/x-chat");
    map.put("class","application/java");
    map.put("class","application/java-byte-code");
    map.put("class","application/x-java-class");
    map.put("com","application/octet-stream");
    map.put("com","text/plain");
    map.put("conf","text/plain");
    map.put("cpio","application/x-cpio");
    map.put("cpp","text/x-c");
    map.put("cpt","application/mac-compactpro");
    map.put("cpt","application/x-compactpro");
    map.put("cpt","application/x-cpt");
    map.put("crl","application/pkcs-crl");
    map.put("crl","application/pkix-crl");
    map.put("crt","application/pkix-cert");
    map.put("crt","application/x-x509-ca-cert");
    map.put("crt","application/x-x509-user-cert");
    map.put("csh","application/x-csh");
    map.put("csh","text/x-script.csh");
    map.put("css","application/x-pointplus");
    map.put("css","text/css");
    map.put("cxx","text/plain");
    map.put("dcr","application/x-director");
    map.put("deepv","application/x-deepv");
    map.put("def","text/plain");
    map.put("der","application/x-x509-ca-cert");
    map.put("dif","video/x-dv");
    map.put("dir","application/x-director");
    map.put("dl","video/dl");
    map.put("dl","video/x-dl");
    map.put("doc","application/msword");
    map.put("dot","application/msword");
    map.put("dp","application/commonground");
    map.put("drw","application/drafting");
    map.put("dump","application/octet-stream");
    map.put("dv","video/x-dv");
    map.put("dvi","application/x-dvi");
    map.put("dwf","drawing/x-dwf (old)");
    map.put("dwf","model/vnd.dwf");
    map.put("dwg","application/acad");
    map.put("dwg","image/vnd.dwg");
    map.put("dwg","image/x-dwg");
    map.put("dxf","application/dxf");
    map.put("dxf","image/vnd.dwg");
    map.put("dxf","image/x-dwg");
    map.put("dxr","application/x-director");
    map.put("el","text/x-script.elisp");
    map.put("elc","application/x-bytecode.elisp (compiled elisp)");
    map.put("elc","application/x-elc");
    map.put("env","application/x-envoy");
    map.put("eps","application/postscript");
    map.put("es","application/x-esrehber");
    map.put("etx","text/x-setext");
    map.put("evy","application/envoy");
    map.put("evy","application/x-envoy");
    map.put("exe","application/octet-stream");
    map.put("f","text/plain");
    map.put("f","text/x-fortran");
    map.put("f77","text/x-fortran");
    map.put("f90","text/plain");
    map.put("f90","text/x-fortran");
    map.put("fdf","application/vnd.fdf");
    map.put("fif","application/fractals");
    map.put("fif","image/fif");
    map.put("fli","video/fli");
    map.put("fli","video/x-fli");
    map.put("flo","image/florian");
    map.put("flx","text/vnd.fmi.flexstor");
    map.put("fmf","video/x-atomic3d-feature");
    map.put("for","text/plain");
    map.put("for","text/x-fortran");
    map.put("fpx","image/vnd.fpx");
    map.put("fpx","image/vnd.net-fpx");
    map.put("frl","application/freeloader");
    map.put("funk","audio/make");
    map.put("g","text/plain");
    map.put("g3","image/g3fax");
    map.put("gif","image/gif");
    map.put("gl","video/gl");
    map.put("gl","video/x-gl");
    map.put("gsd","audio/x-gsm");
    map.put("gsm","audio/x-gsm");
    map.put("gsp","application/x-gsp");
    map.put("gss","application/x-gss");
    map.put("gtar","application/x-gtar");
    map.put("gz","application/x-compressed");
    map.put("gz","application/x-gzip");
    map.put("gzip","application/x-gzip");
    map.put("gzip","multipart/x-gzip");
    map.put("h","text/plain");
    map.put("h","text/x-h");
    map.put("hdf","application/x-hdf");
    map.put("help","application/x-helpfile");
    map.put("hgl","application/vnd.hp-hpgl");
    map.put("hh","text/plain");
    map.put("hh","text/x-h");
    map.put("hlb","text/x-script");
    map.put("hlp","application/hlp");
    map.put("hlp","application/x-helpfile");
    map.put("hlp","application/x-winhelp");
    map.put("hpg","application/vnd.hp-hpgl");
    map.put("hpgl","application/vnd.hp-hpgl");
    map.put("hqx","application/binhex");
    map.put("hqx","application/binhex4");
    map.put("hqx","application/mac-binhex");
    map.put("hqx","application/mac-binhex40");
    map.put("hqx","application/x-binhex40");
    map.put("hqx","application/x-mac-binhex40");
    map.put("hta","application/hta");
    map.put("htc","text/x-component");
    map.put("htm","text/html");
    map.put("html","text/html");
    map.put("htmls","text/html");
    map.put("htt","text/webviewhtml");
    map.put("htx","text/html");
    map.put("ice","x-conference/x-cooltalk");
    map.put("ico","image/x-icon");
    map.put("idc","text/plain");
    map.put("ief","image/ief");
    map.put("iefs","image/ief");
    map.put("iges","application/iges");
    map.put("iges","model/iges");
    map.put("igs","application/iges");
    map.put("igs","model/iges");
    map.put("ima","application/x-ima");
    map.put("imap","application/x-httpd-imap");
    map.put("inf","application/inf");
    map.put("ins","application/x-internett-signup");
    map.put("ip","application/x-ip2");
    map.put("isu","video/x-isvideo");
    map.put("it","audio/it");
    map.put("iv","application/x-inventor");
    map.put("ivr","i-world/i-vrml");
    map.put("ivy","application/x-livescreen");
    map.put("jam","audio/x-jam");
    map.put("jav","text/plain");
    map.put("jav","text/x-java-source");
    map.put("java","text/plain");
    map.put("java","text/x-java-source");
    map.put("jcm","application/x-java-commerce");
    map.put("jfif","image/jpeg");
    map.put("jfif","image/pjpeg");
    map.put("jfif-tbnl","image/jpeg");
    map.put("jpe","image/jpeg");
    map.put("jpe","image/pjpeg");
    map.put("jpeg","image/jpeg");
    map.put("jpeg","image/pjpeg");
    map.put("jpg","image/jpeg");
    map.put("jpg","image/pjpeg");
    map.put("jps","image/x-jps");
    map.put("js","application/x-javascript");
    map.put("js","application/javascript");
    map.put("js","application/ecmascript");
    map.put("js","text/javascript");
    map.put("js","text/ecmascript");
    map.put("jut","image/jutvision");
    map.put("kar","audio/midi");
    map.put("kar","music/x-karaoke");
    map.put("ksh","application/x-ksh");
    map.put("ksh","text/x-script.ksh");
    map.put("la","audio/nspaudio");
    map.put("la","audio/x-nspaudio");
    map.put("lam","audio/x-liveaudio");
    map.put("latex","application/x-latex");
    map.put("lha","application/lha");
    map.put("lha","application/octet-stream");
    map.put("lha","application/x-lha");
    map.put("lhx","application/octet-stream");
    map.put("list","text/plain");
    map.put("lma","audio/nspaudio");
    map.put("lma","audio/x-nspaudio");
    map.put("log","text/plain");
    map.put("lsp","application/x-lisp");
    map.put("lsp","text/x-script.lisp");
    map.put("lst","text/plain");
    map.put("lsx","text/x-la-asf");
    map.put("ltx","application/x-latex");
    map.put("lzh","application/octet-stream");
    map.put("lzh","application/x-lzh");
    map.put("lzx","application/lzx");
    map.put("lzx","application/octet-stream");
    map.put("lzx","application/x-lzx");
    map.put("m","text/plain");
    map.put("m","text/x-m");
    map.put("m1v","video/mpeg");
    map.put("m2a","audio/mpeg");
    map.put("m2v","video/mpeg");
    map.put("m3u","audio/x-mpequrl");
    map.put("man","application/x-troff-man");
    map.put("map","application/x-navimap");
    map.put("mar","text/plain");
    map.put("mbd","application/mbedlet");
    map.put("mc$","application/x-magic-cap-package-1.0");
    map.put("mcd","application/mcad");
    map.put("mcd","application/x-mathcad");
    map.put("mcf","image/vasa");
    map.put("mcf","text/mcf");
    map.put("mcp","application/netmc");
    map.put("me","application/x-troff-me");
    map.put("mht","message/rfc822");
    map.put("mhtml","message/rfc822");
    map.put("mid","application/x-midi");
    map.put("mid","audio/midi");
    map.put("mid","audio/x-mid");
    map.put("mid","audio/x-midi");
    map.put("mid","music/crescendo");
    map.put("mid","x-music/x-midi");
    map.put("midi","application/x-midi");
    map.put("midi","audio/midi");
    map.put("midi","audio/x-mid");
    map.put("midi","audio/x-midi");
    map.put("midi","music/crescendo");
    map.put("midi","x-music/x-midi");
    map.put("mif","application/x-frame");
    map.put("mif","application/x-mif");
    map.put("mime","message/rfc822");
    map.put("mime","www/mime");
    map.put("mjf","audio/x-vnd.audioexplosion.mjuicemediafile");
    map.put("mjpg","video/x-motion-jpeg");
    map.put("mm","application/base64");
    map.put("mm","application/x-meme");
    map.put("mme","application/base64");
    map.put("mod","audio/mod");
    map.put("mod","audio/x-mod");
    map.put("moov","video/quicktime");
    map.put("mov","video/quicktime");
    map.put("movie","video/x-sgi-movie");
    map.put("mp2","audio/mpeg");
    map.put("mp2","audio/x-mpeg");
    map.put("mp2","video/mpeg");
    map.put("mp2","video/x-mpeg");
    map.put("mp2","video/x-mpeq2a");
    map.put("mp3","audio/mpeg3");
    map.put("mp3","audio/x-mpeg-3");
    map.put("mp3","video/mpeg");
    map.put("mp3","video/x-mpeg");
    map.put("mpa","audio/mpeg");
    map.put("mpa","video/mpeg");
    map.put("mpc","application/x-project");
    map.put("mpe","video/mpeg");
    map.put("mpeg","video/mpeg");
    map.put("mpg","audio/mpeg");
    map.put("mpg","video/mpeg");
    map.put("mpga","audio/mpeg");
    map.put("mpp","application/vnd.ms-project");
    map.put("mpt","application/x-project");
    map.put("mpv","application/x-project");
    map.put("mpx","application/x-project");
    map.put("mrc","application/marc");
    map.put("ms","application/x-troff-ms");
    map.put("mv","video/x-sgi-movie");
    map.put("my","audio/make");
    map.put("mzz","application/x-vnd.audioexplosion.mzz");
    map.put("nap","image/naplps");
    map.put("naplps","image/naplps");
    map.put("nc","application/x-netcdf");
    map.put("ncm","application/vnd.nokia.configuration-message");
    map.put("nif","image/x-niff");
    map.put("niff","image/x-niff");
    map.put("nix","application/x-mix-transfer");
    map.put("nsc","application/x-conference");
    map.put("nvd","application/x-navidoc");
    map.put("o","application/octet-stream");
    map.put("oda","application/oda");
    map.put("omc","application/x-omc");
    map.put("omcd","application/x-omcdatamaker");
    map.put("omcr","application/x-omcregerator");
    map.put("p","text/x-pascal");
    map.put("p10","application/pkcs10");
    map.put("p10","application/x-pkcs10");
    map.put("p12","application/pkcs-12");
    map.put("p12","application/x-pkcs12");
    map.put("p7a","application/x-pkcs7-signature");
    map.put("p7c","application/pkcs7-mime");
    map.put("p7c","application/x-pkcs7-mime");
    map.put("p7m","application/pkcs7-mime");
    map.put("p7m","application/x-pkcs7-mime");
    map.put("p7r","application/x-pkcs7-certreqresp");
    map.put("p7s","application/pkcs7-signature");
    map.put("part","application/pro_eng");
    map.put("pas","text/pascal");
    map.put("pbm","image/x-portable-bitmap");
    map.put("pcl","application/vnd.hp-pcl");
    map.put("pcl","application/x-pcl");
    map.put("pct","image/x-pict");
    map.put("pcx","image/x-pcx");
    map.put("pdb","chemical/x-pdb");
    map.put("pdf","application/pdf");
    map.put("pfunk","audio/make");
    map.put("pfunk","audio/make.my.funk");
    map.put("pgm","image/x-portable-graymap");
    map.put("pgm","image/x-portable-greymap");
    map.put("pic","image/pict");
    map.put("pict","image/pict");
    map.put("pkg","application/x-newton-compatible-pkg");
    map.put("pko","application/vnd.ms-pki.pko");
    map.put("pl","text/plain");
    map.put("pl","text/x-script.perl");
    map.put("plx","application/x-pixclscript");
    map.put("pm","image/x-xpixmap");
    map.put("pm","text/x-script.perl-module");
    map.put("pm4","application/x-pagemaker");
    map.put("pm5","application/x-pagemaker");
    map.put("png","image/png");
    map.put("pnm","application/x-portable-anymap");
    map.put("pnm","image/x-portable-anymap");
    map.put("pot","application/mspowerpoint");
    map.put("pot","application/vnd.ms-powerpoint");
    map.put("pov","model/x-pov");
    map.put("ppa","application/vnd.ms-powerpoint");
    map.put("ppm","image/x-portable-pixmap");
    map.put("pps","application/mspowerpoint");
    map.put("pps","application/vnd.ms-powerpoint");
    map.put("ppt","application/mspowerpoint");
    map.put("ppt","application/powerpoint");
    map.put("ppt","application/vnd.ms-powerpoint");
    map.put("ppt","application/x-mspowerpoint");
    map.put("ppz","application/mspowerpoint");
    map.put("pre","application/x-freelance");
    map.put("prt","application/pro_eng");
    map.put("ps","application/postscript");
    map.put("psd","application/octet-stream");
    map.put("pvu","paleovu/x-pv");
    map.put("pwz","application/vnd.ms-powerpoint");
    map.put("py","text/x-script.phyton");
    map.put("pyc","application/x-bytecode.python");
    map.put("qcp","audio/vnd.qcelp");
    map.put("qd3","x-world/x-3dmf");
    map.put("qd3d","x-world/x-3dmf");
    map.put("qif","image/x-quicktime");
    map.put("qt","video/quicktime");
    map.put("qtc","video/x-qtc");
    map.put("qti","image/x-quicktime");
    map.put("qtif","image/x-quicktime");
    map.put("ra","audio/x-pn-realaudio");
    map.put("ra","audio/x-pn-realaudio-plugin");
    map.put("ra","audio/x-realaudio");
    map.put("ram","audio/x-pn-realaudio");
    map.put("ras","application/x-cmu-raster");
    map.put("ras","image/cmu-raster");
    map.put("ras","image/x-cmu-raster");
    map.put("rast","image/cmu-raster");
    map.put("rexx","text/x-script.rexx");
    map.put("rf","image/vnd.rn-realflash");
    map.put("rgb","image/x-rgb");
    map.put("rm","application/vnd.rn-realmedia");
    map.put("rm","audio/x-pn-realaudio");
    map.put("rmi","audio/mid");
    map.put("rmm","audio/x-pn-realaudio");
    map.put("rmp","audio/x-pn-realaudio");
    map.put("rmp","audio/x-pn-realaudio-plugin");
    map.put("rng","application/ringing-tones");
    map.put("rng","application/vnd.nokia.ringing-tone");
    map.put("rnx","application/vnd.rn-realplayer");
    map.put("roff","application/x-troff");
    map.put("rp","image/vnd.rn-realpix");
    map.put("rpm","audio/x-pn-realaudio-plugin");
    map.put("rt","text/richtext");
    map.put("rt","text/vnd.rn-realtext");
    map.put("rtf","application/rtf");
    map.put("rtf","application/x-rtf");
    map.put("rtf","text/richtext");
    map.put("rtx","application/rtf");
    map.put("rtx","text/richtext");
    map.put("rv","video/vnd.rn-realvideo");
    map.put("s","text/x-asm");
    map.put("s3m","audio/s3m");
    map.put("saveme","application/octet-stream");
    map.put("sbk","application/x-tbook");
    map.put("scm","application/x-lotusscreencam");
    map.put("scm","text/x-script.guile");
    map.put("scm","text/x-script.scheme");
    map.put("scm","video/x-scm");
    map.put("sdml","text/plain");
    map.put("sdp","application/sdp");
    map.put("sdp","application/x-sdp");
    map.put("sdr","application/sounder");
    map.put("sea","application/sea");
    map.put("sea","application/x-sea");
    map.put("set","application/set");
    map.put("sgm","text/sgml");
    map.put("sgm","text/x-sgml");
    map.put("sgml","text/sgml");
    map.put("sgml","text/x-sgml");
    map.put("sh","application/x-bsh");
    map.put("sh","application/x-sh");
    map.put("sh","application/x-shar");
    map.put("sh","text/x-script.sh");
    map.put("shar","application/x-bsh");
    map.put("shar","application/x-shar");
    map.put("shtml","text/html");
    map.put("shtml","text/x-server-parsed-html");
    map.put("sid","audio/x-psid");
    map.put("sit","application/x-sit");
    map.put("sit","application/x-stuffit");
    map.put("skd","application/x-koan");
    map.put("skm","application/x-koan");
    map.put("skp","application/x-koan");
    map.put("skt","application/x-koan");
    map.put("sl","application/x-seelogo");
    map.put("smi","application/smil");
    map.put("smil","application/smil");
    map.put("snd","audio/basic");
    map.put("snd","audio/x-adpcm");
    map.put("sol","application/solids");
    map.put("spc","application/x-pkcs7-certificates");
    map.put("spc","text/x-speech");
    map.put("spl","application/futuresplash");
    map.put("spr","application/x-sprite");
    map.put("sprite","application/x-sprite");
    map.put("src","application/x-wais-source");
    map.put("ssi","text/x-server-parsed-html");
    map.put("ssm","application/streamingmedia");
    map.put("sst","application/vnd.ms-pki.certstore");
    map.put("step","application/step");
    map.put("stl","application/sla");
    map.put("stl","application/vnd.ms-pki.stl");
    map.put("stl","application/x-navistyle");
    map.put("stp","application/step");
    map.put("sv4cpio","application/x-sv4cpio");
    map.put("sv4crc","application/x-sv4crc");
    map.put("svf","image/vnd.dwg");
    map.put("svf","image/x-dwg");
    map.put("svr","application/x-world");
    map.put("svr","x-world/x-svr");
    map.put("swf","application/x-shockwave-flash");
    map.put("t","application/x-troff");
    map.put("talk","text/x-speech");
    map.put("tar","application/x-tar");
    map.put("tbk","application/toolbook");
    map.put("tbk","application/x-tbook");
    map.put("tcl","application/x-tcl");
    map.put("tcl","text/x-script.tcl");
    map.put("tcsh","text/x-script.tcsh");
    map.put("tex","application/x-tex");
    map.put("texi","application/x-texinfo");
    map.put("texinfo","application/x-texinfo");
    map.put("text","application/plain");
    map.put("text","text/plain");
    map.put("tgz","application/gnutar");
    map.put("tgz","application/x-compressed");
    map.put("tif","image/tiff");
    map.put("tif","image/x-tiff");
    map.put("tiff","image/tiff");
    map.put("tiff","image/x-tiff");
    map.put("tr","application/x-troff");
    map.put("tsi","audio/tsp-audio");
    map.put("tsp","application/dsptype");
    map.put("tsp","audio/tsplayer");
    map.put("tsv","text/tab-separated-values");
    map.put("turbot","image/florian");
    map.put("txt","text/plain");
    map.put("uil","text/x-uil");
    map.put("uni","text/uri-list");
    map.put("unis","text/uri-list");
    map.put("unv","application/i-deas");
    map.put("uri","text/uri-list");
    map.put("uris","text/uri-list");
    map.put("ustar","application/x-ustar");
    map.put("ustar","multipart/x-ustar");
    map.put("uu","application/octet-stream");
    map.put("uu","text/x-uuencode");
    map.put("uue","text/x-uuencode");
    map.put("vcd","application/x-cdlink");
    map.put("vcs","text/x-vcalendar");
    map.put("vda","application/vda");
    map.put("vdo","video/vdo");
    map.put("vew","application/groupwise");
    map.put("viv","video/vivo");
    map.put("viv","video/vnd.vivo");
    map.put("vivo","video/vivo");
    map.put("vivo","video/vnd.vivo");
    map.put("vmd","application/vocaltec-media-desc");
    map.put("vmf","application/vocaltec-media-file");
    map.put("voc","audio/voc");
    map.put("voc","audio/x-voc");
    map.put("vos","video/vosaic");
    map.put("vox","audio/voxware");
    map.put("vqe","audio/x-twinvq-plugin");
    map.put("vqf","audio/x-twinvq");
    map.put("vql","audio/x-twinvq-plugin");
    map.put("vrml","application/x-vrml");
    map.put("vrml","model/vrml");
    map.put("vrml","x-world/x-vrml");
    map.put("vrt","x-world/x-vrt");
    map.put("vsd","application/x-visio");
    map.put("vst","application/x-visio");
    map.put("vsw","application/x-visio");
    map.put("w60","application/wordperfect6.0");
    map.put("w61","application/wordperfect6.1");
    map.put("w6w","application/msword");
    map.put("wav","audio/wav");
    map.put("wav","audio/x-wav");
    map.put("wb1","application/x-qpro");
    map.put("wbmp","image/vnd.wap.wbmp");
    map.put("web","application/vnd.xara");
    map.put("wiz","application/msword");
    map.put("wk1","application/x-123");
    map.put("wmf","windows/metafile");
    map.put("wml","text/vnd.wap.wml");
    map.put("wmlc","application/vnd.wap.wmlc");
    map.put("wmls","text/vnd.wap.wmlscript");
    map.put("wmlsc","application/vnd.wap.wmlscriptc");
    map.put("word","application/msword");
    map.put("wp","application/wordperfect");
    map.put("wp5","application/wordperfect");
    map.put("wp5","application/wordperfect6.0");
    map.put("wp6","application/wordperfect");
    map.put("wpd","application/wordperfect");
    map.put("wpd","application/x-wpwin");
    map.put("wq1","application/x-lotus");
    map.put("wri","application/mswrite");
    map.put("wri","application/x-wri");
    map.put("wrl","application/x-world");
    map.put("wrl","model/vrml");
    map.put("wrl","x-world/x-vrml");
    map.put("wrz","model/vrml");
    map.put("wrz","x-world/x-vrml");
    map.put("wsc","text/scriplet");
    map.put("wsrc","application/x-wais-source");
    map.put("wtk","application/x-wintalk");
    map.put("xbm","image/x-xbitmap");
    map.put("xbm","image/x-xbm");
    map.put("xbm","image/xbm");
    map.put("xdr","video/x-amt-demorun");
    map.put("xgz","xgl/drawing");
    map.put("xif","image/vnd.xiff");
    map.put("xl","application/excel");
    map.put("xla","application/excel");
    map.put("xla","application/x-excel");
    map.put("xla","application/x-msexcel");
    map.put("xlb","application/excel");
    map.put("xlb","application/vnd.ms-excel");
    map.put("xlb","application/x-excel");
    map.put("xlc","application/excel");
    map.put("xlc","application/vnd.ms-excel");
    map.put("xlc","application/x-excel");
    map.put("xld","application/excel");
    map.put("xld","application/x-excel");
    map.put("xlk","application/excel");
    map.put("xlk","application/x-excel");
    map.put("xll","application/excel");
    map.put("xll","application/vnd.ms-excel");
    map.put("xll","application/x-excel");
    map.put("xlm","application/excel");
    map.put("xlm","application/vnd.ms-excel");
    map.put("xlm","application/x-excel");
    map.put("xls","application/excel");
    map.put("xls","application/vnd.ms-excel");
    map.put("xls","application/x-excel");
    map.put("xls","application/x-msexcel");
    map.put("xlt","application/excel");
    map.put("xlt","application/x-excel");
    map.put("xlv","application/excel");
    map.put("xlv","application/x-excel");
    map.put("xlw","application/excel");
    map.put("xlw","application/vnd.ms-excel");
    map.put("xlw","application/x-excel");
    map.put("xlw","application/x-msexcel");
    map.put("xm","audio/xm");
    map.put("xml","application/xml");
    map.put("xml","text/xml");
    map.put("xmz","xgl/movie");
    map.put("xpix","application/x-vnd.ls-xpix");
    map.put("xpm","image/x-xpixmap");
    map.put("xpm","image/xpm");
    map.put("x-png","image/png");
    map.put("xsr","video/x-amt-showrun");
    map.put("xwd","image/x-xwd");
    map.put("xwd","image/x-xwindowdump");
    map.put("xyz","chemical/x-pdb");
    map.put("z","application/x-compress");
    map.put("z","application/x-compressed");
    map.put("zip","application/x-compressed");
    map.put("zip","application/x-zip-compressed");
    map.put("zip","application/zip");
    map.put("zip","multipart/x-zip");
    map.put("zoo","application/octet-stream");
    map.put("zsh","text/x-script.zsh");

    mimeTypes = map;
}

Include superclasses in the ClassRepository navigation methods.

The implementation of ClassRepository provided by ClassSet must navigate through the class herachery of each component looking for methods and fields that are anntated with the given annotation. Right now the methods only take account for the class of the component it self.
We will need to write a JUnit test case for this feature ones it´s complete.

Enhance the HTTP server

Support file uploads and multipart request
Provide methods for parsing the body of a application/x-www-form-urlencoded or multipart/form-data content types. The method should return a Map<String,String[]> with the name of the parameter and the values of it, this is even if there is only one value for the parameter. The values should be url decoded before storing into the map.
Support query strings in the same way of body parameters but with a diferent method.
Support cookies

init server in http

Now i have to:

  • mount etc folder with vfs service.
  • start the server.

I would like to do this (or something like this):
HttpServer.usingEtc('/path/to/etc').start();
The http takes care of vfs system in background. This way i think is easier.

Review the bridje-cfg API

See the posibility of creating dinamic config repositories, this is create a methos, addConfigRepository that receives an instance of ConfigRepository, The repositories passed in this way will have preference over the ConfigRepository components.

Finish the implementation of the PropConfigAdapter

Add a new configuration adapter implementation for json.

Allow multiple configuration adapters into the Configuration annotation, the order in what they are specify in the annotation should be order in witch they are to be test to find the correct file to unserialize from.

See the posibility of making the Configuration annotation optional, if the annotation is not present all the adapters can be user but the order to find the correct file must be the priority mechanism from the ioc api.

Be able to pass a parser to the vfs findFile to get an object.

Instead of doin something like this

        VirtualFile somecfg1 = vfs.findFile("etc/somecfg1.properties");
        Properties prop = new Properties();
        try(InputStream is = somecfg1.open())
        {
            prop.load(is);
        }
        String var1 = prop.getProperty("var1");
        System.out.println(var1);

Its beter to do

        Properties prop = vfs.findFile("etc/somecfg1.properties", Properties.class);
        String var1 = prop.getProperty("var1");
        System.out.println(var1);

For this a new service is needed that handle the parsing of the file.

First version of the JavaFX helper API

Create a new API to facilitate the work with javafx by generating code out of entitys and other users classes,
Provide a common filosophy for creating javafx application with easy. maybe a simple optional docking framework, for toolbars, menus, and docked windows, with the use of the ioc.

Enhance the mecanism that use the maven plugin to generate code.

The modules of the framework should provide theyr own configuration and templates to generate code. Right now the user must especify manually the templates and file that he whants to use. Is better that works out of the box whitout any configuration. but the configuration must be keep to customaize the behavior if necesary.

Allow file writing on VFS API

The VFS needs to provides the means for the user to write the content of a file, this may be done by implementing a method that gets an OutputStream to the file.
Not all files and file systems allows modification, so a method that tells the user about this condition (E.g. canWrite) it´s needed also.

Enhance the JDBC service

Enhance the JDBC pooled data source by implementing features like.

  • max connections: maximun numer of connectios to keep in the DataSource
  • min connections: minimun numer of connection in keep in the DataSource
  • idle connection time: number of seconds that a connection must be inactive before
    is released.
  • Create configurations for thees features so the user can especify the parameters at will.

Create bridje-webui

bridje-webui will provide a basic set of components and a theme to be use in web applications using bridje-web.

Support joins in the orm framework

Refactor some of the functionality of the core, to separate then into new helper classes.
Add support for joins and relations in the querys.

Create a generic Code Generation Plugin

Create a new maven plugin with allow you to generate code by especifiying both the templates and the model, the templates can be created in freemarker, and the model will be in xml.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.