blob: c0edce22fdafa6558d22b6451bdf8d99bb4fc378 [file] [log] [blame]
/*
* Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import javax.activation.*;
import java.util.StringTokenizer;
import java.util.Hashtable;
public class SimpleDCF implements DataContentHandlerFactory {
Hashtable entry_hash = new Hashtable();
/**
* the constructor, takes a list of classes as an argument in the
* form:
* <mimetype>:<class name>\n
*
* For Example:
*
* application/x-wombat:com.womco.WombatDCH
* text/plain:com.textco.TextDCH
*
*/
public SimpleDCF(String entries) {
StringTokenizer tok = new StringTokenizer(entries);
String entry;
System.out.println("SimpleDCH: new SimpleDCF being created");
// parse the string
while(tok.hasMoreTokens()) {
int colon;
entry = tok.nextToken();
System.out.println("full entry = " + entry);
// parse out the fields
colon = entry.indexOf(':');
VectorEntry ve = new VectorEntry(entry.substring(0,colon),
entry.substring(colon + 1,
entry.length()));
System.out.println("adding element = " + ve);
entry_hash.put(ve.getMimeType(),ve);
}
}
/**
* implement the factor interface
*/
public DataContentHandler createDataContentHandler(String mimeType){
DataContentHandler dch = null;
System.out.print("SimpleDCF: trying to create a DCH");
VectorEntry ve = (VectorEntry)entry_hash.get(mimeType);
if(ve != null) {
System.out.print("...found token");
try {
dch = (DataContentHandler)Class.forName(
ve.getClassName()).newInstance();
if(dch == null)
System.out.println("...FAILED!!!");
else
System.out.println("...SUCCESS!!!");
} catch(Exception e) {
System.out.println(e);
}
}
return dch;
}
}
class VectorEntry {
private String mimeType;
private String className;
public VectorEntry(String mimeType, String className) {
this.mimeType = mimeType;
this.className = className;
}
public String getMimeType() { return mimeType; }
public String getClassName() { return className; }
public String toString() {
return new String("type: " + mimeType + " class name: " + className);
}
}