package com.getsentry.raven.android; import android.content.Context; import android.util.Log; import com.getsentry.raven.*; import com.getsentry.raven.android.event.helper.AndroidEventBuilderHelper; import com.getsentry.raven.buffer.Buffer; import com.getsentry.raven.buffer.DiskBuffer; import com.getsentry.raven.context.ContextManager; import com.getsentry.raven.context.SingletonContextManager; import com.getsentry.raven.dsn.Dsn; import java.io.File; /** * RavenFactory that handles Android-specific construction, like taking advantage * of the Android Context instance. */ public class AndroidRavenFactory extends DefaultRavenFactory { /** * Logger tag. */ public static final String TAG = AndroidRavenFactory.class.getName(); /** * Default Buffer directory name. */ private static final String DEFAULT_BUFFER_DIR = "raven-buffered-events"; private Context ctx; /** * Construct an AndroidRavenFactory using the specified Android Context. * * @param ctx Android Context. */ public AndroidRavenFactory(Context ctx) { this.ctx = ctx; Log.d(TAG, "Construction of Android Raven."); } @Override public com.getsentry.raven.Raven createRavenInstance(Dsn dsn) { com.getsentry.raven.Raven ravenInstance = super.createRavenInstance(dsn); ravenInstance.addBuilderHelper(new AndroidEventBuilderHelper(ctx)); return ravenInstance; } @Override protected Buffer getBuffer(Dsn dsn) { File bufferDir; String bufferDirOpt = dsn.getOptions().get(BUFFER_DIR_OPTION); if (bufferDirOpt != null) { bufferDir = new File(bufferDirOpt); } else { bufferDir = new File(ctx.getCacheDir().getAbsolutePath(), DEFAULT_BUFFER_DIR); } Log.d(TAG, "Using buffer dir: " + bufferDir.getAbsolutePath()); return new DiskBuffer(bufferDir, getBufferSize(dsn)); } @Override protected ContextManager getContextManager(Dsn dsn) { return new SingletonContextManager(); } }