// Path: main/src/domain/xink/vpn/AppException.java
// public class AppException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
// 
//     private int messageCode;
// 
//     private Object[] messageArgs;
// 
//     public AppException(final String detailMessage) {
//         super(detailMessage);
//     }
// 
//     public AppException(final String message, final int msgCode, final Object... msgArgs) {
//         super(message);
//         this.messageCode = msgCode;
//         this.messageArgs = msgArgs;
//     }
// 
//     public AppException(final String message, final Throwable throwable, final int msgCode, final Object... msgArgs) {
//         super(message, throwable);
//         this.messageCode = msgCode;
//         this.messageArgs = msgArgs;
//     }
// 
//     public AppException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     public int getMessageCode() {
//         return messageCode;
//     }
// 
//     public Object[] getMessageArgs() {
//         return messageArgs;
//     }
// 
// }


import java.lang.reflect.Method;
import xink.vpn.AppException;
import xink.vpn.R;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
/*
 * Copyright 2011 yingxinwu.g@gmail.com
 * 
 * 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.
 */

package xink.vpn.wrapper;



public class L2tpProfile extends VpnProfile {

    /** Key prefix for L2TP VPN. */
    public static final String KEY_PREFIX_L2TP_SECRET = "VPN_l";

    private KeyStore keyStore;

    protected L2tpProfile(final Context ctx, final String stubClass) {
        super(ctx, stubClass);
    }

    public L2tpProfile(final Context ctx) {
        super(ctx, "android.net.vpn.L2tpProfile");
    }

    @Override
    public VpnType getType() {
        return VpnType.L2TP;
    }

    /**
     * Enables/disables the secret for authenticating tunnel connection.
     */
    public void setSecretEnabled(final boolean enabled) {
        try {
            Method m = getStubClass().getMethod("setSecretEnabled", boolean.class);
            m.invoke(getStub(), enabled);
        } catch (Throwable e) {
// Path: main/src/domain/xink/vpn/AppException.java
// public class AppException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
// 
//     private int messageCode;
// 
//     private Object[] messageArgs;
// 
//     public AppException(final String detailMessage) {
//         super(detailMessage);
//     }
// 
//     public AppException(final String message, final int msgCode, final Object... msgArgs) {
//         super(message);
//         this.messageCode = msgCode;
//         this.messageArgs = msgArgs;
//     }
// 
//     public AppException(final String message, final Throwable throwable, final int msgCode, final Object... msgArgs) {
//         super(message, throwable);
//         this.messageCode = msgCode;
//         this.messageArgs = msgArgs;
//     }
// 
//     public AppException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     public int getMessageCode() {
//         return messageCode;
//     }
// 
//     public Object[] getMessageArgs() {
//         return messageArgs;
//     }
// 
// }


// Path: main/src/domain/xink/vpn/wrapper/L2tpProfile.java
import java.lang.reflect.Method;
import xink.vpn.AppException;
import xink.vpn.R;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;

/*
 * Copyright 2011 yingxinwu.g@gmail.com
 * 
 * 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.
 */

package xink.vpn.wrapper;



public class L2tpProfile extends VpnProfile {

    /** Key prefix for L2TP VPN. */
    public static final String KEY_PREFIX_L2TP_SECRET = "VPN_l";

    private KeyStore keyStore;

    protected L2tpProfile(final Context ctx, final String stubClass) {
        super(ctx, stubClass);
    }

    public L2tpProfile(final Context ctx) {
        super(ctx, "android.net.vpn.L2tpProfile");
    }

    @Override
    public VpnType getType() {
        return VpnType.L2TP;
    }

    /**
     * Enables/disables the secret for authenticating tunnel connection.
     */
    public void setSecretEnabled(final boolean enabled) {
        try {
            Method m = getStubClass().getMethod("setSecretEnabled", boolean.class);
            m.invoke(getStub(), enabled);
        } catch (Throwable e) {
            throw new AppException("setSecretEnabled failed", e);